Prepare 12.3.1 maintenance release - #8565
Conversation
Backport the fix by tracking modules that actually recompiled, so stored warnings are replayed for dependents skipped after an earlier error. (cherry picked from commit 56d4ed5) Signed-off-by: Christoph Knittel <ck@cca.io>
* analysis: fix namespaced reference lookup * analysis: demonstrate incremental CMT lookup
rescript
@rescript/darwin-arm64
@rescript/darwin-x64
@rescript/linux-arm64
@rescript/linux-x64
@rescript/runtime
@rescript/win32-x64
commit: |
Adapted from 7f15521 for the 12.3.x Rewatch test layout.
* Preserve multibyte characters when wrapping long source lines in compiler code frames * Changelog
* Fix exponentiation right operand precedence Signed-off-by: Christoph Knittel <ck@cca.io> * Update changelog for exponentiation precedence fix Signed-off-by: Christoph Knittel <ck@cca.io> --------- Signed-off-by: Christoph Knittel <ck@cca.io>
Backport only the three type-system guards and focused regressions from 8fafaf9; omit the larger diagnostic-reporting refactor.
Backport only the independent bare labeled-arrow fix from 110534a; omit the broader external phantom-argument parser/printer rewrite.
Adapted from 5e23370 for the 12.x arity-marked parsetree. Signed-off-by: Christoph Knittel <ck@cca.io>
Lam_beta_reduce built the bindings for non-substitutable arguments by prepending during fold_left2 (reverse parameter order) and then wrapped the body with fold_right, making the first parameter's binding innermost - so the last argument was evaluated first. Fold left instead, so the first parameter's binding is outermost and arguments evaluate in call order. The reversed order was visible in checked-in output: bs_set_int_test.mjs evaluated setEqArray's second argument before its first. The new inline_arg_order_test fixture pins the order with recursive (hence non-substitutable) effectful arguments; its checked-in JS would show the regression directly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Cristiano Calcagno <cristianoc@users.noreply.github.com> (cherry picked from commit 124bc4b)
Adapted from d0440c3 for the 12.x arity-marked typedtree. Signed-off-by: Christoph Knittel <ck@cca.io>
Adapted from d0440c3 for the 12.x typedtree. Signed-off-by: Christoph Knittel <ck@cca.io>
Signed-off-by: Christoph Knittel <ck@cca.io>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f8aa648561
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| > - :nail_care: [Polish] | ||
| > - :house: [Internal] | ||
|
|
||
| # 12.3.1 |
There was a problem hiding this comment.
The reviewed commit message has no Signed-Off-By: trailer, although this repository requires DCO sign-off for commits; add the author sign-off before merging the release commit.
AGENTS.md reference: AGENTS.md:L240-L243
Useful? React with 👍 / 👎.
| let _ = { | ||
| helper(effA(0), effB(0)) | ||
| } |
There was a problem hiding this comment.
Use
ignore for the side-effect-only call
This binding exists only to evaluate helper(effA(0), effB(0)) and discard its result, but repository guidance explicitly prohibits let _ = … for side effects; use ignore helper(effA(0), effB(0)) so the regression test follows the required convention.
AGENTS.md reference: AGENTS.md:L44-L45
Useful? React with 👍 / 👎.
| - Fix bare labeled arrow types (`~x: int => string`) getting no arity and failing to unify with their parenthesized form. https://github.com/rescript-lang/rescript/pull/8563 | ||
| - Fix argument evaluation order when a function call is inlined: the beta reducer could evaluate non-substitutable arguments from last to first. https://github.com/rescript-lang/rescript/pull/8572 |
There was a problem hiding this comment.
Document the signature-help fix
The commit backports the #8566 SignatureHelp.ml fix and its tests, but the 12.3.1 release notes jump directly from #8563 to #8572. Users consulting this changelog therefore cannot discover that functions returning functions now expose the correct outer parameters and ranges; add the missing #8566 entry before releasing.
Useful? React with 👍 / 👎.
Summary
Prepare the conservative ReScript 12.3.1 maintenance release from
maintenance/12.x.The fixes were backported chronologically and adapted where necessary to avoid pulling newer infrastructure or broad refactors:
=correctlyScope
This intentionally excludes larger or more invasive master changes, notably:
The goal is to fix concrete correctness and crash issues without increasing maintenance-release regression risk.
Validation
make testmake test-analysismake test-syntaxmake test-rewatchmake checkformatAll local checks pass, and CI is green across the full matrix.