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 support

    Our 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 through coursier 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
    ClassNotFoundExceptions 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. Bloop v.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, and bloop 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
    ๐Ÿ‘ and sbt. 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 and bloop help always succeed #1252

    ๐Ÿ‘‰ Use runtime classpaths in Gradle #1250

    Swap classpath and resources 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 #1216

    Report 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 #1212

    Hide 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 #1203

    Don'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 #1171

    Replace 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 #1145

    Ignore 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 ClassNotFoundExceptions [#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 #1083

    Strip -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 this v1.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.