Releases: rescript-lang/rescript
Releases · rescript-lang/rescript
12.0.0-alpha.14
💥 Breaking Change
Iterator.forEach
now emitsIterator.prototype.forEach
call. #7506- Rename functions ending with
Exn
to end withOrThrow
. The oldExn
functions are now deprecated:Bool.fromStringExn
→Bool.fromStringOrThrow
BigInt.fromStringExn
→BigInt.fromStringOrThrow
JSON.parseExn
→JSON.parseOrThrow
- Changed
BigInt.fromFloat
to return an option rather than throwing an error. - Added
BigInt.fromFloatOrThrow
Option.getExn
→Option.getOrThrow
Null.getExn
→Null.getOrThrow
Nullable.getExn
→Nullable.getOrThrow
Result.getExn
→Result.getOrThrow
List.getExn
→List.getOrThrow
List.tailExn
→List.tailOrThrow
List.headExn
→List.headOrThrow
- Old functions remain available but are marked as deprecated with guidance to use the new
OrThrow
variants. - #7518, #7554
🚀 New Feature
- Add
RegExp.flags
. #7461 - Add
Array.findLast
,Array.findLastWithIndex
,Array.findLastIndex
,Array.findLastIndexWithIndex
andArray.findLastIndexOpt
. #7503 - Add
options
argument toConsole.dir
. #7504 - Show variant constructor's inline record types on hover. #7519
- Add additional
Iterator.prototype
bindings toruntime/Stdlib_Iterator.res
. #7506
🐛 Bug fix
rescript-tools doc
no longer includes shadowed bindings in its output. #7497- Treat
throw
likeraise
in analysis. #7521 - Fix
index out of bounds
exception thrown in rare cases byrescript-editor-analysis.exe codeAction
command. #7523 - Don't produce duplicate type definitions for recursive types on hover. #7524
- Prop punning when types don't match results in
I/O error: _none_: No such file or directory
. #7533 - Fix partial application with user-defined function types. #7548
- Fix doc comment before variant throwing syntax error. #7535
- Fix apparent non-determinism in generated code for pattern matching. #7557
💅 Polish
- Suggest awaiting promise before using it when types mismatch. #7498
- Complete from
RegExp
stdlib module for regexes. #7425 - Allow oneliner formatting when including module with single type alias. #7502
- Improve error messages for JSX type mismatches, passing objects where record is expected, passing array literal where tuple is expected, and more. #7500
- Show in error messages when coercion can be used to fix a type mismatch. #7505
- Remove deprecated pipe last (
|>
) syntax. #7512 - Improve error message for pipe (
->
) syntax. #7520 - Improve a few error messages around various subtyping issues. #7404
- In module declarations, accept the invalid syntax
M = {...}
and format it toM : {...}
. #7527 - Improve doc comment formatting to match the style of multiline comments. #7529
- Improve error messages around type mismatches for try/catch, if, for, while, and optional record fields + optional function arguments. #7522
- Sync reanalyze with the new APIs around exception. #7536
- Improve array pattern spread error message. #7549
- Sync API docs with rescript-lang.org on release. #7555
🏠 Internal
12.0.0-alpha.13
💥 Breaking Change
- Rename
JsError
toJsExn
and error modules cleanup. #7408 - Make
BigInt.fromFloat
return an option rather than throwing an error in case it's passed a value with a decimal value. #7419
🚀 New Feature
- Add shift (
<<
,>>
,>>>
) operators forint
andbigint
. #7183 - Add bitwise AND (
&
) operator forint
andbigint
. #7415 - Add bitwise NOT (
~
) operator forint
andbigint
. #7418 - Significantly reduced the download size by splitting binaries into optional platform-specific dependencies (e.g,
@rescript/linux-x64
). #7395 - JSX: do not error on ref as prop anymore (which is allowed in React 19). #7420
- Add new attribute
@notUndefined
for abstract types to prevent unnecessary wrapping withPrimitive_option.some
in JS output. #7458 - Preserve JSX: enable by adding
"-bs-jsx-preserve"
to"bsc-flags"
(does require"jsx": { "version": 4 }
). #7387 - Add slot prop to
JsxDOM.domProps
. #7487
🐛 Bug fix
- Fix broken
bstracing
CLI location. #7398 - Fix field flattening optimization to avoid creating unnecessary copies of allocating constants. #7421
- Fix leading comments removed when braces inside JSX contains
let
assignment. #7424 - Fix JSON escaping in code editor analysis: JSON was not always escaped properly, which prevented code actions from being available in certain situations. #7435
- Fix regression in pattern matching for optional fields containing variants. #7440
- Fix missing checks for duplicate literals in variants with payloads. #7441
- Fix printer removing private for empty record. #7448
- Fix: handle dynamic imports with module aliases. #7452
- Fix missing unescaping when accessing prop with exotic name. #7469
- Fix syntax error with mutable nested record. #7470
🏠 Internal
- AST: Add bar location to
case
. #7407 - Clean up lazy from ASTs and back-end. #7474
- Compile runtime with rewatch and add rewatch tests to the compiler repo. #7422
💅 Polish
12.0.0-alpha.12
12.0.0-alpha.11
🐛 Bug fix
- Fix
Error.fromException
. #7364 - Fix signature of
throw
. #7365 - Fix formatter adds superfluous parens in pipe chain. #7370
🏠 Internal
- Remove
Stdlib_Char
module for now. #7367 - Convert internal JavaScript codebase into ESM, ReScript package itself is now ESM (
"type": "module"
). #6899
💅 Polish
- More deprecations in
Pervasives
; addStdlib.Pair
andStdlib.Int.Ref
. #7371
12.0.0-alpha.10
🚀 New Feature
- Add
Dict.has
and doubleDict.forEachWithKey
/Dict.mapValues
performance. #7316 - Add popover attributes to
JsxDOM.domProps
. #7317 - Add
Array.removeInPlace
helper based onsplice
. #7321 - Add
inert
attribute toJsxDOM.domProps
. #7326 - Make reanalyze exception tracking work with the new stdlib. #7328
- Fix
Pervasive.max
using boolean comparison for floats. #7333 - Experimental: Support nested/inline record types - records defined inside of other records, without needing explicit separate type definitions. #7241
- Add unified exponentiation (
**
) operator for numeric types using ES7**
. #7153 - Rename
raise
tothrow
to align with JavaScript vocabulary.raise
has been deprecated. #7346 - Add unified bitwise (
^
) operator. #7216 - Stdlib: rename binary operations to match JavaScript terms. #7353
💥 Breaking Change
- Replace
~date
with~day
inDate.make
. #7324 - Remove
-bs-jsx-mode
. #7327 - Drop Node.js version <20 support, as it is reaching End-of-Life. #7354
- Treat
int
multiplication as a normal int32 operation instead of usingMath.imul
. #7358
🏠 Internal
💅 Polish
- Deprecate
JSON.Classify.classify
. #7315 - Hide stdlib modules in output. #7305
- Deprecate unsafe host-specific bindings from stdlib. #7334
- Make unsafe function names consistent in
Stdlib.String
. #7337 rescript
package does not triggerpostinstall
script anymore. #7350- Add Stdlib
Bool
andChar
modules and improve Pervasives deprecation messages. #7361
🐛 Bug fix
11.2.0-beta.2
🏠 Internal
- Playground: use TLS 1.2 to upload files to CDN using FTP. #7307
12.0.0-alpha.9
💥 Breaking Change
- Clean list API. #7290
💅 Polish
- Allow single newline in JSX. #7269
- Editor: Always complete from Core first. Use actual native regex syntax in code snippets for regexps. #7295
- Add
type t
to Stdlib modules. #7302 - Gentype: handle null/nullable/undefined from Stdlib. #7132
🐛 Bug fix
- Fix async context checking for module await. #7271
- Fix
%external
extension. #7272 - Fix issue with type environment for unified ops. #7277
- Fix completion for application with tagged template. #7278
- Fix error message for arity in the presence of optional arguments. #7284
- Fix issue in functors with more than one argument (which are curried): emit nested function always. #7273
- Fix dot completion issue with React primitives. #7292
- Stdlib namespace for Core modules (fixes name clashes with user modules). #7285
- Fix runtime type check for Object in untagged variants when one variant case is
null
. #7303 - Fix files that were being truncated when sent to the CDN over FTP. #7306
- Fix better editor completion for applications. #7291
- Fix
@react.componentWithProps
no longer works with@directive("'use memo'")
. #7300
🏠 Internal
11.2.0-beta.1
💥 Breaking Change
- Deprecate JSX 3. #7042
- Deprecate js_cast.res. #7074
- Deprecate top-level
"suffix"
option inrescript.json
. #7056
🐛 Bug Fix
- Handle absolute file paths in gentype. #7111
- Fix "rescript format" with many files. #7081
- Fix exponential notation syntax. #7174
- Fix formatter handling of wildcard in pattern matching records with no fields specified. #7224
🏠 Internal
- Playground: Bundle and upload stdlib runtime so that the playground can execute functions from Core/Belt/Js. #7268
12.0.0-alpha.8
🐛 Bug fix
- Editor: Fix issue where pipe completions would not trigger with generic type arguments. #7231
- Fix leftover
assert false
in code fornull != undefined
. #7232 - Editor: Fix issue where completions would not show up inside of object bodies. #7230
- Fix issue with pattern matching empty list which interferes with boolean optimisations. #7237
- Fix Cannot combine
@react.component
and@directive
. #7260 - Fix issue where attributes on an application were not preserved by the AST conversion for ppx. #7262
🏠 Internal
- AST cleanup: Prepare for ast async cleanup: Refactor code for
@res.async
payload handling and clean up handling of type and term parameters, so that now each=>
in a function definition corresponds to a function. #7223 - AST: always put type parameters first in function definitions. #7233
- AST cleanup: Remove
@res.async
attribute from the internal representation, and add a flag to untyped and typed ASTs instead. #7234 - AST cleanup: Remove unused
expression_desc.Pexp_new
,expression_desc.Pexp_setinstvar
,expression_desc.Pexp_override
,expression_desc.Pexp_poly
,exp_extra.Texp_poly
,expression_desc.Texp_new
,expression_desc.Texp_setinstvar
,expression_desc.Texp_override
&expression_desc.Texp_instvar
from AST. #7239 - AST cleanup: Remove
@res.partial
attribute from the internal representation, and add a flag to untyped and typed ASTs instead. #7238 #7240 - AST cleanup: Remove unused
structure_item_desc.Pstr_class
,signature_item_desc.Psig_class
,structure_item_desc.Pstr_class_type
,signature_item_desc.Psig_class_type
,structure_item_desc.Tstr_class
,structure_item_desc.Tstr_class_type
,signature_item_desc.Tsig_class
,signature_item_desc.Tsig_class_type
from AST. #7242 - AST cleanup: remove
|.
and rename|.
to->
in the internal representation for the pipe operator. #7244 - AST cleanup: represent concatenation (
++
) and (dis)equality operators (==
,===
,!=
,!==
) just like in the syntax. #7248 - AST cleanup: use inline record for
Ptyp_arrow
. #7250 - Playground: Bundle stdlib runtime so that the playground can execute functions from Core/Belt/Js. #7255
- AST cleanup: Remove
res.namedArgLoc
attribute and store the location information directly into the label. #7247
12.0.0-alpha.7
🐛 Bug fix
- Editor: Fix issue where completions would stop working in some scenarios with inline records. #7227
💅 Polish
- Add all standard CSS properties to
JsxDOMStyle
. #7205
🏠 Internal
- AST cleanup: use inline record for Pexp_fun. #7213
- Add support for "dot completion everywhere" (ported from rescript-lang/rescript-vscode#1054). #7226
- Add assertions to stdlib docstring examples. Extract examples into Mocha tests, compile and run the tests in CI. #7219