Releases: ocsigen/js_of_ocaml
Releases · ocsigen/js_of_ocaml
6.1.1
6.1.0
CHANGES:
Features/Changes
- Misc: drop support for OCaml 4.12 and bellow
- Misc: switch to dune.3.19
- Misc: initial support for ocaml 5.4 (#2030, #2058)
- Compiler: support for OCaml 4.14.3+trunk (#1844)
- Compiler: add the
--empty-sourcemap
flag - Compiler: improve debug/sourcemap location of closures (#1947)
- Compiler: optimize compilation of switches (#1921, #2057)
- Compiler: evaluate statically more primitives (#1912, #1915, #1965, #1969)
- Compiler: rewrote inlining pass (#1935, #2018, #2027)
- Compiler: improve tailcall optimization (#1943)
- Compiler: improve deadcode optimization (#1963, #1962, #1967)
- Compiler: deadcode elimination of cyclic values (#1978)
- Compiler: remove empty blocks (#1934)
- Compiler: improve coloring optimization (#1971, #1984, #1986, #1989)
- Compiler: faster constant sharing (#1988)
- Compiler: faster js code generation (#1985, #2066)
- Compiler: improve performance of Javascript linking
- Compiler: more efficient code generation from bytecode (#1972)
- Compiler: faster compilation by improving the scheduling of optimization passes (#1962, #2001, #2012, #2027)
- Compiler: faster compilation by stopping sooner when optimizations become unproductive (#1939)
- Compiler: Propagate arity between compilation units (#1594)
- Compiler: Add flags to enable/disable warnings (#2052)
- Compiler/wasm: directly write Wasm binary modules (#2000, #2003)
- Compiler/wasm: faster wat output (#1992)
- Compiler/wasm: use a Wasm text files preprocessor (#1822)
- Compiler/wasm: optimize integer operations (#2032)
- Compiler/wasm: use type analysis to remove some unnecessary uses of JavasScript strict equality (#2040)
- Compiler/wasm: use more precise environment types (#2041)
- Compiler/wasm: optimize calls to statically known function (#2044)
- Runtime: use es6 class (#1840)
- Runtime: support more Unix functions (#1829)
- Runtime: remove polyfill for Map to simplify MlObjectTable implementation (#1846)
- Runtime: refactor caml_xmlhttprequest_create implementation (#1846)
- Runtime: update constant imports to use
node:fs
module (#1850) - Runtime: make Obj.dup work with floats and boxed numbers (#1871)
- Runtime: delete BigStringReader, one should use UInt8ArrayReader instead
- Runtime: less conversion during un-marshalling (#1889)
- Runtime: use TextEncoder/TextDecoder for utf8-utf16 conversions
- Runtime: use Dataview to convert between floats and bit representation
- Runtime: optimize Str.search_forward/search_backward (#2056)
- Runtime: deprecate caml_ba_create_from (#2056)
- Runtime: check for unused variable in the runtime (#2056)
- Runtime/wasm: implement BLAKE2b primitives for Wasm (#1873)
- Runtime/wasm: support jsoo_env and keep track of backtrace status (#1881)
- Runtime/wasm: support unmarshaling compressed data (#1898)
- Runtime/wasm: make resuming a continuation more efficient in Wasm (#1892)
- Runtime/wasm: use imported string constants for JavaScript strings (#2022)
- Runtime/wasm: use DataView primitives to implement bigarrays (#1979)
- Ppx: explicitly disallow polymorphic method (#1897)
- Ppx: allow "function" in object literals (#1897)
- Lib: add Dom_html.window.matchMedia & Dom_html.mediaQueryList (#2017)
- Lib: make the Wasm version of Json.output work with native ints and JavaScript objects (#1872)
Bug fixes
- Compiler: fix stack overflow issues with double translation (#1869)
- Compiler: minifier fix (#1867)
- Compiler: fix shortvar with --enable es6 (AssignTarget was not properly handled)
- Compiler: fix assert failure with double translation (#1870)
- Compiler: fix path rewriting of Wasm source maps (#1882)
- Compiler: fix global dead code in presence of dead tailcall (#2010)
- Compiler/wasm: fix bound check for empty float array (#1904)
- Runtime: fix path normalization (#1848)
- Runtime: fix reading from the pseudo-filesystem (#1859)
- Runtime: fix initialization of standard streams under Windows (#1849)
- Runtime: fix Int64.of_string overflow check (#1874)
- Runtime: fix caml_string_concat when not using JS strings (#1874)
- Runtime: consistent bigarray hashing across all architectures (#1977)
- Runtime: fix caml_utf8_of_utf16 bug in high surrogate case (#2008)
- Runtime: fix method lookup (#2034, #2038, #2039)
- Lib: fix Dom_html.Keyboard_code.of_event (#1878)
- Tools: fix jsoo_mktop and jsoo_mkcmis (#1877)
- Toplevel: fix for when use-js-strings is disabled (#1997)
6.0.1
CHANGES:
Features/Changes
- Compiler/Runtime: Make resuming a continuation more efficient in js (#1765)
- Compiler/Runtime: Effects: add an optional feature of "dynamic switching" between CPS
and direct style, resulting in better performance when
no effect handler is installed - Compiler: Merged Wasm_of_ocaml (#1724)
- Lib: fix the type of some DOM properties and methods (#1747)
- Lib: removed no longer relevant Js.optdef type annotations (#1769)
- Lib: Add other textMetrics property (#1784)
- Lib: rename Firebug to Console (#1802)
- Test: use dune test stanzas (#1631)
- Test: run wasm tests on windows
- Misc: drop support for IE
- Misc: move tests to OCaml 5.3
- Misc: import many test from the OCaml codebase
- Runtime: support for float16 bigarrays
- Runtime: support more Unix functions (#1823)
- Runtime: various filesystem fixes (#1825)
Bug fixes
- Compiler: Fix small bug in global data flow analysis (#1768)
- Runtime: no longer leak channels
- Runtime: Fix Marshal.to_buffer (#1798)
- Runtime: unmarshalling objects should refresh its id
- Runtime: check size upper bound during array creation
- Runtime: return sys_error when reading from a closed channels
- Runtime: fix parsing of hex-float with very large exponent
- Runtime: make sure [n / 0L] is not optimized away by DCE
- Runtime: fix Unix.LargeFile.stat/lstat
- Runtime: fix stat/lstat times
- Runtime: fix reading from stdin in an interactive nodejs
6.0.0
CHANGES:
Features/Changes
- Compiler/Runtime: Make resuming a continuation more efficient in js (#1765)
- Compiler/Runtime: Effects: add an optional feature of "dynamic switching" between CPS
and direct style, resulting in better performance when
no effect handler is installed - Compiler: Merged Wasm_of_ocaml (#1724)
- Lib: fix the type of some DOM properties and methods (#1747)
- Lib: removed no longer relevant Js.optdef type annotations (#1769)
- Lib: Add other textMetrics property (#1784)
- Lib: rename Firebug to Console (#1802)
- Test: use dune test stanzas (#1631)
- Test: run wasm tests on windows
- Misc: drop support for IE
- Misc: move tests to OCaml 5.3
- Misc: import many test from the OCaml codebase
- Runtime: support for float16 bigarrays
- Runtime: support more Unix functions (#1823)
- Runtime: various filesystem fixes (#1825)
Bug fixes
- Compiler: Fix small bug in global data flow analysis (#1768)
- Runtime: no longer leak channels
- Runtime: Fix Marshal.to_buffer (#1798)
- Runtime: unmarshalling objects should refresh its id
- Runtime: check size upper bound during array creation
- Runtime: return sys_error when reading from a closed channels
- Runtime: fix parsing of hex-float with very large exponent
- Runtime: make sure [n / 0L] is not optimized away by DCE
- Runtime: fix Unix.LargeFile.stat/lstat
- Runtime: fix stat/lstat times
- Runtime: fix reading from stdin in an interactive nodejs
5.9.1
5.9.0
CHANGES:
Features/Changes
- Misc: update testsuite to OCaml 5.2
- Misc: CI uses opam.2.2 and no longer use sunset repo
- Misc: yojson is no longer optional
- Misc: reduce the diff with the wasm_of_ocaml fork
- Misc: finalize support for OCaml 5.3
- Compiler: speedup global_flow/global_deadcode pass on large bytecode
- Compiler: improved global dead code elimination (#2206)
- Compiler: speedup json parsing, relying on Yojson.Raw (#1640)
- Compiler: Decode sourcemap mappings only when necessary (#1664)
- Compiler: mark [TextEncoder] as reserved
- Compiler: add support for the Wasm backend in parts of the pipeline, in
prevision for the merge of wasm_of_ocaml - Compiler: introduce a Targetint module
that follows the semantic of the backend (js or wasm) - Compiler: warn on joo_global_object
- Compiler: revisit static env handling (#1708)
- Compiler: Emit index source_map to avoid changing mappings (#1714, #1715)
- Compiler: improved source map generation (#1716)
- Runtime: change Sys.os_type on windows (Cygwin -> Win32)
- Runtime: backtraces are really expensive, they need to be explicitly
requested at compile time (--enable with-js-error) or at startup (OCAMLRUNPARAM=b=1) - Runtime: allow dynlink of precompiled js with separate compilation (#1676)
- Runtime: reimplement the runtime of weak and ephemeron (#1707)
- Lib: Modify Typed_array API for compatibility with WebAssembly
- Lib: add details element and toggle event (#1728)
- Toplevel: no longer set globals for toplevel initialization
- Runtime: precompute constants used in
caml_lxm_next
(#1730) - Runtime: cleanup runtime
Bug fixes
- Runtime: fix parsing of unsigned integers (0u2147483648) (#1633, #1666)
- Runtime: fix incorrect pos_in after unmarshalling
- Runtime: make float_of_string stricter (#1609)
- Toplevel: fix missing primitives with separate compilation
- Compiler: fix link of packed modules with separate compilation
- Compiler: Fixed the static evaluation of some equalities (#1659)
- Compiler: fix global analysis bug (subsumes #1556)
5.8.2
5.8.1
5.8.0
CHANGES:
Features/Changes
- Compiler: es6 now generate consise body
- Compiler: codegen: optimize Offset_ref for negative offsets
- Compiler: codegen: change argument passing of back edges.
- Compiler: codegen: use Array destruction to assign args of back
edges with es6. - Compiler: codegen: specialize string equality
- Compiler: codegen: more specialization for %int_add, %int_sub
- Compiler: recognize and optimize String.concat
- Compiler: more inlining - duplicate small function.
- Compiler: Make it possible to link runtime JavaScript file
together with OCaml libraries #1509 - Runtime: abort instead of exit when calling unimplemented
js primitives in bytecode/native. It should help if one tries
to understand the source of the call with gdb (see #677) - Runtime: re-enable marshalling of floats, disabled in jsoo 2.0
- Runtime: new runtime api for channels
Bug fixes
- Compiler: fix variable renaming for property binding and assignment target
- Compiler: fix separate compilation of toplevels (broken since 5.7.0)
- Compiler: fix assertion while checking stack compatibility (#1600)