-
Notifications
You must be signed in to change notification settings - Fork 202
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #745 from scalacenter/topic/1.1.0-release-notes
Add v1.1.0 release notes
- Loading branch information
Showing
1 changed file
with
208 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,208 @@ | ||
# Install `v1.1.0` :candy: | ||
|
||
If you're on Mac OS X, upgrade to the latest version with: | ||
|
||
```sh | ||
$ brew install scalacenter/bloop/bloop | ||
``` | ||
|
||
Otherwise, run: | ||
|
||
``` | ||
$ curl -L https://github.com/scalacenter/bloop/releases/download/v1.1.0/install.py | python | ||
``` | ||
|
||
Read the complete installation instructions in our [Installation page][installation instructions]. | ||
|
||
# What is bloop | ||
|
||
Bloop is a Scala build server and command-line tool to make the compile and test developer | ||
workflows fast and productive in a build-tool-agnostic way. Learn more about Bloop and its origins | ||
in [this ScalaDays Berlin talk](https://slideslive.com/38908131). | ||
|
||
# Highlights :books: | ||
|
||
## Build Server Protocol 2.0 | ||
|
||
The new version of the protocol, a joint effort of Olafur Páll Geirsson (Scala Center), | ||
Justin Kaeser (JetBrains) and Jorge Vicente Cantero (Scala Center), simplifies client | ||
integrations, improves task notifications and diagnostics reporting, adds a new BSP connection | ||
protocol to discover BSP servers and polishes v1.0.0. | ||
|
||
Despite the fact that there is not a stable BSP v2.0 release out yet, Bloop adds initial support | ||
for BSP v2.0.0-M2, which is also implemented by IntelliJ 2018.3.504 and Metals 0.2.3. This means | ||
you can use bloop v1.1.0 with both Metals and IntelliJ. | ||
|
||
Full support for BSP 2.0 (for example, testing and running via the protocol) will soon be | ||
available in future bloop versions. | ||
|
||
### New editor integration: Metals | ||
|
||
Build import and compiler diagnostics in Metals are powered by bloop v1.1.0. This release adds a | ||
lot of small usability and correctness fixes to make bloop a fitting server for Metals. Metals | ||
supports several editors (such as `vim` and Visual Studio Code) and has best-in-class bloop | ||
integration (for example, every time there is a change in an sbt build, Metals can ask you to | ||
reload the build and run `bloopInstall` automatically). Try out Metals | ||
[here](https://github.com/scalameta/metals). | ||
|
||
## Experimental build pipelining | ||
|
||
Build pipelining is a compilation performance technique to start the compilation of modules in | ||
a build before their dependencies have finished compilation. An experimental implementation of | ||
build pipelining has been pioneered and merged in bloop v1.1.0. | ||
|
||
### How to use build pipelining | ||
|
||
Build pipelining is not yet ready for mainstream use (incremental compilation is not supported yet). | ||
|
||
However, v1.1.0 adds experimental support to allow bloop clients check compilation speedups with | ||
build pipelining. To benchmark build pipelining, `bloop clean` your project and add `--pipeline` | ||
to your `bloop compile` invocation. Clean and repeat the process to warm up the compiler as many | ||
times as the compilation numbers you have for raw compilation. | ||
|
||
### No incremental compilation | ||
|
||
At the moment, build pipelining doesn't work with incremental compilation so it's not a great fit | ||
for day-to-day use. Improvements on this area are staged for the future. | ||
|
||
### Performance results | ||
|
||
Bloop compiles its community build successfully under build pipelining. The community build | ||
includes the following projects: `apache/spark`, `lihaoyi/utest`, `scala/scala`, `ornicar/lichess`, | ||
`twitter/scalding`, `akka akka`, `twitter/finagle`, `sbt/sbt`, `twitter/algebird`, | ||
`twitter/scalatra`, `guardian/frontend`, `netflix/atlas` and `guardian/grid`. | ||
|
||
The results of build pipelining are positive but are not yet fully confirmed. Compilations of | ||
projects such as `apache/spark`, `twitter/finagle` and `ornicar/lila` give significant speedups. | ||
There are reasons to think future versions of bloop and Scala (2.12.8 and 2.13.0) will improve the | ||
performance of build pipelining. [You can see that current results range from 0% to 32% compilation | ||
speedup.](https://benchs.scala-lang.org/dashboard/snapshot/ovqRHzH05rwqFUigrdMYMWKRiWgFStVu) | ||
|
||
### Java and Scala order | ||
|
||
When build pipelining is run on projects that define Java and Scala sources, build pipelining | ||
becomes more challenging. The current bloop implementation handles this transparently to the user | ||
and defaults on a reasonable policy that works in our current community build. The downside is | ||
that users don't have a lot of flexibility in using build pipelining and making sure it works in | ||
their project without source changes. | ||
|
||
In next versions, this limitation will go away and there will be an explicit mechanism for users | ||
to control the order in which Java and Scala are compiled and its intra-build dependencies. | ||
|
||
## Test Scala.js projects | ||
|
||
Thanks to [#706](https://github.com/scalacenter/bloop/pull/706), contributed by `@tindzk` and | ||
`@jvican`, bloop v1.1.0 can now test Scala.js 0.6.x and 1.x projects and link projects | ||
using CommonJS modules. After this change, the only missing bit is to test Scala Native projects. | ||
|
||
## A new Gradle integration | ||
|
||
Thanks to Daniel Silva and Daniel Vigozovsky, bloop features a Gradle installation. To learn how to use bloop with Gradle, head to the [installation instructions]. | ||
|
||
# Improvements since 1.0.0 | ||
|
||
|
||
1. [Watch changes in single files](https://github.com/scalacenter/bloop/pull/623) | ||
1. [Remove default dependency between test sources in sbt](https://github.com/scalacenter/bloop/pull/600) | ||
1. [New additions to our community build](https://github.com/scalacenter/bloop/pull/635) | ||
1. [Add better feedback if configuration directory is missing](https://github.com/scalacenter/bloop/pull/603) | ||
1. [Make compile watch clear screen before first run](https://github.com/scalacenter/bloop/pull/639) | ||
1. [Improve benchmarks infrastructure with | ||
`async-profiler`](https://github.com/scalacenter/bloop/pull/644) | ||
1. [Enable benchmarks for more projects](https://github.com/scalacenter/bloop/pull/666) | ||
1. [Speed up build loading and minimize its IO](https://github.com/scalacenter/bloop/pull/653) | ||
1. [Clean all projects by default](https://github.com/scalacenter/bloop/pull/655) | ||
1. [Print error if download fails in `install.py`](https://github.com/scalacenter/bloop/pull/652) | ||
1. [Add support for local homebrew formulas](https://github.com/scalacenter/bloop/pull/659) | ||
1. [Apply system properties to all test frameworks](https://github.com/scalacenter/bloop/pull/664) | ||
1. [Don't fail `bloopInstall` on builds of one single sbt plugin](https://github.com/scalacenter/bloop/pull/689) | ||
1. [Add `--debug` parameter to control verbosity of logs](https://github.com/scalacenter/bloop/pull/674) | ||
1. [Support proxy in coursier integration](https://github.com/scalacenter/bloop/pull/699) | ||
1. [Allow to run externally-defined main classes](https://github.com/scalacenter/bloop/pull/717) | ||
1. [Terminate processes gracefully](https://github.com/scalacenter/bloop/pull/729) | ||
1. [Handle build load errors gracefully in the server](https://github.com/scalacenter/bloop/pull/731) | ||
1. [Add resources to the configuration file](https://github.com/scalacenter/bloop/pull/730) | ||
1. [Create target path of `-h` ScalaTest option](https://github.com/scalacenter/bloop/pull/732) | ||
1. [Add fish tab completion capabilities](https://github.com/scalacenter/bloop/pull/721) | ||
1. [Use another hash code for projects](https://github.com/scalacenter/bloop/pull/734) | ||
1. [Add tests for running dependent main](https://github.com/scalacenter/bloop/pull/735) | ||
1. [Prove transitive resources are used in aggregated projects](https://github.com/scalacenter/bloop/pull/742) | ||
1. [Set cwd to project's base directory](https://github.com/scalacenter/bloop/pull/741) | ||
1. [Set jvm proxy from client environment variables](https://github.com/scalacenter/bloop/pull/713) | ||
1. [Fix test resource behavior for source-based projects](https://github.com/scalacenter/bloop/pull/744) | ||
1. [Improve compilation reporting to users](https://github.com/scalacenter/bloop/pull/737) | ||
1. [Propagate main class in sbt plugin](https://github.com/scalacenter/bloop/pull/740) | ||
|
||
## Improvements on the Build Server Protocol implementation | ||
|
||
1. [Use bsp 1.0.0 and implement its new methods](https://github.com/scalacenter/bloop/pull/680) | ||
1. [Allow bloop reflective invocation with cancellation](https://github.com/scalacenter/bloop/pull/685) | ||
1. [Don't error on trace message](https://github.com/scalacenter/bloop/pull/686) | ||
1. [Upgrade to latest bsp version](https://github.com/scalacenter/bloop/pull/687) | ||
1. [Upgrade to bsp 1.0.1 to use status code](https://github.com/scalacenter/bloop/pull/688) | ||
1. [Reload and save state during BSP actions](https://github.com/scalacenter/bloop/pull/709) | ||
1. [Publish diagnostics for syntax errors and improve tests](https://github.com/scalacenter/bloop/pull/710) | ||
1. [Return correct platform for BSP Scala targets](https://github.com/scalacenter/bloop/pull/711) | ||
1. [Re-publish diagnostics for warnings](https://github.com/scalacenter/bloop/pull/725) | ||
1. [Migrate to bsp 2.0.0 partially](https://github.com/scalacenter/bloop/pull/722) | ||
1. [Re-publish all warnings on BSP server startup](https://github.com/scalacenter/bloop/pull/729) | ||
|
||
## Contributors :busts_in_silhouette: | ||
|
||
According to `git shortlog -sn --no-merges v1.0.0..v1.1.0`, 17 people contributed to this | ||
`v1.1.0` release: Jorge Vicente Cantero, Martin Duhem, Tim Nieradzik, Daniel Silva, Paweł | ||
Bartkiewicz, Daniel Vigovszky, Josep Prat, Etienne Couritas, Jens Grassel, Martin Mauch, Qi Wang, | ||
Ashwin Raja, David Francoeur, Kevin Rauscher, Octavian Genes, Reto Habluetzel, fanconepl, ioleo. | ||
|
||
The core team is grateful to all the contributors that have submitted PRs and helped | ||
improved the documentation of Bloop. Thanks a lot! | ||
|
||
[installation instructions]: https://scalacenter.github.io/bloop/docs/installation | ||
[configuration]: https://scalacenter.github.io/bloop/docs/configuration-format/ | ||
|
||
[#540]: https://github.com/scalacenter/bloop/pull/540 | ||
[#538]: https://github.com/scalacenter/bloop/pull/538 | ||
[#537]: https://github.com/scalacenter/bloop/pull/537 | ||
[#532]: https://github.com/scalacenter/bloop/pull/532 | ||
[#535]: https://github.com/scalacenter/bloop/pull/535 | ||
[#530]: https://github.com/scalacenter/bloop/pull/530 | ||
[#529]: https://github.com/scalacenter/bloop/pull/529 | ||
[#528]: https://github.com/scalacenter/bloop/pull/528 | ||
[#527]: https://github.com/scalacenter/bloop/pull/527 | ||
[#526]: https://github.com/scalacenter/bloop/pull/526 | ||
[#457]: https://github.com/scalacenter/bloop/pull/457 | ||
[#525]: https://github.com/scalacenter/bloop/pull/525 | ||
[#524]: https://github.com/scalacenter/bloop/pull/524 | ||
[#523]: https://github.com/scalacenter/bloop/pull/523 | ||
[#521]: https://github.com/scalacenter/bloop/pull/521 | ||
[#513]: https://github.com/scalacenter/bloop/pull/513 | ||
[#517]: https://github.com/scalacenter/bloop/pull/517 | ||
[#512]: https://github.com/scalacenter/bloop/pull/512 | ||
[#511]: https://github.com/scalacenter/bloop/pull/511 | ||
[#479]: https://github.com/scalacenter/bloop/pull/479 | ||
[#499]: https://github.com/scalacenter/bloop/pull/499 | ||
[#509]: https://github.com/scalacenter/bloop/pull/509 | ||
[#502]: https://github.com/scalacenter/bloop/pull/502 | ||
[#503]: https://github.com/scalacenter/bloop/pull/503 | ||
[#495]: https://github.com/scalacenter/bloop/pull/495 | ||
[#494]: https://github.com/scalacenter/bloop/pull/494 | ||
[#489]: https://github.com/scalacenter/bloop/pull/489 | ||
[#488]: https://github.com/scalacenter/bloop/pull/488 | ||
[#487]: https://github.com/scalacenter/bloop/pull/487 | ||
[#486]: https://github.com/scalacenter/bloop/pull/486 | ||
|
||
[scala-native-pr-1234]: https://github.com/scala-native/scala-native/pull/1234 | ||
[nuprocess]: https://github.com/brettwooldridge/NuProcess | ||
|
||
[@asamsig]: https://github.com/asamsig | ||
[@Baccata]: https://github.com/Baccata | ||
[@Duhemm]: https://github.com/Duhemm | ||
[@gabro]: https://github.com/gabro | ||
[@jvican]: https://github.com/jvican | ||
[@lefou]: https://github.com/lefou | ||
[@msvaljek]: https://github.com/msvaljek | ||
[@tindzk]: https://github.com/tindzk | ||
[@stephennancekivell]: https://github.com/stephennancekivell | ||
[@travisltq]: https://github.com/travisltq | ||
[@tues]: https://github.com/tues | ||
[@japgolly]: https://github.com/japgollly |