# Scala 3.8.4 - Product: Scala (https://whatsnew.fyi/product/scala) - Vendor: Scala Center - Date: 2026-06-05 - Version: 3.8.4 - Original notes: https://github.com/scala/scala3/releases/tag/3.8.4 - Permalink: https://whatsnew.fyi/product/scala/releases/3.8.4 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Allow :help syntax for all settings - **added** — Add logical package parsing for sourcepath - **changed** — Upgrade Scala CLI to 1.14.0 - **added** — Support for .test.java files in Scala CLI - **added** — Toggle to turn auto-IDE-setup off in Scala CLI - **added** — Cross support for run, package and doc sub-commands in Scala CLI (experimental) - **added** — Global --offline config key in Scala CLI - **added** — Local .m2 in publish local in Scala CLI (experimental) - **added** — Support for Scala.js 1.21.0 in Scala CLI - **added** — java-test-runner for pure Java tests in Scala CLI - **added** — GraalVM native-image packaging support with packaging.graalvmJvmId and packaging.graalvmArgs in Scala CLI - **deprecated** — Ammonite REPL in Scala CLI - **fixed** — Copy param annotations at mixin - **fixed** — Do not simplify isInstanceOf if unrelated types might be subtypes at run-time - **changed** — Use Objects.equals in translating == - **fixed** — Fix crash when processing path dependent context functions using HKTs - **fixed** — Preserve singleton precision during scoverage lifting - **fixed** — Ensure package transformation properly handles language imports in InstrumentCoverage - **changed** — Do not instrument erased values in scoverage - **fixed** — Fix named arguments evaluation order with by-name parameters #### Highlights of the release - Allow `:help` syntax for all settings [#26052](https://github.com/scala/scala3/pull/26052) - feature: Add logical package parsing for sourcepath [#25446](https://github.com/scala/scala3/pull/25446) - Upgrade Scala CLI to 1.14.0 * https://github.com/VirtusLab/scala-cli/releases/tag/v1.12.5 * `--cross` support for run, package and doc sub-commands (experimental) * Global `--offline` config key * Local .m2 in publish local (experimental) * https://github.com/VirtusLab/scala-cli/releases/tag/v1.13.0 * Support for Scala.js 1.21.0 * Ammonite REPL deprecated & scheduled for removal * `java-test-runner` for pure Java tests * GraalVM native-image packaging: `packaging.graalvmJvmId` and `packaging.graalvmArgs` * https://github.com/VirtusLab/scala-cli/releases/tag/v1.14.0 * Support for `.test.java` * A toggle to turn auto-IDE-setup off #### Other changes and fixes ##### Annotations - Also copy param annots at mixin [#24916](https://github.com/scala/scala3/pull/24916) - Named arg may be deprecatedName [#21588](https://github.com/scala/scala3/pull/21588) - Use `dealiasKeepRefiningAnnots` in `AvoidMap` [#25609](https://github.com/scala/scala3/pull/25609) ##### Backend - Do not simplify isInstanceOf if unrelated types might be subtypes at run-time [#25535](https://github.com/scala/scala3/pull/25535) - Port more Scala2 tests + some mixin improvements [#25573](https://github.com/scala/scala3/pull/25573) - Use `Objects.equals` in translating `==` [#25314](https://github.com/scala/scala3/pull/25314) ##### Compiler Phases - Harden Period creation and use of Run/PhaseId [#25484](https://github.com/scala/scala3/pull/25484) - Make Phase.run protected [#25366](https://github.com/scala/scala3/pull/25366) ##### Context Functions - Fix crash when processing path dependent context functions using HKTs [#25530](https://github.com/scala/scala3/pull/25530) ##### Coverage - Fix #25555: Preserve singleton precision during scoverage lifting [#25556](https://github.com/scala/scala3/pull/25556) - Fixes #25482: Ensure package transformation properly handles language imports in InstrumentCoverage [#25546](https://github.com/scala/scala3/pull/25546) - Scoverage: do not instrument erased values. [#25298](https://github.com/scala/scala3/pull/25298) ##### Default parameters - Fix named arguments evaluation order with by-name parameters [#25161](https://github.com/scala/scala3/pull/25161) - Typer: remove by-name lifting and replace default-getter args with fresh syms [#25502](https://github.com/scala/scala3/pull/25502) ##### Documentation - Error mentions bad _1 selector [#25616](https://github.com/scala/scala3/pull/25616) - Document Scala compiler error codes [#24734](https://github.com/scala/scala3/pull/24734) - Fix capture checking doc links in language.scala [#25498](https://github.com/scala/scala3/pull/25498) - Docs: apply snippet compiler on new types reference docs [#19513](https://github.com/scala/scala3/pull/19513) - Remove outdated comment in value classes [#25428](https://github.com/scala/scala3/pull/25428) - Update `IsIterable` scaladoc [#24692](https://github.com/scala/scala3/pull/24692) ##### Enums - Make enum apply ascriptions inferred types [#25562](https://github.com/scala/scala3/pull/25562) ##### Extension Methods - Accept using right associative parameters [#24766](https://github.com/scala/scala3/pull/24766) - Better handling of illegal trees in `extension` [#25368](https://github.com/scala/scala3/pull/25368) ##### GADTs - Also trust TypeTest when there is a Bind [#24568](https://github.com/scala/scala3/pull/24568) ##### Implicits - Deprecation when inferring implicit from non-accessible companion [#25516](https://github.com/scala/scala3/pull/25516) - Fix missing deprecation warning for implicit in non-accessible companion [#25608](http _[Truncated at 4000 characters — full notes: https://github.com/scala/scala3/releases/tag/3.8.4]_