Skip to main content

Metals v1.3.3 - Thallium

· 5 min read

We're happy to announce the release of Metals v1.3.3, which brings a number of long awaited bugfixes and some new features.

Commits since last release41
Merged PRs37
Contributors3
Closed issues15
New features3

For full details: https://github.com/scalameta/metals/milestone/69?closed=1

Metals is a language server for Scala that works with VS Code, Vim, Emacs, Zed, Helix and Sublime Text. Metals is developed at the Scala Center and VirtusLab with the help from contributors from the community.

TL;DR

Check out https://scalameta.org/metals/, and give Metals a try!

Index implementations in JDK sources

Since Metals v1.3.0 it's possible to search for implementations of classes or classes' members inside the dependency sources. However, this wasn't enabled for JDK sources as it added a substantial amount of indexing time even in smaller projects.

In this version of Metals we added a central database that can be found under the .metals directory in user home, which contains shared indexes of JDK sources thus avoiding a need to index them more than once on any given machine.

jdk-sources

This great improvement was added by kasiaMarek

Value completions for union types

Union types are a new feature in Scala 3 that allows types to be combined when we need to specify that certain value can be of more than one type.

For example we can have:

val a: Int | String = "Hello!"
val b: Int | String = 123

In this version of Metals kasiaMarek added support for value completions where union types are unions of specific literal types. If used together with intersection types it will still work as expected.

example

The feature will work on latest LTS and Next Scala versions as it required some work upstream in the compiler itself.

Allow debugging for all build servers

For a long while it was possible to debug your code only when using Metals with Bloop or sbt server. This was caused by the fact that debugging was implemented in a separate library and would require additional data from the build tools.

In this version we were able to work around that and bring debugging capabilities to Metals in case a server doesn't provide debugging by itself. Unfortunately, in those cases hot code reload will not be available.

This should work both for main classes and tests.

Since this is quite a new feature please do let us know about any issues.

This is another great feature was brought by kasiaMarek.

Miscellaneous

  • bugfix: correctly resolve project's java in doctor and problem resolver kasiaMarek
  • bugfix: Don't use -X options in .jvmopts for tests tgodzik
  • bugfix: auto import for really long names kasiaMarek
  • bugfix: Queue references calls to prevent OOM kasiaMarek
  • bugfix: MAke convert to named args for extends kasiaMarek
  • bugfix: Show errors for Scala 3 in Bazel correctly tgodzik
  • bugfix: change project ref setting to support VSCode workspace folder reload kasiaMarek
  • bugfix: use already imported package aliases for auto import kasiaMarek
  • bugfix: clear diagnostics after close for single file kasiaMarek

Contributors

Big thanks to everybody who contributed to this release or reported an issue!

$ git shortlog -sn --no-merges v1.3.2..v1.3.3
16 Katarzyna Marek
16 Tomasz Godzik
7 Scalameta Bot

Merged PRs

v1.3.3 (2024-07-12)

Full Changelog

Merged pull requests: