package js_of_ocaml-ppx

  1. Overview
  2. Docs
Compiler from OCaml bytecode to Javascript

Install

Dune Dependency

Authors

Maintainers

Sources

3.3.0.tar.gz
sha256=6cd367d1b7338374c2d3b6fbb5bfc671cfd4bb718580bd7b279e4c4cd2ee6dc4
md5=438051f64e307edbda42f250a3d9cef1

CHANGES.html

CHANGES

===== 3.3.0 (2018-11-26) - Hong Kong =====
 * Features/Changes
 ** Toplevel: [--toplevel] is now taken account when compilig cmo and cma.
 ** Lib: make [Js.Unsafe.any] be [Js.Unsafe.top Js.t]
 ** Lib: Improve generation of dummy stubs (#700)
 ** Lib: Deprecate non namespaced module access
 ** Lib: Upgrade to Tyxml 4.3.0
 ** Misc: switch to dune
 ** Misc: remove camlp4 support

 * Bug fixes:
 ** Toplevel: Fix dynlink of precompiled javascript files.
 ** Lib: Fix encoding in Sys.set_channel_flusher (fix #686)
 ** Runtime: fix the type of dataTransfer##.types
 ** Runtime: add dummy implementation for caml_restore_raw_backtrace

===== 3.2.1 (2018-07-26) - Bari =====
 * Bug fixes:
 ** Misc: Fix the dependencies of the Lwt logger
 ** Runtime: fix semantic of bigstring_destroy_stub

===== 3.2.0 (2018-06-10) - Bergen =====
 * Features/Changes:
 ** Runime: improve stacktraces.
 ** Ppx: ppx uses the OCaml 4.06 ast.
 ** Misc: support for OCaml 4.07
 ** Misc: start leveraging safe-string.
 ** Lib: add support for Internationalization API.
 ** Lib: Added media events support.

 * Bug fixes:
 ** Runtime: int_of_string accepts leading '+'
 ** Runtime: fix polymorphic & hash compare on custom non-ocaml values.
 ** Runtime: fix string encoding when writing to channels.
 ** Runtime: improve mode js detection wrt filesystem.

===== 3.1.0 (2018-02-15) - Hong Kong =====
 * Features/Changes:
 ** Lib: add missing File.blob constructor (fix #630)
 ** Runtime: hash support for custom blocks
 ** Runtime: weak.js loaded by default
 ** Compiler: compile an OCaml program into a named javascript function (fix #599)
 ** Misc: move ppx_deriving_json in its own opam package (Rudi Grinberg)
 ** Compiler: static eval of float negation
 ** Compiler: improve constant sharing.
 ** Ppx: add support for writeonly_prop and optdef_prop in object litteral.

 * Bug fixes:
 ** Compiler: fix code generation of unary ops (missing space).
 ** Compiler: fix static eval of conditions (fix #616)
 ** Compiler: fix code generation for OCaml GPR#1568
 ** Runtime: fix bug found using the closure compiler (#644)

===== 3.0.2 (2017-12-01) - Strasbourg =====
 * Features/Changes:
 ** Runtime: support for latest core_kernel
 * Bug fixes:
 ** Runtime: fix sys_chdir
 ** Runtime: fix fs support on windows
 ** Ppx: fix ppx_deriving_json for ocaml 4.05

===== 3.0.1 (2017-11-04) - London =====
 * Features/Changes:
 ** Lib: add Jstable.remove (Cedric Cellier)
 ** Build: use recent version of jbuilder (>= 1.0+beta12)

 * Bug fixes:
 ** Runtime: fix Sys.file_exists for the in-memory filesystem.
 ** Runtime: implement missing primitives: caml_nativeint_bswap, caml_floatarray_*,
    caml_ba_change_layout
 ** Runtime: few other bugfixes.
 ** Compiler: fix compat with OCaml 4.06

===== 3.0.0 (2017-06-23) - Hong Kong =====

 * Features/Changes
 ** Misc: switch to ppx instead of camlp4
 ** Misc: always install deriving_json
 ** Misc: remove support for async_kernel, bin_prot
 ** Misc: remove support for ppx_driver
 ** Misc: split js_of_ocaml in multiple packages
 ** Misc: switch to jbuilder
 ** Misc: new pseudo filesystem support with better node support
 ** Compiler: sourcemap support is now optional
 ** Compiler: no more strong dep on yojson, b64, menhir, ocamllex
 ** Compiler: improve separate compilation workflow
 ** Runtime: add support for weakdef
 ** Syntaxes: add expect tests
 ** Syntaxes: switch to ocaml-migrate-parsetree and ppx_tools_versioned
 ** Lib: Add primitives in [Js.Unsafe]
 ** Lib: remove keycode module, replaced by Dom_html.Keyboard_code
 ** Lib: XmlHttpRequest, API change for perform functions.

 * Bug fixes:
 ** Runtime: fix many stubs
 ** Lib: fix many signatures
 ** Compiler: fix performance of compilation passes (simpl,clean)
 ** Compiler: fix compat with OCaml 4.06
 ** Toplevel: flush channels after execution.
 ** Toplevel: fix toplevel generation when using -export-unit

===== 2.8.4 (2016-12-21) =====

 * Features/Changes
 ** Compiler: new jsoo_link binary to link multiple javascript files
    together and merging sourcemaps.
 ** Toplevel: improve genaration of toplevels, one can now pass a
    an export file containing units to export. (see jsoo_listunits)
 ** Lib: Provide a Js_of_ocaml (namespace) module to ease transition
    with future version of js_of_ocaml

 * Bug fixes
 ** Compiler: fix separate compilation when facing empty unit inside a library
 ** Runtime:  fix many javascript stubs
 ** Syntac: fix ppx deriving json

===== 2.8.3 (2016-11-04) =====

 * Features/Changes
 ** Runtime: complete support for 4.04

 * Bug fixes
 ** Compiler: fix order of javascript files
 ** Compiler: fix Javascript lexer (newline inside strings)
 ** Compiler: fix bug in closure generation
 ** Compiler: fix regression in closure generation (introduced in 2.8) (#531)
 ** Compiler: fix code generation when static evaluation is disabled

===== 2.8.2 (2016-09-10) =====

 * Features/Changes
 ** Lib: add Dom_html.Keyboard_code & Dom_html.Keyboard_key (Corwin de Boor)
 ** Misc: update lib and runtime to work better with non browser environment
 ** Misc: initial support for 4.04

 * Bug fixes
 ** Compiler: fix js output for x - -1
 ** Compiler: fix parsing of annotations in the runtime
 ** Compiler: fix javascript minifier
 ** Compiler: various fixes for separate compilation.

===== 2.8.1 (2016-07-01) =====

 * Features/Changes
 ** Compiler: reduce memory usage for shortvar
 ** Lib: Add optional `prefix` arg to Jsonp.call
 ** Ppx: add ppx_driver compatibility

 * Bug fixes
 ** Lib: fix Js.object_keys, Js.export
 ** Lib: Async, do not ignore unhandled exceptions

===== 2.8 (2016-06-16) =====
 * Features/Changes
 ** Compiler: allow dynlink of precompiled javascript file
 ** Compiler: Improve tailcall optimization
 ** Compiler: Improve pretty mode
 ** Compiler: More inlining and static evaluation
 ** Compiler: Better source map support, to leverage resolve_variable_names
   in chrome DevTools
 ** Compiler: preserve as much as possible the initial OCaml variable names
 ** Lib: synchronize with tyxml 4.0.0
 ** Lib: convert string/bigstring to/from typed_array
 ** Lib: add Tyxml_js.Register API.
 ** Lib: Support for Core_kernel and Async_kernel (32bit only).
 ** Lib: Mutation observer.
 ** Runtime: bigstring, caml_int32_bits_of_float, ..
 ** Runtime: better nodejs integration

 * Misc
 ** Support for OCaml 4.03
 ** Toplevel with ppx syntax

 * Bug fixes
 ** Compiler: Fix float printing
 ** Compiler: fix separate compilation

===== 2.7 (2016-01-25) =====

 * Features/Changes
 ** Syntax: ppx_deriving
 ** Compiler: Add custom_header ability to jsoo generate file (Edgar Aroutiounian)
 ** Compiler: Bytecode parsing, improved performance
 ** Lib: add geolocation API (Stéphane Legrand)
 ** Lib: add Mutation observers API (Stéphane Legrand)
 ** Lib: add Jstable module (Drup)
 ** Lib: add WebWorker API (Grégoire Henry)
 ** Lib: Allow to customize 'in_channel' with specific 'refiller' (Grégoire Henry)
 ** Lib: Synchronized tyxml 3.6.0

 * BugFixes
 ** Compiler: Fix compilation of the [match with exception] construct
 ** Compiler: fix compat with the upcoming ocaml 4.03
 ** Lib: Tyxml_js, discrepancy between Firefox and Chromium
 ** Lib: various small fixes
 ** Runtime: Fix Big_int.square_big_int
 ** Runtime: graphics, fix draw_image with transparent pixel
 ** Ppx: fix for merlin

===== 2.6 (2015-07-15) =====

 * Features/Changes
 ** Compiler: Findlib is optional
 ** Compiler: improvement of sourcemap support (ie: inlinned sourcemap)
 ** Compiler: Support for separate compilation (compile cm{o,a} -> js)
 ** Compiler: more inlining
 ** Syntax: new ppx syntax
 ** Syntax: js object literal (camlp4 + ppx)
 ** Runtime: support for Dynlink
 ** Runtime: Support for upcomming release of Bin_prot, Core_kernel, Async_kernel
 ** Lib: add requestAnimationFrame
 ** Lib: complete Js.Math
 ** Lib: complete xmlHttpRequest

 * Misc
 ** Drop support for 3.12

 * BugFixes
 ** Runtime: Fix caml_hash
 ** Lib: fix tyxml + svg
 ** Lib: various Api fixes

===== 2.5 (2014-09-30) =====

 * Features/Changes
 ** Compiler: SourceMap improvement
 ** Compiler: remove registration of unused named value (wrt runtime)
 ** Compiler: Smarter inlining, Constant sharing, Switch generation
 ** Lib: Dom binding: *AttributeNS, *AttributeNode*, borderRadius
 ** Runtime: improve performence of string, array allocation

 * Misc: enable safestring for OCaml 4.02
 * Commandline: switch to Cmdliner. Better -help + manpage

 * BugFixes
 ** Compiler: workaround a bug in ocaml 4.02 wrt debug section.
 ** Compiler: bug when generating minified JavaScript.
 ** Runtime: fix Obj.tag
 ** Runtime: fix internalmod wrt ocaml4.02

===== 2.4.1 (2014-08-28) =====

 * BugFixes
 ** Compiler: restore compatibility with ocaml 4.02
 ** Runtime: fix caml_hash, Math.imul may give wrong results (#215)
 ** Lib: Graphics_js, update text drawing baseline
 ** Lib: Fix overuse of FormData in XmlHttpRequest (Tomohiro Matsuyama #214)

===== 2.4 (2014-08-08) =====

 * Features/Changes
 ** Runtime: support for num (Ryan Goulden)
 ** Lib: initial support for Dom_svg
 ** Lib: introduce Jsonp module
 ** Lib: introduce JSON object binding
 ** Lib: introduce DomContentLoaded
 ** lib: introduce eventSource
 ** Lib: introduce js_of_ocaml.toplevel package
 ** Lib: various improvement: textContent,outerHTML,unload event,css properties
 ** Lib: complete binding of Js.array
 ** Lib: change signature of Sys_js.register_autoload
 ** Lib: sync js_of_ocaml.tyxml with latest tyxml
 ** Tools: helpers to build toplevel: jsoo_mktop, jsoo_mkcmis

 * BugFixes
 ** Compiler: generate js files with default permission, was 0o600
    (#182) (Daniel Bünzli)
 ** Syntax: fix typing of method arguments
 ** Runtime: fix behaviour of Sys.argv (Tomohiro Matsuyama)
 ** Runtime: fix caml_js_meth_call
 ** Compiler: fix assert false when deadcode is off
 ** Compiler: fix compilation of Js.debugger

===== 2.3 (2014-06-30) =====

 * Features/Changes
 ** Lib: remove deprecated Event_arrow
 ** Lib: introduce js_of_ocaml.tyxml
 ** Lib: introduce js_of_ocaml.weak (that loads weak.js)
         and remove predicate joo_weak
 ** Lib: introduce js_of_ocaml.log (Lwt logger)
 ** Lib: Dom_html.{range,selection} (Enguerrand Decorne)

 * BugFixes
 ** Compiler: fix traduction of Ult binop (#177)
 ** Compiler: fix the build of compiler.{cmxs,cma} (Stéphane Glondu)
 ** Compiler: fix traduction of logical shift right
 ** Runtime: fix marshaling (#176)
 ** Meta: update predicates (joo_* -> jsoo_*)
 ** Lib: fix class type Dom_html.optionElement

===== 2.2 (2014-05-15) =====

 * Features/Changes
 ** Runtime: improve blit_string perf
 ** Compiler: option to warn about unused js variable
 ** Lib: audio/videoElement

 * BugFixes
 ** Syntax: catch exception in syntax extension (#158)
 ** Compiler: compat with Node.js (global object) (#160)
 ** Runtime: fix graphics.js
 ** Lib: fix Dom.event interface

===== 2.1 (2014-04-28) =====

 * Features/Changes
 ** Runtime: bigarray comparison
 ** Compiler: allow to embed directory with -file dir_name=ext1,ext2:dest_path
 ** Compiler: can now output embedded files in a differant js file
 ** Lib: js_of_ocaml.graphics
 ** Lib: Js.Unsafe.expr to embed JavasScript expression
    to be used instead of Js.Unsafe.variable (or eval_string)
 ** Lib: Sys_js.js_of_ocaml_version && Sys_js.file_content
 ** OCamlbuild plugin: Add the OASIS support, document the API and add the tags
    sourcemap (included in the meta-tag debug) and tailcall (#148)
    (by Jacques-Pascal Deplaix)

 * BugFixes
 ** Syntax: Better type constraint (#84)
 ** Compiler: caml_failwith primitive was sometime missing (#147)
 ** Compiler: variable names used outside a program were
    not marked as reserved (#146)
 ** Lib: fix WebGl interface

===== 2.0 (2014-04-11) =====

 * Features/Changes
 ** Compiler: generate shorter variable names
 ** Parsing and minifying of external javascript file (ie: runtime)
    (by Hugo Heuzard)
 ** Compiler: JavaScript strict mode enabled
 ** Runtime: add support for recursive module (by Hugo Heuzard)
 ** Compiler: use trampoline to implement tailcall optim (by Hugo Heuzard)
 ** Improved OCaml toplevel UI (by Hugo Heuzard)
 ** Toplevel: support dynamic loading of cmo and cma files
 ** Runtime: add Bigarray support (contributed by Andrew Ray)
 ** Library: switch from "float Js.t" to just "float" for typing
    JavaScript numbers
 ** Compiler: Add javascript file lookup using findlib
    (+mypkg/myfile.js will read myfile.js from mypkg findlib directory)
    (by Hugo Heuzard)
 ** Compiler: improve missing primitives & reserved name detection
    (by Hugo Heuzard)
 ** Compiler: static evaluation of constant ("staticeval" optimisation)
    (by Hugo Heuzard)
 ** Compiler: share constants (by Hugo Heuzard)
 ** Compiler: alias primitives (by Hugo Heuzard)
 ** Compiler: complete javacript ast (by Hugo Heuzard)
 ** Compiler: 'caml_format_int %d x' compiles to ""+x (by Hugo Heuzard)
 ** Add JavaScript file in META (to be used with ocamlfind)
    (by Hugo Heuzard)
 ** Add Ocamlbuild plugin js_of_ocaml.ocamlbuild
    (by Jacques-Pascal Deplaix)
 ** Add/Install classlist.js, weak.js
 ** Add Url.Current.protocol (by Vicent Balat)
 ** Dependency: deriving instead of deriving-ocsigen
 ** Runtime: log wrong string encoding issues to the console (by Hugo Heuzard)
 ** Add compiler_libs (by Pierre Chambart)
 ** Compile syntax extension to native code as well (by Hugo Heuzard)
 ** Add a JavaScript parser (extracted from facebook/pfff)
 ** Compiler: remove redundant 'var' (by Hugo Heuzard)
 ** Compiler: improve compact mode, remove unnecessary space, semicolon
 ** Runtime: Support in_channel and out_channel (by Hugo Heuzard)
 ** Compiler: option to embed files into the generated js
    such files can be read using open_in (by Hugo Heuzard)
 ** Runtime: add cache for method lookup (by Hugo Heuzard)
 ** Compiler: experimental sourcemap support (by Hugo Heuzard)
 ** JavaScript Errors are now wrapped inside OCaml exceptions (by Hugo Heuzard)

 * BugFixes
 ** Compiler: js file is not create in case of error (by Hugo Heuzard)
 ** Fix compatibility when using type covn (by Hugo Heuzard)
 ** Fix md5 : incorrect for string where (length % 64) E 56..59 (by Grégoire Henry)
 ** Fix caml_js_new: when called with more than 8 arguments
 ** Address a number of integer overflow issues (by Hugo Heuzard)
 ** Fix float comparisons (NaN was not compared correctly)

===== 1.4 (2013-12-03) =====

 * Features/Changes
 ** Add missing primitives for OCaml 4.01
 ** Improved Dom bindings (Hugo Heuzard and many other contributors)
 ** Add -linkall option to keep all provided primitives (Pierre Chambard)
 ** Improved tail-call optimization (Hugo Heuzard)
 ** Added optimization levels: -o {1,2,3} (Hugo Heuzard)

 * Bugfixes
 ** Fixed some incorrect Dom bindings
 ** Fixed hypot primitive (Pierre Chambard)
 ** Fixed tail call optimization bug (some incorrect code was
    generated when the number of arguments did not match the number of
    function parameters)
 ** Fixed a bug with empty strings
 ** Fixed weak.js (primitives for Weak module)

===== 1.3 (2012-11-28) =====

 * Features/Changes
 ** Runtime and toplevel updates to support OCaml 4.0
 ** Add WebSocket bindings
 ** Added -debuginfo option to output source code location information
    (patch by Kensuke Matsuzaki)
 ** Dom_html: added change, input and hashChange event bindings
 ** Adding Lwt_js_events.async_loop and buffered_loop

 * Bugfixes
 ** Fix array and string blitting with overlapping regions
 ** Url module: fix encoding of '+'
 ** Library: use 'this' instead of 'window' for better portability
 ** Dom_html: fix creation of elements with type or name attribute
    under IE 9
 ** Compiler: small fix to bytecode parsing that could result in
    incorrect generated code
 ** Dom_html: fix mouse wheel event bindings
 ** Dom: fix the type of item methods
 ** Deriving_json: tail-recursive serialisation of lists (by Hugo Heuzard)
 ** Deriving_json: fix parsing of float arrays and polymorphic variants
    (by Hugo Heuzard)

===== 1.2 (2012-06-02) =====

 * Bugfixes
 ** Fix #284
 ** Fix return type of window##open_

 * Features/Changes
 ** Improvements in the data-flow solver
 ** Add Dom_html.window##onscroll
 ** Dom_events.listen: handler should return boolean
 ** Add DOM drag/drop events

===== 1.1.1 (2012-03-15) =====

 * Bugfixes:
  ** Url parsing.
  ** webgl binding types

 * webgl example

===== 1.1 (2012-02-24) =====

 * Libraries:
 ** Lots of new dom bindings
 ** WebGL
 ** Typed arrays
 ** Many speed improvement (marshal, strings, regexps)
 ** Many bug fixed

 * Compiler:
 ** Add -I option to select directories containing cmi files
 ** Fix compilation of mutually recursive functions occurring in loops
 ** In Javascript output, parenthesize numbers when followed by a dot
 ** Fix order of evaluation bug
 ** Fix compilation of loops in 'try ... with' body (close #263)

 * hyperbolic tree example

===== 1.0.9 (2011-11-30) =====

 * Bugfixe in polymorphic comparison.

===== 1.0.8 (2011-11-25) =====

 * Compatibility with deriving-0.3
 * Libraries:
   ** Adding Event_arrows.iter
   ** Events: adding Dom_html.stopPropagation and ?propagate parameter in Event_arrows

===== 1.0.7 (2011-11-18) =====

 * Bugfixes:
   ** Deriving_json: fix string (un)marshaling (was broken for byte > 127)
   ** Do not emit string escape sequence \\v (not supported by IE8)
   ** Removed incorrect optimization of !(x < y) into (x >= y)
   ** Allow compilation on win32/msvc
   ** Open all files in binary mode
 * Libraries:
   ** Add Dom_html.buttonPressed
   ** Add functions to downcast Dom_html.event into mouseEvent, keyboardEvent, ...
   ** Add Dom.document.adoptNode
   ** removed Date.now() function, not supported by all browsers
   ** Allow to test the button associated to a Dom_html.mouseEvent
   ** Add localStorage and sessionStorage api

===== 1.0.6 (2011-09-28) =====

 * Bugfixes:
   ** browser compatility for Regexp.search and check_headers (XmlHttpRequest.send).
 * Libraries:
   ** add Dom_html.iFrameEliom##width
   ** add Dom_html.window##scroll
   ** add Dom.document##importNode

===== 1.0.5 (2011-09-21) =====

 * Bugfixes:
   ** array_get/set bound check
 * Libraries:
   ** XmlHttpRequest: allow to cancel ta XHR after receiving the HTTP headers
   ** Added the [CSS.Angle] module to handle angles in CSS

===== 1.0.4 (2011-09-07) =====

 * Bugfixes:
   ** fix typo in 'greater than or equal to'
   ** marshaling, unmarshaling and comparison
      are not recursive anymore: avoid stack overflow
   ** use custom formatter to pretty print Javascript
      code to avoid newlines where it is forbidden.
   ** fix type of Dom.nodeList.item (was optdef, is now opt)
   ** fixes for internet explorer.
   ** fixes for bug exposed by Berke Durak's tool jsure.
 * Libraries:
   ** History API
   ** improvements of CSS module
   ** Add coercion and attribute manipulation functions in Dom module

===== 1.0.3 (2011-07-13) =====

 * Bugfixes:
   ** 'caml_int_of_string' was incorrect for negative number
   ** Fixed misparenthesized Javascript 'new' expressions
 * Libraries:
   ** Add a CSS module
   ** export Form.form_elements
   ** add onsubmit method to Dom_html.formElement
   ** add classList property to dom elements

===== 1.0.2 (2011-04-13) =====

 * Bugfixes:
   ** fix compilation of Int32/Nativeint
   ** fix compilation of self-recursive functions in loops
   ** fix to File module for when there is no FileReader class in the host browser
   ** fixed big in weak support
 * Compiler:
   ** Switch licence to LGPL
   ** API to generate a function instead of a standalone program
   ** option to compile an OCaml toplevel
 * Libraries:
   ** Add an optional JSON deriving class
   ** Add Math.random binding
   ** Add scrollWidth/scrollHeight element methods to the DOM
   ** Add coercion function Dom_html.CoerceTo.element
   ** Renaming functions in XmlHttpRequest:
      *** send -> perform
      *** send_string -> perform_raw_url

===== 1.0.1 (2011-01-26) =====

 * Bugfixes:
   ** conversion of Int64 to string.
   ** typos.
 * Allow use of Lwt.pause.
 * Split ocamlfind packages in two: syntax and library.

===== 1.0 (2010-12-13) =====

Initial release
OCaml

Innovation. Community. Security.