Releases: rescript-lang/rescript
Releases · rescript-lang/rescript
10.1.4
10.1.3
🚀 New Feature
- Add experimental suppport for directives. An annotation such as
@@directive("use client;")
emitsuse client;
verbatim before imports #5999 genType
: addCore
standard library support for the following builtin types:Null.t
,Nullable.t
,Undefined.t
,Dict.t<_>
,Promise.t<_>
,Date.t
,BigInt.t
,RegExp.t
,Map.t<_, _>
,WeakMap.t<_, _>
,Set<_>
,WeakSet<_>
#6024
💥 Breaking Change
genType
: streamline the treatment of optionals as undefined #6024- Represent
option<t>
asundefined | t
instead ofnull | undefined | t
. This is more permissive when importing functions taking optional values (allows to use option types), but stricter when e.g. exporting ReScript functions taking arguments of option type. Fallback: useJs.undefined<_>
instead. - Represent
{x:option<string>}
as{x:(undefined | string)}
instead of{x?: string}
. This is more in line with TS's behaviour. Fallback: use{x?:string}
.
- Represent
💅 Polish
- Add the gap property to jsxDOMStyle #5956
🐛 Bug Fix
- Fix issue where error messages related to non-existent props were displayed without location information rescript-lang/syntax#730
- Fix issue where uncurried functions were incorrectly converting the type of a prop given as a default value to curried rescript-lang/syntax#731
- Fix issue with nested async functions, where the inner function would be emitted without
async
#5984 - Fix issue with printing async functions with locally abstract types rescript-lang/syntax#732
- Fix issue with async context and locally abstract types #5985
- Fix support for recursive components in JSX V4 rescript-lang/syntax#733
- GenType: fix issue with V3 compatibility mode (see #5990) #5992
- Fix issue with overlapping labelled argument with default value rescript-lang/syntax#734
- Fix issue with using alias and default value together rescript-lang/syntax#734
- Fix issue in
Js.Promise2
wherethen
andcatch
were returningundefined
#5996 - Fix issue in the compiler back-end where async functions passed to an
@uncurry
external would be inlined and transformed in a way that loses async #6011 - Fix location issue for the treatment of
async
functions where hovering on the body with a type error would show'a => promise<'a>
everywhere #6014 - Fix formatting of
switch
expressions that contain bracedcases
inside rescript-lang/syntax#735 - Fix formatting of props spread for multiline JSX expression rescript-lang/syntax#736
- Support
@gentype.import
as an alias to@genType.import
in the compiler #6021 - In GenType, check annotations also in module types to decide whether to produce the
.gen.tsx
file #5903 - Fix issue with JSX V4 and newtype rescript-lang/syntax#737
- Fix issue with JSX V4 when components are nested rescript-lang/syntax#738
- Fix issue where generic compare on
float
values would be different from the compare for typefloat
#6043 - Improve code generated for default arguments in JSX V4 rescript-lang/syntax#739
- Fix issue with JSX V4 props of the form
~p as module(...)
rescript-lang/syntax#739
10.1.2
🐛 Bug Fix
- Fix an issue where error messages related to duplicate props were displayed without a loc and were unclear rescript-lang/syntax#728
10.1.1
💥 Breaking Change
- Parse the attributes of labelled argument to the pattern attributes of argument instead of function. rescript-lang/syntax#722
- The prop names duplicated to keyword are not mangled automatically in JSX v4.
- Use
@as
instead
- Use
🚀 New Feature
- Add support for empty inlined record literal
{}
for inlined records where all fields are optional #5900
🐛 Bug Fix
- Prevent inlining of async functions in additional cases #5860
- Revert to ubuntu-18.04 in CI to support Linux versions with older glibc #5868
- Fix build error where aliasing arguments to
_
in the make function with JSX V4. rescript-lang/syntax#720 - Fix parsing of spread props as an expression in JSX V4 rescript-lang/syntax#721
- Fix dropping attributes from props in make function in JSX V4 rescript-lang/syntax#723
10.1.0
10.1.0-rc.5
🐛 Bug Fix
- Prevent inlining of async functions in last stage of the compiler when the functions are not exported (not in interface file or shadowed) #5790
10.1.0-rc.4
🚀 New Feature
- Support format check with
rescript format -check
. #5760
🐛 Bug Fix
- Fix issue where the last line of
rescript format --help
usage was being swallowed #5760 - Specialize the printing of the rhs of a record field assignment for optional values
{x: ? e}
rescript-lang/syntax#714
10.1.0-rc.3
🚀 New Feature
- Support the use of spread anywhere in list creation (e.g.
list{...x, 1, ...y, ...z}
). rescript-lang/syntax#692 - Add support for the argument of
@react.component
to set a props type from the outside. rescript-lang/syntax#699
🐛 Bug Fix
- Fix issue where the JSX key type is not an optional string rescript-lang/syntax#693
- Prevent inlining of async functions #5754
- Fix build error for JSX fragment without children rescript-lang/syntax#704
- Fix issue where async as an id cannot be used with application and labelled arguments rescript-lang/syntax#707
- Fix 5557: the exhaustive checking for char is incorrect during the unicode migration #5749
- Fix 5753: the comment for unicode char is inaccurate rescript-lang/syntax#709
- Treat await as almost-unary operator weaker than pipe so
await foo->bar
meansawait (foo->bar)
rescript-lang/syntax#711
💅 Polish
- Change payload of
Pconst_char
fromchar
toint
rescript-lang/syntax#709
10.1.0-rc.2
🐛 Bug Fix
- Fix issue with changes not being applied with React Native's Metro bundler for files with warnings #5738
- Fix emitting unary minus for floats in case of negative constants #5737
- Fix issue where a spread
...x
in non-last position would not be reported as syntax error rescript-lang/syntax#673 - Fix issue where the formatter would delete
async
in a function with labelled arguments. - Fix several printing issues with
async
including an infinite loop rescript-lang/syntax#680 - Fix issue where certain JSX expressions would be formatted differenctly in compiler 10.1.0-rc.1 rescript-lang/syntax#675
- Fix issue where printing nested pipe discards await rescript-lang/syntax#687
10.1.0-rc.1
💥 Breaking Change
- Deprecate DOM element attributes in
JsxDOM.domProps
:begin_
,end_
,to_
- Use
begin
,end
,to
instead.
- Use
- Emit an error when a
@string
or@int
attribute is used in a V4 component #5724
🚀 New Feature
- Add extra variants for output filename suffixes in
bsconfig.json
:.bs.mjs
and.bs.cjs
are allowed #5631 - Safe promises: t-first Js.Promise2 bindings, and remove warning for nested promises #5709
🐛 Bug Fix
- Fix issue where uncurried async functions were emitted without
async
#5718 - Fix location issue in error messages with JSX V4 where the multiple props types are defined rescript-lang/syntax#655
- Fix location issue in make function in JSX V4 that breaks dead code elimination rescript-lang/syntax#660
- Fix parsing (hence pretty printing) of expressions with underscore
_
and comments. - Fix printing of comments inside JSX tag rescript-lang/syntax#664
- Fix issue where formatter erases tail comments inside JSX tag rescript-lang/syntax#663
- Fix issue where the JSX prop has type annotation of the first class module rescript-lang/syntax#666
- Fix issue where an empty record literal {} expected to have a non-record type would type check #5729
👓 Spec Compliance
- Functions with consecutive dots now print as multiple arrow functions like in JavaScript.
💅 Polish
- Add
loading
,aria-*
DOM element attributes inJsxDOM.domProps
:ariaCurrent
,ariaInvalid
,ariaAutocomplete
, etc. - Change the internal representation of props for the lowercase components to record. rescript-lang/syntax#665