Skip to content

Prepare 12.3.1 maintenance release - #8565

Open
cknitt wants to merge 13 commits into
maintenance/12.xfrom
codex/12.3.1
Open

Prepare 12.3.1 maintenance release#8565
cknitt wants to merge 13 commits into
maintenance/12.xfrom
codex/12.3.1

Conversation

@cknitt

@cknitt cknitt commented Aug 19, 2026

Copy link
Copy Markdown
Member

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:

Scope

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 test
  • make test-analysis
  • make test-syntax
  • make test-rewatch
  • make checkformat
  • focused termination-analysis test corpus
  • Rewatch Rust unit tests and formatting checks
  • complete GitHub Actions matrix, including compiler builds, analysis/tools, installation, API docs, package preview, and Rewatch integration tests

All local checks pass, and CI is green across the full matrix.

cknitt and others added 3 commits August 19, 2026 11:17
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
@pkg-pr-new

pkg-pr-new Bot commented Aug 19, 2026

Copy link
Copy Markdown

Open in StackBlitz

rescript

npm i https://pkg.pr.new/rescript@8565

@rescript/darwin-arm64

npm i https://pkg.pr.new/@rescript/darwin-arm64@8565

@rescript/darwin-x64

npm i https://pkg.pr.new/@rescript/darwin-x64@8565

@rescript/linux-arm64

npm i https://pkg.pr.new/@rescript/linux-arm64@8565

@rescript/linux-x64

npm i https://pkg.pr.new/@rescript/linux-x64@8565

@rescript/runtime

npm i https://pkg.pr.new/@rescript/runtime@8565

@rescript/win32-x64

npm i https://pkg.pr.new/@rescript/win32-x64@8565

commit: f8aa648

nathan-tranquilla and others added 5 commits August 21, 2026 08:37
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.
cristianoc and others added 4 commits August 21, 2026 10:03
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>
@cknitt
cknitt marked this pull request as ready for review August 21, 2026 08:55

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread CHANGELOG.md
> - :nail_care: [Polish]
> - :house: [Internal]

# 12.3.1

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Sign off the release commit

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 👍 / 👎.

Comment on lines +28 to +30
let _ = {
helper(effA(0), effB(0))
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment thread CHANGELOG.md
Comment on lines +24 to +25
- 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants