|
| 1 | +--- |
| 2 | +category: release |
| 3 | +permalink: /news/3.8.4/ |
| 4 | +title: "Scala 3.8.4 is now available!" |
| 5 | +by: Wojciech Mazur, VirtusLab |
| 6 | +--- |
| 7 | + |
| 8 | +## Release highlights |
| 9 | + |
| 10 | +### Security audit fixes |
| 11 | + |
| 12 | +Scala 3.8.4 includes improvements and fixes for issues discovered during the [Scala codebase security audit](https://scala-lang.org/blog/2026/06/01/first-part-security-audit.html) carried out in collaboration with the Open Source Technology Improvement Fund and Quarkslab. Notable fixes in this release include: |
| 13 | + |
| 14 | +- Hardened TASTy parsing to prevent infinite loops on maliciously crafted files ([#25676](https://github.com/scala/scala3/pull/25676)) |
| 15 | +- Fixed a stored XSS vulnerability in Scaladoc ([#25681](https://github.com/scala/scala3/pull/25681)) |
| 16 | +- Improved error handling in `scala.sys.process.Parser.tokenize` ([#25675](https://github.com/scala/scala3/pull/25675)) |
| 17 | +- Fixed TastyPrinter's JAR-walking logic to include subdirectories ([#25678](https://github.com/scala/scala3/pull/25678)) |
| 18 | + |
| 19 | +### `:help` syntax for all compiler settings ([#26052](https://github.com/scala/scala3/pull/26052)) |
| 20 | + |
| 21 | +You can now append `:help` to any compiler setting to see its documentation — not just a fixed subset as before. This works wherever you pass compiler options, making it easier to discover available flags without leaving your workflow. |
| 22 | + |
| 23 | +With the Scala runner, add `:help` to a flag on the command line when running a script or project: |
| 24 | + |
| 25 | +``` |
| 26 | +> scala test.scala -Xkind-projector:help |
| 27 | +-Xkind-projector Allow `*` as type lambda placeholder to be compatible with |
| 28 | + kind projector. When invoked as -Xkind-projector:underscores |
| 29 | + will repurpose `_` to be a type parameter placeholder, this |
| 30 | + will disable usage of underscore as a wildcard. |
| 31 | + Default disable |
| 32 | + Choices: disable, , underscores |
| 33 | +``` |
| 34 | + |
| 35 | +In the REPL, pass the same flag through `:settings`: |
| 36 | + |
| 37 | +``` |
| 38 | +scala> :settings -Wunused:help |
| 39 | +-Wunused Enable or disable specific `unused` warnings |
| 40 | + Choices: |
| 41 | + - nowarn, |
| 42 | + - all, |
| 43 | + - imports : |
| 44 | + Warn if an import selector is not referenced., |
| 45 | + - privates : |
| 46 | + Warn if a private member is unused, |
| 47 | + - locals : |
| 48 | + Warn if a local definition is unused, |
| 49 | + - explicits : |
| 50 | + Warn if an explicit parameter is unused, |
| 51 | + - implicits : |
| 52 | + Warn if an implicit parameter is unused, |
| 53 | + - params : |
| 54 | + Enable -Wunused:explicits,implicits, |
| 55 | + - patvars : |
| 56 | + Warn if a variable bound in a pattern is unused, |
| 57 | + - linted : |
| 58 | + Enable -Wunused:imports,privates,locals,implicits |
| 59 | +``` |
| 60 | + |
| 61 | +### Upgrade to Scala CLI 1.14.0 |
| 62 | + |
| 63 | +The bundled Scala CLI has been upgraded from 1.11.x through 1.12.5, 1.13.0, to **1.14.0**. Notable additions across these versions include: |
| 64 | + |
| 65 | +- **v1.12.5:** experimental `--cross` support for `run`, `package`, and `doc`; global `--offline` config key; experimental local `.m2` in `publish local` |
| 66 | +- **v1.13.0:** Scala.js 1.21.0 support; Ammonite REPL deprecated and scheduled for removal; `java-test-runner` for pure Java tests; GraalVM native-image packaging via `packaging.graalvmJvmId` and `packaging.graalvmArgs` |
| 67 | +- **v1.14.0:** support for `.test.java` files; a toggle to turn auto-IDE-setup off |
| 68 | + |
| 69 | +See the [Scala CLI release notes](https://github.com/VirtusLab/scala-cli/releases/tag/v1.14.0) for full details. |
| 70 | + |
| 71 | +--- |
| 72 | + |
| 73 | +For the complete list of changes and contributor credits, see the [release notes on GitHub](https://github.com/scala/scala3/releases/tag/3.8.4). |
0 commit comments