CHANGES:
Features/Changes
- Lib: Added support for KeyboardEvent.getModifierState
- Misc: bump min ocaml version to 4.08
- Misc: remove some old runtime files to support some external libs
- Misc: switch to dune 3.7
- Effects: partial CPS transformation, resulting in much better performances, lower compilation time and smaller generated code
- Compiler: separate compilation can now drops unused units when linking (similar to ocamlc). (#1378)
- Compiler: specialize string to js-string conversion for all valid utf8 strings (previously just ascii)
- Compiler: JavaScript files generated by
js_of_ocaml
are now UTF-8 encoded. - Compiler: use identifier for object literals when possible
- Compiler: Cache function arity (the length prop of a function is slow with v8)
- Compiler: The js lexer is now utf8 aware, recognize and emit utf8 ident
- Compiler: Update the js lexer with new number literal syntax
- Compiler: update js parser to support most es6 feature (#1391)
- Compiler: stop parsing the builtin js runtime if not necessary
- Compiler: improve js pretty printer (#1405)
- Compiler: improve debug location and speedup compilation (#1407)
- Toplevel: Enable separate compilation of toplevels
- Runtime: js backtrace recording controled by OCAMLRUNPARAM
- Runtime: support for zstd decompression of marshalled data (ocaml.5.1) (#12006)
- Runtime: stub out custom runtime events symbols for OCaml 5.1 (#1414)
Bug fixes
- Effects: fix Js.export and Js.export_all to work with functions (#1417,#1377)
- Sourcemap: fix incorrect sourcemap with separate compilation
- Compiler: fix control flow analysis; some annotions were wrong in the runtime
- Compiler: js backtrace recording respected in the js runtime and when using effects
- Compiler: no longer fail on invalid source file (when the file is a directory)
- Runtime: fix the compilation of some mutually recursive functions