Skip to content

Releases: VirtusLab/scala-cli

v1.5.4

20 Nov 15:58
ebb311c
Compare
Choose a tag to compare

Hotfix release

Although Scala CLI 1.5.4 includes a few updates and improvements, it is primarily a hotfix release for versions 1.5.2 and 1.5.3, which due to technical limitations weren't available on some of our distribution channels.

Extra context:

The main list of enhancements and fixes is listed in the release notes for 1.5.2.

Support for Scala Native 0.5.6

This Scala CLI version switches the default Scala Native version to 0.5.6.

scala-cli -e 'println("Hello from Scala Native 0.5.6!")' --native
# Compiling project (Scala 3.5.2, Scala Native 0.5.6)
# Compiled project (Scala 3.5.2, Scala Native 0.5.6)
# [info] Linking (multithreadingEnabled=true, disable if not used) (949 ms)
# [info] Discovered 887 classes and 5408 methods after classloading
# [info] Checking intermediate code (quick) (40 ms)
# [info] Multithreading was not explicitly enabled - initial class loading has not detected any usage of system threads. Multithreading support will be disabled to improve performance.
# [info] Linking (multithreadingEnabled=false) (285 ms)
# [info] Discovered 499 classes and 2500 methods after classloading
# [info] Checking intermediate code (quick) (7 ms)
# [info] Discovered 478 classes and 1914 methods after optimization
# [info] Optimizing (debug mode) (429 ms)
# [info] Produced 9 LLVM IR files
# [info] Generating intermediate code (296 ms)
# [info] Compiling to native code (1464 ms)
# [info] Linking with [pthread, dl]
# [info] Linking native code (immix gc, none lto) (208 ms)
# [info] Postprocessing (0 ms)
# [info] Total (3728 ms)
# Hello from Scala Native 0.5.6!

Added by @Gedochao in #3295

Internal changes

  • Pin Fedora docker image at fedora:40 by @Gedochao in #3283
  • Don't fail the update-packages and windows-packages jobs on individual distributions' steps by @Gedochao in #3288

Documentation changes

  • Fix broken example in //> using dep reference doc by @Gedochao in #3281
  • Mention distribution limitations in the Scala CLI 1.5.3 release notes by @Gedochao in #3286
  • Back port of documentation changes to main by @github-actions in #3287

Updates

Full Changelog: v1.5.3...v1.5.4

v1.5.3

14 Nov 08:49
1d60641
Compare
Choose a tag to compare

This is a hotfix release, which makes all the fixes and enhancements of Scala CLI 1.5.2 available through most standard distribution channels (rather than just Maven Central).

For the main release notes, please refer to the v1.5.2 ones.

Distribution limitations

Due to technical difficulties within our release pipeline, Scala CLI 1.5.3 is not available via the following channels:

  • yum (on RedHat/Cent OS/Fedora)
  • SDKMAN!

We will follow up with a 1.5.4 hotfix release to address this issue.

Hot-fixes

  • Tag failing native packager tests as flaky by @Gedochao in #3270
  • Make publishing depend on all integration tests & docs tests by @Gedochao in #3272

Full Changelog: v1.5.2...v1.5.3

v1.5.2

12 Nov 06:35
8c13bf6
Compare
Choose a tag to compare
v1.5.2 Pre-release
Pre-release

Scala CLI 1.5.2 will only be available on the JVM

Due to technical difficulties with our release pipeline, Scala CLI 1.5.2 was only released as a JVM launcher on Maven Central. While it can be used as such, we will follow it up with a hotfix 1.5.3 release, which should be available through all standard distribution channels.

scala-cli --cli-version 1.5.2 version
# Scala CLI version: 1.5.2
# Scala version (default): 3.5.2

--source is now deprecated and scheduled for removal in Scala CLI v1.6.x

Due to how easy it is to confuse --source (the command line option for producing source JARs with the package sub-command) and -source (the Scala compiler option, which can also be passed as --source in recent Scala 3 versions), using the former is now deprecated, and will likely be removed in Scala CLI v1.6.x.

scala-cli --power package --source .                       
# [warn] The --source option alias has been deprecated and may be removed in a future version.
# (...)

Do note that the deprecation (and future removal) only affects the option alias.
The feature of packaging source JARs remains unchanged.
It is now recommended to switch to using the --src alias instead.

scala-cli --power package --src .  

Added by @Gedochao in #3257.

Support for Scala 3.5.2

This Scala CLI version switches the default Scala version to 3.5.2.

scala-cli version
# Scala CLI version: 1.5.2
# Scala version (default): 3.5.2

Added by @Gedochao in #3230

Initial support for emitting Wasm with a command line option and a directive

It is now possible to emit Wasm via Scala.js with the //> using jsEmitWasm directive:

//> using platform js
//> using jsEmitWasm
//> using jsModuleKind es
//> using jsModuleSplitStyleStr fewestmodules
println("Hello")

Or with the --js-emit-wasm command line option:

scala-cli --power package wasm.sc --js --js-emit-wasm
# The `--js-emit-wasm` option is experimental
# Please bear in mind that non-ideal user experience should be expected.
# If you encounter any bugs or have feedback to share, make sure to reach out to the maintenance team at https://github.com/VirtusLab/scala-cli
# Compiling project (Scala 3.5.2, Scala.js 1.17.0)
# Compiled project (Scala 3.5.2, Scala.js 1.17.0)
# Wrote ~/wasm/wasm.js/main.js, run it with
#   node ./wasm.js/main.js
tree wasm.js
# wasm.js
# ├── __loader.js
# ├── main.js
# └── main.wasm
# 
# 1 directory, 3 files

For more information about Wasm (WebAssembly) support via Scala.js, refer here.

Added by @Quafadas in #3255.

Features

  • Add a --js-emit-wasm option and a corresponding using directive by @Quafadas in #3255

Deprecations

  • Deprecate the --source command line option for the package sub-command by @Gedochao in #3257

Fixes

  • Fix --watch to work correctly with changing using directives & sources requiring code generation (scripts, markdown, etc) by @Gedochao in #3218
  • Ensure resource directories passed via a using directive aren't ignored in --watch mode by @Gedochao in #3221
  • Ensure consecutive -Wconf:* flags are not ignored by @Gedochao in #3245

Documentation changes

  • Mention the Fix command in the Using directives guide by @dabrowski-adam in #3239
  • Back port of documentation changes to main by @github-actions in #3242

Updates

New Contributors

Full Changelog: v1.5.1...v1.5.2

Latest launchers

13 Aug 11:38
23f6949
Compare
Choose a tag to compare
Merge pull request #3257 from Gedochao/maintenance/deprecate-source

Deprecate the `--source` command line option for the `package` sub-command

v1.5.1

01 Oct 11:17
2d98338
Compare
Choose a tag to compare

Support for Scala 3.5.1, 3.3.4, 2.13.15 and 2.12.20

This Scala CLI version switches the default Scala version to 3.5.1.

scala-cli version
# Scala CLI version: 1.5.1
# Scala version (default): 3.5.1

It has also been tested with Scala 3.3.4, 2.13.15 and 2.12.20.
The Scala CLI internals are now built with Scala 3.3.4.

Support for Scala.js 1.17.0

This version adds Scala CLI support for Scala.js 1.17.0.

Features

  • Apply increased verbosity when compiling via BSP by @Gedochao in #3202

Fixes

  • improvement: Use distinct on ScalacOpt by @tgodzik in #3139
  • bugfix: Check if last segment of path exists by @tgodzik in #3131
  • bugfix: Fix duplicate options detection by @tgodzik in #3151
  • bugfix: Also deduplicate if options split by space by @tgodzik in #3154
  • Fix setup-ide for --cli-version by @Gedochao in #3161
  • Ensure main classes from inputs take precedence before those found in JARs added to the class path by @Gedochao in #3165
  • Ensure that passing Java props into Scala CLI as launcher args would also pass it into BSP configuration by @Gedochao in #3169
  • NIT fixes for the export sub-command by @Gedochao in #3197
  • Ensure --version passed to the default command works with --offline by @Gedochao in #3207

Documentation changes

  • Docs: Fix suppress option for directives-in-multiple-files warning by @mims-github in #3133
  • Doc: Tips on how to list available JVMs using coursier by @jatcwang in #3129
  • Back port of documentation changes to main by @github-actions in #3160
  • Use Scala 3 in the Scala Native gif by @Gedochao in #3195

Build and internal changes

  • Add tests for setup-ide with --cli-version by @Gedochao in #3163
  • Change how help is referenced to avoid initialization oddness & update case-app to 2.1.0-M29 by @coreyoconnor in #3152
  • Adjust tests for Scala 3.3.4 by @Gedochao in #3164
  • NIT Refactor existing --watch tests by @Gedochao in #3175
  • Generate an empty JUnit report when no tests were run, rather than fail by @Gedochao in #3179
  • NIT Extract REPL tests relying on Ammonite into dedicated traits by @Gedochao in #3209

Updates

New Contributors

Full Changelog: v1.5.0...v1.5.1

v1.5.0

22 Aug 21:54
e99f770
Compare
Choose a tag to compare

Support for Scala 3.5.0

This Scala CLI version switches the default Scala version to 3.5.0.

scala-cli version
# Scala CLI version: 1.5.0
# Scala version (default): 3.5.0

Added by @Gedochao in #3093.

Support for Scala Native 0.5.5

This Scala CLI version switches the default Scala Native version to 0.5.5.

scala-cli -e 'println("Hello from Scala Native 0.5.5!")' --native
# Compiling project (Scala 3.5.0, Scala Native 0.5.5)
# Compiled project (Scala 3.5.0, Scala Native 0.5.5)
# [info] Linking (multithreadingEnabled=true, disable if not used) (894 ms)
# [info] Discovered 888 classes and 5407 methods after classloading
# [info] Checking intermediate code (quick) (31 ms)
# [info] Multithreading was not explicitly enabled - initial class loading has not detected any usage of system threads. Multithreading support will be disabled to improve performance.
# [info] Linking (multithreadingEnabled=false) (299 ms)
# [info] Discovered 499 classes and 2497 methods after classloading
# [info] Checking intermediate code (quick) (5 ms)
# [info] Discovered 478 classes and 1912 methods after optimization
# [info] Optimizing (debug mode) (403 ms)
# [info] Produced 9 LLVM IR files
# [info] Generating intermediate code (368 ms)
# [info] Compiling to native code (1565 ms)
# [info] Linking with [pthread, dl]
# [info] Linking native code (immix gc, none lto) (83 ms)
# [info] Postprocessing (0 ms)
# [info] Total (3625 ms)
# Hello from Scala Native 0.5.5!

Added by @Gedochao in #3117

(⚡️ experimental) Support for exporting to a Maven project

It is now possible to export a Scala CLI project to Maven.

scala-cli export --script-snippet 'println("No need to create the pom.xml yourself!")' --mvn --power -o mvn-demo
# Some utilized features are marked as experimental:
#  - `export` sub-command
#  - `--mvn` option
# Please bear in mind that non-ideal user experience should be expected.
# If you encounter any bugs or have feedback to share, make sure to reach out to the maintenance team at https://github.com/VirtusLab/scala-cli
# Exporting to a maven project...
# Exported to: ~/scala-cli-tests/mvn-demo
cd mvn-demo
mvn scala:run -DmainClass=snippet_sc
# (...)
# No need to create the pom.xml yourself!
# [INFO] ------------------------------------------------------------------------
# [INFO] BUILD SUCCESS
# [INFO] ------------------------------------------------------------------------
# [INFO] Total time:  2.589 s
# [INFO] Finished at: 2024-08-22T12:08:36+02:00
# [INFO] ------------------------------------------------------------------------

Added by @yadavan88 in #3003.

Support for launching apps from dependencies without other inputs

It is now possible to launch an app by just specifying its dependency, without the need to provide any source files.
In such a case the build server will not be started, as there's no compilation to be done.
There's also no need to specify the main class, as it's now being detected automatically in dependencies as well.
Do note that explicitly calling the run sub-command is necessary here, as otherwise Scala CLI will default to the REPL.

scala-cli run --dep io.get-coursier:coursier-cli_2.13:2.1.10 -- version
# 2.1.10

This can be used similarly to Coursier's cs launch.

Added by @kasiaMarek in #3079.

(⚡️ experimental) JMH available in various commands and via using directives

Some improvements have been done to the experimental support for JMH (Java Microbenchmark Harness).

The --jmh and --jmh-version options can now be passed to a number of commands:

  • run, as it was before (note that when --jmh is passed to run, the project's main class will default to running the benchmarks rather than the project's default main method; this behaviour is likely to be changed in future versions).
  • compile, so that a Scala CLI project with benchmarking can be compiled separately from being run;
  • package, although the resulting artifacts will run the project as normal for now, rather than benchmarks;
  • setup-ide, so that benchmarking projects can be imported to your IDE of choice;
  • test and export will now also no longer fail with --jmh, although no specific implementations for benchmarking are in place there yet.

It is now also possible to control JMH with using directives:

  • //> using jmh allows to enable JMH for the project, being the equivalent of the --jmh option.
  • //> using jmhVersion <version> allows to set the JMH version to use, being the equivalent of the --jmh-version option.
//> using jmh
//> using jmhVersion 1.37
package bench

import org.openjdk.jmh.annotations.*
import java.util.concurrent.TimeUnit

@BenchmarkMode(Array(Mode.AverageTime))
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 10, time = 100, timeUnit = TimeUnit.MILLISECONDS)
@Fork(0)
class Benchmarks {
  @Benchmark
  def foo(): Unit = {
    (1L to 1000L).sum
  }
}

Expect more improvements in this area in the future.
Also, do play with it and give us feedback about the current implementation!

Added by @Gedochao in #3091 and #3118.

Support for auto-completions in fish

We now have command line auto-completions for the fish shell.

Added by @KristianLentino99 in #3104.

--js-es-module-import-map no longer requires --power mode

A bit of a minor thing, but you can now use the --js-es-module-import-map option without enabling --power mode.

Added by @Gedochao in #3086.

Features

Fixes

  • bugfix: Exclude sourcecode dependency by @tgodzik in #3094
  • bugfix: Exclude both sourcecode and collection-compat correctly by @tgodzik in #3105
  • Make package command handle directories in extra classpath by @joan38 in #3096
  • Add extra try-catch clause + extra logging in LocalRepo by @Gedochao in #3114
  • Fix/changing options from sources should not require reload by @MaciejG604 in #3112
  • fix: remove the --release flag by @kasiaMarek in #3119
  • Remove adding test options to the project/build target name hash by @MaciejG604 in #3107

Internal changes

Documentation changes

  • Add more env vars & generate reference docs for them by @Gedochao in #3075

Updates

Read more

v1.4.3

06 Aug 11:58
f840d16
Compare
Choose a tag to compare

This release is a hotfix for 1.4.2, which due to technical difficulties was not released to Maven Central (and, as an extension, wasn't available as a JAR).

All changes introduced by v1.4.2 are included in this release.

Internal changes

  • Ensure the publish step to be necessary for updating the native packages upon release by @Gedochao in #3067

Updates

Full Changelog: v1.4.2...v1.4.3

v1.4.2

02 Aug 10:01
7d808cc
Compare
Choose a tag to compare
v1.4.2 Pre-release
Pre-release

Environment variable help with --env-help

You can now list environment variables used internally with the --envs-help flag.
This does include some environment variable used by Scala CLI's dependencies (like Coursier, Bloop, etc.), but should not be treated as an exhaustive list.

scala-cli --env-help --power
# The following is the list of environment variables used and recognized by Scala CLI.
# It should by no means be treated as an exhaustive list.
# Some tools and libraries Scala CLI integrates with may have their own, which may or may not be listed here.
# 
# Scala CLI
#   SCALA_CLI_CONFIG              Scala CLI configuration file path
#   SCALA_CLI_HOME                Scala CLI home directory
#   SCALA_CLI_INTERACTIVE         Interactive mode toggle
#   SCALA_CLI_INTERACTIVE_INPUTS  Interactive mode inputs
#   SCALA_CLI_POWER               Power mode toggle
#   SCALA_CLI_PRINT_STACK_TRACES  Print stack traces toggle
#   SCALA_CLI_SODIUM_JNI_ALLOW    Allow to load libsodiumjni
#   SCALA_CLI_VENDORED_ZIS        Toggle io.github.scala_cli.zip.ZipInputStream
# 
# Java
#   JAVA_HOME                     Java installation directory
#   JAVA_OPTS                     Java options
#   JDK_JAVA_OPTIONS              JDK Java options
# 
# Coursier
#   COURSIER_CACHE                Coursier cache location
#   COURSIER_MODE                 Coursier mode (can be set to 'offline')
# 
# Spark
#   SPARK_HOME                    (power) Spark installation directory
# 
# Miscellaneous
#   PATH                          The app path variable
#   DYLD_LIBRARY_PATH             Runtime library paths on Mac OS X
#   LD_LIBRARY_PATH               Runtime library paths on Linux
#   PATHEXT                       Executable file extensions on Windows
#   SHELL                         The currently used shell
#   VCVARSALL                     Visual C++ Redistributable Runtimes
#   ZDOTDIR                       Zsh configuration directory
# 
# Internal
#   CI                            (power) Marker for running on the CI

Added by @Gedochao in #3055.

Features

  • Add environment variable help under --envs-help & refactor environment variable usage by @Gedochao in #3055

Fixes

  • Fix default scaladoc config, so that id doesn't break all scaladoc links by @KacperFKorban in #3041
  • Fix the REPL crashing when a dependency's classpath is called by a macro by @Gedochao in #3043
  • Fix Mill export for projects with just the test scope by @Gedochao in #3046
  • Ensure --cli-default-scala-version is respected by --scalac-help by @Gedochao in #3048
  • Fix generate-linux-arm64-native-launcher by @Gedochao in #3053

Internal changes

  • Prevent some flaky tests from failing on the CI by @Gedochao in #3049
  • Switch to GitHub M1/aarch64 runners on the CI by @Gedochao in #3050
  • Fix Scala 2 nightly test failures by tagging them as flaky or skipping by @Gedochao in #3064

Updates

Full Changelog: v1.4.1...v1.4.2

v1.4.1

18 Jul 10:11
dbb3285
Compare
Choose a tag to compare

Pass compiler args as an @argument file

You can shorten or simplify a Scala CLI command by using an @argument file to specify a text file that contains compiler arguments.

-d
outputDirectory

The feature may help to work around the Windows command line character limit, among other things, making sure your scripts run on any operating system of your choice.

scala-cli run -e 'println("Hey, I am using an @args file!")' @args.txt

This works similarly to the command-line argument files feature of Java 9 and fixes backwards compatibility with the old scala runner (pre-Scala-3.5.0).

Added by @kasiaMarek in #3012

Explicitly enable or disable multithreading in Scala Native

It is now possible to explicitly enable or disable multithreading in Scala Native builds.
You can do it by setting the //> using nativeMultithreading directive:

//> using platform native
//> using nativeMultithreading
import scala.concurrent._
import scala.concurrent.duration._
import ExecutionContext.Implicits.global
val promise = Promise[Int]()
val thread = new Thread(new Runnable {
    def run(): Unit = {
      Thread.sleep(100)
      promise.success(42)
    }
  })
thread.start()
val result = Await.result(promise.future, 2.seconds)
println(result)

Or the --native-multithreading command line option:

scala-cli run native_multithreading.sc --native --native-multithreading

Added by @Gedochao in #3011.

Features

  • Add a command line option & directive for enabling/disabling Scala Native multithreading by @Gedochao in #3011
  • feat: allow to pass scalac options using files by @kasiaMarek in #3012

Fixes

Documentation changes

Updates

New Contributors

Full Changelog: v1.4.0...v1.4.1

v1.4.0

27 Jun 14:01
b9412e2
Compare
Choose a tag to compare

Running the REPL with the test scope included

It is now possible to start the Scala REPL with access to the test scope.
To do so, it's enough to pass the --test flag with the repl sub-command.

package example
object ReplTestScopeExample {
  def message: String = "calling test scope from repl"
}
scala-cli repl ReplTestScopeExample.test.scala --test
# Compiling project (test, Scala 3.4.2, JVM (17))
# Compiled project (test, Scala 3.4.2, JVM (17))
# Welcome to Scala 3.4.2 (17, Java OpenJDK 64-Bit Server VM).
# Type in expressions for evaluation. Or try :help.
#                                                                                                                                          
# scala> example.ReplTestScopeExample.message
# val res0: String = calling test scope from repl
#                                                                                                                                          
# scala> 

Added by @Gedochao in #2971.

The using jvm directives are now always respected

Formerly, if the build server (Bloop) was running on an older JVM than the one specified in a using jvm directive, the directive wouldn't be respected. We now restart the build server based on both the directive and the respective command line option (--jvm).

//> using jvm 22
//> using javacOpt --enable-preview -Xlint:preview
//> using javaOpt --enable-preview
//> using mainClass Simple

void main() {
    System.out.println("Hello from Java 22");
}

Added by @kasiaMarek in #2972

Support for Scala Native 0.5.4

This Scala CLI version adds support for Scala Native 0.5.4.
Native platform builds will now use 0.5.4 as the default version.

scala-cli -e 'println("Hello, Scala Native!")' --native
# Compiling project (Scala 3.4.2, Scala Native 0.5.4)
# Compiled project (Scala 3.4.2, Scala Native 0.5.4)
# [info] Linking (multithreadingEnabled=true, disable if not used) (902 ms)
# [info] Discovered 882 classes and 5384 methods after classloading
# [info] Checking intermediate code (quick) (37 ms)
# [info] Multithreading was not explicitly enabled - initial class loading has not detected any usage of system threads. Multithreading support will be disabled to improve performance.
# [info] Linking (multithreadingEnabled=false) (292 ms)
# [info] Discovered 499 classes and 2497 methods after classloading
# [info] Checking intermediate code (quick) (10 ms)
# [info] Discovered 478 classes and 1912 methods after optimization
# [info] Optimizing (debug mode) (445 ms)
# [info] Produced 9 LLVM IR files
# [info] Generating intermediate code (353 ms)
# [info] Compiling to native code (1619 ms)
# [info] Linking with [pthread, dl]
# [info] Linking native code (immix gc, none lto) (137 ms)
# [info] Postprocessing (0 ms)
# [info] Total (3753 ms)
# Hello, Scala Native!

Added by @scala-steward in #2982.

Scala Toolkit 0.4.0 & 0.3.0 defaults

This Scala CLI version treats Scala Toolkit 0.4.0 as the default version under most circumstances.

//> using toolkit default
@main def main() = println(os.pwd)

This unlocks the Scala Toolkit to be used with Scala Native 0.5.x.

scala-cli -e 'println(os.pwd)' --toolkit default --native   
# Compiling project (Scala 3.4.2, Scala Native 0.5.4)
# Compiled project (Scala 3.4.2, Scala Native 0.5.4)
# [info] Linking (multithreadingEnabled=true, disable if not used) (1051 ms)
# [info] Discovered 1047 classes and 6745 methods after classloading
# [info] Checking intermediate code (quick) (46 ms)
# [info] Multithreading was not explicitly enabled - initial class loading has not detected any usage of system threads. Multithreading support will be disabled to improve performance.
# [info] Linking (multithreadingEnabled=false) (543 ms)
# [info] Discovered 880 classes and 5417 methods after classloading
# [info] Checking intermediate code (quick) (15 ms)
# [info] Discovered 857 classes and 4238 methods after optimization
# [info] Optimizing (debug mode) (651 ms)
# [info] Produced 9 LLVM IR files
# [info] Generating intermediate code (663 ms)
# [info] Compiling to native code (1621 ms)
# [info] Linking with [pthread, dl]
# [info] Linking native code (immix gc, none lto) (81 ms)
# [info] Postprocessing (0 ms)
# [info] Total (4542 ms)

Scala Native 0.4.x has been dropped in Scala Toolkit 0.4.0 and above, so the last version supporting it, 0.3.0 (and lower), will now make the build default to Scala Native 0.4.17.

scala-cli -e 'println(os.pwd)' --toolkit 0.3.0 --native                          
# [warn] Scala Toolkit Version(0.3.0) does not support Scala Native 0.5.3, 0.4.17 should be used instead.
# [warn] Scala Native default version 0.5.3 is not supported in this build. Using 0.4.17 instead.
# Compiling project (Scala 3.4.2, Scala Native 0.4.17)
# Compiled project (Scala 3.4.2, Scala Native 0.4.17)
# [info] Linking (900 ms)
# [info] Checking intermediate code (quick) (63 ms)
# [info] Discovered 888 classes and 5298 methods
# [info] Optimizing (debug mode) (836 ms)
# [info] Generating intermediate code (620 ms)
# [info] Produced 10 files
# [info] Compiling to native code (1860 ms)
# [info] Linking with [pthread, dl]
# [info] Total (4406 ms)
# ~/scala-cli-tests

The troublesome case is when Scala Native 0.4.x is passed explicitly, while the Scala Toolkit is set to the default.
Scala CLI does not currently support downgrading the Scala Toolkit in this case, and fails the build.

scala-cli -e 'println(os.pwd)' --toolkit default --native --native-version 0.4.17
# Downloading 4 dependencies and 2 internal dependencies
# [error]  Error downloading org.scala-lang:toolkit-test_native0.4_3:0.4.0
# [error]   not found: ~/.ivy2/local/org.scala-lang/toolkit-test_native0.4_3/0.4.0/ivys/ivy.xml
# [error]   not found: https://repo1.maven.org/maven2/org/scala-lang/toolkit-test_native0.4_3/0.4.0/toolkit-test_native0.4_3-0.4.0.pom
# [error]   not found: ~/Library/Caches/ScalaCli/local-repo/1.4.0/org.scala-lang/toolkit-test_native0.4_3/0.4.0/ivys/ivy.xml
# [error]   No fallback URL found
# [error] COMMAND_LINE
# [error]  Error downloading org.scala-lang:toolkit_native0.4_3:0.4.0
# [error]   not found: ~/.ivy2/local/org.scala-lang/toolkit_native0.4_3/0.4.0/ivys/ivy.xml
# [error]   not found: https://repo1.maven.org/maven2/org/scala-lang/toolkit_native0.4_3/0.4.0/toolkit_native0.4_3-0.4.0.pom
# [error]   not found: ~/Library/Caches/ScalaCli/local-repo/1.4.0/org.scala-lang/toolkit_native0.4_3/0.4.0/ivys/ivy.xml
# [error]   No fallback URL found
# [error] COMMAND_LINE

Added by @Gedochao in #2955

Features

  • Include test scope in the REPL when the --test flag is passed by @Gedochao in #2971

Fixes

  • Fix BSP IllegalArgumentException when loading project in Metals by @joan38 in #2950
  • Don't check for newer CLI versions when the --cli-version launcher param is passed (v1.4.0 and onwards, only) by @Gedochao in #2957
  • fix: start bloop with jvm version from using directives for JVMs > 17 by @kasiaMarek in #2972

Documentation changes

Internal changes

Updates

New Contributors

Full Changelog: v1.3.2...v1.4.0