ojs

Runtime Library for gen_js_api generated libraries
README

Overview

gen_js_api aims at simplifying the creation of OCaml bindings for
JavaScript libraries. It must currently be used with the js_of_ocaml
compiler
, although other ways
to run OCaml code "against" JavaScript might be supported later with
the same binding definitions (for instance,
Bucklescript,
or direct embedding of a JS engine in a native OCaml application).

gen_js_api is based on the following ideas:

  • Authors of bindings write OCaml signatures for JavaScript libraries
    and the tool generates the actual binding code with a combination
    of implicit conventions and explicit annotations.

  • The generated binding code takes care of translating values between
    OCaml and JavaScript and of dealing with JavaScript calling
    conventions.

  • All syntactic processing is done by authors of bindings: the client
    code is normal OCaml code and does not depend on custom syntax nor
    on JS-specific types.

gen_js_api can be used in two complementary ways:

Examples

The repository contains some examples of OCaml bindings to JavaScript
libraries created with gen_js_api:

Documentation

Related projects

  • js_of_ocaml: The compiler
    and runtime system on which gen_js_api relies. (Note: gen_js_api
    doesn't depend on js_of_ocaml's OCaml library, nor on its language
    extension.)

  • goji: A DSL to describe OCaml
    bindings for JavaScript libraries.

  • DefinitelyMaybeTyped:
    A project to parse
    DefinitelyTyped
    interfaces and produce OCaml interfaces.

  • ReScript:
    Another compiler from OCaml to JavaScript, featuring the genType ppx for generating TS / Flow types and runtime converters.

About

gen_js_api has been created by LexiFi for porting a web application
from JavaScript to OCaml. The tool has been used in production since
2015.

This gen_js_api package is licensed by LexiFi under the terms of the
MIT license.

See see Changelog

Contact: alain.frisch@lexifi.com

Contributors:

  • Alain Frisch

  • Sebastien Briais

Install
Published
31 May 2022
Maintainers
Sources
v1.1.1.tar.gz
md5=df7195a0d938f070296a7cbdb244f7f0
sha512=54dc13065d3aaad13f6b10aaddcbca8909a2f550d1d4bf10405792ab2536b5be200da56cd14239a10c942a55d2200d03c145b79d6f765f3e1ec49513ae705504
Dependencies
odoc
with-doc
ocaml
>= "4.08"
dune
>= "2.7"
Reverse Dependencies
gen_js_api
>= "1.0.7" & != "1.1.0"