Skip to content

Conversation

vouillon
Copy link
Member

No description provided.

@vouillon vouillon added the wasm label Mar 13, 2025
@OlivierNicole
Copy link
Contributor

So there is no need to do rewriting at link time, because we assume all source maps have been generated by us?

@vouillon vouillon force-pushed the wasm-source-maps branch 2 times, most recently from f485af9 to 56f366a Compare March 13, 2025 18:32
@hhugo
Copy link
Member

hhugo commented Mar 14, 2025

Maybe we should use the new rewrite_paths function in the json functions that currently call rewrite_path multiple times.

@vouillon
Copy link
Member Author

So, I think that the issue was actually that we were just copying the source map without rewriting paths in one case:

| `File opt_file ->
Option.map opt_file ~f:(fun file ->
Zip.add_file z ~name:"source_map.map" ~file;

We were also rewriting paths twice during linking.

@hhugo hhugo merged commit bdc6d9f into master Mar 15, 2025
51 of 59 checks passed
@hhugo hhugo deleted the wasm-source-maps branch March 15, 2025 10:07
hhugo added a commit to hhugo/opam-repository that referenced this pull request Jun 27, 2025
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 (ocsigen/js_of_ocaml#2030, ocsigen/js_of_ocaml#2058)
* Compiler: support for OCaml 4.14.3+trunk (ocsigen/js_of_ocaml#1844)
* Compiler: add the `--empty-sourcemap` flag
* Compiler: improve debug/sourcemap location of closures (ocsigen/js_of_ocaml#1947)
* Compiler: optimize compilation of switches (ocsigen/js_of_ocaml#1921, ocsigen/js_of_ocaml#2057)
* Compiler: evaluate statically more primitives (ocsigen/js_of_ocaml#1912, ocsigen/js_of_ocaml#1915, ocsigen/js_of_ocaml#1965, ocsigen/js_of_ocaml#1969)
* Compiler: rewrote inlining pass (ocsigen/js_of_ocaml#1935, ocsigen/js_of_ocaml#2018, ocsigen/js_of_ocaml#2027)
* Compiler: improve tailcall optimization (ocsigen/js_of_ocaml#1943)
* Compiler: improve deadcode optimization (ocsigen/js_of_ocaml#1963, ocsigen/js_of_ocaml#1962, ocsigen/js_of_ocaml#1967)
* Compiler: deadcode elimination of cyclic values (ocsigen/js_of_ocaml#1978)
* Compiler: remove empty blocks (ocsigen/js_of_ocaml#1934)
* Compiler: improve coloring optimization (ocsigen/js_of_ocaml#1971, ocsigen/js_of_ocaml#1984, ocsigen/js_of_ocaml#1986, ocsigen/js_of_ocaml#1989)
* Compiler: faster constant sharing (ocsigen/js_of_ocaml#1988)
* Compiler: faster js code generation (ocsigen/js_of_ocaml#1985)
* Compiler: improve performance of Javascript linking
* Compiler: more efficient code generation from bytecode (ocsigen/js_of_ocaml#1972)
* Compiler: faster compilation by improving the scheduling of optimization passes (ocsigen/js_of_ocaml#1962, ocsigen/js_of_ocaml#2001, ocsigen/js_of_ocaml#2012, ocsigen/js_of_ocaml#2027)
* Compiler: faster compilation by stopping sooner when optimizations become unproductive (ocsigen/js_of_ocaml#1939)
* Compiler: Propagate arity between compilation units (ocsigen/js_of_ocaml#1594)
* Compiler: Add flags to enable/disable warnings (ocsigen/js_of_ocaml#2052)
* Compiler/wasm: directly write Wasm binary modules (ocsigen/js_of_ocaml#2000, ocsigen/js_of_ocaml#2003)
* Compiler/wasm: faster wat output (ocsigen/js_of_ocaml#1992)
* Compiler/wasm: use a Wasm text files preprocessor (ocsigen/js_of_ocaml#1822)
* Compiler/wasm: optimize integer operations (ocsigen/js_of_ocaml#2032)
* Compiler/wasm: use type analysis to remove some unnecessary uses of JavasScript strict equality (ocsigen/js_of_ocaml#2040)
* Compiler/wasm: use more precise environment types (ocsigen/js_of_ocaml#2041)
* Compiler/wasm: optimize calls to statically known function (ocsigen/js_of_ocaml#2044)
* Runtime: use es6 class (ocsigen/js_of_ocaml#1840)
* Runtime: support more Unix functions (ocsigen/js_of_ocaml#1829)
* Runtime: remove polyfill for Map to simplify MlObjectTable implementation (ocsigen/js_of_ocaml#1846)
* Runtime: refactor caml_xmlhttprequest_create implementation (ocsigen/js_of_ocaml#1846)
* Runtime: update constant imports to use `node:fs` module (ocsigen/js_of_ocaml#1850)
* Runtime: make Obj.dup work with floats and boxed numbers (ocsigen/js_of_ocaml#1871)
* Runtime: delete BigStringReader, one should use UInt8ArrayReader instead
* Runtime: less conversion during un-marshalling (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#2056)
* Runtime: deprecate caml_ba_create_from (ocsigen/js_of_ocaml#2056)
* Runtime: check for unused variable in the runtime (ocsigen/js_of_ocaml#2056)
* Runtime/wasm: implement BLAKE2b primitives for Wasm (ocsigen/js_of_ocaml#1873)
* Runtime/wasm: support jsoo_env and keep track of backtrace status (ocsigen/js_of_ocaml#1881)
* Runtime/wasm: support unmarshaling compressed data (ocsigen/js_of_ocaml#1898)
* Runtime/wasm: make resuming a continuation more efficient in Wasm (ocsigen/js_of_ocaml#1892)
* Runtime/wasm: use imported string constants for JavaScript strings (ocsigen/js_of_ocaml#2022)
* Runtime/wasm: use DataView primitives to implement bigarrays (ocsigen/js_of_ocaml#1979)
* Ppx: explicitly disallow polymorphic method (ocsigen/js_of_ocaml#1897)
* Ppx: allow "function" in object literals (ocsigen/js_of_ocaml#1897)
* Lib: add Dom_html.window.matchMedia & Dom_html.mediaQueryList (ocsigen/js_of_ocaml#2017)
* Lib: make the Wasm version of Json.output work with native ints and JavaScript objects (ocsigen/js_of_ocaml#1872)

## Bug fixes
* Compiler: fix stack overflow issues with double translation (ocsigen/js_of_ocaml#1869)
* Compiler: minifier fix (ocsigen/js_of_ocaml#1867)
* Compiler: fix shortvar with --enable es6 (AssignTarget was not properly handled)
* Compiler: fix assert failure with double translation (ocsigen/js_of_ocaml#1870)
* Compiler: fix path rewriting of Wasm source maps (ocsigen/js_of_ocaml#1882)
* Compiler: fix global dead code in presence of dead tailcall (ocsigen/js_of_ocaml#2010)
* Compiler/wasm: fix bound check for empty float array (ocsigen/js_of_ocaml#1904)
* Runtime: fix path normalization (ocsigen/js_of_ocaml#1848)
* Runtime: fix reading from the pseudo-filesystem (ocsigen/js_of_ocaml#1859)
* Runtime: fix initialization of standard streams under Windows (ocsigen/js_of_ocaml#1849)
* Runtime: fix Int64.of_string overflow check (ocsigen/js_of_ocaml#1874)
* Runtime: fix caml_string_concat when not using JS strings (ocsigen/js_of_ocaml#1874)
* Runtime: consistent bigarray hashing across all architectures (ocsigen/js_of_ocaml#1977)
* Runtime: fix caml_utf8_of_utf16 bug in high surrogate case (ocsigen/js_of_ocaml#2008)
* Runtime: fix method lookup (ocsigen/js_of_ocaml#2034, ocsigen/js_of_ocaml#2038, ocsigen/js_of_ocaml#2039)
* Lib: fix Dom_html.Keyboard_code.of_event (ocsigen/js_of_ocaml#1878)
* Tools: fix jsoo_mktop and jsoo_mkcmis (ocsigen/js_of_ocaml#1877)
* Toplevel: fix for when use-js-strings is disabled (ocsigen/js_of_ocaml#1997)
hhugo added a commit to hhugo/opam-repository that referenced this pull request Jul 4, 2025
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 (ocsigen/js_of_ocaml#2030, ocsigen/js_of_ocaml#2058)
* Compiler: support for OCaml 4.14.3+trunk (ocsigen/js_of_ocaml#1844)
* Compiler: add the `--empty-sourcemap` flag
* Compiler: improve debug/sourcemap location of closures (ocsigen/js_of_ocaml#1947)
* Compiler: optimize compilation of switches (ocsigen/js_of_ocaml#1921, ocsigen/js_of_ocaml#2057)
* Compiler: evaluate statically more primitives (ocsigen/js_of_ocaml#1912, ocsigen/js_of_ocaml#1915, ocsigen/js_of_ocaml#1965, ocsigen/js_of_ocaml#1969)
* Compiler: rewrote inlining pass (ocsigen/js_of_ocaml#1935, ocsigen/js_of_ocaml#2018, ocsigen/js_of_ocaml#2027)
* Compiler: improve tailcall optimization (ocsigen/js_of_ocaml#1943)
* Compiler: improve deadcode optimization (ocsigen/js_of_ocaml#1963, ocsigen/js_of_ocaml#1962, ocsigen/js_of_ocaml#1967)
* Compiler: deadcode elimination of cyclic values (ocsigen/js_of_ocaml#1978)
* Compiler: remove empty blocks (ocsigen/js_of_ocaml#1934)
* Compiler: improve coloring optimization (ocsigen/js_of_ocaml#1971, ocsigen/js_of_ocaml#1984, ocsigen/js_of_ocaml#1986, ocsigen/js_of_ocaml#1989)
* Compiler: faster constant sharing (ocsigen/js_of_ocaml#1988)
* Compiler: faster js code generation (ocsigen/js_of_ocaml#1985, ocsigen/js_of_ocaml#2066)
* Compiler: improve performance of Javascript linking
* Compiler: more efficient code generation from bytecode (ocsigen/js_of_ocaml#1972)
* Compiler: faster compilation by improving the scheduling of optimization passes (ocsigen/js_of_ocaml#1962, ocsigen/js_of_ocaml#2001, ocsigen/js_of_ocaml#2012, ocsigen/js_of_ocaml#2027)
* Compiler: faster compilation by stopping sooner when optimizations become unproductive (ocsigen/js_of_ocaml#1939)
* Compiler: Propagate arity between compilation units (ocsigen/js_of_ocaml#1594)
* Compiler: Add flags to enable/disable warnings (ocsigen/js_of_ocaml#2052)
* Compiler/wasm: directly write Wasm binary modules (ocsigen/js_of_ocaml#2000, ocsigen/js_of_ocaml#2003)
* Compiler/wasm: faster wat output (ocsigen/js_of_ocaml#1992)
* Compiler/wasm: use a Wasm text files preprocessor (ocsigen/js_of_ocaml#1822)
* Compiler/wasm: optimize integer operations (ocsigen/js_of_ocaml#2032)
* Compiler/wasm: use type analysis to remove some unnecessary uses of JavasScript strict equality (ocsigen/js_of_ocaml#2040)
* Compiler/wasm: use more precise environment types (ocsigen/js_of_ocaml#2041)
* Compiler/wasm: optimize calls to statically known function (ocsigen/js_of_ocaml#2044)
* Runtime: use es6 class (ocsigen/js_of_ocaml#1840)
* Runtime: support more Unix functions (ocsigen/js_of_ocaml#1829)
* Runtime: remove polyfill for Map to simplify MlObjectTable implementation (ocsigen/js_of_ocaml#1846)
* Runtime: refactor caml_xmlhttprequest_create implementation (ocsigen/js_of_ocaml#1846)
* Runtime: update constant imports to use `node:fs` module (ocsigen/js_of_ocaml#1850)
* Runtime: make Obj.dup work with floats and boxed numbers (ocsigen/js_of_ocaml#1871)
* Runtime: delete BigStringReader, one should use UInt8ArrayReader instead
* Runtime: less conversion during un-marshalling (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#2056)
* Runtime: deprecate caml_ba_create_from (ocsigen/js_of_ocaml#2056)
* Runtime: check for unused variable in the runtime (ocsigen/js_of_ocaml#2056)
* Runtime/wasm: implement BLAKE2b primitives for Wasm (ocsigen/js_of_ocaml#1873)
* Runtime/wasm: support jsoo_env and keep track of backtrace status (ocsigen/js_of_ocaml#1881)
* Runtime/wasm: support unmarshaling compressed data (ocsigen/js_of_ocaml#1898)
* Runtime/wasm: make resuming a continuation more efficient in Wasm (ocsigen/js_of_ocaml#1892)
* Runtime/wasm: use imported string constants for JavaScript strings (ocsigen/js_of_ocaml#2022)
* Runtime/wasm: use DataView primitives to implement bigarrays (ocsigen/js_of_ocaml#1979)
* Ppx: explicitly disallow polymorphic method (ocsigen/js_of_ocaml#1897)
* Ppx: allow "function" in object literals (ocsigen/js_of_ocaml#1897)
* Lib: add Dom_html.window.matchMedia & Dom_html.mediaQueryList (ocsigen/js_of_ocaml#2017)
* Lib: make the Wasm version of Json.output work with native ints and JavaScript objects (ocsigen/js_of_ocaml#1872)

## Bug fixes
* Compiler: fix stack overflow issues with double translation (ocsigen/js_of_ocaml#1869)
* Compiler: minifier fix (ocsigen/js_of_ocaml#1867)
* Compiler: fix shortvar with --enable es6 (AssignTarget was not properly handled)
* Compiler: fix assert failure with double translation (ocsigen/js_of_ocaml#1870)
* Compiler: fix path rewriting of Wasm source maps (ocsigen/js_of_ocaml#1882)
* Compiler: fix global dead code in presence of dead tailcall (ocsigen/js_of_ocaml#2010)
* Compiler/wasm: fix bound check for empty float array (ocsigen/js_of_ocaml#1904)
* Runtime: fix path normalization (ocsigen/js_of_ocaml#1848)
* Runtime: fix reading from the pseudo-filesystem (ocsigen/js_of_ocaml#1859)
* Runtime: fix initialization of standard streams under Windows (ocsigen/js_of_ocaml#1849)
* Runtime: fix Int64.of_string overflow check (ocsigen/js_of_ocaml#1874)
* Runtime: fix caml_string_concat when not using JS strings (ocsigen/js_of_ocaml#1874)
* Runtime: consistent bigarray hashing across all architectures (ocsigen/js_of_ocaml#1977)
* Runtime: fix caml_utf8_of_utf16 bug in high surrogate case (ocsigen/js_of_ocaml#2008)
* Runtime: fix method lookup (ocsigen/js_of_ocaml#2034, ocsigen/js_of_ocaml#2038, ocsigen/js_of_ocaml#2039)
* Lib: fix Dom_html.Keyboard_code.of_event (ocsigen/js_of_ocaml#1878)
* Tools: fix jsoo_mktop and jsoo_mkcmis (ocsigen/js_of_ocaml#1877)
* Toplevel: fix for when use-js-strings is disabled (ocsigen/js_of_ocaml#1997)
hhugo added a commit to hhugo/opam-repository that referenced this pull request Jul 4, 2025
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 (ocsigen/js_of_ocaml#2030, ocsigen/js_of_ocaml#2058)
* Compiler: support for OCaml 4.14.3+trunk (ocsigen/js_of_ocaml#1844)
* Compiler: add the `--empty-sourcemap` flag
* Compiler: improve debug/sourcemap location of closures (ocsigen/js_of_ocaml#1947)
* Compiler: optimize compilation of switches (ocsigen/js_of_ocaml#1921, ocsigen/js_of_ocaml#2057)
* Compiler: evaluate statically more primitives (ocsigen/js_of_ocaml#1912, ocsigen/js_of_ocaml#1915, ocsigen/js_of_ocaml#1965, ocsigen/js_of_ocaml#1969)
* Compiler: rewrote inlining pass (ocsigen/js_of_ocaml#1935, ocsigen/js_of_ocaml#2018, ocsigen/js_of_ocaml#2027)
* Compiler: improve tailcall optimization (ocsigen/js_of_ocaml#1943)
* Compiler: improve deadcode optimization (ocsigen/js_of_ocaml#1963, ocsigen/js_of_ocaml#1962, ocsigen/js_of_ocaml#1967)
* Compiler: deadcode elimination of cyclic values (ocsigen/js_of_ocaml#1978)
* Compiler: remove empty blocks (ocsigen/js_of_ocaml#1934)
* Compiler: improve coloring optimization (ocsigen/js_of_ocaml#1971, ocsigen/js_of_ocaml#1984, ocsigen/js_of_ocaml#1986, ocsigen/js_of_ocaml#1989)
* Compiler: faster constant sharing (ocsigen/js_of_ocaml#1988)
* Compiler: faster js code generation (ocsigen/js_of_ocaml#1985, ocsigen/js_of_ocaml#2066)
* Compiler: improve performance of Javascript linking
* Compiler: more efficient code generation from bytecode (ocsigen/js_of_ocaml#1972)
* Compiler: faster compilation by improving the scheduling of optimization passes (ocsigen/js_of_ocaml#1962, ocsigen/js_of_ocaml#2001, ocsigen/js_of_ocaml#2012, ocsigen/js_of_ocaml#2027)
* Compiler: faster compilation by stopping sooner when optimizations become unproductive (ocsigen/js_of_ocaml#1939)
* Compiler: Propagate arity between compilation units (ocsigen/js_of_ocaml#1594)
* Compiler: Add flags to enable/disable warnings (ocsigen/js_of_ocaml#2052)
* Compiler/wasm: directly write Wasm binary modules (ocsigen/js_of_ocaml#2000, ocsigen/js_of_ocaml#2003)
* Compiler/wasm: faster wat output (ocsigen/js_of_ocaml#1992)
* Compiler/wasm: use a Wasm text files preprocessor (ocsigen/js_of_ocaml#1822)
* Compiler/wasm: optimize integer operations (ocsigen/js_of_ocaml#2032)
* Compiler/wasm: use type analysis to remove some unnecessary uses of JavasScript strict equality (ocsigen/js_of_ocaml#2040)
* Compiler/wasm: use more precise environment types (ocsigen/js_of_ocaml#2041)
* Compiler/wasm: optimize calls to statically known function (ocsigen/js_of_ocaml#2044)
* Runtime: use es6 class (ocsigen/js_of_ocaml#1840)
* Runtime: support more Unix functions (ocsigen/js_of_ocaml#1829)
* Runtime: remove polyfill for Map to simplify MlObjectTable implementation (ocsigen/js_of_ocaml#1846)
* Runtime: refactor caml_xmlhttprequest_create implementation (ocsigen/js_of_ocaml#1846)
* Runtime: update constant imports to use `node:fs` module (ocsigen/js_of_ocaml#1850)
* Runtime: make Obj.dup work with floats and boxed numbers (ocsigen/js_of_ocaml#1871)
* Runtime: delete BigStringReader, one should use UInt8ArrayReader instead
* Runtime: less conversion during un-marshalling (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#2056)
* Runtime: deprecate caml_ba_create_from (ocsigen/js_of_ocaml#2056)
* Runtime: check for unused variable in the runtime (ocsigen/js_of_ocaml#2056)
* Runtime/wasm: implement BLAKE2b primitives for Wasm (ocsigen/js_of_ocaml#1873)
* Runtime/wasm: support jsoo_env and keep track of backtrace status (ocsigen/js_of_ocaml#1881)
* Runtime/wasm: support unmarshaling compressed data (ocsigen/js_of_ocaml#1898)
* Runtime/wasm: make resuming a continuation more efficient in Wasm (ocsigen/js_of_ocaml#1892)
* Runtime/wasm: use imported string constants for JavaScript strings (ocsigen/js_of_ocaml#2022)
* Runtime/wasm: use DataView primitives to implement bigarrays (ocsigen/js_of_ocaml#1979)
* Ppx: explicitly disallow polymorphic method (ocsigen/js_of_ocaml#1897)
* Ppx: allow "function" in object literals (ocsigen/js_of_ocaml#1897)
* Lib: add Dom_html.window.matchMedia & Dom_html.mediaQueryList (ocsigen/js_of_ocaml#2017)
* Lib: make the Wasm version of Json.output work with native ints and JavaScript objects (ocsigen/js_of_ocaml#1872)

## Bug fixes
* Compiler: fix stack overflow issues with double translation (ocsigen/js_of_ocaml#1869)
* Compiler: minifier fix (ocsigen/js_of_ocaml#1867)
* Compiler: fix shortvar with --enable es6 (AssignTarget was not properly handled)
* Compiler: fix assert failure with double translation (ocsigen/js_of_ocaml#1870)
* Compiler: fix path rewriting of Wasm source maps (ocsigen/js_of_ocaml#1882)
* Compiler: fix global dead code in presence of dead tailcall (ocsigen/js_of_ocaml#2010)
* Compiler/wasm: fix bound check for empty float array (ocsigen/js_of_ocaml#1904)
* Runtime: fix path normalization (ocsigen/js_of_ocaml#1848)
* Runtime: fix reading from the pseudo-filesystem (ocsigen/js_of_ocaml#1859)
* Runtime: fix initialization of standard streams under Windows (ocsigen/js_of_ocaml#1849)
* Runtime: fix Int64.of_string overflow check (ocsigen/js_of_ocaml#1874)
* Runtime: fix caml_string_concat when not using JS strings (ocsigen/js_of_ocaml#1874)
* Runtime: consistent bigarray hashing across all architectures (ocsigen/js_of_ocaml#1977)
* Runtime: fix caml_utf8_of_utf16 bug in high surrogate case (ocsigen/js_of_ocaml#2008)
* Runtime: fix method lookup (ocsigen/js_of_ocaml#2034, ocsigen/js_of_ocaml#2038, ocsigen/js_of_ocaml#2039)
* Lib: fix Dom_html.Keyboard_code.of_event (ocsigen/js_of_ocaml#1878)
* Tools: fix jsoo_mktop and jsoo_mkcmis (ocsigen/js_of_ocaml#1877)
* Toplevel: fix for when use-js-strings is disabled (ocsigen/js_of_ocaml#1997)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants