8000 Tags · davesnx/melange · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Tags: davesnx/melange

Tags

5.0.1-414

Toggle 5.0.1-414's commit message
Release 5.0.1-414

CHANGES:

- Fix `[@mel.send]` and `[@mel.this]` interaction in the presence of constant
  `[@mel.as ".."]` arguments
  ([melange-re#1328](melange-re#1328))
- Allow skipping over `[@mel.as ".."]` constant arguments in `[@mel.send]` in
  the absence of `@mel.this`
  ([melange-re#1328](melange-re#1328))
- core: fix missed function argument fusion optimization on OCaml versions 5.2
  and above, caused by [ocaml/ocaml#12236](ocaml/ocaml#12236) generating
  multiple function nodes for `fun a -> fun b -> ...` in the Lambda IR. This
  issue, while partially fixed in Melange 5.0.0, didn't account for default
  arguments ([melange-re#1253](melange-re#1253),
  [melange-re#1334](melange-re#1334)).

5.0.0-414

Toggle 5.0.0-414's commit message
Release 5.0.0-414

CHANGES:

- Make the `unprocessed` alert fatal by default
  ([melange-re#1135](melange-re#1135))
- support `-H` for hidden include dirs in OCaml 5.2
  ([melange-re#1137](melange-re#1137))
- support `[@mel.*]` attributes in uncurried externals
  ([melange-re#1140](melange-re#1140))
- add Worker types to `melange.dom`
  ([melange-re#1147](melange-re#1147))
- Add support for dynamic `import()`
  ([melange-re#1164](melange-re#1164))
- Fix code generation of custom `true` / `false` constructors
  ([melange-re#1175](melange-re#1175))
- Fix code generation of OCaml objects that refers to an init variable in scope
  ([melange-re#1183](melange-re#1183))
- Support `[@mel.as "string"]` in variant definitions
  ([melange-re#884](melange-re#884))
- BREAKING: remove `[@@deriving jsConverter]` for variant definitions
  ([melange-re#884](melange-re#884)). Use `[@mel.as
  "string here"]` instead.
- Support OCaml 5.3 ([melange-re#1168](melange-re#1168))
- Upgrade Stdlib to the OCaml 5.3 Stdlib
  ([melange-re#1182](melange-re#1182))
- Support `[@mel.tag "the_tag"]` in variant definitions
  ([melange-re#1189](melange-re#1189))
  - combined with `[@mel.as ..]` in variant definitions and inline record
    payloads, Melange can now express types for discriminated union object
    shapes.
- melange-ppx: don't silence warning 20 (`ignored-extra-argument`) for
  `%mel.raw` application
  ([melange-re#1166](melange-re#1166)).
  - This change reverts the behavior introduced in
    ([melange-re#915](melange-re#915)).
  - The new recommendation is to annotate `%mel.raw` functions or disable
    warning 20 at the project level.
- ppx,core: propagate internal FFI information via attributes instead of adding
  marshalled data in the native primitive name
  ([melange-re#1222](melange-re#1222))
- melange-ppx: allow `@mel.unwrap` polyvariants not to have a payload
  ([melange-re#1239](melange-re#1239))
- `melange.node`: fix `Buffer.fromString` and add
  `Buffer.fromStringWithEncoding`
  ([melange-re#1246](melange-re#1246))
- `melange.node`: bind to all supported Node.js `Buffer` encodings in
  `Node.Buffer` ([melange-re#1246](melange-re#1246))
- `melange.js`: Add `Js.FormData` with bindings to the
  [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) API
  ([melange-re#1153](melange-re#1153),
  [melange-re#1270](melange-re#1270),
  [melange-re#1281](melange-re#1281)
- `melange.js`: Add `Js.Blob` and `Js.File` with bindings to the
  [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) and
  [File](https://developer.mozilla.org/en-US/docs/Web/API/File) APIs
  ([melange-re#1218](melange-re#1218))
- `melange.js`: add `TypedArray` types at the toplevel in the `Js` module
  ([melange-re#1248](melange-re#1248))
- BREAKING: remove `--mel-g`
  ([melange-re#1234](melange-re#1234))
- runtime(`melange.js`): port `[@mel.send.pipe]` functions to `[@mel.send]`,
  taking advantage of the `@mel.send` + labeled argument improvement (see
  above) ([melange-re#1260](melange-re#1260),
  [melange-re#1264](melange-re#1264),
  [melange-re#1265](melange-re#1265),
  [melange-re#1266](melange-re#1266),
  [melange-re#1280](melange-re#1280),
  [melange-re#1278](melange-re#1278))
- core: fix a crash related to finding constructor names in pattern matching triggered by dune's earlier implementation of `(implicit_transitive_deps false)`
  ([melange-re#1238](melange-re#1238),
  [melange-re#1262](melange-re#1262))
- core: pre-compute the closure param map for functions inlined with
  `--mel-cross-module-opt`
  ([melange-re#1219](melange-re#1219))
- BREAKING: ppx: print the `deprecated` alert for `@@deriving abstract` at the
  declaration site rather than at (all) usages
  ([melange-re#1269](melange-re#1269))
- JS generation: prettify `for` loops
  ([melange-re#1275](melange-re#1275))
- JS generation: improve formatting for `throw` and `return` statements, JS
  objects ([melange-re#1286](melange-re#1286),
  [melange-re#1289](melange-re#1289))
- JS generation: improve formatting for empty return and continue statements
  ([melange-re#1288](melange-re#1288))
- JS generation: remove trailing spaces before commas in `export`
  ([melange-re#1287](melange-re#1287))
- JS generation: remove redundant switch cases branches
  ([melange-re#1295](melange-re#1295))
- JS generation: move space before comma inside `for` definition
  ([melange-re#1296](melange-re#1296))
- JS generation: add space before while loop condition
  ([melange-re#1297](melange-re#1297))
- JS generation: improve indentation of parenthesized blocks
  ([melange-re#1293](melange-re#1293))
- JS generation: add space after constructor comments
  ([melange-re#1294](melange-re#1294))
- JS generation: improve identation of `switch` cases
  ([melange-re#1299](melange-re#1299))
- JS generation: don't generate empty `default:` cases in `switch`
  ([melange-re#1300](melange-re#1300))
- JS generation: emit `module.exports` in CommonJS instead of `exports.x`
  ([melange-re#1314](melange-re#1314))
- JS generation: remove trailing newline after `switch`
  ([melange-re#1313](melange-re#1313))
- ffi: allow annotating `@mel.send` FFI with `@mel.this` to specify which
  parameter should represent the "self" argument.
  ([melange-re#1303](melange-re#1285),
  [melange-re#1310](melange-re#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 of `value.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`.
- ppx: deprecate `[@mel.send.pipe]`
  ([melange-re#1321](melange-re#1321))
- core: fix missed optimization on OCaml versions 5.2 and above, caused by
  [ocaml/ocaml#12236](ocaml/ocaml#12236) generating
  multiple function nodes for `fun a -> fun b -> ...` in the Lambda IR.

5.0.0-53

Toggle 5.0.0-53's commit message
Release 5.0.0-53

CHANGES:

- Make the `unprocessed` alert fatal by default
  ([melange-re#1135](melange-re#1135))
- support `-H` for hidden include dirs in OCaml 5.2
  ([melange-re#1137](melange-re#1137))
- support `[@mel.*]` attributes in uncurried externals
  ([melange-re#1140](melange-re#1140))
- add Worker types to `melange.dom`
  ([melange-re#1147](melange-re#1147))
- Add support for dynamic `import()`
  ([melange-re#1164](melange-re#1164))
- Fix code generation of custom `true` / `false` constructors
  ([melange-re#1175](melange-re#1175))
- Fix code generation of OCaml objects that refers to an init variable in scope
  ([melange-re#1183](melange-re#1183))
- Support `[@mel.as "string"]` in variant definitions
  ([melange-re#884](melange-re#884))
- BREAKING: remove `[@@deriving jsConverter]` for variant definitions
  ([melange-re#884](melange-re#884)). Use `[@mel.as
  "string here"]` instead.
- Support OCaml 5.3 ([melange-re#1168](melange-re#1168))
- Upgrade Stdlib to the OCaml 5.3 Stdlib
  ([melange-re#1182](melange-re#1182))
- Support `[@mel.tag "the_tag"]` in variant definitions
  ([melange-re#1189](melange-re#1189))
  - combined with `[@mel.as ..]` in variant definitions and inline record
    payloads, Melange can now express types for discriminated union object
    shapes.
- melange-ppx: don't silence warning 20 (`ignored-extra-argument`) for
  `%mel.raw` application
  ([melange-re#1166](melange-re#1166)).
  - This change reverts the behavior introduced in
    ([melange-re#915](melange-re#915)).
  - The new recommendation is to annotate `%mel.raw` functions or disable
    warning 20 at the project level.
- ppx,core: propagate internal FFI information via attributes instead of adding
  marshalled data in the native primitive name
  ([melange-re#1222](melange-re#1222))
- melange-ppx: allow `@mel.unwrap` polyvariants not to have a payload
  ([melange-re#1239](melange-re#1239))
- `melange.node`: fix `Buffer.fromString` and add
  `Buffer.fromStringWithEncoding`
  ([melange-re#1246](melange-re#1246))
- `melange.node`: bind to all supported Node.js `Buffer` encodings in
  `Node.Buffer` ([melange-re#1246](melange-re#1246))
- `melange.js`: Add `Js.FormData` with bindings to the
  [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) API
  ([melange-re#1153](melange-re#1153),
  [melange-re#1270](melange-re#1270),
  [melange-re#1281](melange-re#1281)
- `melange.js`: Add `Js.Blob` and `Js.File` with bindings to the
  [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) and
  [File](https://developer.mozilla.org/en-US/docs/Web/API/File) APIs
  ([melange-re#1218](melange-re#1218))
- `melange.js`: add `TypedArray` types at the toplevel in the `Js` module
  ([melange-re#1248](melange-re#1248))
- BREAKING: remove `--mel-g`
  ([melange-re#1234](melange-re#1234))
- runtime(`melange.js`): port `[@mel.send.pipe]` functions to `[@mel.send]`,
  taking advantage of the `@mel.send` + labeled argument improvement (see
  above) ([melange-re#1260](melange-re#1260),
  [melange-re#1264](melange-re#1264),
  [melange-re#1265](melange-re#1265),
  [melange-re#1266](melange-re#1266),
  [melange-re#1280](melange-re#1280),
  [melange-re#1278](melange-re#1278))
- core: fix a crash related to finding constructor names in pattern matching triggered by dune's earlier implementation of `(implicit_transitive_deps false)`
  ([melange-re#1238](melange-re#1238),
  [melange-re#1262](melange-re#1262))
- core: pre-compute the closure param map for functions inlined with
  `--mel-cross-module-opt`
  ([melange-re#1219](melange-re#1219))
- BREAKING: ppx: print the `deprecated` alert for `@@deriving abstract` at the
  declaration site rather than at (all) usages
  ([melange-re#1269](melange-re#1269))
- JS generation: prettify `for` loops
  ([melange-re#1275](melange-re#1275))
- JS generation: improve formatting for `throw` and `return` statements, JS
  objects ([melange-re#1286](melange-re#1286),
  [melange-re#1289](melange-re#1289))
- JS generation: improve formatting for empty return and continue statements
  ([melange-re#1288](melange-re#1288))
- JS generation: remove trailing spaces before commas in `export`
  ([melange-re#1287](melange-re#1287))
- JS generation: remove redundant switch cases branches
  ([melange-re#1295](melange-re#1295))
- JS generation: move space before comma inside `for` definition
  ([melange-re#1296](melange-re#1296))
- JS generation: add space before while loop condition
  ([melange-re#1297](melange-re#1297))
- JS generation: improve indentation of parenthesized blocks
  ([melange-re#1293](melange-re#1293))
- JS generation: add space after constructor comments
  ([melange-re#1294](melange-re#1294))
- JS generation: improve identation of `switch` cases
  ([melange-re#1299](melange-re#1299))
- JS generation: don't generate empty `default:` cases in `switch`
  ([melange-re#1300](melange-re#1300))
- JS generation: emit `module.exports` in CommonJS instead of `exports.x`
  ([melange-re#1314](melange-re#1314))
- JS generation: remove trailing newline after `switch`
  ([melange-re#1313](melange-re#1313))
- ffi: allow annotating `@mel.send` FFI with `@mel.this` to specify which
  parameter should represent the "self" argument.
  ([melange-re#1303](melange-re#1285),
  [melange-re#1310](melange-re#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 of `value.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`.
- ppx: deprecate `[@mel.send.pipe]`
  ([melange-re#1321](melange-re#1321))
- core: fix missed optimization on OCaml versions 5.2 and above, caused by
  [ocaml/ocaml#12236](ocaml/ocaml#12236) generating
  multiple function nodes for `fun a -> fun b -> ...` in the Lambda IR.

4.0.1-52

Toggle 4.0.1-52's commit message
Release 4.0.1-52

CHANGES:

- Support `-bin-annot-occurrences` on OCaml 5.2
  ([PR](melange-re#1132))

4.0.0-52

Toggle 4.0.0-52's commit message
Release 4.0.0-52

CHANGES:

- CLI: passing `--eval` to `melc` now works as expected
  ([melange-re#1040](melange-re#1040))
- runtime: add some bindings to `Js.Bigint`
  ([melange-re#1044](melange-re#1044))
- core: emit `throw new Error(..)` rather than throwing a JS object with the
  Melange exception payload
  ([melange-re#1036](melange-re#1036))
- stdlib: fix runtime primitive for `Float.{min,max}` and related functions
  ([melange-re#1050](melange-re#1050))
- core: emit `let` instead of `var` in compiled JS
  ([melange-re#1019](melange-re#1019))
- core: in compiled JS, stop generating closures in loops that capture mutable
  variables ([melange-re#1020](melange-re#1020))
- runtime: add bindings to `Js.Set`
  ([melange-re#1047](melange-re#1047))
- runtime: add minimal bindings for JS iterators ([melange-re#1060](melange-re#1060))
- core: in compiled JS, emit `const` for variables that Melange knows aren't
  going to be reassigned
  ([melange-re#1019](melange-re#1019),
  [melange-re#1059](melange-re#1059)).
- runtime: add minimal bindings for JS iterators
  ([melange-re#1060](melange-re#1060))
- core: handle missing `.cmj` when compiling dune virtual libraries
  ([melange-re#1067](melange-re#1067), fixes
  [melange-re#658](melange-re#658))
- core: print lambda IR after TRMC pass when `--drawlambda` is passed
  ([melange-re#1072](melange-re#1072))
- core: remove unnecessary internal code from melange-compiler-libs, slimming
  down the melange executable and speeding up the build
  ([melange-re#1075](melange-re#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.
- core: accept `esm{,-global}` in addition to `es6{,-global}` for
  `--mel-module-type`; accept `--mel-module-system` in addition to
  `--mel-module-type` too
  ([melange-re#1086](melange-re#1086)).
- core: upgrade the OCaml type checker version to OCaml 5.2
  ([melange-re#1074](melange-re#1074))
- core: upgrade the Stdlib to match OCaml 5.2's
  ([melange-re#1078](melange-re#1078))
- runtime: add bindings for functions in `WeakMap` and `WeakSet`
  ([melange-re#1058](melange-re#1058))
- runtime: add bindings to `Js.Map`
  ([melange-re#1101](melange-re#1101))
- core: fix a recursive module code generation bug when submodule names inside
  recursive modules are mangled
  ([melange-re#1111](melange-re#1111))

2.1.0

Toggle 2.1.0's commit message
Release 2.1.0

CHANGES:

- Add TRMC (Tail Recursion Modulo Cons) support
  ([melange-re#743](melange-re#743))
- [playground]: Add `melange.dom` to bundle
  ([melange-re#779](melange-re#779))
- Fix `Sys.argv` runtime to match declared type
  ([melange-re#791](melange-re#791))
- Make `'a Js.t` abstract (again), fixing a regression when bringing back
  OCaml-style objects BuckleScript
  ([melange-re#786](melange-re#786))
- Don't issue "unused attribute" warning for well-formed `@@@mel.config` in
  interface files ([melange-re#800](melange-re#800))
- Stop showing `Js__.Js_internal` in types and error messages
  ([melange-re#798](melange-re#798))
- Fix printing of OCaml-style objects and uncurried application
  ([melange-re#807](melange-re#807))

2.0.0

Toggle 2.0.0's commit message
Release 2.0.0

CHANGES:

- Build executables for bytecode-only platforms too
  ([melange-re#596](melange-re#596))
- Move the entire builtin PPX to `melange.ppx`. Preprocessing with
  `melange.ppx` will needed in most cases going forward, as it's responsible
  for processing `external` declarations, `@deriving` attributes and more,
  compared to the previous release where `melange.ppx` just processed AST
  extension nodes ([melange-re#583](melange-re#583))
- Remove old BuckleScript-style conditional compilation
  ([melange-re#605](melange-re#605))
- Don't emit JS import / require paths with `foo/./bar.js`
  ([melange-re#598](melange-re#598),
  [melange-re#612](melange-re#612))
- Wrap the melange runtime
  ([melange-re#624](melange-re#624),
  [melange-re#637](melange-re#637)). After this change,
  Melange exposes fewer toplevel modules. Melange runtime / stdlib modules are
  now wrapped under:
    - `Caml*` / `Curry` modules are part of the runtime and keep being exposed
      as before
    - `Js.*` contains all the modules previously accessible via `Js_*`, e.g.
      `Js_int` -> `Js.Int`
    - `Belt.*` wraps all the `Belt` modules; `Belt_List` etc. are not exposed
      anymore, but rather nested under `Belt`, e.g. `Belt.List`
    - `Node.*`: we now ship a `melange.node` library that includes the modules
      containing Node.js bindings. After this change, users will have to depend
      on `melange.node` explicitly in order to use the `Node.*` modules
    - `Dom.*`: we now ship a `melange.dom` library that includes the modules
      containing Node.js bindings. This library is included by default so the
      `Dom` module will always be available in Melange projects.
- Disable warning 61 (`unboxable-type-in-prim-decl`) for externals generated by
  Melange ([melange-re#641](melange-re#641),
  [melange-re#643](melange-re#643))
- Add `--rectypes` ([melange-re#644](melange-re#644)) to
  enable [recursive
  types](https://v2.ocaml.org/releases/5.0/htmlman/types.html#sss:typexpr-aliased-recursive)
- [melange.ppx]: Deprecate `bs.*` attributes in favor of `mel.*`
  ([melange-re#566](melange-re#566),
  [melange-re#662](melange-re#662),
  [melange-re#663](melange-re#663))
- [melange]: Fix field access code generation when `open`in inline functor
  applications ([melange-re#661](melange-re#661),
  [melange-re#664](melange-re#664))
- [melange]: Upgrade the OCaml typechecker version to 5.1
  ([melange-re#668](melange-re#668))
- [melange.ppx]: Deprecate `[@@mel.val]` and suggest its removal. This
  attribute is redundant and unnecessary
  ([melange-re#675](melange-re#675),
  [melange-re#678](melange-re#678))
- [melange]: remove old, unused CLI flags: `-bs-ns`, `-bs-cmi`, `-bs-cmj`,
  `-bs-no-builtin-ppx`, `-bs-super-errors`
  ([melange-re#686](melange-re#686)).
- [melange]: generate correct code for types with the `option` shape
  ([melange-re#700](melange-re#700)).
- [melange]: stop exporting `$$default` in the generated JavaScript when using
  ES6 default exports `let default = ..`
  ([melange-re#708](melange-re#708)).
- [melange]: allow exporting invalid OCaml identifiers in the resulting
  JavaScript with `@mel.as`
  ([melange-re#714](melange-re#714), fixes
  [melange-re#713](melange-re#713)).
- [melange]: Allow using `@mel.as` in external declarations without explicitly
  annotating `@mel.{string,int}`
  ([melange-re#722](melange-re#722), fixes
  [melange-re#578](melange-re#578)).
- [melange]: Allow using `@mel.unwrap` in external declarations with `@mel.obj`
  ([melange-re#724](melange-re#724), fixes
  [melange-re#679](melange-re#679)).
- [melange]: Support renaming fields in inline records / record extensions with
  `@mel.as` ([melange-re#732](melange-re#732), fixes
  [melange-re#730](melange-re#730)).

1.0.0

Toggle 1.0.0's commit message
Release 1.0.0

CHANGES:

- melange: print an error message if `$MELANGELIB` is set to a directory that
  doesn't exist ([melange-re#449](melange-re#449))
- melange: fix bug where `--bs-module-name` didn't always affect generated JS
  file casing ([melange-re#446](melange-re#446))
- melange: fix bug where `-o output.js` didn't always write a JavaScript file
  ([melange-re#454](melange-re#454))
- melange: remove the `-bs-read-cmi` flag in favor of the builtin
  `-intf-suffix` flag, standard in OCaml
  ([melange-re#458](melange-re#458),
  [melange-re#460](melange-re#460))
- melange: return an actionable error message when no output is specified
  with `-impl` / `-intf`
  ([melange-re#465](melange-re#465),
  [melange-re#466](melange-re#466))
- melange: use `Object.prototype.hasOwnProperty` in the `Caml_obj` runtime
  ([melange-re#469](melange-re#469))
- melange: transform
  [`NonEscapeCharacter`](https://tc39.es/ecma262/#prod-NonEscapeCharacter)
  correctly in JS strings (those written using `{js|string here|js}`)
  ([melange-re#469](melange-re#469))
- melange: define `MELANGE` conditional compilation variable
  ([melange-re#472](melange-re#472))
- melange: Make `Pervasives` exactly match the `Stdlib` behavior
  ([melange-re#476](melange-re#476))
- melange: fix unbound error when trying to use `Printexc.exn_slot_id`
  ([melange-re#482](melange-re#482))
- melange: fix codegen issue accessing a nested module path that is also
  `include`d ([melange-re#487](melange-re#487))
- melange: preserve the correct command-line order for load path directories
  ([melange-re#492](melange-re#492))
- melange: respect the `-nostdlib` option; don't add stdlib / runtime to the
  load path in that case
  ([melange-re#496](melange-re#496))
- melange: build the Melange runtime / stdlib / runtime tests with the dune
  integration ([melange-re#493](melange-re#493)). Thus
  melange now requires Dune 3.8.
- melange: allow shadowing sub-modules of Stdlib in user projects
  ([melange-re#512](melange-re#512))
- melange, reactjs-jsx-ppx: introduce a `reactjs-jsx-ppx` package, remove its
  dependency from melange
  ([melange-re#517](melange-re#517))
- melange: remove the `--bs-jsx <version>` flag from `melc` now that
  `reactjs-jsx-ppx` is a separate package
  ([melange-re#525](melange-re#525))
- melange: add `melpp` executable to preprocess `#if` conditionals with the
  melange parser ([melange-re#539](melange-re#539))
- mel: delete the `mel` package. The dune integration is now the only
  officially supported workflow for orchestrating melange builds
  ([melange-re#546](melange-re#546))
- melange: Extract `melange.ppx` from the melange package. This preprocessing
  step interprets extensions such as `%bs.obj`, `%bs.raw`, `%bs.re`, etc.
  ([melange-re#534](melange-re#534))
- melange: allow installing melange in more OCaml versions and compiler
  switches. Melange now migrates binary AST to the version it understands
  ([melange-re#548](melange-re#548))
- melange: don't run anonymous args function from
  `[@@@bs.config {flags = [| ... |]}]` attributes
  ([melange-re#554](melange-re#554))
- melange: add `--preamble` flag to add a preamble to emitted JS. An example is
  `"use client";` in React Server Components, which needs to appear before
  imports ([melange-re#545](melange-re#545),
  [melange-re#574](melange-re#574))
- melange: turn off warning 20 (`ignore-extra-argument`) by default. This
  warning is rarely useful in Melange due to false positives when invoking
  functions defined with `%bs.raw`
  ([melange-re#488](melange-re#488),
  [melange-re#576](melange-re#576))

0.3.2

Toggle 0.3.2's commit message
Release 0.3.2

CHANGES:

- `ppx_rescript_compat` (ReScript compatibility layer): fix conversion for
  cases such as `foo["bar"] = assignment`
  ([melange-re#441](melange-re#441)):
  - These are now correctly converted to the OCaml equivalent:
    `foo##bar #= assignment`
- [mel]: fix merlin generation, broken since `mel` was moved to its own package
  ([melange-re#442](melange-re#442))

0.3.1

Toggle 0.3.1's commit message
Release 0.3.1

CHANGES:

- Disable warning 69 (`unused-field` in record) for the private record
  generated by the `bs.deriving` attribute
  ([melange-re#414](melange-re#414))
- Disable warning 20 (`ignored-extra-argument`) when applying
  `foo##fn arg1 arg2`
  ([melange-re#416](melange-re#416)):
  - in cases such as `external x : < .. > Js.t = ""`, the typechecker doesn't
    know the arity of the function, even though Melange will emit an uncurried
    function call.
- Disable warning 61 (`unboxable-type-in-prim-decl`) in `external` declarations
  ([melange-re#415](melange-re#415)):
  - Melange externals are substantially different from OCaml externals. This
    warning doesn't make sense in a JS runtime.
- melc: introduce `--bs-module-name` flag to specify the original file name for
  the current compilation unit
  ([melange-re#413](melange-re#413))
  - Dune's namespacing implementation generates modules such as
    `lib__Original_name`. Passing `--bs-module-name original_name` allows
    melange to issue correct `import` / `require` statements to the unmangled
    JS file names.
0