@xeno-by xeno-by released this Feb 1, 2018 · 1186 commits to master since this release

Assets 2

This release represents a new milestone for SemanticDB 🎉

SemanticDB is a data model for semantic information about programs in Scala and
other languages. SemanticDB decouples production and consumption of semantic information,
establishing documented means for communication between tools.

There is a family of tools that are building upon SemanticDB:

  • Scalafix: refactoring and linting tool.
  • Metadoc: a static site generator to browse code online with IDE-like features.
  • Metals: language server for Scala.
  • Rsc: experimental Scala compiler focused on compilation speed.

Our experience with SemanticDB shows that it's not just useful for toy projects, but that it can scale to huge codebases that span millions of lines of code. Our experiments with indexing SemanticDB data into relational databases (#1174 and scalameta/metals#94) demonstrate that resulting databases have reasonable size and single/double-digit millisecond response times.

That's why in the last few weeks we dedicated significant effort to cleaning up the SemanticDB schema and writing the specification for SemanticDB. This cleanup of the schema incurs no source or binary breaking changes on the public facing Scalameta API. However, existing SemanticDB payloads will need to be regenerated so this change merits a major release. To learn more, please refer to the new specification at https://github.com/scalameta/scalameta/blob/master/semanticdb/semanticdb3/semanticdb3.md.