Skip to content
SPECIFICTION
Get listed

js_of_ocaml vs Opal

js_of_ocaml

ocsigen.org

Opal

opalrb.com

Side by side

Figurejs_of_ocamlOpal
Price fromFreeFree
Free planYesYes
Free trial——
Open source——
WebYesYes
Windows—Yes
macOS—Yes
LinuxYesYes
APIYes—
Plans published11
Spec score · Code Transpilers8.4 (#5)7.7 (#18)
JavaScript interopIts library provides a typed interface for bridging differences between OCaml and JavaScript values.Opal supports calling JavaScript from Ruby and Ruby from JavaScript, and treating native JavaScript classes as Ruby classes.
LicenseThe repository lists GPL-2.0-or-later and LGPL-2.1-or-later with the OCaml linking exception as its licenses.Opal is released under the MIT License.
SupportThe project asks users to report problems or questions through GitHub issues and include version details and a minimal reproducible example when possible.The project directs users to Slack, Stack Overflow with the #opalrb tag, and GitHub issues for bugs and feature requests.

Plans

js_of_ocaml

  • js_of_ocamlFree

js_of_ocaml pricing →

Opal

  • OpalFree

Opal pricing →

In their own words

js_of_ocaml

js_of_ocaml compiles OCaml bytecode programs into JavaScript for browsers and Node.js. It works with an existing OCaml installation and does not require libraries to be recompiled. Installation is available through opam, while Dune supports separate compilation in development and whole-program compilation in release builds. Whole-program compilation performs global dead-code elimination and cross-module optimization. The library provides a typed bridge between OCaml and JavaScript, including PPX syntax for properties, methods, constructors and objects. Browser bindings cover the DOM, Fetch, WebSockets, WebGL, workers and typed arrays. Optional packages add Lwt support, TyXML, JSON derivation and an OCaml toplevel in the browser. Documented targets include Node.js 18 or later, QuickJS-NG and modern ECMAScript 2020 browsers, including Chrome 80+, Firefox 74+, Safari 13.4+ and Edge 80+. Requirements include OCaml 4.13–5.5, Dune 3.20 or later and Menhir. The project is free and open source.

Visit ocsigen.org

Opal

Opal is a Ruby-to-JavaScript source-to-source compiler that converts Ruby ahead of time into plain JavaScript, without a runtime interpreter. It includes implementations of Ruby core and standard libraries. Ruby code can call JavaScript, JavaScript can call Ruby, and native JavaScript classes can be treated as Ruby classes. The project describes sharing a gem, objects, and specs between server and client code.

Opal can run in browsers and JavaScript environments including Node.js, Deno, Bun, and QuickJS. For its upcoming 2.0 release, the project lists current and previous stable Firefox, Chrome, Safari, and Edge as supported, while Internet Explorer is unsupported. That release targets ES2021 and has no transpilation fallback for older JavaScript engines. Listed integrations include Rails, Sinatra, Roda, and static apps; the Rails example uses opal-rails and requires opal_ujs and turbolinks. Installation is through `gem install opal` or by adding the gem to a Gemfile. The gemspec declares Ruby >= 2.3, and CI exercises Ruby 3.0 through 4.0 and JRuby. Opal is MIT-licensed and free, with CLI and API access. Support channels include Slack, Stack Overflow’s #opalrb tag, and GitHub issues.

Visit opalrb.com