Releases: rescript-lang/rescript
Releases · rescript-lang/rescript
12.0.2
🚀 New Feature
- Reanalyze: add parallel processing for CMT file analysis with new
-paralleland-timingflags, plus benchmark infrastructure for performance testing. #8089
🐛 Bug fix
- Reanalyze: make optional args analysis liveness-aware, preventing false positives when functions are only called from dead code. #8082
- Fix: do not warn for "editor" field in
rescript.json. #8084 - Fix
@valshadowing (rewrite usingglobalThis). #8098 - Fix
@scopeshadowing (rewrite usingglobalThis). #8100 - Formatter: normalize underscore placeholders in pipe expressions to canonical form (e.g.,
a->map2(_, fn)formats toa->map2(fn)). #8033 - Fix rewatch panic on duplicate module name. #8102
- Fix
let?unwrap to use actual variable names from pattern instead of hardcoded "x"/"e". #8085 - Fix "Ill-formed list of warnings" errors for PPXs with rescript-legacy. #8103
- Fix gentype generating invalid syntax for exotic / escaped record field names and type names. #8087
🏠 Internal
- Reanalyze: refactor DCE to pure pipeline architecture for order-independence and incremental update support. #8043
12.0.1
🐛 Bug fix
- Fix exponential compilation blowup with large unboxed variants and dict pattern matching. #8078
- Rewatch: warnings for unsupported/unknown
rescript.jsonfields. #8031 - Fix missing
ignorefunction in some Stdlib modules. #8060 - Fix signature matching for externals when abstract alias hides function arity. #8045
- Fix arity detection for arrows returning nested generics. #8064
- Fix error handling when
rescript.jsonparsing fails and improve error message. #8067 - Fix invalid JSX being generated for empty fragments. #8077
💅 Polish
- Add missing deprecation and migration for
Exn.Error. #8036
12.0.0
ReScript’s third major community-led release has arrived! This milestone wraps up a multi-year push to free the compiler from legacy limitations—and it comes loaded with new features and enhancements. 🎉
🚀 Highlights
- New Build System
- Improved Standard Library
- Unified Operators
- F#-style binary operators
- Dict Literals and Pattern Matching
- Variant Pattern Spreads
- JSX Preserve Mode
- Function-Level Directives
- Regex Literals
- Experimental
let?Syntax
📋 More Information
12.0.0-rc.5
12.0.0-rc.4
💥 Breaking Change
- Fix some
Intlbindings (Intl.Collator.supportedLocalesOf,Intl.DateTimeFormat.supportedLocalesOf,Intl.ListFormat.supportedLocalesOf,Intl.NumberFormat.supportedLocalesOf,Intl.PluralRules.supportedLocalesOf,Intl.RelativeTimeFormat.supportedLocalesOf,Intl.Segmenter.supportedLocalesOf) which returnarray<string>and not their corresponding main typet. Also removeIntl.PluralRules.selectBigIntandIntl.PluralRules.selectRangeBigIntwhich don't work in many JS runtimes. #7995
🐛 Bug fix
- Fix fatal compiler error that occurred when an
%ffiextension point contained invalid JavaScript. #7998
💅 Polish
- Dedicated error messages for old Reason array literal syntax (
[|and|]), and for the old pipe (|>). Primarly intended to help LLMs that might try to use old code patterns. #8010
🏠 Internal
12.0.0-rc.3
🐛 Bug fix
- Fix
@directiveon function level with async and multiple parameters. #7977 - Fix fatal error for external with
@as. #7978
💅 Polish
- Rewatch: plain output when not running in tty. #7970
- Streamline rewatch help texts. #7973
- Rewatch: Reduced build progress output from 7 steps to 3 for cleaner, less verbose logging. #7971
🏠 Internal
- Clean up usage of
Ast_uncurriedhelpers. #7987
12.0.0-rc.2
💥 Breaking Change
- Replace binary operators with F#-style
~~~,^^^,&&&,|||. #7894
🐛 Bug fix
- Fix: use configured Jsx module for constraining component return type. #7945
- Undeprecate
Js_OOmodule since it is still used with the@thisattribute. #7955 - Fix crash when using bitwise not (
~~~) on an incompatible type. #7965
🏠 Internal
- JSX PPX: use
React.componentinstead ofReact.componentLikefor externals. #7952
12.0.0-rc.1
12.0.0-beta.14
💥 Breaking Change
- Removed
rescript legacysubcommand in favor of separaterescript-legacybinary. #7928 - Add comparison function for
ErrorinResult.equalandcompare. #7933 - Rewatch:
"type": "dev"anddev-dependencieswill be compiled by default for local packages. The--devflag no longer does anything. #7934
🐛 Bug fix
- Prevent lockfile creation when project folder is missing. #7927
- Fix parameter type / return type ambiguity error for unit case. #7930
💅 Polish
- ReScript cli: do not show build command options in the root help. #7715
- Deprecate reanalyze
@raisesin favor of@throws. #7932
🏠 Internal
- CI: run macOS builds on macOS 15. #7935
12.0.0-beta.13
🐛 Bug fix
- Fix result examples. #7914
- Make inline record fields that overlap with a variant's tag a compile error. #7875
💅 Polish
- Keep track of compiler info during build. #7889
- Improve option optimization for constants. #7913
- Option optimization: do not create redundant local vars. #7915
- Js output: remove superfluous newline after every
if. #7920 - Rewatch: Traverse upwards for package resolution in single context projects. #7896
- Rewatch: Add
--warn-errorflag tobuild. #7916