bloop-frontend v1.0.0-M8
Pre-releaseBloop v1.0.0-M8
This is the eighth milestone of Bloop! 🎉
While we're working on ergonomics and making bloop easier to use by both users and build tools, this release is a hotfix of M7.
This milestone of Bloop includes changes to the configuration files; you'll need to re-generate
your configuration files if you used a previous version of Bloop. See the installation
instructions.
Install the latest release
If you're on Mac OS X, upgrade to the latest version with:
$ brew install scalacenter/bloop/bloop
Otherwise, run:
$ curl -L https://github.com/scalacenter/bloop/releases/download/v1.0.0-M8/install.py | python
Highlights
File watching improvement
In some cases, bloop could get hanging compilation processes caused by CTRL-C
while file watching a given project. These hanging processes could interfere with new spawned processes that used file watching too, and in some scenarios they would steal job from the main file watching process and compilation or testing wouldn't yield any output.
Such a bug is now fixed. We have experimented with file watching in several projects and confirmed it now works reliably.
Start the server with bloop server
You can now start the server from the bloop client with bloop server
. This improvement was suggested by both Olafur and Jon and has the benefits of not polluting the space for autocompletions and yet having an easy way to start it, without need to remember the weird blp-server
binary name.
Test filters are now accessible via --only
The old bloop test foo -f com.my.TestSuite
has been replaced by bloop test foo -o com.my.TestSuite
(-o
is named after --only
). This change brings more ergonomics and makes it intuitive for those users that are used to the testOnly
style in sbt.
If you want to specify more than one test filter, type several -o
arguments. Example: bloop test foo -o com.myTestSuite -o ch.epfl.scala.CoolSuite
.
Improvements to the sbt plugin
The sbt bloop plugin has several improvements over the plugin in M7:
- Support for source dependencies: if you use source dependencies, set
bloopAggregateSourceDependencies in Global := true
and runbloopInstall
.sbt-bloop
will then write all the configuration files to the same bloop config directory, and not in the base directories of the build of every sourcedep. sbt-bloop
is now less verbose when generating configuration files.- Workaround for missing
bloopInstall
autocompletion. Bloop works around a bug in sbt that doesn't autocompletes settings scoped globally.
Nailgun server exception is gone
You may have experienced that the nailgun server would throw non-fatal exceptions like:
Dec 12, 2017 12:40:41 PM com.martiansoftware.nailgun.NGInputStream$1 run
WARNING: Nailgun client read future was interrupted
java.lang.InterruptedException
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:404)
at java.util.concurrent.FutureTask.get(FutureTask.java:204)
at com.martiansoftware.nailgun.NGInputStream$1.run(NGInputStream.java:91)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
As reported in this ticket.
This new release fixes this issue, and now the server doesn't throw any exception. While this is not something important because the logs of the nailgun server should not be relevant, it cleans up logs and limits users' confusion whehn using Bloop.
Support for classpath options
Bloop now observes the classpathOptions
setting defined in sbt builds. This setting configures how the compilation classpath is constructed (whether to include the Scala compiler, automatically append the Scala standard library, etc.)
This change requires that configuration files are re-generated. The instructions for generating the configuration files can be found in the installation instructions.