- Cmdliner, cppo (for the compiler)
- ppx_tools_versioned, ocaml-migrate-parsetree (for the js_of_ocaml base library)
See opam file at the root of the repository for version constraints.
Install from opam
opam install js_of_ocaml
Build and install from source
make opam-installer js_of_ocaml-compiler opam-installer js_of_ocaml-lwt opam-installer js_of_ocaml
ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml-ppx \ -linkpkg -o cubes.byte cubes.ml
See also the plugin Ocamlbuild_js_of_ocaml.
See also Quickstart.
Most of the OCaml standard library is supported. However,
- Most of Sys module is not supported.
Extra libraries distributed with Ocaml (such as Thread or Str) are not supported in general. However,
- Bigarray: bigarray are supported using Typed Arrays
- Num: supported using `+nat.js` option
- Graphics: partially supported using canvas (see also js_of_ocaml-graphics)
- Unix: time related functions are supported
Tail call is not optimized in general. However, mutually recursive functions are optimized:
- self recursive functions (when the tail calls are the function itself) are compiled using a loop.
- trampolines are used otherwise. More about tail call optimization.
- marshalling of floats is not supported (unmarshalling works);
- the polymorphic hash function will not give the same results on datastructures containing floats;
- these functions may be more prone to stack overflow.