Skip to content

v1.4.0

Compare
Choose a tag to compare
@bloopoid bloopoid released this 11 May 13:43
bcff507

bloop v1.4.0

This release only works for Java 11 users (see this ticket). This bug is fixed in 1.4.1, so upgrade!

Bloop v1.4.0 is the culmination of a lot of work during the past months. While
some users have been benefiting from these features and bug fixes for a while
because Metals has been updating its Bloop version often, these release notes
offer an exhaustive description of all of the changes since v1.3.5.

It is strongly recommended to upgrade to bloop v1.4.0!

Features

New installation, bloopgun and dropping Python support

Our previous CLI was written in Python, based on the Nailgun python CLI. This
CLI required the user to install Python in the machine and had some issues such
as reliability problems and lack of a way of starting the bloop server
automatically in the background.

bloopgun is a new Scala-based CLI that replaces the previous Python CLI.
Bloopgun is built on snailgun and compiles to GraalVM in supported
architectures (Windows support is not there yet).

This release also changes the installation methods that Bloop provides to
clients. From now on, the recommended way to install bloop is through coursier install, only available in the latest coursier versions. It's recommended you
upgrade to the latest.

Additional installation resources such as Systemd files or brew services are
no longer installed by Bloop. More details about this can be found in this
ticket
.

Shaded launcher and bloopgun

To avoid problems downstream, bloopgun and the launchers responsible for
starting bloop in the background are shaded to avoid causing dependency issues.

Fixed numerous problems with compile invalidations

This release fixes some important compile invalidations issue that have popped
up over the course of this past months. These issues could cause
ClassNotFoundExceptions or failed compilations in some corner cases. v1.4.0
fixes all known issues in this area, providing a better experience to those
users that have run into these problems.

Support for Hydra, a parallel Scala compiler

Mirco Dotta has added support for Hydra in Bloop v1.4.0. Hydra is a parallel
Scala compiler, it's created and maintained by Triplequote. Triplequote
customers should now be able to use Bloop in their development workflows,
bringing the best of parallel Scala compilation and incremental, fast compilers
by Bloop.

Experimental support in sbt-bloop to offload compilation to Bloop.

Bloop and sbt-bloop support offloading compilation from build tools. This
support added sbt-bloop with the capability of offloading compilation to Bloop,
so that compilations triggered from sbt or build clients such as IntelliJ or
Metals would be shared.

This feature is still experimental because there are some bugs that need to be
addressed. Only people willing to report bugs and help iron out this feature
are welcome to try it out now.

Improved tracing support via workspace settings

Bloop v1.4.0 has support for configuring tracing settings at a workspace
level thanks to Win Wang. You can add these new settings under
.bloop/bloop.settings.json. The default tracing settings are:

{
  "traceSettings": {
    "serverUrl": "",
    "debugTracing": false,
    "verbose": false,
    "localServiceName": "",
    "traceStartAnnotation": "",
    "traceEndAnnotation": ""
  }
}

Debugging support via DAP

Bloop supports the Debug Adapter protocol and exposes it to clients such
as Metals, so that build clients can debug tests or main applications in your
build. Implementation of this feature was a joint effort of many people, lead
by Marek Żarnowski.

Source glob support and changes to the bloop configuration format

Bloop now supports source globs in the bloop configuration file so that build
tools such as Pants or Bazel can represent their targets in terms of Bloop
configuration files. Check the following file for an up-to-date JSON Schema of
the bloop configuration file
.

Runtime performance improvements

Bloop has been tested in large 1M+ codebases over the past months and we have
landed several changes to improve the runtime performance of Bloop in several
key parts of the developer experience. Bloop v.1.4.0 is faster and more
reliable after these changes.

Support for concurrent CLI sessions

Despite the fact that Bloop has had support for concurrent BSP and CLI sessions
for a while, Bloop didn't support concurrent CLI sessions until recently (e.g.
bloop run foo-web in one terminal, and bloop test foo-web -o mytest.Bar in
another one).

Support for Scala.js 1.0

Bloop v1.4.0 supports the latest Scala.js 1.0 release thanks to Tim
Nieradzik
. This release also includes some linking improvements.

Export improvements in build tools such as Gradle and sbt

We have landed several changes to improve build tool export in both Gradle
and sbt. To just name a few highlights, gradle-bloop supports now Gradle
6.0+ and sbt supports running a project from its project working directory
instead of the sbt build working directory.

Improved IntelliJ integration

Latest IntelliJ 2020.1.1 has significantly improved BSP and Bloop support, so
using Bloop with IntelliJ becomes easier and more reliable than before.

Support for global Bloop options

Users can now configure the options that the JVM options the bloop server
should use when starting up in $HOME/.bloop/bloop.json. See the online
documentation here.

Merged pull requests

Here's a list of all of the PRs merged:

  • Support globs in file watching #1269
  • Don't consider CLI classes directory an orphan directory #1266
  • Upgrade Zinc version #1265
  • Add workpace settings for Zipkin traces #1262
  • Force source generation for cached 'sbt bloopGenerate' #1261
  • Support links in path to javac #1258
  • Register Scala generated class files before compiling Java #1254
  • Make sure we use all the settings that already exist in the project #1253
  • Make bloop about and bloop help always succeed #1252
  • Use runtime classpaths in Gradle #1250
  • Swap classpath and resources arguments #1248
  • Use coursier install bloop in installation methods #1246
  • Fixed providing jvm options in DAP #1245
  • Support runtime classpath for JVM projects #1244
  • Change zipkin URL in docs #1241
  • Implement jvmRunEnvironment endpoint #1239
  • Update various typos and metals docs #1238
  • Increase default stack size to 4m #1236
  • Fix a couple typos in the sbt section #1235
  • Add Scala.js 1.0 support #1234
  • Make jvmTestEnvironment's classpath URI-formatted #1232
  • Add additional system properties for customizing zipkin traces #1231
  • Report test projects without test frameworks #1230
  • Fix build export installation step #1227
  • Don't parse --help from Bloopgun #1225
  • Remove unnecessary TraceContext creation for root span #1223
  • Add dotty support to gradle plugin #1222
  • Update documentation for IntelliJ BSP integration #1221
  • Use correct working directory in BSP buildTarget/jvmTestEnvironment #1216
  • Report error when refreshProjectsCommand fails #1215
  • Add buildTargets/jvmEnvironment endpoint #1214
  • Bump Hydra version for tests to 2.2.2 #1213
  • Add tags to Bloop configuration #1212
  • Hide fine-grained Zipkin traces behind system property #1211
  • Improve docs and landing page #1209
  • Add sbt scripted test for hydra sbt integration #1208
  • Don't create the hydra.license file for PRs external to the repo #1207
  • Fix bugs with non-stable CLI classes directories #1206
  • Respect global configuration in $HOME/.bloop/bloop.json #1203
  • Don't match on hidden source files #1202
  • Fixes resource loading issue #1199
  • Add missing scala-xml dependency in shaded launcher #1198
  • Fallback to java home if it was not available on PATH #1196
  • Allow regenerating bloop project data with external tool #1195
  • Add debug sampling flag option for Zipkin traces #1191
  • Fix hydra integration and make tests succeed #1190
  • Include jvmTestEnvironmentProvider in build server capabilities #1185
  • Add support for packagePrefix #1183
  • Add new "sourcesGlobs" field to Bloop JSON configuration #1176
  • Use right working directory to run app or tests from sbt #1175
  • Add default -Xss1m compiler option #1174
  • Fix error checking blacklisted versions #1173
  • Add munit framework to default frameworks #1172
  • Use dynverSeparator as recommended in sbt-dynver readme #1171
  • Replace plus sign + with minus - in version number #1170
  • Add BSP endpoint to query jvm test environment #1166
  • Add options for Dotty to create semanticDB when Metals is present #1165
  • URL-encode file paths for manifest jars #1161
  • Make working directory configurable for bloopgun-cli #1160
  • Fix an issue with non existing compileIncremental key #1159
  • Report better errors if project loading fails #1157
  • Create parents of invalidated symbolic links #1156
  • Infer working directory from JVM -Duser.dir system property #1154
  • Reduce noise in bloop-launcher console output #1153
  • Pass arguments in to ammonite #1152
  • Fix Windows drive letter handling in jar manifest #1151
  • Silence error from _arguments:comparguments in completions #1145
  • Ignore invalid proxy URIs on settings #1141
  • Update minimum Gradle version to 4.3 and some fixes #1137
  • Quote the full path for bloop in the generated bat file #1131
  • Guard expensive log statements against logger.isVerbose #1127
  • Require collection field types in jsoniter codecs #1125
  • Sync up with Zinc to get Dotty rendered problems #1124
  • Disable shared sbt-bloop classes dirs when not offloading #1123
  • Fix spurious ClassNotFoundExceptions #1122
  • Respect --no-color flag #1120
  • Use MANIFEST jar to run commands that exceed OS limits #1118
  • Don't evaluate toString when handling variables request #1115
  • Allow bloopExportJarClassifiers to be configured via environment #1113
  • Don't re-add duplicate resolution artifacts in sbt-bloop #1112
  • Don't use blp-server from local installation in bloopgun and launcher #1111
  • Add missing dependency on scala-xml in shaded bloopgun #1110
  • Drop dependency between release and test jobs #1108
  • Increase the timeout during the launcher to 30s #1106
  • Avoid classpath separator in classes output directory #1102
  • Finish up Hydra compiler support #1100
  • Resolve correct linker versions in non-JVM builds #1097
  • Use platform.config settings to compile Java code #1083
  • Strip -J prefix of JVM arguments before forking #1085
  • Fix class file invalidation issue when moving sources #1086
  • Make build and shading changes #1081
  • Improve file watching corner cases #1052

Contributors 👥

According to git shortlog -sn --no-merges v1.4.0-RC1..v1.4.0, the following
people have contributed to this v1.4.0 release: Jorge Vicente Cantero, Ólafur
Páll Geirsson, Josh Soref, Tomasz Pasternak, Mirco Dotta, Łukasz Wawrzyk, Marek
Żarnowski, Martin Duhem, Win Wang, Arthur McGibbon, Tomasz Godzik, Michał
Gutowski, Changwoo Park, Tim Nieradzik, Aleksei Alefirov, Chris Kipp, Piotr
Kołaczkowski, Henri Cook, Guillaume Raffin, Jon Pretty, Guillaume R, Eugene
Apollonsky, Justin Kaeser, LLCampos, Adrien Piquerez, Matthew Tovbin, Max
Streese, Eric Peters.

Special thank you to Martin Duhem, with whom I started the Bloop
project and who has joined again the Bloop development team.