Releases: melange-re/melange
Releases · melange-re/melange
5.0.1-53
CHANGES:
- Fix
[@mel.send]
and[@mel.this]
interaction in the presence of constant
[@mel.as ".."]
arguments
(#1328) - Allow skipping over
[@mel.as ".."]
constant arguments in[@mel.send]
in
the absence of@mel.this
(#1328) - core: fix missed function argument fusion optimization on OCaml versions 5.2
and above, caused by ocaml/ocaml#12236 generating
multiple function nodes forfun a -> fun b -> ...
in the Lambda IR. This
issue, while partially fixed in Melange 5.0.0, didn't account for default
arguments (#1253,
#1334).
5.0.1-52
CHANGES:
- Fix
[@mel.send]
and[@mel.this]
interaction in the presence of constant
[@mel.as ".."]
arguments
(#1328) - Allow skipping over
[@mel.as ".."]
constant arguments in[@mel.send]
in
the absence of@mel.this
(#1328) - core: fix missed function argument fusion optimization on OCaml versions 5.2
and above, caused by ocaml/ocaml#12236 generating
multiple function nodes forfun a -> fun b -> ...
in the Lambda IR. This
issue, while partially fixed in Melange 5.0.0, didn't account for default
arguments (#1253,
#1334).
5.0.1-51
CHANGES:
- Fix
[@mel.send]
and[@mel.this]
interaction in the presence of constant
[@mel.as ".."]
arguments
(#1328) - Allow skipping over
[@mel.as ".."]
constant arguments in[@mel.send]
in
the absence of@mel.this
(#1328) - core: fix missed function argument fusion optimization on OCaml versions 5.2
and above, caused by ocaml/ocaml#12236 generating
multiple function nodes forfun a -> fun b -> ...
in the Lambda IR. This
issue, while partially fixed in Melange 5.0.0, didn't account for default
arguments (#1253,
#1334).
5.0.1-414
CHANGES:
- Fix
[@mel.send]
and[@mel.this]
interaction in the presence of constant
[@mel.as ".."]
arguments
(#1328) - Allow skipping over
[@mel.as ".."]
constant arguments in[@mel.send]
in
the absence of@mel.this
(#1328) - core: fix missed function argument fusion optimization on OCaml versions 5.2
and above, caused by ocaml/ocaml#12236 generating
multiple function nodes forfun a -> fun b -> ...
in the Lambda IR. This
issue, while partially fixed in Melange 5.0.0, didn't account for default
arguments (#1253,
#1334).
5.0.0-53
CHANGES:
- Make the
unprocessed
alert fatal by default
(#1135) - support
-H
for hidden include dirs in OCaml 5.2
(#1137) - support
[@mel.*]
attributes in uncurried externals
(#1140) - add Worker types to
melange.dom
(#1147) - Add support for dynamic
import()
(#1164) - Fix code generation of custom
true
/false
constructors
(#1175) - Fix code generation of OCaml objects that refers to an init variable in scope
(#1183) - Support
[@mel.as "string"]
in variant definitions
(#884) - BREAKING: remove
[@@deriving jsConverter]
for variant definitions
(#884). Use[@mel.as "string here"]
instead. - Support OCaml 5.3 (#1168)
- Upgrade Stdlib to the OCaml 5.3 Stdlib
(#1182) - Support
[@mel.tag "the_tag"]
in variant definitions
(#1189)- combined with
[@mel.as ..]
in variant definitions and inline record
payloads, Melange can now express types for discriminated union object
shapes.
- combined with
- melange-ppx: don't silence warning 20 (
ignored-extra-argument
) for
%mel.raw
application
(#1166).- This change reverts the behavior introduced in
(#915). - The new recommendation is to annotate
%mel.raw
functions or disable
warning 20 at the project level.
- This change reverts the behavior introduced in
- ppx,core: propagate internal FFI information via attributes instead of adding
marshalled data in the native primitive name
(#1222) - melange-ppx: allow
@mel.unwrap
polyvariants not to have a payload
(#1239) melange.node
: fixBuffer.fromString
and add
Buffer.fromStringWithEncoding
(#1246)melange.node
: bind to all supported Node.jsBuffer
encodings in
Node.Buffer
(#1246)melange.js
: AddJs.FormData
with bindings to the
FormData API
(#1153,
#1270,
#1281melange.js
: AddJs.Blob
andJs.File
with bindings to the
Blob and
File APIs
(#1218)melange.js
: addTypedArray
types at the toplevel in theJs
module
(#1248)- BREAKING: remove
--mel-g
(#1234) - runtime(
melange.js
): port[@mel.send.pipe]
functions to[@mel.send]
,
taking advantage of the@mel.send
+ labeled argument improvement (see
above) (#1260,
#1264,
#1265,
#1266,
#1280,
#1278) - core: fix a crash related to finding constructor names in pattern matching triggered by dune's earlier implementation of
(implicit_transitive_deps false)
(#1238,
#1262) - core: pre-compute the closure param map for functions inlined with
--mel-cross-module-opt
(#1219) - BREAKING: ppx: print the
deprecated
alert for@@deriving abstract
at the
declaration site rather than at (all) usages
(#1269) - JS generation: prettify
for
loops
(#1275) - JS generation: improve formatting for
throw
andreturn
statements, JS
objects (#1286,
#1289) - JS generation: improve formatting for empty return and continue statements
(#1288) - JS generation: remove trailing spaces before commas in
export
(#1287) - JS generation: remove redundant switch cases branches
(#1295) - JS generation: move space before comma inside
for
definition
(#1296) - JS generation: add space before while loop condition
(#1297) - JS generation: improve indentation of parenthesized blocks
(#1293) - JS generation: add space after constructor comments
(#1294) - JS generation: improve identation of
switch
cases
(#1299) - JS generation: don't generate empty
default:
cases inswitch
(#1300) - JS generation: emit
module.exports
in CommonJS instead ofexports.x
(#1314) - JS generation: remove trailing newline after
switch
(#1313) - ffi: allow annotating
@mel.send
FFI with@mel.this
to specify which
parameter should represent the "self" argument.
(#1303,
#1310)- This improvement to the FFI allows expressing more FFI constructs via
labeled and optionally labeled arguments, e.g.external foo: value:string -> (t [@mel.this]) -> unit = "foo" [@@mel.send]
will now produce
t.foo(value)
instead ofvalue.foo(t)
. - It also allows removing usages of
[@mel.send.pipe: t]
in favor of
[@mel.send]
with[@mel.this]
, including when used with@mel.variadic
.
- This improvement to the FFI allows expressing more FFI constructs via
- ppx: deprecate
[@mel.send.pipe]
(#1321) - core: fix missed optimization on OCaml versions 5.2 and above, caused by
ocaml/ocaml#12236 generating
multiple function nodes forfun a -> fun b -> ...
in the Lambda IR.
5.0.0-52
CHANGES:
- Make the
unprocessed
alert fatal by default
(#1135) - support
-H
for hidden include dirs in OCaml 5.2
(#1137) - support
[@mel.*]
attributes in uncurried externals
(#1140) - add Worker types to
melange.dom
(#1147) - Add support for dynamic
import()
(#1164) - Fix code generation of custom
true
/false
constructors
(#1175) - Fix code generation of OCaml objects that refers to an init variable in scope
(#1183) - Support
[@mel.as "string"]
in variant definitions
(#884) - BREAKING: remove
[@@deriving jsConverter]
for variant definitions
(#884). Use[@mel.as "string here"]
instead. - Support OCaml 5.3 (#1168)
- Upgrade Stdlib to the OCaml 5.3 Stdlib
(#1182) - Support
[@mel.tag "the_tag"]
in variant definitions
(#1189)- combined with
[@mel.as ..]
in variant definitions and inline record
payloads, Melange can now express types for discriminated union object
shapes.
- combined with
- melange-ppx: don't silence warning 20 (
ignored-extra-argument
) for
%mel.raw
application
(#1166).- This change reverts the behavior introduced in
(#915). - The new recommendation is to annotate
%mel.raw
functions or disable
warning 20 at the project level.
- This change reverts the behavior introduced in
- ppx,core: propagate internal FFI information via attributes instead of adding
marshalled data in the native primitive name
(#1222) - melange-ppx: allow
@mel.unwrap
polyvariants not to have a payload
(#1239) melange.node
: fixBuffer.fromString
and add
Buffer.fromStringWithEncoding
(#1246)melange.node
: bind to all supported Node.jsBuffer
encodings in
Node.Buffer
(#1246)melange.js
: AddJs.FormData
with bindings to the
FormData API
(#1153,
#1270,
#1281melange.js
: AddJs.Blob
andJs.File
with bindings to the
Blob and
File APIs
(#1218)melange.js
: addTypedArray
types at the toplevel in theJs
module
(#1248)- BREAKING: remove
--mel-g
(#1234) - runtime(
melange.js
): port[@mel.send.pipe]
functions to[@mel.send]
,
taking advantage of the@mel.send
+ labeled argument improvement (see
above) (#1260,
#1264,
#1265,
#1266,
#1280,
#1278) - core: fix a crash related to finding constructor names in pattern matching triggered by dune's earlier implementation of
(implicit_transitive_deps false)
(#1238,
#1262) - core: pre-compute the closure param map for functions inlined with
--mel-cross-module-opt
(#1219) - BREAKING: ppx: print the
deprecated
alert for@@deriving abstract
at the
declaration site rather than at (all) usages
(#1269) - JS generation: prettify
for
loops
(#1275) - JS generation: improve formatting for
throw
andreturn
statements, JS
objects (#1286,
#1289) - JS generation: improve formatting for empty return and continue statements
(#1288) - JS generation: remove trailing spaces before commas in
export
(#1287) - JS generation: remove redundant switch cases branches
(#1295) - JS generation: move space before comma inside
for
definition
(#1296) - JS generation: add space before while loop condition
(#1297) - JS generation: improve indentation of parenthesized blocks
(#1293) - JS generation: add space after constructor comments
(#1294) - JS generation: improve identation of
switch
cases
(#1299) - JS generation: don't generate empty
default:
cases inswitch
(#1300) - JS generation: emit
module.exports
in CommonJS instead ofexports.x
(#1314) - JS generation: remove trailing newline after
switch
(#1313) - ffi: allow annotating
@mel.send
FFI with@mel.this
to specify which
parameter should represent the "self" argument.
(#1303,
#1310)- This improvement to the FFI allows expressing more FFI constructs via
labeled and optionally labeled arguments, e.g.external foo: value:string -> (t [@mel.this]) -> unit = "foo" [@@mel.send]
will now produce
t.foo(value)
instead ofvalue.foo(t)
. - It also allows removing usages of
[@mel.send.pipe: t]
in favor of
[@mel.send]
with[@mel.this]
, including when used with@mel.variadic
.
- This improvement to the FFI allows expressing more FFI constructs via
- ppx: deprecate
[@mel.send.pipe]
(#1321) - core: fix missed optimization on OCaml versions 5.2 and above, caused by
ocaml/ocaml#12236 generating
multiple function nodes forfun a -> fun b -> ...
in the Lambda IR.
5.0.0-51
CHANGES:
- Make the
unprocessed
alert fatal by default
(#1135) - support
-H
for hidden include dirs in OCaml 5.2
(#1137) - support
[@mel.*]
attributes in uncurried externals
(#1140) - add Worker types to
melange.dom
(#1147) - Add support for dynamic
import()
(#1164) - Fix code generation of custom
true
/false
constructors
(#1175) - Fix code generation of OCaml objects that refers to an init variable in scope
(#1183) - Support
[@mel.as "string"]
in variant definitions
(#884) - BREAKING: remove
[@@deriving jsConverter]
for variant definitions
(#884). Use[@mel.as "string here"]
instead. - Support OCaml 5.3 (#1168)
- Upgrade Stdlib to the OCaml 5.3 Stdlib
(#1182) - Support
[@mel.tag "the_tag"]
in variant definitions
(#1189)- combined with
[@mel.as ..]
in variant definitions and inline record
payloads, Melange can now express types for discriminated union object
shapes.
- combined with
- melange-ppx: don't silence warning 20 (
ignored-extra-argument
) for
%mel.raw
application
(#1166).- This change reverts the behavior introduced in
(#915). - The new recommendation is to annotate
%mel.raw
functions or disable
warning 20 at the project level.
- This change reverts the behavior introduced in
- ppx,core: propagate internal FFI information via attributes instead of adding
marshalled data in the native primitive name
(#1222) - melange-ppx: allow
@mel.unwrap
polyvariants not to have a payload
(#1239) melange.node
: fixBuffer.fromString
and add
Buffer.fromStringWithEncoding
(#1246)melange.node
: bind to all supported Node.jsBuffer
encodings in
Node.Buffer
(#1246)melange.js
: AddJs.FormData
with bindings to the
FormData API
(#1153,
#1270,
#1281melange.js
: AddJs.Blob
andJs.File
with bindings to the
Blob and
File APIs
(#1218)melange.js
: addTypedArray
types at the toplevel in theJs
module
(#1248)- BREAKING: remove
--mel-g
(#1234) - runtime(
melange.js
): port[@mel.send.pipe]
functions to[@mel.send]
,
taking advantage of the@mel.send
+ labeled argument improvement (see
above) (#1260,
#1264,
#1265,
#1266,
#1280,
#1278) - core: fix a crash related to finding constructor names in pattern matching triggered by dune's earlier implementation of
(implicit_transitive_deps false)
(#1238,
#1262) - core: pre-compute the closure param map for functions inlined with
--mel-cross-module-opt
(#1219) - BREAKING: ppx: print the
deprecated
alert for@@deriving abstract
at the
declaration site rather than at (all) usages
(#1269) - JS generation: prettify
for
loops
(#1275) - JS generation: improve formatting for
throw
andreturn
statements, JS
objects (#1286,
#1289) - JS generation: improve formatting for empty return and continue statements
(#1288) - JS generation: remove trailing spaces before commas in
export
(#1287) - JS generation: remove redundant switch cases branches
(#1295) - JS generation: move space before comma inside
for
definition
(#1296) - JS generation: add space before while loop condition
(#1297) - JS generation: improve indentation of parenthesized blocks
(#1293) - JS generation: add space after constructor comments
(#1294) - JS generation: improve identation of
switch
cases
(#1299) - JS generation: don't generate empty
default:
cases inswitch
(#1300) - JS generation: emit
module.exports
in CommonJS instead ofexports.x
(#1314) - JS generation: remove trailing newline after
switch
(#1313) - ffi: allow annotating
@mel.send
FFI with@mel.this
to specify which
parameter should represent the "self" argument.
(#1303,
#1310)- This improvement to the FFI allows expressing more FFI constructs via
labeled and optionally labeled arguments, e.g.external foo: value:string -> (t [@mel.this]) -> unit = "foo" [@@mel.send]
will now produce
t.foo(value)
instead ofvalue.foo(t)
. - It also allows removing usages of
[@mel.send.pipe: t]
in favor of
[@mel.send]
with[@mel.this]
, including when used with@mel.variadic
.
- This improvement to the FFI allows expressing more FFI constructs via
- ppx: deprecate
[@mel.send.pipe]
(#1321) - core: fix missed optimization on OCaml versions 5.2 and above, caused by
ocaml/ocaml#12236 generating
multiple function nodes forfun a -> fun b -> ...
in the Lambda IR.
5.0.0-414
CHANGES:
- Make the
unprocessed
alert fatal by default
(#1135) - support
-H
for hidden include dirs in OCaml 5.2
(#1137) - support
[@mel.*]
attributes in uncurried externals
(#1140) - add Worker types to
melange.dom
(#1147) - Add support for dynamic
import()
(#1164) - Fix code generation of custom
true
/false
constructors
(#1175) - Fix code generation of OCaml objects that refers to an init variable in scope
(#1183) - Support
[@mel.as "string"]
in variant definitions
(#884) - BREAKING: remove
[@@deriving jsConverter]
for variant definitions
(#884). Use[@mel.as "string here"]
instead. - Support OCaml 5.3 (#1168)
- Upgrade Stdlib to the OCaml 5.3 Stdlib
(#1182) - Support
[@mel.tag "the_tag"]
in variant definitions
(#1189)- combined with
[@mel.as ..]
in variant definitions and inline record
payloads, Melange can now express types for discriminated union object
shapes.
- combined with
- melange-ppx: don't silence warning 20 (
ignored-extra-argument
) for
%mel.raw
application
(#1166).- This change reverts the behavior introduced in
(#915). - The new recommendation is to annotate
%mel.raw
functions or disable
warning 20 at the project level.
- This change reverts the behavior introduced in
- ppx,core: propagate internal FFI information via attributes instead of adding
marshalled data in the native primitive name
(#1222) - melange-ppx: allow
@mel.unwrap
polyvariants not to have a payload
(#1239) melange.node
: fixBuffer.fromString
and add
Buffer.fromStringWithEncoding
(#1246)melange.node
: bind to all supported Node.jsBuffer
encodings in
Node.Buffer
(#1246)melange.js
: AddJs.FormData
with bindings to the
FormData API
(#1153,
#1270,
#1281melange.js
: AddJs.Blob
andJs.File
with bindings to the
Blob and
File APIs
(#1218)melange.js
: addTypedArray
types at the toplevel in theJs
module
(#1248)- BREAKING: remove
--mel-g
(#1234) - runtime(
melange.js
): port[@mel.send.pipe]
functions to[@mel.send]
,
taking advantage of the@mel.send
+ labeled argument improvement (see
above) (#1260,
#1264,
#1265,
#1266,
#1280,
#1278) - core: fix a crash related to finding constructor names in pattern matching triggered by dune's earlier implementation of
(implicit_transitive_deps false)
(#1238,
#1262) - core: pre-compute the closure param map for functions inlined with
--mel-cross-module-opt
(#1219) - BREAKING: ppx: print the
deprecated
alert for@@deriving abstract
at the
declaration site rather than at (all) usages
(#1269) - JS generation: prettify
for
loops
(#1275) - JS generation: improve formatting for
throw
andreturn
statements, JS
objects (#1286,
#1289) - JS generation: improve formatting for empty return and continue statements
(#1288) - JS generation: remove trailing spaces before commas in
export
(#1287) - JS generation: remove redundant switch cases branches
(#1295) - JS generation: move space before comma inside
for
definition
(#1296) - JS generation: add space before while loop condition
(#1297) - JS generation: improve indentation of parenthesized blocks
(#1293) - JS generation: add space after constructor comments
(#1294) - JS generation: improve identation of
switch
cases
(#1299) - JS generation: don't generate empty
default:
cases inswitch
(#1300) - JS generation: emit
module.exports
in CommonJS instead ofexports.x
(#1314) - JS generation: remove trailing newline after
switch
(#1313) - ffi: allow annotating
@mel.send
FFI with@mel.this
to specify which
parameter should represent the "self" argument.
(#1303,
#1310)- This improvement to the FFI allows expressing more FFI constructs via
labeled and optionally labeled arguments, e.g.external foo: value:string -> (t [@mel.this]) -> unit = "foo" [@@mel.send]
will now produce
t.foo(value)
instead ofvalue.foo(t)
. - It also allows removing usages of
[@mel.send.pipe: t]
in favor of
[@mel.send]
with[@mel.this]
, including when used with@mel.variadic
.
- This improvement to the FFI allows expressing more FFI constructs via
- ppx: deprecate
[@mel.send.pipe]
(#1321) - core: fix missed optimization on OCaml versions 5.2 and above, caused by
ocaml/ocaml#12236 generating
multiple function nodes forfun a -> fun b -> ...
in the Lambda IR.
4.0.1-52
4.0.0-52
CHANGES:
- CLI: passing
--eval
tomelc
now works as expected
(#1040) - runtime: add some bindings to
Js.Bigint
(#1044) - core: emit
throw new Error(..)
rather than throwing a JS object with the
Melange exception payload
(#1036) - stdlib: fix runtime primitive for
Float.{min,max}
and related functions
(#1050) - core: emit
let
instead ofvar
in compiled JS
(#1019) - core: in compiled JS, stop generating closures in loops that capture mutable
variables (#1020) - runtime: add bindings to
Js.Set
(#1047) - runtime: add minimal bindings for JS iterators (#1060)
- core: in compiled JS, emit
const
for variables that Melange knows aren't
going to be reassigned
(#1019,
#1059). - runtime: add minimal bindings for JS iterators
(#1060) - core: handle missing
.cmj
when compiling dune virtual libraries
(#1067, fixes
#658) - core: print lambda IR after TRMC pass when
--drawlambda
is passed
(#1072) - core: remove unnecessary internal code from melange-compiler-libs, slimming
down the melange executable and speeding up the build
(#1075) - core: implement warning 51 in Melange (
wrong-tailcall-expectation
)- This warning had previously been disabled entirely in the typechecker
version that Melange uses. It becomes more important with TRMC support
added in Melange 2.1.0.
- This warning had previously been disabled entirely in the typechecker
- core: accept
esm{,-global}
in addition toes6{,-global}
for
--mel-module-type
; accept--mel-module-system
in addition to
--mel-module-type
too
(#1086). - core: upgrade the OCaml type checker version to OCaml 5.2
(#1074) - core: upgrade the Stdlib to match OCaml 5.2's
(#1078) - runtime: add bindings for functions in
WeakMap
andWeakSet
(#1058) - runtime: add bindings to
Js.Map
(#1101) - core: fix a recursive module code generation bug when submodule names inside
recursive modules are mangled
(#1111)