Scala CLI

[email protected]·VirtusLab.ScalaCLI

Scala CLI is a command-line tool to interact with the Scala language.

winget install --id VirtusLab.ScalaCLI --exact --source winget

Latest 1.15.0·June 30, 2026

Release Notes

Default Scala 3.8.4, Scala Native 0.5.12 & Scala.js 1.22.0 This Scala CLI version bumps the default Scala version to 3.8.4, Scala Native to 0.5.12 and Scala.js to 1.22.0. scala-cli version

Scala CLI version: 1.15.0

Scala version (default): 3.8.4

scala-cli -e 'println("Hello from Scala.js 1.22.0!")' --js

Compiling project (Scala 3.8.4, Scala.js 1.22.0)

Compiled project (Scala 3.8.4, Scala.js 1.22.0)

Hello from Scala.js 1.22.0!

scala-cli -e 'println("Hello from Scala Native 0.5.12!")' --native

Compiling project (Scala 3.8.4, Scala Native 0.5.12)

Compiled project (Scala 3.8.4, Scala Native 0.5.12)

Hello from Scala Native 0.5.12!

Scala 3.8.4 was added by @Gedochao in #4299 Scala Native 0.5.12 was added by @WojciechMazur in #4286 Scala.js 1.22.0 was added by @Gedochao in #4344 JShell support in repl scala-cli repl can now use JShell as its REPL backend, enabled with the --jshell (--jsh) flag. JShell is also picked automatically for pure-Java projects. The project's classpath (including dependencies) is available inside the JShell session, so you can play with your code (and even reference Scala classes via reflection). JShell requires JDK 9 or newer. package demo; public class HelloJShell { public static String greet() { return "Hello from JShell!"; } } System.out.println(demo.HelloJShell.greet()); scala-cli repl demo/HelloJShell.java --jshell --jvm 17 --repl-quit-after-init --repl-init-script-file hi.jsh Note: It is possible to explicitly disable JShell on pure Java projects and revert to using Scala REPL with --jshell=false. Added by @Gedochao in #4262 java snippets in Markdown inputs (experimental ⚡️) Scala CLI can now compile and run java code blocks inside Markdown inputs, mirroring the existing support for scala snippets. A java snippet is treated like a regular .java input (its body is emitted as Java source without any wrapping). As with other Markdown features, this requires --power.

Java in Markdown

public class HelloMarkdown {
  public static void main(String[] args) {
    System.out.println("Hello from a Java snippet in Markdown!");
  }
}

scala-cli --power HelloMarkdown.md Added by @Gedochao in #4284 WebAssembly support (experimental ⚡️) Scala CLI can now compile and run Scala.js through the experimental Scala.js WebAssembly backend. Enable it with the --js-emit-wasm flag (or the //> using wasm directive) together with ES module output (--js-module-kind es / //> using jsModuleKind es). The Wasm output runs on a JavaScript host that embeds a Wasm engine. Scala CLI does not bundle any of these runtimes — you have to install Node.js (the default), Deno or Bun yourself, then select one with --js-runtime. See the Scala.js with Wasm guide for the details and runtime version requirements. //> using wasm //> using jsModuleKind es @main def hello(): Unit = println("Hello from Wasm!")

Node.js is the default runtime - no runtime flag needed

scala-cli run HelloWasm.scala --power

run the same Wasm output on Deno

scala-cli run HelloWasm.scala --power --js-runtime deno

...or on Bun

scala-cli run HelloWasm.scala --power --js-runtime bun Added by @lostflydev in #4176 JUnit 5 (Jupiter) support The test runner now supports JUnit 5 (Jupiter) via the jupiter-interface test interface, for both Scala and pure-Java tests. JUnit 5 requires Java 17 or newer. //> using test.dep com.github.sbt.junit:jupiter-interface:0.19.0 import org.junit.jupiter.api.Test import org.junit.jupiter.api.Assertions.* class MyJupiterTests { @Test def addition(): Unit = { assertEquals(4, 2 + 2) println("Hello from JUnit 5 / Jupiter!") } } scala-cli test MyJupiterTests.test.scala --jvm 17 Added by @Gedochao in #4304 SBT 2.x export The export sub-command can now generate SBT 2.x builds (the default SBT version used for the export is now 2.0.0). Pick a specific version with --sbt-version. @main def hello(): Unit = println("Hello from an SBT 2.x export!") scala-cli --power export hello.scala --sbt --sbt-version 2.0.0 -o sbt-project cat sbt-project/project/build.properties Added by @Gedochao in #4327 Visual Studio 2026 support on Windows When building Scala Native (or packaging GraalVM native images) on Windows, Scala CLI locates the MSVC toolchain from your Visual Studio installation. It now also detects Visual Studio 2026, and bundles the matching Visual C++ redistributable (vcredist) in the generated MSI installers. Added by @Gedochao in #4331 Dropped Ammonite support The Ammonite REPL integration has been removed (it was deprecated back in v1.13.0). The --ammonite (--amm), --ammonite-version and --ammonite-arg options are gone from scala-cli repl; use the default Scala REPL (or the new JShell backend for Java projects) instead. scala-cli repl --ammonite Added by @Gedochao in #4283 Features

  • Add support for JShell in repl by @Gedochao in #4262
  • Add support for ```java snippets in Markdown inputs by @Gedochao in #4284
  • Add Wasm support: --wasm flag with Node.js, Deno & Bun runtimes by @lostflydev in #4176
  • Add support for VS 2026 in vcredist by @Gedochao in #4331
  • Add support for SBT 2.* export by @Gedochao in #4327
  • Add JUnit 5 / Jupiter support by @Gedochao in #4304 Fixes
  • Restore BSP base directory to the original workspace regardless of permissions/ownership by @Gedochao in #4273
  • Improve dependency update actionable diagnostic handling for slow/unresponsive custom repositories by @Gedochao in #4272
  • Improve error for when JVM-only dependencies are not found on other platforms by @Gedochao in #4281
  • Don't save duplicate .scalafmt.conf if unnecessary by @Gedochao in #4291 Deprecations and removals
  • Drop Ammonite support by @Gedochao in #4283 Build and internal changes
  • Compile the directives-parser example in Scala CLI v1.14.0 release notes by @Gedochao in #4278
  • Retire legacy KEYGRIP secret by @Gedochao in #4275
  • update-installation-script, update-centos and update-debian can't run in parallel by @Gedochao in #4277
  • Track threads & futures spawned in integration tests to make sure logs are in chronological order by @Gedochao in #4293
  • Mark Scala 2 nightly tests as flaky by @Gedochao in #4317
  • Disable test parallelism for unit tests on the CI by @Gedochao in #4316
  • Ensure scala-cli.sh logs to stderr by @alexarchambault in #4301
  • Add an extra test for VS detection on Windows + a small refactor by @Gedochao in #4328
  • Cut MacOS integration tests down to just sanity tests by @Gedochao in #4333
  • Add anti-regression tests for #4329 by @Gedochao in #4332
  • Treat Mill wrapper changes as build changes by @Gedochao in #4347 Updates
  • Update scala-cli.sh launcher for 1.14.0 by @github-actions[bot] in #4274
  • Bump the npm-dependencies group in /website with 3 updates by @dependabot[bot] in #4279
  • Bump webpack-dev-server from 5.2.2 to 5.2.4 in /website by @dependabot[bot] in #4280
  • Bump the npm-dependencies group in /website with 2 updates by @dependabot[bot] in #4287
  • Bump scalafmt to 3.11.1 (was 3.11.0) by @Gedochao in #4290
  • Bump Scala 3 Next RC to 3.8.4-RC3 by @Gedochao in #4288
  • [chore] Upgrade Scala Native to 0.5.12 by @WojciechMazur in #4286
  • Bump Bloop to 2.1.0 (was 2.0.19) by @Gedochao in #4295
  • Bump misc deps by @Gedochao in #4296
  • Bump the npm-dependencies group in /website with 5 updates by @dependabot[bot] in #4300
  • Bump Scala Next to 3.8.4 by @Gedochao in #4299
  • Bump announced Scala Next to 3.8.4 by @Gedochao in #4302
  • Bump @types/react from 19.2.16 to 19.2.17 in /website in the npm-dependencies group by @dependabot[bot] in #4303
  • Bump MacOS CI jobs' timeouts to deal with runner slowdown by @Gedochao in #4306
  • Bump shell-quote from 1.8.3 to 1.8.4 in /website by @dependabot[bot] in #4307
  • Bump Scala Next RC to 3.9.0-RC1 by @Gedochao in #4308
  • Bump Munit to 1.3.3 (was 1.3.0) by @Gedochao in #4305
  • Bump Scala 3 LTS to 3.3.8 by @Gedochao in #4314
  • Bump joi from 17.13.3 to 17.13.4 in /website by @dependabot[bot] in #4318
  • Bump the npm-dependencies group in /website with 2 updates by @dependabot[bot] in #4324
  • Bump @babel/core from 7.28.5 to 7.29.7 in /website by @dependabot[bot] in #4325
  • Bump launch-editor from 2.12.0 to 2.14.1 in /website by @dependabot[bot] in #4326
  • Bump mill-native-image and mill-native-image-upload to 0.2.6 (was 0.2.4) and add support for VS 2026 by @Gedochao in #4323
  • Update slf4j-nop to 2.0.18 by @scala-steward in #4313
  • Update scalafix-interfaces to 0.14.7 by @scala-steward in #4319
  • Update windows-jni-utils to 0.3.4 by @scala-steward in #4310
  • Update org.eclipse.jgit to 7.7.0.202606012155-r by @scala-steward in #4311
  • Bump @algolia/client-search from 5.54.1 to 5.55.0 in /website in the npm-dependencies group by @dependabot[bot] in #4341
  • Bump undici from 7.24.1 to 7.28.0 in /website by @dependabot[bot] in #4335
  • Bump webpack-dev-server from 5.2.4 to 5.2.5 in /website by @dependabot[bot] in #4343
  • Bump http-proxy-middleware from 2.0.9 to 2.0.10 in /website by @dependabot[bot] in #4342
  • Bump actions/checkout from 6 to 7 in the github-actions group by @dependabot[bot] in #4340
  • Bump Mill to 1.1.7 (was 1.1.6) by @Gedochao in #4345
  • Update jsoniter-scala-core, ... to 2.38.16 by @scala-steward in #4336
  • Bump Scala.js to 1.22.0 (was 1.21.0) by @Gedochao in #4344
  • Bump scala-js-cli to 1.22.0.1 (was 1.22.0) by @Gedochao in #4350
  • Bump coursier to 2.1.25-M26 (was 2.1.25-M25) by @Gedochao in #4346
  • Bump scala-cli-signing to 0.3.0 (was 0.2.13) by @Gedochao in #4352 New Contributors
  • @lostflydev made their first contribution in #4176 Full Changelog: v1.14.0...v1.15.0

Installer type: wix

ArchitectureScopeDownloadSHA256
x86Download5B5118FB285A497098569C1FE2EB03C2A8BDFA03DC6CEBC9DCB7E1B5A3AA0268

Details

Homepage
https://github.com/VirtusLab/scala-cli
License
Apache-2.0
Publisher
[email protected]
Support
https://github.com/VirtusLab/scala-cli/issues

Tags

functionaljavalanguageprogrammingscala

Older versions (46)

1.14.0
ArchitectureScopeDownloadSHA256
x86DownloadD35B346D52CB53BABBA945FAED7E6D5C7F7EFB4062C14C454161CF61ED5E10DE
1.13.0
ArchitectureScopeDownloadSHA256
x86Download3DB774780AD73E149EFDEB2823B29E232C4CAFABF1B4CA6C2E24E8EE36E81EB1
1.12.5
ArchitectureScopeDownloadSHA256
x86DownloadBD0CEDAED4D891BC3D78F7EE4C9FCC330E0D5A952A8D7909FA1990E2DBE38F39
1.12.4
ArchitectureScopeDownloadSHA256
x86Download1D8BF7552D27E7E6C2BF7CFF2C6AF642BFA2D2E7F3227471948B49301AF06BAB
1.12.3
ArchitectureScopeDownloadSHA256
x86Download491932C0E3D4F5EB84E9172541FDC6485962E36786B4E7A73684E6D4A84D55D4
1.12.2
ArchitectureScopeDownloadSHA256
x86DownloadA0F5396CF3BA3F4DC8A854E19CD4E55E92DC0D9F229A1DD70A1AFB83D5BD2847
1.12.1
ArchitectureScopeDownloadSHA256
x86Download61C867D10987A22D62A8478983F82FD1045F6BFE2838BB30ECAD0940325353E2
1.12.0
ArchitectureScopeDownloadSHA256
x86DownloadC3863D083E1A1D07469F08DBB938D6E21A633D2F60EB0462F7881F587AA9C5D2
1.11.0
ArchitectureScopeDownloadSHA256
x64DownloadE4DFB66FE58872D0DDE437A5C3827DA9640BC2ED386923043CE53A067DE4C16B
1.10.1
ArchitectureScopeDownloadSHA256
x86Download49D10F4858BA3961A424D364C103C0B5AECDBA74817B74BB48FE1598EB345EBE
1.9.1
ArchitectureScopeDownloadSHA256
x86DownloadD23C0686637D5AB032CBCDB566917D6D3434E5040816CC603591C5DF61330D21
1.9.0
ArchitectureScopeDownloadSHA256
x86Download4CCA75C943C90846A7030D7491B61930E4C39BF61098BF5DA80CDDE63CEBA84A
1.8.5
ArchitectureScopeDownloadSHA256
x86Download2A5D84EA7F446F504B626C32E0630B9C45E46638D1B0B8E3830C04A0305E5BC6
1.8.4
ArchitectureScopeDownloadSHA256
x86DownloadE1734F7A88F7CC2D771D52B445F75BF1E56B8732FF829318E5A859BE28C2E1A3
1.8.3
ArchitectureScopeDownloadSHA256
x86DownloadF2FA21E68FC80E194A2464D959A6CE1A48C31001ACAE2C338F681C18F5B869F0
1.8.2
ArchitectureScopeDownloadSHA256
x64Download2D7B3F8A1F838AAF93EDF75C7A235741DBBA24832B942D8B403ADD5374EB6824
1.8.1
ArchitectureScopeDownloadSHA256
x64Download0E2C69A420405EF8A9B907E95C98994C9D0CEB0852BF7FE18194B593BC81166F
1.8.0
ArchitectureScopeDownloadSHA256
x64DownloadB8505A2B1F751E6826A4B10356AB3817E070D52C01D6D3249CC2A1719DBBAAF4
1.7.1
ArchitectureScopeDownloadSHA256
x64DownloadA9A08F54726F9A6A3C4C500C8AB55B31015FCDE93F79107FF3F686B26BBB4EB1
1.7.0
ArchitectureScopeDownloadSHA256
x64Download0BC95DBCFF789786CD5C05EF4DDC672E9ABA8BBE7D15D54DE62DE84DB5694D57
1.6.2
ArchitectureScopeDownloadSHA256
x64Download57B23582C0EBEB85C619BFBD47A2AD15CBC41BAD4A000C20D44F75F1C918C68F
1.6.1
ArchitectureScopeDownloadSHA256
x64DownloadB1954B8D09ACF3074482CC534C24963C407AEEE08D6DD399A0B9398B548B568E
1.6.0
ArchitectureScopeDownloadSHA256
x64Download329D6D2A8EC12F4FF3329B10BF466ED604531EF958BBC5F507A5CF673D0ACBCA
1.5.4
ArchitectureScopeDownloadSHA256
x64Download0881CDFB39F06341D4D6519D10072CFDC5E39B01BD91B2A23CE8D8281D3FB4D1
1.5.3
ArchitectureScopeDownloadSHA256
x64DownloadB570E0B2E7B089BDA419C1D9D00B2604D8C9569B97ABDEE7F2B354DB6A6ACA02
1.5.1
ArchitectureScopeDownloadSHA256
x64DownloadFD0B0BC3A1FA14922FE54C1BE5CD93BF88D0D657A7454F6E58D56CA581BD66B2
1.5.0
ArchitectureScopeDownloadSHA256
x64Download7C7511F91207A532F77633FF62BAD101BE2F215CDCFFBE3FB05612F196334E00
1.4.2
ArchitectureScopeDownloadSHA256
x64Download0B1D4044804AE4B9E767E9869EC735F891E0F3E772B500FB0A8D356DAA7F09B4
1.4.1
ArchitectureScopeDownloadSHA256
x64DownloadBFF20328B7F0CFCBFFD3F6ADCA14285CA52F4F5BE0D516C17BB51D2791F647FD
1.4.0
ArchitectureScopeDownloadSHA256
x64Download6E344B743EB4BFAD1A245800E59C06108DF8EAC46C6958607C42B8B40406D326
1.3.2
ArchitectureScopeDownloadSHA256
x64Download2E7A0CF15F1E3897FE10AB132450C99BD6622E885466F04C3215C0F9AD028955
1.3.1
ArchitectureScopeDownloadSHA256
x64DownloadA9090910C32B944B6D360B28D405B77E4C7F75CA6A84BC19835BA28358842ABC
1.3.0
ArchitectureScopeDownloadSHA256
x64Download211A5099F43B28B10D14A6C8C5747437D9ED3C894ED28521EEC7865C8EF74B9A
1.2.2
ArchitectureScopeDownloadSHA256
x64Download3263E96FDCF1E855A38BAB8EB5680287DEDB7ACA4674C17A063DC38A269FFFB7
1.2.1
ArchitectureScopeDownloadSHA256
x64DownloadF6601DF2E5CE9AD82989D0432171951181508CEE35F498C4263073BB53D36E34
1.2.0
ArchitectureScopeDownloadSHA256
x64Download1BF94318E9CEE1E0B5E4A8EDCFFBC0FDE20A724F79C1B76496C25B8C1C2241F2
1.1.3
ArchitectureScopeDownloadSHA256
x64Download70FEE9E53319C99C276360862A9EEFC7D43463B32100DF6BFCFA1DCAC3A4ED9F
1.1.2
ArchitectureScopeDownloadSHA256
x64Download36742FB0CB42038A15C369655129F6A68C92F013435623250B340C69E835F3BE
1.1.1
ArchitectureScopeDownloadSHA256
x64DownloadFC4AE2B0BE914DDEF7F11033AE20701D0369F3457A0A6AA23D22E7C0EE665ACE
1.1.0
ArchitectureScopeDownloadSHA256
x64DownloadF72AB8D92150C522D1A01C239485E56CB4A275B1C4E5584E9CB40EEB253F98A9
1.0.6
ArchitectureScopeDownloadSHA256
x64Download901E2AF7CC362793545CE4149C9169CE486CE2BAA533BE5260DE996CAC0E38C5
1.0.5
ArchitectureScopeDownloadSHA256
x64Download082C7BA085F76ADD972988E25008DB831C8DA841AD8F689F81BF4F928C19BCA7
1.0.4
ArchitectureScopeDownloadSHA256
x64Download094F74A41A5B9A7F754AAA22A4EFDD4C8755B23C2C8633BAF5E36952369A7A93
1.0.3
ArchitectureScopeDownloadSHA256
x64Download30E4025BD03806C7A8EB5FECD8929431A85593AD6BAB36074D434E0D6DCCBEC3
1.0.2
ArchitectureScopeDownloadSHA256
x64DownloadD5C0CAD2B2CF9490CC3A95C5330DAC64C9A6D914D58AE6147498DF7D641DE1AF
1.0.1
ArchitectureScopeDownloadSHA256
x64Download5B9B61D96A893C2BC37C9171C22C5C17E91A1C0B71DF40DA38D817F8E138D210