- It is easy to install and use as it works with an existing installation of OCaml, with no need to recompile any library.
- It comes with bindings for a large part of the browser APIs.
- According to our benchmarks, the generated programs runs typically faster than with the OCaml bytecode interpreter.
- We believe this compiler will prove much easier to maintain than a retargeted OCaml compiler, as the bytecode provides a very stable API.
Findlib, cppo See opam file for version constraints.
- base64, tyxml, reactiveData
- ocp-indent: needed to support indentation in the toplevel
- higlo: needed to support Syntax highlighting in the toplevel
- cohttp: needed to build the toplevel webserver
opam install js_of_ocaml js_of_ocaml-ppx
Makefile.confto change the default configuration
make allto compile
make installas root to install the compiler and its libraries
make uninstallas root to uninstall them
You can run
make toplevel-examples if you want to build a Web-based OCaml
toplevel as well. Try the toplevel
Your program must first be compiled using the OCaml bytecode compiler
The syntax extension is provided by
ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.ppx -linkpkg -o cubes.byte cubes.ml
Then, run the
Most of the OCaml standard library is supported. However,
- Most of the Sys module is not supported.
Extra libraries distributed with Ocaml (such as Thread or Str) are not supported in general. However,
- Bigarray: bigarrays are supported using Typed Arrays
- Num: supported using
- Graphics: partially supported using canvas (see 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.
- Ocaml 4.02.3
- Ocaml 4.03.0
- Ocaml 4.04.2 includes Base, Core_kernel, Async_kernel, Async_js
- Ocaml 4.04.0+BER see http://okmij.org/ftp/ML/MetaOCaml.html
- Ocaml 4.05.0 includes Base, Core_kernel, Async_kernel, Async_js
- Ocaml 4.06.0 includes Base, Core_kernel, Async_kernel, Async_js
Contents of the distribution
|LICENSE||license and copyright notice|
|ppx/||ppx syntax extensions|
|camlp4/||camlp4 syntax extensions|
|toplevel/||web-based OCaml toplevel|
|ocamlbuild/||ocamlbuild plugin for js_of_ocaml|