All Versions
19
Latest Version
Avg Release Cycle
38 days
Latest Release
733 days ago

Changelog History
Page 2

  • v1.3.4 Changes

    October 06, 2019

    bloop v1.3.4

    ๐Ÿš€ Release notes for 1.3.4 are to come soon.

  • v1.3.3 Changes

    October 02, 2019

    bloop v1.3.3

    ๐Ÿš€ Release notes for 1.3.3 are to come soon.

  • v1.3.2 Changes

    June 08, 2019

    bloop v1.3.2

    ๐Ÿ— Bloop is a build server and CLI tool for the Scala programming
    language
    developed by the Scala
    Center.

    ๐Ÿ›  Bloop v1.3.2 is a bugfix release for v1.3.1.

    โฌ†๏ธ Upgrade guide ๐Ÿ“ฅ

    These are only the upgrade steps. If you don't have bloop installed, you
    must read the installation instructions instead.

    โฌ†๏ธ If you're on macOS, upgrade to the latest version with:

    $ brew upgrade scalacenter/bloop/bloop $ brew services restart bloop # Note a restart is required in case a server still runs!
    

    โฌ†๏ธ If you're on Windows using scoop, upgrade to the latest version with:

    $ scoop upgrade bloop $ bloop ng-stop $ bloop server # in a long-running terminal session
    

    โฌ†๏ธ If you're on Arch Linux, upgrade to the latest version with:

    $ rm -rf ~/.bloop $ yaourt -S bloop $ systemctl --user start bloop
    

    Otherwise, use the generic installation method:

    $ curl -L https://github.com/scalacenter/bloop/releases/download/v1.3.2/install.py | python
    $ bloop ng-stop
    $ systemctl --user start bloop # or similar way to run server in a long-running session
    

    Read the complete installation instructions in our Installation page.

    ๐Ÿ›  Fixed directory resource leak

    v1.3.0 had a piece of code listing directories via Files.list() that
    ended up not freeing up open file pointers. Over a long bsp session, these
    open file pointers would add up and eventually lead to fatal exceptions in
    ๐ŸŽ systems such as macOS.

    A wrong git push tag of v1.3.1 made this fix not available in master,
    ๐Ÿš€ despite the fact that it was merged, so v1.3.2 is the release containing
    the fix that closes the resources opened by Files.list().

    Contributors ๐Ÿ‘ฅ

    ๐Ÿ”€ According to git shortlog -sn --no-merges v1.3.1..v1.3.2, 1 people
    ๐Ÿš€ contributed to this v1.3.1 release: Jorge Vicente Cantero.

  • v1.3.1 Changes

    June 08, 2019

    bloop v1.3.1

    ๐Ÿ— Bloop is a build server and CLI tool for the Scala programming
    language
    developed by the Scala
    Center.

    ๐Ÿ›  Bloop v1.3.1 is a bugfix release for v1.3.0.

    โฌ†๏ธ Upgrade guide ๐Ÿ“ฅ

    These are only the upgrade steps. If you don't have bloop installed, you
    must read the installation instructions instead.

    โฌ†๏ธ If you're on macOS, upgrade to the latest version with:

    $ brew upgrade scalacenter/bloop/bloop $ brew services restart bloop # Note a restart is required in case a server still runs!
    

    โฌ†๏ธ If you're on Windows using scoop, upgrade to the latest version with:

    $ scoop upgrade bloop $ bloop ng-stop $ bloop server # in a long-running terminal session
    

    โฌ†๏ธ If you're on Arch Linux, upgrade to the latest version with:

    $ rm -rf ~/.bloop $ yaourt -S bloop $ systemctl --user start bloop
    

    Otherwise, use the generic installation method:

    $ curl -L https://github.com/scalacenter/bloop/releases/download/v1.3.1/install.py | python
    $ bloop ng-stop
    $ systemctl --user start bloop # or similar way to run server in a long-running session
    

    Read the complete installation instructions in our Installation page.

    ๐Ÿ›  Fixed Ammonite integration in CLI client

    v1.3.0 added an Ammonite integration in Bloop. Every time bloop console is run, bloop compiles the project and then creates an Ammonite REPL
    session. This integration required the cooperation of the nailgun script that
    โช ended up misfunctioning due to a git revert error. The bug would print the Ammonite command to run but would not actually run it.

    โ†ช A workaround would be to run sh -c $(bloop console $PROJECT), however
    โ†ช v1.3.1 fixes the CLI client so that this workaround is no longer needed.

    Contributors ๐Ÿ‘ฅ

    ๐Ÿ”€ According to git shortlog -sn --no-merges v1.2.4..v1.2.5, 1 people
    ๐Ÿš€ contributed to this v1.3.1 release: Jorge Vicente Cantero.

  • v1.3.0 Changes

    June 06, 2019

    bloop v1.3.0

    ๐Ÿ— Bloop is a build server and CLI tool for the Scala programming language
    developed by the Scala Center.

    ๐Ÿš€ Bloop v1.3.0 is the biggest release of this project to this date.

    ๐Ÿš€ With over 520 commits since the v1.2.5 release, ~26000 additions and ~9500
    deletions, it aggregates together fundamental changes in the compilation
    ๐Ÿ— pipeline, novel build server features, user-facing improvements and bug fixes
    together.

    โฌ†๏ธ Upgrade guide ๐Ÿ“ฅ

    These are only the upgrade steps. If you don't have bloop installed, you must read
    the installation instructions instead.

    โฌ†๏ธ If you're on macOS, upgrade to the latest version with:

    $ brew upgrade scalacenter/bloop/bloop $ brew services restart bloop # Note a restart is required in case a server still runs!
    

    โฌ†๏ธ If you're on Windows using scoop, upgrade to the latest version with:

    $ scoop upgrade bloop $ bloop ng-stop $ bloop server # in a long-running terminal session
    

    โฌ†๏ธ ๐Ÿ†• If you're on Arch Linux, upgrade to the latest version with:

    $ rm -rf ~/.bloop $ yaourt -S bloop $ systemctl --user start bloop
    

    Otherwise, use the generic installation method:

    $ curl -L https://github.com/scalacenter/bloop/releases/download/v1.3.0/install.py | python
    $ bloop ng-stop
    $ systemctl --user start bloop # or similar way to run server in a long-running session
    

    Read the complete installation instructions in our Installation page.

    New compilation engine with client guarantees ๐Ÿ’ช ๐Ÿ‘ช

    v1.3.0 features a redesigned compilation engine built to solve tooling
    challenges already present in our current developer workflow but brought to
    the foreground by the formalized use of a client-server architecture. This
    compilation engine sports a more efficient way of doing IO work (with no
    ๐Ÿ— compromises in correctness) and provides a new contract to build clients.

    Bloop v1.3.0 and onwards guarantees clients that their actions will have
    ๐Ÿ–จ the smallest usage footprint possible and will not conflict with those of
    ๐Ÿ— other concurrent clients being served by the same server in the same build.

    For example, if Metals is compiling your project via Bloop and you spawn a
    โœ… bloop CLI command such as bloop test foo --watch at the same time, Bloop
    guarantees that:

    1. The server heavily caches compilations for the same inputs (aka compile deduplication)

    If inputs haven't changed between the requests, only the first client
    request will trigger a compilation. The compilation of the second client
    will be deduplicated based on the compilation side effects recorded by the
    ๐Ÿ— > build server, so only one compilation will happen.

    ๐Ÿ— 2. Different compilation requests in the same build can run concurrently (aka
    compile isolation)

    If inputs have changed between requests, Bloop will compile the changed
    projects concurrently, avoiding shared state and conflicts with ongoing
    compilations.

    1. The outputs produced by both requests are independent in the file system.

    The compilation products will be stored in independent target
    directories only owned by the client. This independence is essential to
    ๐Ÿ— > allow clients to independently run any build action without altering task
    executions. Think avoiding crashing JVMs because other processes are
    writing contents to open class file pointers!

    ๐Ÿ— This is the first step towards modelling these build actions as pure
    functions despite their pervasive side effects. Bloop manages any internal
    state as best as possible to provide the best developer experience to end
    ๐Ÿ‘‰ users. There will be more work in this area in the future!

    Related pull requests

    ๐Ÿ‘ 1. Isolate and deduplicate compilation and Zipkin tracing support by jvican

    1. Pre-populate client classes dir if empty by jvican
    2. Deduplicate compilation if project inputs change by jvican
    3. Invalidate symbols with forked and local javac by jvican
    4. Don't create and delete empty classes dirs by jvican
    5. Cancel deduplication if ongoing compilation looks dead by jvican
    6. Use generic classes dir for the pipelined traversal by jvican ๐ŸŒฒ 8. Log to the user a deduplication is happening by jvican
    7. Revalidate class files compiled by dependent projects by jvican
    8. Fix not found type errors during incremental compilation by jvican ๐Ÿ”’ 11. Add CLI lock timeout and be more flexible when locking CLI clients
    9. Fix remaining issues around handling of compile products by jvican
    10. Catch exceptions when computing the bundle by jvican

    ๐Ÿ†• New Zipkin tracing support ๐Ÿ“ก

    Bloop v1.3.0 traces any compilation request to Zipkin if a Zipkin server is
    โš™ running in the background. Here's a screenshots showing collected compilation
    traces for the akka/akka project.

    ๐Ÿ— A Zipkin instance with build traces from the akka/akka project

    And another screenshot showing the top part of a detailed compilation trace.

    ๐Ÿ— A Zipkin instance showing a detaild profile of a build trace from the akka/akka project

    ๐ŸŽ The zipkin integration is explained in the performance guide below.

    ๐ŸŽ In-depth compiler performance guide ๐Ÿš€

    ๐ŸŽ The compiler performance
    ๐ŸŽ guide
    is a new
    โž• addition to our documentation that explains users how to:

    ๐ŸŽ 1. Get familiar with the performance characteristics of project builds ๐ŸŽ 2. Compare the performance of Bloop with that of other tools compiling Scala code โšก๏ธ 3. Modify a complicated build to optimize build times

    The guide is rich in details and written to provide pointers to those users
    โšก๏ธ wanting to speed up their workflow with Bloop and optimize their current
    ๐Ÿ— build times further.

    It is open for any community addition, so if you'd like to add something,
    help us improve it!

    ๐Ÿ— Faster build pipelining ๐Ÿ‡

    ๐ŸŽ Build pipelining is a compilation performance technique to start the
    ๐Ÿ— compilation of modules in a build before their dependencies have finished
    compilation.

    ๐Ÿ— Build pipelining was merged back in December, 2018 and made available in
    bloop v1.2.1, making bloop the first Scala developer tool to implement this
    ๐Ÿ‘ technique and support it under an experimental flag.

    Bloop v1.3.0 changes its internal implementation to make it faster. We're
    ๐Ÿ— very excited about what this entails for any Scala build in the wild. The
    bloop project will publish benchmarks and a concise guide in a follow-up
    ๐Ÿฑ post, keep tuned! ๐Ÿ˜„

    ๐Ÿฑ Use Ammonite by default in bloop console ๐ŸŽฎ

    Contributed by @torkelrogstad.

    Ammonite is a modernized Scala REPL with syntax highlighting, multi-line
    editing, the ability to load maven artifacts directly in the REPL, and many
    0๏ธโƒฃ other quality-of-life improvements missing in the default Scala REPL.

    0๏ธโƒฃ Bloop v1.3.0 defaults on Ammonite every time you run bloop console on a
    project. Unlike running amm in your terminal, the Ammonite integration will
    automatically start an Ammonite REPL using the classpath of a project in your
    ๐Ÿ— build. That allows you to use all the code defined in that classpath and
    experiment with its behavior.

    Interested in the implementation details? Have a look at
    0๏ธโƒฃ Add support for Ammonite REPL by default.

    ๐Ÿ‘ Better Metals and BSP integration ๐Ÿค˜ ๐Ÿ’ฏ

    ๐Ÿ‘ BSP support in bloop v1.3.0 is vastly superior to that in v1.2.5. The new
    ๐Ÿš€ release implements a few non-implemented endpoints, fixes several
    ๐Ÿ‘ non-reported issues in diagnostics and improves connection support and
    cancellation capabilities.

    The Metals integration is superior to that in v1.2.5 thanks to this
    non-exhaustive list of PRs:

    1. Guarantee cancellation upon sudden BSP client dropouts by jvican โฌ†๏ธ 2. Upgrade to BSP 2.0.0-M4 by tgodzik ๐Ÿ— 3. Implement BSP buildTarget/scalaMainClasses by marek1840 ๐Ÿ— 4. Implement BSP buildTarget/scalaTestClasses by marek1840
    2. Send out server BSP responses/notifications in order by jvican
    3. A few unlisted PRs that casually fix issues in BSP semantics

    โž• Add support for Scala 2.13 โ–ถ๏ธ

    ๐Ÿ‘ Bloop v1.3.0 finally adds support for Scala
    2.13.x
    .

    โž• Add support for JDK 9 and 11 โฉ

    ๐Ÿ‘ Contributed by @er1c, bloop v1.3.0 supports JDK 9 and JDK 11. If you run
    bloop with these Java runtimes, it is recommended to enable the full parallel
    GC with -XX:+UseParallelGC as compilation is faster.

    For this reason, Java 8 still remains the recommended runtime for the time
    0๏ธโƒฃ being and our installers might install it by default. In the future, we might
    โฌ†๏ธ consider upgrading to a newer Java runtime.

    1. Compile on Java9+ by er1c
    2. Add Java9+ reverse-compatible changes by er1c

    ๐Ÿ†• New Arch Linux installer ๐Ÿ„

    Contributed by TheElectronWill.

    ๐Ÿš€ Bloop has a new AUR package for Arch Linux that is updated by our release
    ๐Ÿง infrastructure. You can now install bloop in Arch Linux by running
    pacaur -S bloop or yaourt -S bloop.

    ๐Ÿ‘Œ Improved file watcher responsiveness โŒš๏ธ ๐Ÿ”ฅ

    ๐Ÿ‘ bloop v1.3.0 has better and snappier file watcher infrastructure, with
    protection against overflowing
    ๐Ÿ›  events
    and several fixes to
    ๐Ÿ› bugs reported after v1.2.5
    .
    ๐ŸŽ One of these bugs is a recurrent problems in macOS machines where Bloop
    server's JVM would crash due to uncleaned state in the Carbon-based file
    watcher.

    ๐Ÿ‘Œ Support for file watching in run commands has not yet been implemented. If
    you want to help, drop by bloop's Gitter channel and we will give
    you pointers to help implement it.

    Fix use of test arguments in bloop test ๐Ÿ“ˆ

    โœ… Running bloop test in your project or passing specific test arguments to
    โœ… Bloop's test runner could produce issues such as this one:

    [E] Unexpected error during remote test execution: 'Socket closed'.
    [E] Internal error when running tests: sbt.ForkMain$Run$RunAborted: java.net.SocketException: Broken pipe (Write failed)
    

    This pull request makes sure
    โœ… that we handling missing test frameworks better and that the above issues
    โœ… processing test arguments are gone.

    Improvements in build tools support (bloopInstall) ๐Ÿ› 

    ๐Ÿ‘Œ Improvements in sbt

    ๐Ÿ— Automatic support for integration tests in sbt builds

    โœ… sbt-bloop v1.3.0 will automatically export integration test
    ๐Ÿ”ง configurations
    to independent
    ๐Ÿ— build targets. If you have modified your sbt build to support integration tests
    ๐Ÿ— in your build, you can safely remove that logic.

    ๐Ÿ‘Œ Support sbt source dependencies by default

    ๐Ÿ‘ Contributed by olafurpg. Support for sbt project references was before
    hidden behind an specific sbt boolean setting. Now it's enabled by
    0๏ธโƒฃ default
    .

    Other

    1. Avoid duplication of projects in dependencies field by tkroman
    2. Fix small bug when exporting scalac and javac options in sbt by jvican

    ๐Ÿ‘Œ Improvements in Gradle

    1. Include Gradle's transitive dependencies in classpath by Arthurm1
    2. Ignore annotation processor in Gradle by tgodzik
    3. Don't add JAR dependencies of Gradle projects in the classpath by tgodzik
    4. Export source dependencies from Gradle by tgodzik

    ๐Ÿ— Thanks to these improvements, Metals will be able to support "Import Build"
    ๐Ÿš€ in Gradle projects in its next release.

    ๐Ÿ‘Œ Improvements in Mill

    ๐Ÿ”€ 1. Point Mill docs to merged bloop integration upstream by Baccata ๐Ÿ“š 2. Fix broken link in Mill documentation by perryao โšก๏ธ 3. Update Mill version by robby-phd

    ๐Ÿ— Thanks to these improvements, Metals will be able to support "Import Build"
    ๐Ÿš€ in mill builds in its next release.

    ๐Ÿ‘Œ Improvements in Maven

    ๐Ÿ”Œ 1. Avoid NPE when collecting resources in Maven's Bloop plugin by artyomboyko ๐Ÿ”Œ 2. Add source dependencies to Maven plugin by tgodzik โš  3. Fix warning about Maven being run in interactive mode by tgodzik ๐Ÿ 4. Fix Maven plugin in Windows by adding version of maven-invoker by tgodzik

    ๐Ÿ— Thanks to these improvements, Metals will be able to support "Import Build"
    ๐Ÿš€ in Maven projects in its next release.

    Miscellaneous

    ๐Ÿš€ Here's a list of key miscellaneous changes in this release.

    ๐Ÿ— 1. Synchronize CLI clients to the same build by jvican

    1. Don't recompile project if server dies by jvican ๐Ÿ”ง 3. Add -Dbloop.computation.cores and env var to configure thread pool by jvican
    2. Display Java version and Java home in bloop about by cquiroz โœ… 5. Add failing test case where source files are pulled in multiple times by jackkoenig โš  6. Don't print warnings when autocompleting by CucumisSativus ๐Ÿ— 7. Add buildpress, a tool to automatically export from any build tool to bloop by jvican ๐Ÿ‘ 8. Add support for standalone repo path in CLI args by tkroman
    3. Add contributing guide to the website by jvican โœ… 10. Improve bloop launcher's test suite by jvican
    4. Change SCOOP env variable to avoid conflict by Arthurm1 0๏ธโƒฃ 12. Show correct default for install.py '--dest' option by BardurArantsson
    5. Use a guaranteed unique name for temporary directories by propensive โšก๏ธ 14. Update website, enable versioning and assort fixes by jvican โšก๏ธ 15. Update contributing guide with expected error by CucumisSativus
    6. Fix installation link in README by jrudolph
    7. Encode UUIDs with Base 64 by odisseus
    8. Fix off-one error in fish autocompletions by 2m
    9. Use two cores for Bloop's computation pool in Travis by jvican โšก๏ธ 20. Update docs URL in Bloop error messages by AckoLF โšก๏ธ 21. Update Homebrew server log path by regadas

    ๐Ÿฑ Next steps ๐Ÿšถ

    ๐Ÿ— The recent work on supporting concurrent build clients, giving strong
    ๐Ÿš€ building guarantees to clients and the bloop launcher released in v1.2.5
    ๐Ÿ— has crystallized in a robust tooling framework to take our build tool
    integrations to the next level.

    Bloop v1.4.0 will enable sbt to offload compilation of projects
    automatically to Bloop, speeding up sbt project load and making the
    ๐ŸŽ cutting-edge performance improvements in Bloop available to sbt.
    The goal is that users will be able to use bloop without changing their
    current development workflow.

    ๐Ÿ— Such integrations for other build tools will also be possible. The bloop team
    volunteers to mentor people interested in contributing such integrations for
    ๐Ÿ— popular build tools such as mill or Gradle. If you're interested, please get
    in contact with us
    .

    ๐Ÿฑ Special acknowledgements ๐Ÿ™

    ๐Ÿš€ bloop v1.3.0 is an exciting release because of the vast amount of external
    contributors that we have had. Since v1.2.5, bloop has received
    contributions by more than 27 OSS contributors.

    โž• Additionally, the bloop team has welcomed three new more members: Tomasz
    Godzik
    (@tgodzik) and Marek ลปarnowski (@marek1840)
    from VirtusLab which have made this release a reality and Roman
    Tkalenko
    (@tkroman) which has recently started contributing in
    ๐Ÿ‘ท making Bloop better for CI workflows.

    ๐Ÿ‘€ I am thrilled to see the bloop community grow and be working with such
    skilled people in improving the tooling in the Scala community.

    ๐Ÿ”€ According to git shortlog -sn --no-merges v1.2.5..v1.3.0, 27 people
    ๐Ÿš€ contributed to this release: Guillaume R, Roman Tkalenko, Jorge,
    Eric Peters, Michaล‚ Gutowski, Marek ลปarnowski, Carlos Quiroz, Artyom Boyko,
    Arthur McGibbon, Tomasz Godzik, Torkel Rogstad, Myroslav Golub, AckoLF,
    ร“lafur Pรกll Geirsson, ArthurM, Bardur Arantsson, David Gregory, Enver
    Osmanov, Filipe Regadas, Johannes Rudolph, Jon Pretty, Martynas Mickeviฤius,
    Mike, Olivier Mรฉlois, Jack Koenig and Robby.

  • v1.3.0-RC1 Changes

    June 04, 2019

    bloop v1.3.0

    ๐Ÿ— Bloop is a build server and CLI tool for the Scala programming language developed by the Scala Center.

    ๐Ÿš€ Bloop v1.3.0 is the biggest release of this project to this date.

    ๐Ÿš€ With over 520 commits since the v1.2.5 release, ~26000 additions and ~9500
    deletions, it aggregates together fundamental changes in the compilation
    ๐Ÿ— pipeline, novel build server features, user-facing improvements and bug fixes
    together.

    โฌ†๏ธ Upgrade guide ๐Ÿ“ฅ

    These are only the upgrade steps. If you don't have bloop installed, you must read
    the installation instructions instead.

    โฌ†๏ธ If you're on macOS, upgrade to the latest version with:

    $ brew upgrade scalacenter/bloop/bloop $ brew services restart bloop
    

    โฌ†๏ธ If you're on Windows using scoop, upgrade to the latest version with:

    $ scoop upgrade bloop $ bloop ng-stop $ // Start the server as you usually do (via systemd, manually, desktop services)
    

    โฌ†๏ธ ๐Ÿ†• If you're on Arch Linux, upgrade to the latest version with:

    $ rm -rf ~/.bloop $ yaourt -S bloop $ systemctl --user start bloop
    

    Otherwise, use the generic installation method:

    $ curl -L https://github.com/scalacenter/bloop/releases/download/v1.2.5/install.py | python
    $ bloop ng-stop
    $ // Start the server as you usually do (via systemd, manually, desktop services)
    

    Read the complete installation instructions in our Installation page.

    New compilation engine with client guarantees ๐Ÿ’ช ๐Ÿ‘ช

    v1.3.0 features a redesigned compilation engine built to solve tooling
    challenges already present in our current developer workflow but brought to
    the foreground by the formalized use of a client-server architecture. This
    compilation engine sports a more efficient way of doing IO work (with no
    ๐Ÿ— compromises in correctness) and provides a new contract to build clients.

    Bloop v1.3.0 and onwards guarantees clients that their actions will have
    ๐Ÿ–จ the smallest usage footprint possible and will not conflict with those of
    ๐Ÿ— other concurrent clients being served by the same server in the same build.

    For example, if Metals is compiling
    โœ… your project via Bloop and you spawn a bloop CLI command such as bloop test foo --watch at the same time, Bloop guarantees that:

    1. The server heavily caches compilations for the same inputs (aka compile deduplication)

    If inputs haven't changed between the requests, only the first client
    request will trigger a compilation. The compilation of the second client
    will be deduplicated based on the compilation side effects recorded by the
    ๐Ÿ— > build server, so only one compilation will happen.

    ๐Ÿ— 2. Different compilation requests in the same build can run concurrently (aka
    compile isolation)

    If inputs have changed between requests, Bloop will compile the changed
    projects concurrently, avoiding shared state and conflicts with ongoing
    compilations.

    1. The outputs produced by both requests are independent in the file system.

    The compilation products will be stored in independent target
    directories only owned by the client. This independence is essential to
    ๐Ÿ— > allow clients to independently run any build action without altering task
    executions. Think avoiding crashing JVMs because other processes are
    writing contents to open class file pointers!

    ๐Ÿ— This is the first step towards modelling these build actions as pure
    functions despite their pervasive side effects. Bloop manages any internal
    state as best as possible to provide the best developer experience to end
    ๐Ÿ‘‰ users. There will be more work in this area in the future!

    Related pull requests

    ๐Ÿ‘ 1. Isolate and deduplicate compilation and Zipkin tracing support by jvican

    1. Pre-populate client classes dir if empty by jvican
    2. Deduplicate compilation if project inputs change by jvican
    3. Invalidate symbols with forked and local javac by jvican
    4. Don't create and delete empty classes dirs by jvican
    5. Cancel deduplication if ongoing compilation looks dead by jvican
    6. Use generic classes dir for the pipelined traversal by jvican ๐ŸŒฒ 8. Log to the user a deduplication is happening by jvican
    7. Revalidate class files compiled by dependent projects by jvican
    8. Fix not found type errors during incremental compilation by jvican ๐Ÿ”’ 11. Add CLI lock timeout and be more flexible when locking CLI clients
    9. Fix remaining issues around handling of compile products by jvican
    10. Catch exceptions when computing the bundle by jvican

    ๐Ÿ†• New Zipkin tracing support ๐Ÿ“ก

    Bloop v1.3.0 traces any compilation request to Zipkin if a Zipkin server is
    โš™ running in the background. Here's a screenshots showing collected compilation
    traces for the akka/akka project.

    ๐Ÿ— A Zipkin instance with build traces from the akka/akka project

    And another screenshot showing the top part of a detailed compilation trace.

    ๐Ÿ— A Zipkin instance showing a detaild profile of a build trace from the akka/akka project

    ๐ŸŽ The zipkin integration is explained in the performance guide below.

    ๐ŸŽ In-depth compiler performance guide ๐Ÿš€

    ๐ŸŽ The compiler performance
    ๐ŸŽ guide
    is a new
    โž• addition to our documentation that explains users how to:

    ๐ŸŽ 1. Get familiar with the performance characteristics of project builds ๐ŸŽ 2. Compare the performance of Bloop with that of other tools compiling Scala code โšก๏ธ 3. Modify a complicated build to optimize build times

    The guide is rich in details and written to provide pointers to those users
    โšก๏ธ wanting to speed up their workflow with Bloop and optimize their current
    ๐Ÿ— build times further.

    It is open for any community addition, so if you'd like to add something,
    help us improve it!

    ๐Ÿ— Faster build pipelining ๐Ÿ‡

    ๐ŸŽ Build pipelining is a compilation performance technique to start the
    ๐Ÿ— compilation of modules in a build before their dependencies have finished
    compilation.

    ๐Ÿ— Build pipelining was merged back in December, 2018 and made available in
    bloop v1.2.1, making bloop the first Scala developer tool to implement this
    ๐Ÿ‘ technique and support it under an experimental flag.

    Bloop v1.3.0 changes its internal implementation to make it faster. We're
    ๐Ÿ— very excited about what this entails for any Scala build in the wild. The
    bloop project will publish benchmarks and a concise guide in a follow-up
    ๐Ÿฑ post, keep tuned! ๐Ÿ˜„

    ๐Ÿฑ Use Ammonite by default in bloop console ๐ŸŽฎ

    Contributed by @torkelrogstad.

    Ammonite is a modernized Scala REPL with syntax highlighting, multi-line
    editing, the ability to load maven artifacts directly in the REPL, and many
    0๏ธโƒฃ other quality-of-life improvements missing in the default Scala REPL.

    0๏ธโƒฃ Bloop v1.3.0 defaults on Ammonite every time you run bloop console on a
    project. Unlike running amm in your terminal, the Ammonite integration will
    automatically start an Ammonite REPL using the classpath of a project in your
    ๐Ÿ— build. That allows you to use all the code defined in that classpath and
    experiment with its behavior.

    0๏ธโƒฃ Interested in the implementation details? Have a look at Add support for Ammonite REPL by default.

    ๐Ÿ‘ Better Metals and BSP integration ๐Ÿค˜ ๐Ÿ’ฏ

    ๐Ÿš€ BSP support in bloop v1.3.0 is vastly superior to that in v1.2.5. The new release implements a few non-implemented endpoints, fixes several non-reported issues in diagnostics and improves connection support and cancellation capabilities.

    The Metals integration is superior to that in v1.2.5 thanks to this
    non-exhaustive list of PRs:

    1. Guarantee cancellation upon sudden BSP client dropouts by jvican โฌ†๏ธ 2. Upgrade to BSP 2.0.0-M4 by tgodzik ๐Ÿ— 3. Implement BSP buildTarget/scalaMainClasses by marek1840 ๐Ÿ— 4. Implement BSP buildTarget/scalaTestClasses by marek1840
    2. Send out server BSP responses/notifications in order by jvican
    3. A few unlisted PRs that casually fix issues in BSP semantics

    โž• Add support for Scala 2.13 โ–ถ๏ธ

    ๐Ÿ‘ Bloop v1.3.0 finally adds support for Scala
    2.13.x
    .

    โž• Add support for JDK 9 and 11 โฉ

    ๐Ÿ‘ Contributed by @er1c, bloop v1.3.0 supports JDK 9 and JDK 11. If you run
    bloop with these Java runtimes, it is recommended to enable the full parallel
    GC with -XX:+UseParallelGC as compilation is faster.

    For this reason, Java 8 still remains the recommended runtime for the time
    0๏ธโƒฃ being and our installers might install it by default. In the future, we might
    โฌ†๏ธ consider upgrading to a newer Java runtime.

    1. Compile on Java9+ by er1c
    2. Add Java9+ reverse-compatible changes by er1c

    ๐Ÿ†• New Arch Linux installer ๐Ÿ„

    Contributed by TheElectronWill.

    ๐Ÿš€ Bloop has a new AUR package for Arch Linux that is updated by our release infrastructure.
    ๐Ÿง You can now install bloop in Arch Linux by running pacaur -S bloop or yaourt -S bloop.

    ๐Ÿ‘Œ Improved file watcher responsiveness โŒš๏ธ ๐Ÿ”ฅ

    ๐Ÿ‘ bloop v1.3.0 has better and snappier file watcher infrastructure, with
    protection against overflowing
    ๐Ÿ›  events
    and several fixes to
    ๐Ÿ› bugs reported after v1.2.5
    .
    ๐ŸŽ One of these bugs is a recurrent problems in macOS machines where Bloop
    server's JVM would crash due to uncleaned state in the Carbon-based file
    watcher.

    ๐Ÿ‘Œ Support for file watching in run commands has not yet been implemented. If
    you want to help, drop by bloop's Gitter channel and we will give
    you pointers to help implement it.

    Fix use of test arguments in bloop test ๐Ÿ“ˆ

    โœ… Running bloop test in your project or passing specific test arguments to Bloop's test runner could produce issues such as:

    [E] Unexpected error during remote test execution: 'Socket closed'.
    [E] Internal error when running tests: sbt.ForkMain$Run$RunAborted: java.net.SocketException: Broken pipe (Write failed)
    

    This pull request makes sure
    โœ… that we handling missing test frameworks better and that the above issues
    โœ… processing test arguments are gone.

    Improvements in build tools support (bloopInstall) ๐Ÿ› 

    ๐Ÿ‘Œ Improvements in sbt

    ๐Ÿ— Automatic support for integration tests in sbt builds

    โœ… sbt-bloop v1.3.0 will automatically export integration test
    ๐Ÿ”ง configurations
    to independent
    ๐Ÿ— build targets. If you have modified your sbt build to support integration tests
    ๐Ÿ— in your build, you can safely remove that logic.

    ๐Ÿ‘Œ Support sbt source dependencies by default

    ๐Ÿ‘ Contributed by olafurpg. Support for sbt project references was before
    hidden behind an specific sbt boolean setting. Now it's enabled by
    0๏ธโƒฃ default
    .

    Other

    1. Avoid duplication of projects in dependencies field by tkroman
    2. Fix small bug when exporting scalac and javac options in sbt by jvican

    ๐Ÿ‘Œ Improvements in Gradle

    1. Include Gradle's transitive dependencies in classpath by Arthurm1
    2. Ignore annotation processor in Gradle by tgodzik
    3. Don't add JAR dependencies of Gradle projects in the classpath by tgodzik
    4. Export source dependencies from Gradle by tgodzik

    ๐Ÿ— Thanks to these improvements, Metals will be able to support "Import Build"
    ๐Ÿš€ in Gradle projects in its next release.

    ๐Ÿ‘Œ Improvements in Mill

    ๐Ÿ”€ 1. Point Mill docs to merged bloop integration upstream by Baccata ๐Ÿ“š 2. Fix broken link in Mill documentation by perryao โšก๏ธ 3. Update Mill version by robby-phd

    ๐Ÿ— Thanks to these improvements, Metals will be able to support "Import Build"
    ๐Ÿš€ in mill builds in its next release.

    ๐Ÿ‘Œ Improvements in Maven

    ๐Ÿ”Œ 1. Avoid NPE when collecting resources in Maven's Bloop plugin by artyomboyko ๐Ÿ”Œ 2. Add source dependencies to Maven plugin โš  3. Fix warning about Maven being run in interactive mode by tgodzik ๐Ÿ 4. Fix Maven plugin in Windows by adding version of maven-invoker by tgodzik

    ๐Ÿ— Thanks to these improvements, Metals will be able to support "Import Build"
    ๐Ÿš€ in Maven projects in its next release.

    Miscellaneous

    ๐Ÿš€ Here's a list of key miscellaneous changes in this release.

    ๐Ÿ— 1. Synchronize CLI clients to the same build by jvican

    1. Don't recompile project if server dies by jvican ๐Ÿ”ง 3. Add -Dbloop.computation.cores and env var to configure thread pool by jvican
    2. Display Java version and Java home in bloop about by cquiroz โœ… 5. Add failing test case where source files are pulled in multiple times by jackkoenig โš  6. Don't print warnings when autocompleting by CucumisSativus ๐Ÿ— 7. Add buildpress, a tool to automatically export from any build tool to bloop by jvican ๐Ÿ‘ 8. Add support for standalone repo path in CLI args by tkroman
    3. Add contributing guide to the website by jvican โœ… 10. Improve bloop launcher's test suite by jvican
    4. Change SCOOP env variable to avoid conflict by Arthurm1 0๏ธโƒฃ 12. Show correct default for install.py '--dest' option by BardurArantsson
    5. Use a guaranteed unique name for temporary directories by propensive โšก๏ธ 14. Update website, enable versioning and assort fixes by jvican โšก๏ธ 15. Update contributing guide with expected error by CucumisSativus
    6. Fix installation link in README by jrudolph
    7. Encode UUIDs with Base 64 by odisseus
    8. Fix off-one error in fish autocompletions by 2m
    9. Use two cores for Bloop's computation pool in Travis by jvican โšก๏ธ 20. Update docs URL in Bloop error messages by AckoLF โšก๏ธ 21. Update Homebrew server log path by regadas

    ๐Ÿฑ Next steps ๐Ÿšถ

    ๐Ÿ— The recent work on supporting concurrent build clients, giving strong
    ๐Ÿš€ building guarantees to clients and the bloop launcher released in v1.2.5
    ๐Ÿ— has crystallized in a robust tooling framework to take our build tool
    integrations to the next level.

    Bloop v1.4.0 will enable sbt to offload compilation of projects
    automatically to Bloop, speeding up sbt project load and making the
    ๐ŸŽ cutting-edge performance improvements in Bloop available to sbt.
    The goal is that users will be able to use bloop without changing their
    current development workflow.

    ๐Ÿ— Such integrations for other build tools will also be possible. The bloop team
    volunteers to mentor people interested in contributing such integrations for
    ๐Ÿ— popular build tools such as mill or Gradle. If you're interested, please get
    in contact with us
    .

    ๐Ÿฑ Special acknowledgements ๐Ÿ™

    ๐Ÿš€ bloop v1.3.0 is an exciting release because of the vast amount of external
    contributors that we have had. Since v1.2.5, bloop has received
    contributions by more than 27 OSS contributors.

    โž• Additionally, the bloop team has welcomed three new more members: Tomasz
    Godzik
    (@tgodzik) and Marek ลปarnowski (@marek1840)
    from VirtusLab which have made this release a reality and Roman
    Tkalenko
    (@tkroman) which has recently started contributing in
    ๐Ÿ‘ท making Bloop better for CI workflows.

    ๐Ÿ‘€ I am thrilled to see the bloop community grow and be working with such
    skilled people in improving the tooling in the Scala community.

    ๐Ÿ”€ According to git shortlog -sn --no-merges v1.2.5..v1.3.0, 27 people
    ๐Ÿš€ contributed to this release: Guillaume R, Roman Tkalenko, tgodzik, Jorge,
    Eric Peters, Michaล‚ Gutowski, Marek ลปarnowski, Carlos Quiroz, Artyom Boyko,
    Arthur McGibbon, Tomasz Godzik, Torkel Rogstad, odisseus, AckoLF, ร“lafur Pรกll
    Geirsson, ArthurM, Bardur Arantsson, David Gregory, Enver Osmanov, Filipe
    Regadas, Johannes Rudolph, Jon Pretty, Martynas Mickeviฤius, Mike, Olivier
    Mรฉlois, Jack Koenig and Robby.

  • v1.2.5 Changes

    January 22, 2019

    ๐Ÿฑ bloop v1.2.5 ๐Ÿ„

    โฌ†๏ธ Upgrade guide ๐Ÿ”Œ

    โฌ†๏ธ This section describes the upgrade steps. If you don't have bloop installed, please read
    the installation instructions instead.

    โฌ†๏ธ If you're on macOS, upgrade to the latest version with:

    $ brew upgrade scalacenter/bloop/bloop $ brew services restart bloop
    

    โฌ†๏ธ If you're on Windows using scoop, upgrade to the latest version with:

    $ scoop upgrade bloop $ bloop ng-stop $ // Start the server as you usually do (via systemd, manually, desktop services)
    

    Otherwise, run:

    $ curl -L https://github.com/scalacenter/bloop/releases/download/v1.2.5/install.py | python
    $ bloop ng-stop
    $ // Start the server as you usually do (via systemd, manually, desktop services)
    

    Read the complete installation instructions in our Installation page.

    ๐Ÿฑ Highlights ๐Ÿ“š

    ๐Ÿ›  v1.2.5 is only a bugfix release.

    ๐Ÿ‘ Report diagnostics better via BSP

    ๐Ÿ›  Fix clearing of missing diagnostics when previous incremental compiler cycles
    ๐Ÿ‘€ have failed, see #804 for more
    information.

    Contributors ๐Ÿ‘ฅ

    ๐Ÿ”€ According to git shortlog -sn --no-merges v1.2.4..v1.2.5, 1 people contributed to this v1.2.5
    ๐Ÿš€ release: Jorge Vicente Cantero.

  • v1.2.4 Changes

    January 21, 2019

    ๐Ÿฑ bloop v1.2.4 ๐Ÿ„

    โฌ†๏ธ Upgrade guide ๐Ÿ”Œ

    โฌ†๏ธ This section describes the upgrade steps. If you don't have bloop installed, please read
    the installation instructions instead.

    โฌ†๏ธ If you're on macOS, upgrade to the latest version with:

    $ brew upgrade scalacenter/bloop/bloop $ brew services restart bloop
    

    โฌ†๏ธ If you're on Windows using scoop, upgrade to the latest version with:

    $ scoop upgrade bloop $ bloop ng-stop $ // Start the server as you usually do (via systemd, manually, desktop services)
    

    Otherwise, run:

    $ curl -L https://github.com/scalacenter/bloop/releases/download/v1.2.4/install.py | python
    $ bloop ng-stop
    $ // Start the server as you usually do (via systemd, manually, desktop services)
    

    Read the complete installation instructions in our Installation page.

    ๐Ÿฑ Highlights ๐Ÿ“š

    ๐Ÿ›  v1.2.4 is only a bugfix release.

    Don't deduplicate diagnostics too aggressively

    ๐Ÿ›  Fix an error where the deduplication logic of diagnostics to avoid duplicated scalac errors
    relied on pointer instead of offset.

    Contributors ๐Ÿ‘ฅ

    ๐Ÿ”€ According to git shortlog -sn --no-merges v1.2.3..v1.2.4, 1 people contributed to this v1.2.4
    ๐Ÿš€ release: Jorge Vicente Cantero.

  • v1.2.3 Changes

    January 17, 2019

    ๐Ÿฑ bloop v1.2.3 ๐Ÿ„

    โฌ†๏ธ Upgrade guide ๐Ÿ”Œ

    โฌ†๏ธ This section describes the upgrade steps. If you don't have bloop installed, please read
    the installation instructions instead.

    โฌ†๏ธ If you're on macOS, upgrade to the latest version with:

    $ brew upgrade scalacenter/bloop/bloop $ brew services restart bloop
    

    โฌ†๏ธ If you're on Windows using scoop, upgrade to the latest version with:

    $ scoop upgrade bloop $ bloop ng-stop $ // Start the server as you usually do (via systemd, manually, desktop services)
    

    Otherwise, run:

    $ curl -L https://github.com/scalacenter/bloop/releases/download/v1.2.3/install.py | python
    $ bloop ng-stop
    $ // Start the server as you usually do (via systemd, manually, desktop services)
    

    Read the complete installation instructions in our Installation page.

    ๐Ÿฑ Highlights ๐Ÿ“š

    ๐Ÿ›  v1.2.3 is only a bugfix release.

    Don't fail installation when Python 3 is used and http_proxy is defined

    ๐Ÿ‘€ See scalacenter/homebrew-bloop#4 for more details.

    ๐Ÿ”Š Disable failed process logs in launcher (#798)

    ๐Ÿ”Š This change clears up the logs of the launcher when processes are run and
    ๐Ÿ‘€ they fail. See the linked pull request for more details.

    Contributors ๐Ÿ‘ฅ

    ๐Ÿ”€ According to git shortlog -sn --no-merges v1.2.2..v1.2.2, 2 people contributed to this v1.2.2
    ๐Ÿš€ release: Jorge Vicente Cantero, marek1840.