Releases: scalameta/metals
Metals v0.4.4 - Tin
Metals v0.4 - Tin
Release notes: https://scalameta.org/metals/blog/2019/01/24/tin.html
Blog post on low-memory symbol indexing with bloom filters: https://scalameta.org/metals/blog/2019/01/22/bloom-filters.html
Metals v0.3.3
- #413 Upgrade to bloop v1.1.2, this change was supposed to be included in the v0.3.2 release
Metals v0.3.2
Release announcement: https://scalameta.org/metals/blog/2018/12/14/iron.html
Metals v0.3 - Iron
We are excited to announce the release of Metals v0.3, codename "Iron" 🎉 Metals is a language server for Scala.
TL;DR
- simple installation
- accurate diagnostics
- goto definition
- text editors: Visual Studio Code, Atom, Vim and Sublime Text
- no completions
Check out the website and give Metals a try: https://scalameta.org/metals/
Simple installation
A useful IDE needs to understand your project's directory structure and library dependencies. Metals can now import sbt and Bloop builds with the following workflow
- Open a directory in your editor
- Click on a button to import the build
- Wait for the build import step to complete, this may take a while
- Enjoy IDE features 👌
- When your build changes, Metals asks you to import again.
Accurate diagnostics
Once your build has been imported, Metals triggers compilation on file save and publishes compiler errors as red squiggles in your editor. By construction, this approach avoids the situation where users see different errors in their editor and the build tool.
Goto definition
Metals supports goto definition for project sources and Scala+Java library dependencies. Navigation works even when the open buffer contains syntax errors.
Navigation in Metals is fast and consumes little memory. For a case study project, Metals indexes 800k lines of Scala code per second and the resulting search index requires 25Mb RAM per million lines of code.
Text editors
Thanks to the Language Server Protocol, Metals works multiple text editors. The following editors have been validated to work with Metals and the installation steps have been documented on the Metals website.
- Overview: https://scalameta.org/metals/docs/editors/overview.html
- Visual Studio Code: https://scalameta.org/metals/docs/editors/vscode.html
- Atom: https://scalameta.org/metals/docs/editors/atom.html
- Vim: https://scalameta.org/metals/docs/editors/vim.html
- Sublime Text: https://scalameta.org/metals/docs/editors/sublime.html
- guide to integrate new editors: https://scalameta.org/metals/docs/editors/new-editor.html
Contributors
Big thanks to all the contributors who contributed to this release. In particular, I want to thank the following people:
- Jorge Vicente Cantero (@jvican) for his great work in Bloop and helping out with unblocking a lot of Metals issues on the build side. Most the heavy lifting in "simple installation" is provided by Bloop.
- Gabriele Petronella (@gabro) for his great work on the VS Code plugin and heroic code reviews of multiple large PRs (of which one that was +12,645 −1,126!!).
- Alexey Alekhin (@laughedelic) for his great work on the Atom
ide-scala
package. - Eugene Burmako (@xeno-by) for close collaboration on Scalameta and SemanticDB that made the features in this release possible.
- Justin Kaeser (@jastice) from Jetbrains for collaboration on the Build Server Protocol specification and bsp4j library.
$ git shortlog -sn --no-merges v0.1.0..v0.3.1
Ólafur Páll Geirsson
Gabriele Petronella
Corey O'Connor
Pavel Logvinov
Cody Allen
Metals v0.1.0
This release is not intended to be used, it is only to represent a milestone for Metals. There is still nothing to try out for users and no extension on the VS Code marketplace.
Until now, Metals has been a side-project of several enthusiastic contributors including myself (@olafurpg), @gabro, @laughedelic, @xeno-by, @ShaneDelmore and @jvican. However, for the coming months I will be working full-time on code navigation as part of my job at the Scala Center 🎉
Based on conversations with many Scala developers over the past year, there is demand for a code navigation solution that Just Works™️ with any editor, in any build tool, and Scala 2.11+. Goto definition and find references should be reliable and require minimal indexing overhead and memory usage. Other IDE features such as diagnostics as-you-type or code completions are important but navigation alone is an important first milestone towards those features. If this sounds exciting to you, we invite you to join our efforts and contribute! Stop by our Gitter channel and say hi 👋