Skip to content

v1.2.2

Compare
Choose a tag to compare
@bloopoid bloopoid released this 16 Jan 09:25
8197a74

bloop v1.2.2 🏄

Upgrade guide 🔌

This section describes the upgrade steps. If you don't have bloop installed, please read
the installation instructions instead.

If you're on macOS, upgrade to the latest version with:

$ brew upgrade scalacenter/bloop/bloop
$ brew services restart bloop

If you're on Windows using scoop, upgrade to the latest version with:

$ scoop upgrade bloop
$ bloop ng-stop
$ // Start the server as you usually do (via systemd, manually, desktop services)

Otherwise, run:

$ curl -L https://github.com/scalacenter/bloop/releases/download/v1.2.2/install.py | python
$ bloop ng-stop
$ // Start the server as you usually do (via systemd, manually, desktop services)

Read the complete installation instructions in our Installation page.

Highlights 📚

v1.2.2 is a bugfix release.

Cache compiler plugins by default via a whitelist (#794)

Compiler plugins were found to have an important performance overhead in this scala/scala ticket.
As a result, a flag was added to cache the classloaders that loaded the compiler plugins on
every compilation run.

As that compilation flag is not well-known and most users don't even know they are using
macros/compiler plugins in their projects, it's been largely unused. This pull request tries to
change the current situation by enabling the flag for compiler plugins that have been checked to
be stateless. With this guarantee, we can enable the flag by default and provide out-of-the-box
the best compilation performance we know we can provide without any user intervention.

The compiler plugins added to the whitelist are: scala-js/scala-js, scala-native/scala-native,
wartremover/wartremover, scalameta/semanticdb, scalamacros/paradise, ghik/silencer,
sksamuel/scapegoat, scoverage/scalac-scoverage-plugin, lihaoyi/acyclic, non/kind-projector,
scalacenter/classpath-shrinker, scalacenter/scalac-profiling, softwaremill/scala-clippy,
oleg-py/better-monadic-for, tek/splain, scalaz/scalaz-deriving. They represent a big chunk of all
the compiler plugins used in the Scala community.

Bloop will not enable compiler plugin caching for Dotty and Scala 2.10, 2.11, 2.12.0, 2.12.1,
2.12.2, 2.12.3 and 2.12.4 versions. From 2.12.5 on, the flag is available in the compiler sources
and used.

Fore more information about the caching, check the pull request.

Improve diagnostics in the presence of -Yrangepos (#793)

Bloop v1.2.2 has now support for:

  1. Pretty printing range positions in cli diagnostics of projects using -Yrangepos.
  2. Report range positions in diagnostics for projects using -Yrangepos.
  3. Deduplicates compiler diagnostics based on pointer position and severity.

Further improve BSP diagnostic reporting (#792)

Bloop v1.2.2 has improved diagnostics via BSP in the presence of no-op incremental compilations
and has changed the way progress notifications and task start/finish notifications are sent.

From this version on, progress notifications will be sent every 5% increments to avoid
overflooding the client with messages and defaulting on less but more user-friendly progress
notifications, that require almost no handling by the build client.

Likewise, task start and task finish notifications are sent now for every incremental compiler
run instead of for the whole batch compilation of a project. This will help users notice when a
given change requires several incremental compiler runs. The visibility of this implementation
detail is important to increase the sensibility for incremental compiler inefficiencies that can
be located and then fixed upstream.

Add resources to classpath by default (#796)

Thanks to @kubukoz, we have found that there
are several macro libraries that require resource directories of all the transitive dependencies
of a project to be present in the compilation classpath. One of these macro libraries was
scalaz-deriving.

To support this use case, bloop v1.2.2 adds these resource directories to the compilation
classpath by default.

Use bloop server via launchd in macOS (#786)

The launcher executed by brew services was not using bloop server but blp-server directly.
This was an oversight that is now fixed in v1.2.2, together with some more changes to ensure that
bloop server picks up correctly jvm options specified in $BLOOP_INSTALLATION_DIR/.jvmopts. In
macOS systems, the bloop installation directory is the cellar installation directory for bloop,
usually symlinked from /usr/local/bin/bloop.

bloop server will not fail if a server is already running

Unlike previous releases, bloop server now exits successfully if a server is already running.
Given the increasing use of the launcher in build integrations, this change aims to avoid
confusing errors that users could get when managing the lifecycle of the server manually via
their custom service management software (brew services, systemd, desktop entries, etc).

Fix handling of unicode characters in nailgun environment variables (scalacenter/nailgun#9)

Thanks to @marek1840, the python client should not fail if a
unicode character is present in an environment variable of your terminal.

Contributors 👥

According to git shortlog -sn --no-merges v1.2.1..v1.2.2, 2 people contributed to this v1.2.2
release: Jorge Vicente Cantero, marek1840.