-
Notifications
You must be signed in to change notification settings - Fork 184
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
Static eval backend type #1166
Static eval backend type #1166
Conversation
Thanks Hugo. I gave this a go and it looks like the partial evaluation isn't working quite as intended:
This is with an OPAM pin of this pull request. I would expect the equality test to be skipped and the Thanks! |
It will not work with separate compilation. Try compiling with |
Here's what I have in my source: open Hacl_star
external whacl_sha2_256_hash: bytes -> bytes = "whacl_sha2_256_hash"
let sha2_256_hash b =
if Sys.backend_type = Other "js_of_ocaml" then
whacl_sha2_256_hash b
else
Hacl.SHA2_256.hash b a Here's what I'm seeing with
with:
and
am I doing something wrong? this is with |
just to confirm I have pinned the right branch:
|
and here is the relevant section from my
|
I don't think we optimize polymorphic comparison function. Try pattern matching instead. |
Source:
JS:
Note that the Thanks, Jonathan |
d6e15f2
to
54de0bf
Compare
I've change the tests to reflect more accurately reality. On a related note, it seems we have similar interest of using hacl_star in javascript. Do you know about https://gitlab.com/tezos/tezos/-/blob/master/src/lib_hacl_glue/js/src/hacl.ml ? I'd be interested to talk about your use case. |
Ah that would explain why I had trouble, then. I'll try again with the right pin. My use-case is essentially "factor out" the crypto in my application and allow multiple implementations to be used in a JS context, such as:
So, I'm trying to "abstract out" the crypto at a high level. I took at look at your bindings and it looks like the purpose is to mimic the What do you think? |
Thanks, I can confirm that with the new pin on js_of_ocaml-compiler, the calls to ctypes bindings are successfully eliminated from the generated JS in release mode. Unfortunately,
So, maybe virtual libraries is my only option here. Any thoughts? |
I'd like to try compile ctypes to jsoo and see where that lead. see hacl-star/hacl-star#494 |
…s_of_ocaml-ppx_deriving_json, js_of_ocaml-ppx, js_of_ocaml-lwt and js_of_ocaml-compiler (4.0.0) CHANGES: ## Features/Changes * Compiler: add --target-env flag, for JS runtime specific compilation targets (ocsigen/js_of_ocaml#1160). * Compiler: static evaluation of backend_type (ocsigen/js_of_ocaml#1166) * Compiler: speedup emitting js files (ocsigen/js_of_ocaml#1174) * Compiler: simplify (a | 0) >>> 0 into (a >>> 0) (ocsigen/js_of_ocaml#1177) * Compiler: improve static evaluation of cond (ocsigen/js_of_ocaml#1178) * Compiler: be more consistent dealing with js vs ocaml strings (ocsigen/js_of_ocaml#984) * Compiler: Compiler: add BigInt to provided symbols (fix ocsigen/js_of_ocaml#1168) (ocsigen/js_of_ocaml#1191) * Compiler: use globalThis, drop joo_global_object ocsigen/js_of_ocaml#1193 * Compiler: new -Werror flag to turn wanrings into errors (ocsigen/js_of_ocaml#1222) * Compiler: make the inlining less agressive, reduce size, improve pref (ocsigen/js_of_ocaml#1220) * Compiler: rename internal library js_of_ocaml-compiler.runtime to js_of_ocaml-compiler.runtime-files * Lib: new runtime library to improve compatibility with Brr and gen_js_api * Lib: add messageEvent to Dom_html (ocsigen/js_of_ocaml#1164) * Lib: add PerformanceObserver API (ocsigen/js_of_ocaml#1164) * Lib: add CSSStyleDeclaration.{setProperty, getPropertyValue, getPropertyPriority, removeProperty} (ocsigen/js_of_ocaml#1170) * Lib: make window.{inner,outer}{Width,Height} non-optional * Lib: introduce Js_of_ocaml.Js_error module, deprecate Js_of_ocaml.Js.Error exception. * Lib: add deprecation warning for deprecated code * PPX: json can now be derived for mutable records (ocsigen/js_of_ocaml#1184) * Runtime: use crypto.getRandomValues when available (ocsigen/js_of_ocaml#1209) * Misc: move js_of_ocaml-ocamlbuild out to its own repo * Misc: add support for OCaml 4.14 (ocsigen/js_of_ocaml#1173) ## Bug fixes * Compiler: fix sourcemap warning for empty cma (ocsigen/js_of_ocaml#1169) * Compiler: Strengthen bound checks. (ocsigen/js_of_ocaml#1172) * Compiler: fix `--wrap-with-fun` under node (ocsigen/js_of_ocaml#653, ocsigen/js_of_ocaml#1171) * Compiler: fix parsing of annotaions in js stubs (ocsigen/js_of_ocaml#1212, fix ocsigen/js_of_ocaml#1213) * Ppx: allow apostrophe in lident (fix ocsigen/js_of_ocaml#1183) (ocsigen/js_of_ocaml#1192) * Runtime: fix float parsing in hexadecimal form * Runtime: fix implementation of caml_js_instanceof * Graphics: fix mouse_{x,y} (ocsigen/js_of_ocaml#1206)
No description provided.