Skip to content

Releases: rescript-lang/rescript-compiler

10.1.4

28 Mar 09:22
Compare
Choose a tag to compare

🐛 Bug Fix

  • Fix implementation of directives #6052
  • Fix issue if the lib dir is included in the sources of bsconfig.json #6055
  • Fix issue with string escape in pattern match #6062
  • Fix issue with literal comparison of string constants #6065

🚀 New Feature

  • Add support for toplevel await #6054

💅 Polish

  • Better error message for extension point #6057
  • Improve format check help #6056
  • Deprecate unsafe j`$(a)$(b)` interpolation: use string templates `${a}${b}` instead #6067

10.1.3

07 Mar 07:23
Compare
Choose a tag to compare

🚀 New Feature

  • Add experimental suppport for directives. An annotation such as @@directive("use client;") emits use client; verbatim before imports #5999
  • genType: add Core 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> as undefined | t instead of null | 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: use Js.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}.

💅 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 where then and catch were returning undefined #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 braced cases 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 type float #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

29 Jan 20:25
13b9572
Compare
Choose a tag to compare

🐛 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

05 Jan 16:40
92c23e8
Compare
Choose a tag to compare

💥 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

🚀 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

27 Nov 09:38
192bbd8
Compare
Choose a tag to compare

🐛 Bug Fix

  • Fix issue where no error was reported when ? was used for non-optional fields. #5853
  • Fix issue where optional fields in inline records were not supported and would cause type errors #5827

10.1.0-rc.5

09 Nov 14:24
2f41b75
Compare
Choose a tag to compare
10.1.0-rc.5 Pre-release
Pre-release

🐛 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

05 Nov 06:37
b34dbd0
Compare
Choose a tag to compare
10.1.0-rc.4 Pre-release
Pre-release

🚀 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

31 Oct 16:19
344a3b7
Compare
Choose a tag to compare
10.1.0-rc.3 Pre-release
Pre-release

🚀 New Feature

🐛 Bug Fix

💅 Polish

10.1.0-rc.2

16 Oct 14:27
dca052b
Compare
Choose a tag to compare
10.1.0-rc.2 Pre-release
Pre-release

🐛 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

13 Oct 11:04
Compare
Choose a tag to compare
10.1.0-rc.1 Pre-release
Pre-release

💥 Breaking Change

  • Deprecate DOM element attributes in JsxDOM.domProps: begin_, end_, to_
    • Use begin, end, to instead.
  • 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 in JsxDOM.domProps: ariaCurrent, ariaInvalid, ariaAutocomplete, etc.
  • Change the internal representation of props for the lowercase components to record. rescript-lang/syntax#665