|
From: 'Matthew F. v. MLton-c. <mlt...@ml...> - 2026-10-03 23:49:07
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 4e5ea5b15cac2986c0a7b12f977d10f22628abde https://github.com/MLton/mlton/commit/4e5ea5b15cac2986c0a7b12f977d10f22628abde Author: Matthew Fluet <mat...@gm...> Date: 2026-10-02 (Fri, 02 Oct 2026) Changed paths: M Makefile M Makefile.config M bin/mlton-script A lib/stubs/rune/basis/sources.txt A lib/stubs/rune/mlton/mlton.sml A lib/stubs/rune/mlton/sources.txt M mlton/.gitignore M mlton/Makefile Log Message: ----------- Rune (https://github.com/ruudkoot/rune) compiled version of MLton Commit: 6b81cf670fcb4d856c666725572313dfa937af55 https://github.com/MLton/mlton/commit/6b81cf670fcb4d856c666725572313dfa937af55 Author: Matthew Fluet <mat...@gm...> Date: 2026-10-02 (Fri, 02 Oct 2026) Changed paths: A lib/stubs/common/mlton/mlton.sml R lib/stubs/mlkit/mlton/mlton.sml M lib/stubs/mlkit/mlton/sources.mlb R lib/stubs/polyml/mlton/mlton.sml M lib/stubs/polyml/mlton/sources.use R lib/stubs/rune/mlton/mlton.sml M lib/stubs/rune/mlton/sources.txt Log Message: ----------- Share stub `structure MLton` as `./lib/stubs/common/mlton/mlton.sml` Commit: 2e3cd679ec25fae6aff6d83fc553ca6c686e786b https://github.com/MLton/mlton/commit/2e3cd679ec25fae6aff6d83fc553ca6c686e786b Author: Matthew Fluet <mat...@gm...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M bin/mlton-script Log Message: ----------- Allow overriding and passing flags to `runevm` in `mlton.rune` script Commit: 5fe943391e539a502699327a6266b6e8e97939e1 https://github.com/MLton/mlton/commit/5fe943391e539a502699327a6266b6e8e97939e1 Author: Matthew Fluet <Mat...@gm...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M Makefile M Makefile.config M bin/mlton-script A lib/stubs/common/mlton/mlton.sml R lib/stubs/mlkit/mlton/mlton.sml M lib/stubs/mlkit/mlton/sources.mlb R lib/stubs/polyml/mlton/mlton.sml M lib/stubs/polyml/mlton/sources.use A lib/stubs/rune/basis/sources.txt A lib/stubs/rune/mlton/sources.txt M mlton/.gitignore M mlton/Makefile Log Message: ----------- Merge pull request #660 from MatthewFluet/rune-build Support building MLton with Rune (https://github.com/ruudkoot/rune) Rune (https://github.com/ruudkoot/rune) is a new SML compiler, written primarily by AI agents, and bootstrapped from multiple SML compilers (MLton, SML/NJ, PolyML, MLKit). The project is impressive from a correctness and robustness standpoint. The Rune build of MLton requires no Basis Library stubs and successfully builds MLton without errors (neither errors with Rune building MLton, nor errors with the Rune-built-MLton building MLton). Rune uses a "fuel" parameter to limit type-inference work per topdec, presumably to prevent infinite loops (though, algorithmically, neither well-typed nor ill-typed programs should cause type inference to diverge), for which the default setting (10000000) is insufficient for some of MLton's source files. Increasing the default limit by a factor of 100 to `--type-work=1000000000` was sufficient. The default Rune target (https://github.com/ruudkoot/rune/commit/4652d4a) is a stack bytecode interpreter and the compiler does not (yet) perform significant optimizations. Performance of a Rune-built program can be many times slower than a MLton-built program: | Compiler | `/usr/bin/time` building MLton | |-------------------|-------------------------------------------------| | MLton-built-Rune | 121.80user 48.00system 2:50.46elapsed 99%CPU | | Rune-built-Rune | 900.96user 56.48system 16:01.90elapsed 99%CPU | | MLton-built-MLton | 235.05user 35.80system 4:32.32elapsed 99%CPU | | Rune-built-MLton | 8642.86user 1455.04system 2:48:56elapsed 99%CPU | While a Rune-built-Rune is 5.64x times slower than a MLton-built-Rune building MLton, a Rune-built-MLton is 37.22x slower than a MLton-built-MLton building MLton. The MLton-built-Rune built MLton and the Rune-built-Rune built MLton are identical Rune bytecode. The MLton-built-MLton built MLton and the Rune-built-MLton built MLton are not quite identical, due to a non-MLton host compiler using `structure MLton` stubs (https://github.com/MLton/mlton/tree/master/lib/stubs/mlton-stubs). The new default Rune target (https://github.com/ruudkoot/rune/commit/3b86b52) is a register bytecode / JIT VM: | Compiler | `/usr/bin/time` building MLton | |-------------------|-------------------------------------------------| | MLton-built-Rune | 122.19user 48.69system 2:51.55elapsed 99%CPU | | Rune-built-Rune | 516.89user 68.35system 9:47.92elapsed 99%CPU | | MLton-built-MLton | 240.50user 36.19system 4:38.11elapsed 99%CPU | | Rune-built-MLton | 4454.96user 1055.77system 1:32:16elapsed 99%CPU | Now a Rune-built-Rune is 3.43x times slower than a MLton-built-Rune building MLton and a Rune-built-MLton is 19.91x slower than a MLton-built-MLton building MLton. Compare: https://github.com/MLton/mlton/compare/936011ca7acd...5fe943391e53 To unsubscribe from these emails, change your notification settings at https://github.com/MLton/mlton/settings/notifications To unsubscribe from this group and stop receiving emails from it, send an email to mlt...@ml.... |