Releases: rescript-lang/rescript
Releases · rescript-lang/rescript
11.0.0
ReScript's second major community-driven release is out and comes packed with new features and improvements! 🎉
🚀 Highlights
- Customizable Variants
- Enhanced Ergonomics for Record Types
- First-class Dynamic Import Support
- Uncurried Mode
- New Standard Library: ReScript Core
📋 More Information
11.0.0-rc.9
🚀 New Feature
- GenType: support
@deriving(accessors)outputs. #6537 - Allow coercing ints and floats to unboxed variants that have a catch-all unboxed int or float case. #6540
- Allow tuples in untagged variants. #6550
🐛 Bug Fix
- GenType: now emits full suffix on JS import path to be compatible with
.res.js. #6541
💅 Polish
11.0.0-rc.8
🚀 New Feature
- Add support for type coercion for invariant type arguments such as array payloads. #6518
- Start treating
rescriptcommand the same as therescript buildcommand, so now you can dorescript -w. #6524
🐛 Bug Fix
- Fix accidental removal of
Belt.Result.OkandBelt.Result.Errorconstructors in rc.5. #6514 - Add missing check that the runtime representation of variants matches implementation and interface. https://github.com/rescript-lang/rescript-compiler/pull/6513/files
- GenType: only export types (not values) from module types. #6516
- Fix compiler crash with unboxed variant definition with only 1 constructor. #6523
- GenType: support mutual recursive types inside modules. #6528
- Workaround for
@asin labels in uncurried externals, which was broken. #6527
💅 Polish
- GenType: make outputs DCE-friendly. #6508
11.0.0-rc.7
11.0.0-rc.6
🚀 New Feature
- Freely configurable suffix for generated .js files. #6472
🐛 Bug Fix
- Fix issue with GenType and
resultintroduced in rc.5. #6464 - Fix compiler crash when inlining complex constants in pattern matching. #6471
- Fix issue with generating async functions inside loops. #6479
- Fix issue with Gentype and string annotations with numbers such as
@as("0"). #6487 - Fix error message on curried/uncurried signature mismatch. #6414
💅 Polish
- Improve some error messages in rescript.conf parsing. #6469
11.0.0-rc.5
🚀 New Feature
- Allow coercing unboxed variants with only strings (now including with a single payload of string) to the primitive string. #6441
- Allow coercing strings to unboxed variants that have a catch-all unboxed string case. #6443
- Allow coercing
inttofloat. #6448
🐛 Bug Fix
- Fix issue with dynamic import of module in nested expressions. #6431
- Fix issue where GenType was not supporting
@tagon ordinary variants. #6437 - Fix using dynamic import of module in block instead of async function. #6434
- Fix issue with using dynamic import of module in uncurried mode. #6434
- Fix build error with JSX v4 transformation of React.forwardRef in uncurried mode. #6447
- Fix printing of exotic JSX names. #6451
- Fix locations when code with
awaitfails to compile (all locations would point to the internal functionunsafe_await). #6452 - Fix renaming fields (with @as) in inline records doesn't work when destructuring. #6456
- Fix
rc.4regressions:
🏠 Internal
- Remove dependency stdlib-406 -> belt. #6453
- Playground: Add support for implicitly opened modules. #6446
💅 Polish
- Add
Denoto reserved names, so that modules namedDenodon't clash with the globally exposedDenoobject. #6428 - Disable ESLint/TSLint on gentype outputs properly. #6442
- Improve
rescriptCLI to usestdout/stderrappropriately for help command's message. #6439 - Generate
f()instead off(undefined)forf(). #6459
11.0.0-rc.4
🚀 New Feature
- Support renaming fields in inline records with
@asattribute. #6391 - Support renaming object fields of
@objexternal ppx with@asattribute. #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.jsonconfiguration file and deprecatebsconfig.json. #6382
💥 Breaking Change
- Update watcher rules to recompile only on config and
*.res/*.resi/*.ml/.mlifile 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.tnow 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 buildcommand. #6404 - Improve help message for
buildandcleancommands. #6404 - Pass through the
-verboseflag 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 buildwill always build its dependency by default. The argument-with-depsis 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
$$defaultis 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