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.
If you're on Mac OS X, upgrade to the latest version with:
$ brew install scalacenter/bloop/bloopOtherwise, run:
$ curl -L https://github.com/scalacenter/bloop/releases/download/v1.0.0-M8/install.py | python
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.
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.
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.
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 := trueand runbloopInstall.sbt-bloopwill 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-bloopis now less verbose when generating configuration files.- Workaround for missing
bloopInstallautocompletion. Bloop works around a bug in sbt that doesn't autocompletes settings scoped globally.
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.
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.