Releases: rescript-lang/rescript
Releases · rescript-lang/rescript
11.0.0-rc.4
🚀 New Feature
- Support renaming fields in inline records with
@as
attribute. #6391 - Support renaming object fields of
@obj
external ppx with@as
attribute. #6391 - Add builtin abstract types for File and Blob APIs. #6383
- Untagged variants: Support
promise
, RegExes, Dates, File and Blob. #6383 - Untagged variants: Support
bool
. #6368 - Support aliased types as payloads to untagged variants. #6394
- Support the async component for React Server Component in JSX V4. #6399
- Support
rescript.json
configuration file and deprecatebsconfig.json
. #6382
💥 Breaking Change
- Update watcher rules to recompile only on config and
*.res
/*.resi
/*.ml
/.mli
file changes. Solves the issue of unnecessary recompiles on.css
,.ts
, and other unrelated file changes. #6420 - Add smart printer for pipe chains. #6411 (the formatter will reformat existing code in certain cases)
Js.Json.t
now usesBoolean(bool)
instead of explicit@as(true) True | @as(false) False
. #6421
🐛 Bug Fix
- Fix issue with GenType and labelled arguments. #6406
- Fix dependencies reinitialization on every change in watch mode. Leads to faster rebuilds and cleaner terminal. #6404
💅 Polish
- A little performance improvement for JSX V4 runtime helper by removing one object allocation for components with key prop. #6376
- The error message for "toplevel expressions should evaluate to unit" has been revamped and improved. #6407
- Improve "Somewhere wanted" error messages by changing wording and adding more context + suggested solutions to the error messages where appropriate. #6410
- Display the compile time for
rescript build
command. #6404 - Improve help message for
build
andclean
commands. #6404 - Pass through the
-verbose
flag to builds in watch mode. #6404 - Improve error message when defining duplicate labels in a record. #6415
- Improve error message when trying to concatenate strings using the wrong operator. #6416
11.0.0-rc.3
11.0.0-rc.2
🚀 New Feature
rescript build
will always build its dependency by default. The argument-with-deps
is not needed anymore. #6350
💥 Breaking Change
- Stop mangling object field names. If you had objects with field names containing "__" or leading "_", they won't be mangled in the compiled JavaScript and represented as it is without changes. #6354
🐛 Bug Fix
- Fixed outcome printer resolution of uncurried config. #6353
11.0.0-rc.1
🚀 New Feature
- GenType: Propagate comments from record fields to emitted TypeScript types. #6333
💥 Breaking Change
$$default
is no longer exported from the generated JavaScript when using default exports. #6328
💅 Polish
- Conditionally print error message about record with missing label potentially being a component. #6337
- Put definition in the bottom and the actual error at the top when reporting errors for supplying fields etc with the wrong name. #6336
- Fix left over places where polyvariant tag names were printed in OCaml syntax instead of ReScript. #6348
11.0.0-beta.4
🚀 New Feature
- Variants: Allow coercing from variant to variant where applicable. #6314
- Variants: Experimental support for spreading variant type definitions to copy constructors from one variant to another. #6316
💥 Breaking Change
- Fixed name collision between the newly defined Js.Json.t and the variant constructor in the existing Js.Json.kind type. To address this, the usage of the existing Js.Json.kind type can be updated to Js.Json.Kind.t. #6317
🐛 Bug Fix
11.0.0-beta.3
🚀 New Feature
- Untagged variants: consider regexp as an object type. #6296
- Semantic-based optimization of code generated for untagged variants. #6108
- Record type spreads: Allow using type variables in type spreads. Both uninstantiated and instantiated ones. #6309
- Variants: Allow coercing variants to string/int/float when applicable. #6311
🐛 Bug Fix
- Fix issue with dynamic import of modules in expressions. #6310
11.0.0-beta.2
🚀 New Feature
- Introduced a new
%ffi
extension (experimental - not for production use!) that provides a more robust mechanism for JavaScript function interoperation by considering function arity in type constraints. This enhancement improves safety when dealing with JavaScript functions by enforcing type constraints based on the arity of the function. #6251 - Extended untagged variants with function types. #6279
💥 Breaking Change
- Remove rudimentary node bindings and undocumented
%node
extension. #6285
🐛 Bug Fix
11.0.0-beta.1
🚀 Main New Feature
- Make uncurried mode opt-out: by default, every project is now in uncurried mode, unless
"uncurried": false
is specified in the project config. #6249
💅 Polish
- Removed duplicate Super_error implementation in syntax. #6246
🐛 Bug Fix
- Fix issue with inlining records in the presence of record coercion. #6256
11.0.0-alpha.6
💥 Breaking Change
-bs-super-errors
flag has been deprecated along with Super_errors. #6243@rescript/react
>= 0.12.0-alpha.2 is now required because of the React.fragment's children type fix. #6238
🐛 Bug Fix
- Remove unnecessary require and import statements when using dynamic imports. #6232
- Fix option unboxing logic in the presence of untagged variants. #6233
- Fix printing of local module with type. #6212
- Adapting JSX4 to React.fragment's children type change (
'children
->React.element
) #6238
💅 Polish
- In uncurried mode, outcome printer swaps curried and uncurries function printing compared to legacy.
- Add location information to duplicate type definition error messages. #6199
- Replace normal module errors with Super_error module, and clean up Super_error. #6199
Js.Json.t
,Js.null
andJs.nullable
are now untagged variants representing their runtime values, instead of abstract types. #6218
11.0.0-alpha.5
🚀 Main New Feature
- Add support for Dynamic import. #5703
- GenType: Add
moduleResolution
option to customize extensions on emitted import statements. This helps to adjust output compatibility with TypeScript projects using ESM. #6182node
(default): Drop extensions.node16
: Use TS output's extensions. Make it ESM-compatible.bundler
: Use TS input's extensions. Make it ESM-compatible.
- Make untagged variants understand payloads defined as records. #6208
💥 Breaking Change
- Parse
assert
as a regular function.assert
is no longer a unary expression. Example: beforeassert 1 == 2
is parsed as(assert 1) == 2
, now it is parsed asassert(1 == 2)
. #6180
🐛 Bug Fix
- Make "rescript format" work with node 10 again and set minimum required node version to 10 in package.json. #6186
- Fix partial application for uncurried functions with labeled args #6198
- Add error messages for dangling doc comments/attributes and mutable in record type definition. #6206
- Fix issue with overlapping array and object in untagged variants #6219