-
Notifications
You must be signed in to change notification settings - Fork 193
Add Typed_array.Bytes module #1609
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
void caml_bytes_of_array () { | ||
caml_fatal_error("Unimplemented Javascript primitive caml_bytes_of_array!"); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I’m a bit lost, can someone explain to me why using the API will not just raise this error?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is just to keep the Ocaml bytecode compiler happy. This code is executed instead:
js_of_ocaml/runtime/mlBytes.js
Lines 512 to 517 in a03f32c
function caml_bytes_of_array (a) { | |
if(! (a instanceof Uint8Array)) { | |
a = new Uint8Array(a); | |
} | |
return new MlBytes(4,a,a.length); | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, I see, thanks!
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 (ocsigen/js_of_ocaml#2206) * Compiler: speedup json parsing, relying on Yojson.Raw (ocsigen/js_of_ocaml#1640) * Compiler: Decode sourcemap mappings only when necessary (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#1708) * Compiler: Emit index source_map to avoid changing mappings (ocsigen/js_of_ocaml#1714, ocsigen/js_of_ocaml#1715) * Compiler: improved source map generation (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#1676) * Runtime: reimplement the runtime of weak and ephemeron (ocsigen/js_of_ocaml#1707) * Lib: Modify Typed_array API for compatibility with WebAssembly * Lib: add details element and toggle event (ocsigen/js_of_ocaml#1728) * Toplevel: no longer set globals for toplevel initialization * Runtime: precompute constants used in `caml_lxm_next` (ocsigen/js_of_ocaml#1730) * Runtime: cleanup runtime ## Bug fixes * Runtime: fix parsing of unsigned integers (0u2147483648) (ocsigen/js_of_ocaml#1633, ocsigen/js_of_ocaml#1666) * Runtime: fix incorrect pos_in after unmarshalling * Runtime: make float_of_string stricter (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#1659) * Compiler: fix global analysis bug (subsumes ocsigen/js_of_ocaml#1556)
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 (ocsigen/js_of_ocaml#2206) * Compiler: speedup json parsing, relying on Yojson.Raw (ocsigen/js_of_ocaml#1640) * Compiler: Decode sourcemap mappings only when necessary (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#1708) * Compiler: Emit index source_map to avoid changing mappings (ocsigen/js_of_ocaml#1714, ocsigen/js_of_ocaml#1715) * Compiler: improved source map generation (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#1676) * Runtime: reimplement the runtime of weak and ephemeron (ocsigen/js_of_ocaml#1707) * Lib: Modify Typed_array API for compatibility with WebAssembly * Lib: add details element and toggle event (ocsigen/js_of_ocaml#1728) * Toplevel: no longer set globals for toplevel initialization * Runtime: precompute constants used in `caml_lxm_next` (ocsigen/js_of_ocaml#1730) * Runtime: cleanup runtime ## Bug fixes * Runtime: fix parsing of unsigned integers (0u2147483648) (ocsigen/js_of_ocaml#1633, ocsigen/js_of_ocaml#1666) * Runtime: fix incorrect pos_in after unmarshalling * Runtime: make float_of_string stricter (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#1659) * Compiler: fix global analysis bug (subsumes ocsigen/js_of_ocaml#1556)
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 (ocsigen/js_of_ocaml#2206) * Compiler: speedup json parsing, relying on Yojson.Raw (ocsigen/js_of_ocaml#1640) * Compiler: Decode sourcemap mappings only when necessary (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#1708) * Compiler: Emit index source_map to avoid changing mappings (ocsigen/js_of_ocaml#1714, ocsigen/js_of_ocaml#1715) * Compiler: improved source map generation (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#1676) * Runtime: reimplement the runtime of weak and ephemeron (ocsigen/js_of_ocaml#1707) * Lib: Modify Typed_array API for compatibility with WebAssembly * Lib: add details element and toggle event (ocsigen/js_of_ocaml#1728) * Toplevel: no longer set globals for toplevel initialization * Runtime: precompute constants used in `caml_lxm_next` (ocsigen/js_of_ocaml#1730) * Runtime: cleanup runtime ## Bug fixes * Runtime: fix parsing of unsigned integers (0u2147483648) (ocsigen/js_of_ocaml#1633, ocsigen/js_of_ocaml#1666) * Runtime: fix incorrect pos_in after unmarshalling * Runtime: make float_of_string stricter (ocsigen/js_of_ocaml#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 (ocsigen/js_of_ocaml#1659) * Compiler: fix global analysis bug (subsumes ocsigen/js_of_ocaml#1556)
This adds an API in
Typed_array
for converting uint8Array values into bytes. Because the runtime uses uint8Array internally to represent bytes, this doesn't need to copy anything. Modifying the resulting bytes will also modify the original uint8Array.