Validate Scala 3.9.0 LTS + Scala.js 1.22.0 on Mill 1.1.8; cut 0.3.1 (TJC-2274) - #29
Merged
Merged
Conversation
…0.3.1 (TJC-2274) Scala 3.9.0 emits Scala.js 1.22 IR, which the linker bundled by Mill 1.1.x's ScalaJSConfigModule (IR <= 1.20) rejects. 0.3.0's explicit-scalaJSVersion path is the supported route, but the suite only proved it against Scala 3.8.2 on Mill 1.1.5. Now: - Every Scala.js fixture, example-scalajs, examples, and the README snippets build with Scala 3.9.0 LTS on Scala.js 1.22.0. No plugin code change needed. - Mill 1.1.8 for the plugin build (.mill-version, launcher defaults, fixture and example headers) plus a separate millTestkitVersion = "1.1.8": the fixtures run Mill in-process via mill-testkit, so that pin is what decides which Mill they exercise (0 version-mismatch warnings, previously 49). The compile target stays at millVersion = "1.1.5"; the floor is unchanged. - The plugin's own scalaVersion stays 3.8.2 on purpose (documented): Mill 1.1.5 and 1.1.8 both compile build files with Scala 3.8.2, and a plugin built with newer Scala emits TASTy consumers' Mill cannot read. - Version sweep 0.3.0 -> 0.3.1 and a 0.3.1 CHANGELOG entry. Verified locally: millbun.compile/test, full millbun.integration (in-process Mill 1.1.8), example-scalajs + example-typescript run/test, examples compile, scalafmt check. Consumer check: fast-mcp-scala on Scala 3.9.0 with this plugin at 0.3.1 (publishLocal) compiles JVM/JS/Native and passes its Bun conformance suite. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…n version (TJC-2274) Bun 1.4.1 shipped 2026-09-04. The managed default moves to it with checksums for all twelve release assets taken from the release's SHASUMS256.txt (the darwin-aarch64 archive was downloaded and re-hashed to confirm the table matches). 1.4.1 writes lockfileVersion 2, so committed locks stay valid; 1.4.0 stays in the table for explicit bunVersion pins. CI's system-Bun jobs follow, since the version check requires PATH Bun == bunVersion. @types/bun has not reached 1.4.1 on npm, so the shipped default now pairs with DefaultBunTypesVersion = "1.4.0" instead of tracking Bun blindly, which would have 404'd every TypeScript frozen install on release day. Modules that override bunVersion keep the lockstep behaviour. The "ambient types are pinned" integration test asserts the new pairing. Verified locally: millbun.test, full millbun.integration on managed 1.4.1, example-scalajs + example-typescript run/test, examples compile, scalafmt. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prerequisite for TJC-2273 (fast-mcp-scala → Scala 3.9.0 LTS). Scala 3.9.0 emits Scala.js 1.22 IR, which the linker bundled by Mill 1.1.x's
ScalaJSConfigModule(IR ≤ 1.20) rejects; 0.3.0's explicit-scalaJSVersionpath is the supported route, and until now the suite only proved it against Scala 3.8.2 on Mill 1.1.5.example-scalajs,examples, and the README snippets (Scala.js stays 1.22.0). No plugin code change was needed — the suite passes as-is..mill-version, launcher defaults, fixture/example headers) and, the part that actually decides which Mill the fixtures run in-process, a separatemillTestkitVersion = "1.1.8". The compile target stays atmillVersion = "1.1.5", so the supported floor is unchanged and the jar under test is the real consumer shape (0 "Mill version … is different than configured" warnings, previously 49).scalaVersionstays at 3.8.2 on purpose andbuild.millnow says why: Mill 1.1.5 and 1.1.8 both compile build files with Scala 3.8.2, and a plugin built with newer Scala emits TASTy consumers' Mill cannot read.SHASUMS256.txt; 1.4.1 writeslockfileVersion2 so committed locks stay valid, and 1.4.0 stays in the table for explicit pins.@types/bunhas not reached 1.4.1 on npm yet, so the shipped default pairs with a newDefaultBunTypesVersion = "1.4.0"instead of tracking Bun blindly (which would 404 every TypeScript frozen install on release day); modules that overridebunVersionkeep lockstep.Verification (local, macOS arm64, Mill 1.1.8, managed Bun 1.4.1)
millbun.compile,millbun.test: greenmillbun.integration(full suite, in-process Mill 1.1.8 via mill-testkit 1.1.8): green, 0 version-mismatch warningsexample-scalajs(app.run,app.test.testForked),example-typescript(same),examples __.compile, scalafmt check: see CI0.3.1(publishLocal) compiles JVM/JS/Native and its Bun conformance suite passes 42/42 (TJC-2273 PR)Linear: TJC-2274
🤖 Generated with Claude Code