bloop v1.4.0-RC3 Release Notes
Release Date: 2020-05-11 // almost 4 years ago-
bloop
v1.4.0
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 supportOur 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 throughcoursier 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
ClassNotFoundException
s 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
0๏ธโฃ.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. Bloopv.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, andbloop 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
๐ andsbt
. 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
andbloop help
always succeed #1252๐ Use runtime classpaths in Gradle #1250
Swap
classpath
andresources
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
0๏ธโฃ 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
#1216Report 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 #1212Hide 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
#1203Don'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 #1171Replace 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 #1145Ignore 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
ClassNotFoundException
s [#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 #1083Strip
-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 thisv1.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.