You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(56) |
Sep
(40) |
Oct
(30) |
Nov
(144) |
Dec
(23) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(41) |
Feb
(29) |
Mar
(31) |
Apr
(39) |
May
(193) |
Jun
(45) |
Jul
(19) |
Aug
(3) |
Sep
(23) |
Oct
(83) |
Nov
(92) |
Dec
(123) |
2007 |
Jan
(90) |
Feb
(267) |
Mar
(120) |
Apr
(51) |
May
(40) |
Jun
(121) |
Jul
(109) |
Aug
(173) |
Sep
(77) |
Oct
(52) |
Nov
(121) |
Dec
(62) |
2008 |
Jan
(76) |
Feb
(53) |
Mar
(98) |
Apr
(87) |
May
(26) |
Jun
(27) |
Jul
(23) |
Aug
(136) |
Sep
(79) |
Oct
(68) |
Nov
(29) |
Dec
(14) |
2009 |
Jan
(7) |
Feb
(2) |
Mar
(11) |
Apr
(75) |
May
(1) |
Jun
(95) |
Jul
(19) |
Aug
(4) |
Sep
(8) |
Oct
(93) |
Nov
(43) |
Dec
(21) |
2010 |
Jan
(20) |
Feb
(23) |
Mar
(18) |
Apr
(6) |
May
(20) |
Jun
(23) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
(2) |
Feb
(6) |
Mar
(15) |
Apr
(5) |
May
(9) |
Jun
(14) |
Jul
(9) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
(2) |
Jun
(17) |
Jul
(37) |
Aug
|
Sep
(1) |
Oct
(6) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
(5) |
Apr
(2) |
May
(7) |
Jun
(11) |
Jul
(8) |
Aug
|
Sep
(1) |
Oct
(2) |
Nov
|
Dec
|
2014 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
|
May
(1) |
Jun
(1) |
Jul
(7) |
Aug
(2) |
Sep
|
Oct
(5) |
Nov
(2) |
Dec
(4) |
2015 |
Jan
|
Feb
(2) |
Mar
(2) |
Apr
|
May
|
Jun
(9) |
Jul
(1) |
Aug
|
Sep
|
Oct
(4) |
Nov
(1) |
Dec
|
2016 |
Jan
(2) |
Feb
(1) |
Mar
(1) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
(5) |
Oct
|
Nov
|
Dec
|
2017 |
Jan
(1) |
Feb
(3) |
Mar
(3) |
Apr
(7) |
May
(2) |
Jun
(2) |
Jul
(5) |
Aug
(1) |
Sep
(2) |
Oct
(17) |
Nov
(4) |
Dec
(7) |
2018 |
Jan
(5) |
Feb
(14) |
Mar
(2) |
Apr
(5) |
May
(2) |
Jun
(5) |
Jul
|
Aug
(2) |
Sep
|
Oct
(3) |
Nov
(5) |
Dec
|
2019 |
Jan
(4) |
Feb
(2) |
Mar
(3) |
Apr
(1) |
May
(8) |
Jun
(14) |
Jul
(2) |
Aug
|
Sep
(2) |
Oct
(2) |
Nov
(15) |
Dec
(2) |
2020 |
Jan
(10) |
Feb
(3) |
Mar
(1) |
Apr
|
May
(9) |
Jun
(4) |
Jul
(16) |
Aug
(10) |
Sep
(4) |
Oct
(3) |
Nov
|
Dec
|
2021 |
Jan
(11) |
Feb
(2) |
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(5) |
Sep
|
Oct
(6) |
Nov
(4) |
Dec
(4) |
2022 |
Jan
(4) |
Feb
(2) |
Mar
(2) |
Apr
|
May
(6) |
Jun
(3) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2023 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
(5) |
Jun
(1) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
(13) |
Dec
|
2024 |
Jan
(1) |
Feb
|
Mar
(5) |
Apr
|
May
(10) |
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
(1) |
Dec
(14) |
2025 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(3) |
Jul
|
Aug
|
Sep
(2) |
Oct
(2) |
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
|
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
(1) |
15
|
16
(1) |
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
(1) |
28
|
29
|
From: Matthew F. <no...@gi...> - 2020-02-27 02:25:20
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: f3c6b51d9d4e1e08856d8106ea973438ac502b3a https://github.com/MLton/mlton/commit/f3c6b51d9d4e1e08856d8106ea973438ac502b3a Author: Matthew Fluet <mat...@gm...> Date: 2020-02-17 (Mon, 17 Feb 2020) Changed paths: M mlton/backend/object-type.sig Log Message: ----------- Fix comment in `signature OBJECT_TYPE` Commit: 0c05abde2d3f12af80b6e2ea1043f1057cc5586e https://github.com/MLton/mlton/commit/0c05abde2d3f12af80b6e2ea1043f1057cc5586e Author: Matthew Fluet <mat...@gm...> Date: 2020-02-17 (Mon, 17 Feb 2020) Changed paths: M mlton/backend/backend.fun M mlton/backend/collect-statics.fun M mlton/backend/implement-profiling.fun M mlton/backend/limit-check.fun M mlton/backend/machine.fun M mlton/backend/object-type.sig M mlton/backend/object.fun M mlton/backend/object.sig M mlton/backend/packed-representation.fun M mlton/backend/rep-type.fun M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Eliminate `Type.t` fields of `Object` variants Commit: 6f4f2fcf5eb067c20e7d036765710953b66ee0e3 https://github.com/MLton/mlton/commit/6f4f2fcf5eb067c20e7d036765710953b66ee0e3 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-17 (Mon, 17 Feb 2020) Changed paths: M mlton/backend/backend.fun M mlton/backend/limit-check.fun M mlton/backend/object-type.sig M mlton/backend/object.fun M mlton/backend/packed-representation.fun M mlton/backend/rep-type.fun M mlton/backend/ssa2-to-rssa.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/control/bits.sml Log Message: ----------- Use `components: ty vector` for OBJECT_TYPE variants Change: datatype OBJECT_TYPE.t = Normal of {hasIdentity: bool, ty: ty} | Sequence of {elt: ty, hasIdentity: bool} | Stack | Weak of ty option (* in Weak (SOME t), must have Type.isObjptr t *) to datatype OBJECT_TYPE.t = Normal of {components: ty vector, hasIdentity: bool} | Sequence of {components: ty vector, hasIdentity: bool} | Stack | Weak of ty option (* in Weak (SOME t), must have Type.isObjptr t *) Commit: 8c942451d6070b899ad62dfeed6045652a2af055 https://github.com/MLton/mlton/commit/8c942451d6070b899ad62dfeed6045652a2af055 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-19 (Wed, 19 Feb 2020) Changed paths: M mlton/atoms/atoms.fun M mlton/atoms/atoms.sig A mlton/atoms/prod.fun A mlton/atoms/prod.sig M mlton/atoms/sources.cm M mlton/atoms/sources.mlb M mlton/ssa/ssa-tree2.fun M mlton/ssa/ssa-tree2.sig Log Message: ----------- Refactor `structure Ssa2Tree.Prod: PROD` to `structure Atoms.Prod: PROD` Commit: 5ff8e6fb4186e6d9381acc8b2a37e96e1370531d https://github.com/MLton/mlton/commit/5ff8e6fb4186e6d9381acc8b2a37e96e1370531d Author: Matthew Fluet <mat...@gm...> Date: 2020-02-20 (Thu, 20 Feb 2020) Changed paths: M mlton/atoms/prod.fun M mlton/atoms/prod.sig Log Message: ----------- Add `Prod.first` and `Prod.hash` Commit: 3429ef14d3353fb83c5cf2dd4112c3ea191cee79 https://github.com/MLton/mlton/commit/3429ef14d3353fb83c5cf2dd4112c3ea191cee79 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-20 (Thu, 20 Feb 2020) Changed paths: M mlton/atoms/sources.cm M mlton/atoms/sources.mlb Log Message: ----------- Export `signature PROD` Commit: b9fa69153bf90d47901a181b22db37f531716ff8 https://github.com/MLton/mlton/commit/b9fa69153bf90d47901a181b22db37f531716ff8 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-20 (Thu, 20 Feb 2020) Changed paths: M mlton/backend/backend-atoms.fun M mlton/backend/backend-atoms.sig M mlton/backend/limit-check.fun M mlton/backend/object-type.sig M mlton/backend/packed-representation.fun M mlton/backend/rep-type.fun M mlton/backend/rep-type.sig M mlton/backend/representation.sig M mlton/backend/ssa2-to-rssa.fun M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Use `components: ty Prod.t` for OBJECT_TYPE variants Change: datatype OBJECT_TYPE.t = Normal of {components: ty vector, hasIdentity: bool} | Sequence of {components: ty vector, hasIdentity: bool} | Stack | Weak of ty option (* in Weak (SOME t), must have Type.isObjptr t *) to datatype OBJECT_TYPE.t = Normal of {components: ty Prod.t, hasIdentity: bool} | Sequence of {components: ty Prod.t, hasIdentity: bool} | Stack | Weak of ty option (* in Weak (SOME t), must have Type.isObjptr t *) Commit: b39a8f84c208d1d58f429e7de68bdb152286313e https://github.com/MLton/mlton/commit/b39a8f84c208d1d58f429e7de68bdb152286313e Author: Matthew Fluet <mat...@gm...> Date: 2020-02-20 (Thu, 20 Feb 2020) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Be less conservative about placing static objects in Dynamic heap Commit: 76104684e39fbde6334ce93e587bf436f620b8ac https://github.com/MLton/mlton/commit/76104684e39fbde6334ce93e587bf436f620b8ac Author: Matthew Fluet <mat...@gm...> Date: 2020-02-21 (Fri, 21 Feb 2020) Changed paths: M mlton/backend/packed-representation.fun Log Message: ----------- Simplify `PackedRepresentation.WordComponent` Commit: 953fe8d1e915f591757100c1835984150fb84a00 https://github.com/MLton/mlton/commit/953fe8d1e915f591757100c1835984150fb84a00 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-22 (Sat, 22 Feb 2020) Changed paths: M mlton/backend/packed-representation.fun Log Message: ----------- Don't assume padding before objptrs is a multiple of Word32 Commit: a8fe6fdfd7b0a9a292ae3f64b9321e57c244ba55 https://github.com/MLton/mlton/commit/a8fe6fdfd7b0a9a292ae3f64b9321e57c244ba55 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-22 (Sat, 22 Feb 2020) Changed paths: M mlton/control/bits.sml Log Message: ----------- Add `Bytes.{inWord{8,16},prims}` Commit: 6bf59f5420c36f4ffbbc44b285336aec130a7296 https://github.com/MLton/mlton/commit/6bf59f5420c36f4ffbbc44b285336aec130a7296 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-22 (Sat, 22 Feb 2020) Changed paths: M mlton/backend/rep-type.fun Log Message: ----------- Refactor `RepType.checkOffset` Commit: 6a6a9d0549c143c87901c6086cd678ce6007c44a https://github.com/MLton/mlton/commit/6a6a9d0549c143c87901c6086cd678ce6007c44a Author: Matthew Fluet <mat...@gm...> Date: 2020-02-22 (Sat, 22 Feb 2020) Changed paths: M mlton/backend/rep-type.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Experiment with different styles for `RepType.checkOffset` Commit: 5966df1f8f27b2c223cd45aefe3ad49a79921da2 https://github.com/MLton/mlton/commit/5966df1f8f27b2c223cd45aefe3ad49a79921da2 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-22 (Sat, 22 Feb 2020) Changed paths: M mlton/backend/packed-representation.fun Log Message: ----------- Rename `{s,S}ubword` to `{s,S}ubWord` Commit: 3e8c5cbec356ab60bcfa41dc3dbae2e2c7cca9a4 https://github.com/MLton/mlton/commit/3e8c5cbec356ab60bcfa41dc3dbae2e2c7cca9a4 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-22 (Sat, 22 Feb 2020) Changed paths: M mlton/backend/packed-representation.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Experiment with different styles for `PackedRepresentation.TupleRep.make:makeSubWord32sAllPrims` Commit: 3cda03381244cd8badc7ae56a9f2b234c3b2fad3 https://github.com/MLton/mlton/commit/3cda03381244cd8badc7ae56a9f2b234c3b2fad3 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-22 (Sat, 22 Feb 2020) Changed paths: A regression/flat-array.4.ok A regression/flat-array.4.sml Log Message: ----------- Add `flat-array.4.sml` regression This regression test constructs a `(Word14.word * Word10.word * Word8.word) vector`, which is `DeepFlatten`-ed. `PackedRepresentation.TupleRep.make: makeSubWord32s` represents the element as a single `Component.Word`, but while the `Word14` and `Word10` sub-components are accessed with `Select.IndirectUnpack` (by reading/writing the whole `Word32` with shifting/masking), the `Word8` sub-component is accessed with `Select.Indirect` (because the packing results in the `Word8` sub-component ending up with an 8-bit aligned offset). This demonstrates that a version of `RepType.checkOffset` that checks that the `offset`/`result` exactly corresponds to a component does not suffice. Interestingly, this scenario (where there are some non-prim-sized components combined with some prim-sized components such that a prim-sized component's offset is properly aligned) never otherwise arises with the regression tests. For all prim-sized components, a version of `PackedRepresentation.TupleRep.make: makeSubWord32sAllPrims` that represents each element as a separate `Component.Word` and accesses each element with `Select.Indirect` (as is done for 64-bit and 32-bit components) is compatible with a version of `RepType.checkOffset` that checks that the `offset`/`result` exactly corresponds to a component (because each element is represented as a separate component). This scenario does occur often. Commit: d9bf1a2df16a9fd253d527a3b0274ab83fd25423 https://github.com/MLton/mlton/commit/d9bf1a2df16a9fd253d527a3b0274ab83fd25423 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-22 (Sat, 22 Feb 2020) Changed paths: M mlton/backend/rep-type.fun Log Message: ----------- Drop a style of `RepType.checkOffset` that is subsumed by another Commit: f72b174be01dcb1a9eaf004cbbaf5cc5f2fead56 https://github.com/MLton/mlton/commit/f72b174be01dcb1a9eaf004cbbaf5cc5f2fead56 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-22 (Sat, 22 Feb 2020) Changed paths: M mlton/backend/machine.fun M mlton/backend/object.fun M mlton/backend/rep-type.fun M mlton/backend/rep-type.sig M mlton/backend/rssa-type-check.fun Log Message: ----------- Check RSSA updates via object offsets are of mutable components Commit: 442192cc6c59b4c9e80204bc50855b28bcecbfbb https://github.com/MLton/mlton/commit/442192cc6c59b4c9e80204bc50855b28bcecbfbb Author: Matthew Fluet <mat...@gm...> Date: 2020-02-22 (Sat, 22 Feb 2020) Changed paths: M mlton/backend/rssa-type-check.fun Log Message: ----------- An RSSA variable should not be the dst of a `Move` statement Commit: 561cd0bba688877067228085dbd8c74ef685d969 https://github.com/MLton/mlton/commit/561cd0bba688877067228085dbd8c74ef685d969 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-23 (Sun, 23 Feb 2020) Changed paths: M mlton/backend/packed-representation.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Use simpler version of `PackedRepresentation.TupleRep.make: makeSubWord32sAllPrims` The simpler implementation of `makeSubWord32sAllPrims` represents each element as a separate `Component.Word` of either `Word16` or `Word8` (representing a group of elements as a packed `Component.Word` of `Word32`). Both implementations accesses each element with `Select.Indirect` There is no significant performance difference between the implementations: C00 /home/mtf/devel/mlton/builds/g442192cc6/bin/mlton -codegen amd64 -PackedRepresentation.makeSubWord32sAllPrims-style 0 C01 /home/mtf/devel/mlton/builds/g442192cc6/bin/mlton -codegen amd64 -PackedRepresentation.makeSubWord32sAllPrims-style 1 C02 /home/mtf/devel/mlton/builds/g442192cc6/bin/mlton -codegen c -cc gcc-9 -PackedRepresentation.makeSubWord32sAllPrims-style 0 C03 /home/mtf/devel/mlton/builds/g442192cc6/bin/mlton -codegen c -cc gcc-9 -PackedRepresentation.makeSubWord32sAllPrims-style 1 C04 /home/mtf/devel/mlton/builds/g442192cc6/bin/mlton -codegen c -cc clang -PackedRepresentation.makeSubWord32sAllPrims-style 0 C05 /home/mtf/devel/mlton/builds/g442192cc6/bin/mlton -codegen c -cc clang -PackedRepresentation.makeSubWord32sAllPrims-style 1 C06 /home/mtf/devel/mlton/builds/g442192cc6/bin/mlton -codegen llvm -PackedRepresentation.makeSubWord32sAllPrims-style 0 C07 /home/mtf/devel/mlton/builds/g442192cc6/bin/mlton -codegen llvm -PackedRepresentation.makeSubWord32sAllPrims-style 1 task_clock ratio_means.fieller@0.95 (2-level) program `C01/C00` `C03/C02` `C05/C04` `C07/C06` barnes-hut 1.009 1.035 1.045 0.9451 boyer 0.9428 1.021 1.032 0.9271 checksum 1.059 1.003 1.023 1.016 count-graphs 1.026 1.027 1.001 0.9633 DLXSimulator 0.9942 0.9998 0.9678 1.007 even-odd 0.9971 1.010 0.9923 0.9254 fft 0.9995 1.024 1.003 0.9989 fib 1.019 1.006 0.9870 0.9868 flat-array 1.043 1.033 1.005 0.9861 hamlet 0.9939 0.9801 1.001 1.018 imp-for 0.9881 0.9604 0.9966 1.009 knuth-bendix 1.018 1.030 1.024 1.083 lexgen 0.9576 0.9931 1.025 1.003 life 1.037 0.9915 0.9959 0.9898 logic 0.9612 0.9721 1.063 0.9973 mandelbrot 0.9880 1.011 0.9596 1.019 matrix-multiply 0.9213 1.071 0.9590 0.9062 md5 1.001 1.006 1.023 1.011 merge 0.9767 0.9559 1.055 1.043 mlyacc 0.9817 0.9820 1.022 0.9859 model-elimination 1.011 0.9908 1.006 1.020 mpuz 1.011 1.034 1.019 1.025 nucleic 0.9873 1.040 0.9875 0.9802 output1 1.035 1.018 0.9807 0.9917 peek 1.032 1.006 0.9901 0.9118 pidigits 1.011 1.002 0.9743 1.020 psdes-random 0.9998 1.024 0.9844 1.005 ratio-regions 0.9858 1.008 0.9046 0.9728 ray 1.017 0.9788 0.9821 0.9837 raytrace 0.9315 0.9691 1.058 0.9579 simple 0.9747 0.9805 0.9624 1.000 smith-normal-form 1.015 0.9796 1.004 0.9648 string-concat 1.046 1.095 1.031 1.013 tailfib 1.003 1.001 0.9553 1.052 tailmerge 1.064 0.9976 1.007 1.018 tak 1.034 0.9985 1.004 0.9783 tensor 0.9909 1.004 0.9382 1.026 tsp 0.9698 0.9715 1.044 1.081 tyan 0.9743 1.032 0.9592 0.9776 vector-rev 1.062 1.035 0.9386 1.046 vector32-concat 0.9604 1.016 1.041 0.9189 vector64-concat 0.9453 0.9938 0.9561 0.9335 vliw 0.9443 1.012 1.038 0.9898 wc-input1 0.9917 1.016 1.006 0.9505 wc-scanStream 1.027 0.9543 1.103 1.023 zebra 1.012 1.012 0.9888 0.9723 zern 0.9854 1.025 1.003 0.9951 MIN 0.9213 0.9543 0.9046 0.9062 GMEAN 0.9981 1.006 1.000 0.9913 MAX 1.064 1.095 1.103 1.083 Commit: ec0def189ab150b5a16d02bfc1aa4e235bf8a5be https://github.com/MLton/mlton/commit/ec0def189ab150b5a16d02bfc1aa4e235bf8a5be Author: Matthew Fluet <mat...@gm...> Date: 2020-02-26 (Wed, 26 Feb 2020) Changed paths: M mlton/backend/rep-type.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Remove control for different styles for `RepType.checkOffset` Commit: 9db8833e68daccbe5cc0592314275fe3749b0e44 https://github.com/MLton/mlton/commit/9db8833e68daccbe5cc0592314275fe3749b0e44 Author: Matthew Fluet <Mat...@gm...> Date: 2020-02-26 (Wed, 26 Feb 2020) Changed paths: M mlton/atoms/atoms.fun M mlton/atoms/atoms.sig A mlton/atoms/prod.fun A mlton/atoms/prod.sig M mlton/atoms/sources.cm M mlton/atoms/sources.mlb M mlton/backend/backend-atoms.fun M mlton/backend/backend-atoms.sig M mlton/backend/backend.fun M mlton/backend/collect-statics.fun M mlton/backend/implement-profiling.fun M mlton/backend/limit-check.fun M mlton/backend/machine.fun M mlton/backend/object-type.sig M mlton/backend/object.fun M mlton/backend/object.sig M mlton/backend/packed-representation.fun M mlton/backend/rep-type.fun M mlton/backend/rep-type.sig M mlton/backend/representation.sig M mlton/backend/rssa-type-check.fun M mlton/backend/ssa2-to-rssa.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/control/bits.sml M mlton/ssa/ssa-tree2.fun M mlton/ssa/ssa-tree2.sig A regression/flat-array.4.ok A regression/flat-array.4.sml Log Message: ----------- Merge pull request #369 from MatthewFluet/backend-types Refactor RSSA/Machine object types Change: datatype OBJECT_TYPE.t = Normal of {hasIdentity: bool, ty: ty} | Sequence of {elt: ty, hasIdentity: bool} | Stack | Weak of ty option (* in Weak (SOME t), must have Type.isObjptr t *) to datatype OBJECT_TYPE.t = Normal of {components: ty Prod.t, hasIdentity: bool} | Sequence of {components: ty Prod.t, hasIdentity: bool} | Stack | Weak of ty option (* in Weak (SOME t), must have Type.isObjptr t *) With this change, the backend is able to be less conservative about placing static objects in the `Dynamic` heap (b39a8f84c) and the RSSA type checker can verify that updates via object offsets are of mutable components (f72b174be). Compare: https://github.com/MLton/mlton/compare/3d039c2ab449...9db8833e68da |
From: Matthew F. <no...@gi...> - 2020-02-16 23:20:14
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 3d81d427894e7adb4349b8a81555d41c259a87bc https://github.com/MLton/mlton/commit/3d81d427894e7adb4349b8a81555d41c259a87bc Author: Matthew Fluet <mat...@gm...> Date: 2020-02-16 (Sun, 16 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Fix regression in functionality of `SimplifyTypes`. The previous "simplifying" of `SimplifyTypes` was overzealous. It ended up eliminating the aspects of the transformation that cleaned up types of cardinality 1; such types are equivalent (and many become translated) to `unit` and should be removed from types, arguments, etc. Commit: 3d039c2ab44931f3156db99d5e67db243b5c4d8d https://github.com/MLton/mlton/commit/3d039c2ab44931f3156db99d5e67db243b5c4d8d Author: Matthew Fluet <Mat...@gm...> Date: 2020-02-16 (Sun, 16 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Merge pull request #368 from MatthewFluet/simplify-types-update Fix regression in functionality of `SimplifyTypes`. Compare: https://github.com/MLton/mlton/compare/ef0f05961366...3d039c2ab449 |
From: Matthew F. <no...@gi...> - 2020-02-14 19:02:59
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: a7b19de3a8a38ffbae4a6183100f948cc0ac2b49 https://github.com/MLton/mlton/commit/a7b19de3a8a38ffbae4a6183100f948cc0ac2b49 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-12 (Wed, 12 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Cleanup formatting and whitespace Commit: 87d2f179aadd7a5c93e82d8eaac810e47f3a6f62 https://github.com/MLton/mlton/commit/87d2f179aadd7a5c93e82d8eaac810e47f3a6f62 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Refactor `simplifyType` property of `SimplifyTypes` to `simplifyTypeOpt` Previously, the `simplifyType` property had the type `Type.t -> Type.t`, where `Type.unit` was used to signal an uninhabited type. However, this is ambiguous, as `Type.unit` is an inhabited type. The refactored `simplifyTypeOpt` property has the type `Type.t -> Type.t option`, where `NONE` is used to signal an uninhabited type. Commit: 216d5050d8c25b479d2438cd78d991badf66dcef https://github.com/MLton/mlton/commit/216d5050d8c25b479d2438cd78d991badf66dcef Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Refactor handling of uninhabited types in `SimplifyTypes` Following the previous commit, further use a `Type.t option` and `NONE` to signal an uninhabited type, rather than a `Type.t` and `Type.unit`. In particular, a `Statement.t` that purports to produce a value of an uninhabited type must be unreachable. This optimization isn't expressible when an uninhabited type is signaled by `Type.unit`, because many statements may produce a value of `Type.unit`. Commit: 51ae3cdfeef3c47e514ad216d7105e4bd809ae2b https://github.com/MLton/mlton/commit/51ae3cdfeef3c47e514ad216d7105e4bd809ae2b Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Fix bug in `SimplifyTypes` After identifying an unreachable statement (e.g., the `ConApp` of a `Useless` constructor), `SimplifyTypes` stops visiting subsequent statements in the block. However, visiting statements is necessary to `setVarInfo` on the variables defined in the block. Because `SimplifyTypes` visits the blocks of a function via a DFS, it may visit (necessarily unreachable) blocks that use variables that were defined (but not visited) by a previously unreachable block. This triggers a `no varInfo property` compiler error. This was previously noted (see the comment at the end of MLton/mlton@19b07c0) and has now been observed in the wild (see MPLLang/mpl#107). To fix the bug, switch from a DFS to a dominator tree traversal, where the dominator tree traversal does not visit any children of an unreachable block. This addresses the `no varInfo property` compiler error, because any block that uses a variable must be dominated by the block that defines the variable. Commit: f27a6bfaacdf04572c3252a20f11f047d2952581 https://github.com/MLton/mlton/commit/f27a6bfaacdf04572c3252a20f11f047d2952581 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Further optimize `SimplifyTypes` It is impossible for a block to be called with a value of an uninhabited type. In practice, such a block is usually the target of a `Case` transfer for a `Useless` constructor. The corresponding branch of the `Case` transfer will be eliminated. Commit: efeb4ccee30ea7e814be497793f56c0bd667cefc https://github.com/MLton/mlton/commit/efeb4ccee30ea7e814be497793f56c0bd667cefc Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Rename `SimplifyTypes.Result.Bugg` to `Dead` Commit: 674c8205f54a29c81c1ce83455dd588774172868 https://github.com/MLton/mlton/commit/674c8205f54a29c81c1ce83455dd588774172868 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Use an explicit `void` type for sequences of uninhabited types Rather than using `unit` Commit: 08d219704356648fcd9319ee78dd2ce50c76b104 https://github.com/MLton/mlton/commit/08d219704356648fcd9319ee78dd2ce50c76b104 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Don't need to record information about uninhabited datatypes Commit: ed7d109115ae8c8dddb445ee0ee2f98b4dea138c https://github.com/MLton/mlton/commit/ed7d109115ae8c8dddb445ee0ee2f98b4dea138c Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Further optimize `SimplifyTypes` It is impossible for a function to be called with a value of an uninhabited type. Commit: fab36d3a79b8878e93c4edcc5802e7cec6ac6a40 https://github.com/MLton/mlton/commit/fab36d3a79b8878e93c4edcc5802e7cec6ac6a40 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Further optimize `SimplifyTypes` It is impossible for a primitive to be called with a value of an uninhabited type. Hence, a reachable primitive must have all inhabited (and therefore useful) arguments. As a further consequence, a reachable `MLton_eq` and `MLton_equal` must have all inhabited (and therefore useful) arguments and there will be no opportunity to simplify the equality to `true`. Commit: 3b8f3f782715f86716066e7ac34b306f1e796163 https://github.com/MLton/mlton/commit/3b8f3f782715f86716066e7ac34b306f1e796163 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Further optimize `SimplifyTypes` An array or vector of an uninhabited type is necessarily empty. This is important, because while an `Array_sub` or `Vector_sub` of a sequence of an uninhabited type will be recognized as unreachable, the "origin" of the unreachability is the dominating bounds check that must necessarily fail. Replacing `Array_length` and `Vector_length` of a sequence of an uninhabited type allows the dominating bounds check to be simplified. Commit: d6f732ba5270409a3027ec94a26328c02ce58fa8 https://github.com/MLton/mlton/commit/d6f732ba5270409a3027ec94a26328c02ce58fa8 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Eliminate (now) unused `unitVar` from `SimplifyTypes` Commit: 33614ae2a6aabed478c0eea67a150fe44f907245 https://github.com/MLton/mlton/commit/33614ae2a6aabed478c0eea67a150fe44f907245 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Further optimize `SimplifyTypes` It is impossible to `ConApp`, `Call`, `Raise`, or `Return` with a value of an uninhabited type. Hence, a reachable `ConApp`, `Call`, `Raise`, or `Return` must have all inhabited (and therefore useful) arguments. Commit: cdc536d584a1a6d2632cc7829a49a9a7ca070169 https://github.com/MLton/mlton/commit/cdc536d584a1a6d2632cc7829a49a9a7ca070169 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Fix latent bug in previous optimization of `SimplifyTypes` In a previous commit, it was noted that it is impossible for a block to be called with a value of an uninhabited type. This was used to justify not including such a block in the transformed function. One example is a block that is the target of a `Case` transfer for a `Useless` constructor. The corresponding branch of the `Case` transfer will be eliminated and the block will not have a use in the transformed function. However, it is possible for such a block to be the `cont` or `handle` of a non-tail call. While it will be impossible for the called function to `Return` or `Raise` with a value of an uninhabited type, the type of the function must be (mostly) preserved. In particular, the `returns` and `raises` are transformed via: val returns = Option.map (returns, keepSimplifyTypes) val raises = Option.map (raises, keepSimplifyTypes) where `keepSimplifyTypes` drops uninhabited components. Because the `returns` and `raises` of the function are not eliminated, the `cont` and `handle` blocks cannot be eliminated. On the other hand, when the block is the target of a `Case` transfer for a `Useless` constructor, then there will be no use of the block in the transformed program and the block will be eliminated by `Shrink`. While it would be possible to adjust the `cont` and `handle` at a `Call`, it is non-trivial. For example, a function that purports to return a value of an uninhabited type cannot actually `Return`, but could continue to `Raise`. However, the SSA IR cannot express a non-tail call with a `handle` but no `cont`, so some dummy `cont` block would nonetheless be required. Moreover, it would require inspecting the `returns` and `raises` types of the called function, which are not currently recorded in a property for `SimplifyTypes`. Finally, this kind of calling-convention adjustment is suitably handled by `RemoveUnused`. Commit: 92cc669d9c73f174498bb98fc0a3e224f15a11a3 https://github.com/MLton/mlton/commit/92cc669d9c73f174498bb98fc0a3e224f15a11a3 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Further optimize `SimplifyTypes` It is impossible to encounter a `ConRep.FFI` `ConApp`, because all `ConRep.FFI` constructors were converted to `ConRep.Useful`. It is impossible to encounter a `ConRep.Useless` `ConApp`, because it such constructors were deemed useless. Commit: 7f93cea64ad3d1946a775bb2f22419a432cfbc2f https://github.com/MLton/mlton/commit/7f93cea64ad3d1946a775bb2f22419a432cfbc2f Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Further optimize `SimplifyTypes`; `simplifyExp` always succeeds Commit: 297677aececbfb062a07b3c603d85a89d6b8b0e2 https://github.com/MLton/mlton/commit/297677aececbfb062a07b3c603d85a89d6b8b0e2 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-13 (Thu, 13 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Eliminate unnecessary `structure Result` in `SimplifyTypes` All statements are either dead or kept (and none are deleted), so a simple option suffices. Commit: 0ace0ffee3c4de144871a76b83ec6ab1d81a93b0 https://github.com/MLton/mlton/commit/0ace0ffee3c4de144871a76b83ec6ab1d81a93b0 Author: Matthew Fluet <mat...@gm...> Date: 2020-02-14 (Fri, 14 Feb 2020) Changed paths: M mlton/ssa/simplify-types.fun Log Message: ----------- Further optimize `SimplifyTypes` `MLton_eq` and `MLton_equal` at a type of cardinality 1 must return `true`. Commit: 9b95df4df19773c30d49a1d2ab71b181a5150cfc https://github.com/MLton/mlton/commit/9b95df4df19773c30d49a1d2ab71b181a5150cfc Author: Matthew Fluet <mat...@gm...> Date: 2020-02-14 (Fri, 14 Feb 2020) Changed paths: M CHANGELOG.adoc Log Message: ----------- Note `SimplifyTypes` bug fix in `CHANGELOG.adoc` Commit: ef0f059613665aa4087a9cf0cf236330ed463e68 https://github.com/MLton/mlton/commit/ef0f059613665aa4087a9cf0cf236330ed463e68 Author: Matthew Fluet <Mat...@gm...> Date: 2020-02-14 (Fri, 14 Feb 2020) Changed paths: M CHANGELOG.adoc M mlton/ssa/simplify-types.fun Log Message: ----------- Merge pull request #367 from MatthewFluet/simplify-types-fix Fix SimplifyTypes SSA optimization pass `SimplifyTypes` could fail with a `no varInfo property` internal compiler error. `SimplifyTypes` transforms each function by visiting the blocks via `Function.dfs`. When visiting a statement, `setVarInfo` is called for the defined variable. However, after identifying an unreachable statement (e.g., the `ConApp` of a `Useless` constructor), `SimplifyTypes` does not visit the remaining statements of the block. When continuing with the DFS, `SimplifyTypes` may subsequently visit a block that use variables that were defined (but not visited and, therefore, not `setVarInfo`-ed) by a previously visited block. This potential error was previously noted (see the comment at the end of MLton/mlton@19b07c0) and has now been observed in the wild (see MPLLang/mpl#107). To fix the error, switch from a DFS (on the control-flow graph) to a dominator tree (depth-first) traversal, where the dominator tree traversal does not visit any children blocks of an unreachable block. This addresses the `no varInfo property` internal compiler error, because any block that uses a variable must be dominated by the block that defines the variable. Also refactor the handling of uninhabited types. Previously, the `simplifyType` property had the type `Type.t -> Type.t`, where `Type.unit` was used to signal an uninhabited type. However, this is ambiguous, because `Type.unit` *is* an inhabited type. The refactored `simplifyTypeOpt` property has the type `Type.t -> Type.t option`, where `NONE` is used to signal an uninhabited type. Many subsequent simplifications of `SimplifyTypes` follow from this refactoring: * A `Statement.t` that purports to produce a value of an uninhabited type must be unreachable. This optimization isn't expressible when an uninhabited type is signaled by `Type.unit`, because many statements may produce a value of `Type.unit`. * A block with an argument of an uninhabited type must be unreachable. * A function with an argument of an unihabited type must be unreachable. * It is impossible to `ConApp`, `PrimApp`, `Call`, `Raise`, or `Return` with a value of an uninhabited type. * An array or vector of an uninhabited type must have length 0. * `MLton_eq` and `MLton_equal` at a type of cardinality 1 must return true. But, the above does not actually improve effectiveness of the optimization, because it simply eliminates dead code slight more aggressively than before. This dead code was likely to have been eliminated by `Shrink` and/or `RemoveUnused`. Compare: https://github.com/MLton/mlton/compare/2521cb3c6858...ef0f05961366 |