Jar Jar Abrams 1.13.0 and sbt-assembly 2.1.4
Jar Jar Abrams 1.13.0 and sbt-assembly 2.1.4 are released.
Jar Jar Abrams is an experimental extension to Jar Jar Links, intended to shade Scala libraries.
Jar Jar Abrams 1.13.0 and sbt-assembly 2.1.4 are released.
Jar Jar Abrams is an experimental extension to Jar Jar Links, intended to shade Scala libraries.
JDK 21 just came out, and given its LTS status projects are encouraged to test their code on JDK 21. A few projects are already starting to test on JDK 22-ea as well. Here’s a quick tutorial of how to test your project on GitHub Actions with JDK 21 or JDK 22-ea using actions/setup-java.
For cross building on JDK 21, follow Setting up GitHub Actions with sbt on the official docs.
Hi everyone. On behalf of the sbt project, I’m happy to announce sbt 1.9.7 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.9.7
See 1.9.0 release note for the details on 1.9.x features.
IO.unzip. This was discovered and reported by Kenji Yoshida (@xuwei-k), and fixed by @eed3si9n in io#360.This is part 2 of implementing Rust’s cfg attribute in Scala. In part 1, I tried the annotation macro with a mixed result. I’ve implemented a version of @ifdef that works better.
cfg attribute do?Rust Programming Language says:
Rust has a special attribute,
#[cfg], which allows you to compile code based on a flag passed to the compiler.
This lets us write unit test in the same source as the library code like this:
...
#[cfg(test)]
mod tests {
#[test]
fn some_test() {
...
}
}
When I first heard about this, it sounded a bit absurd since I’ve never used languages that embeds tests into the main source code. But now that I’ve been working with Rust occasionally, I like the idea of being able to write the tests in the same source, especially for kind of code that can be exercised as functions. When it gets too messy, you can always split them out in src/test/scala/ or tests/ in Rust.
Update 2023-10-15: There’s now a better 0.2.0 that I implemented via pre-typer processing.
Rust has an interesting feature called cfg attribute, which is aware of the build configuration at the language level. This lets us write unit test in the same source as the library code like this:
...
#[cfg(test)]
mod tests {
#[test]
fn some_test() {
...
}
}
I implemented an experimental @ifdef macro that does something similar.
Jar jar Abrams 1.9.0 and sbt-assembly 2.1.3 are released with security vulnerability fixes.
Jar Jar Abrams is an experimental extension to Jar Jar Links, intended to shade Scala libraries.
Hi everyone. On behalf of the sbt project, I’m happy to announce sbt 1.9.6 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.9.6
See 1.9.0 release note for the details on 1.9.x features.
Update: ⚠️ sbt 1.9.5 is broken, because it causes Scala compiler to generate wrong class names for anonymous class on lambda. Please refrain from publishing libraries with it while we investigate. See cala/bug#12868 for details.
Hi everyone. On behalf of the sbt project, I’m happy to announce sbt 1.9.5 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.9.5
See 1.9.0 release note for the details on 1.9.x features.
-X is passed to scalacOptions zinc#1246 by @unkarjedyHi everyone. On behalf of the sbt project, I’m happy to announce sbt 1.9.4 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.9.4
See 1.9.0 release note for the details on 1.9.x features.
Hi everyone. On behalf of the tree-sitter-scala project, I am happy to announce tree-sitter-scala 0.20.2. The first two segments of the version number comes from the tree-sitter-cli that was used to generate the parser, and the last segment is our actual version number.
tree-sitter-scala is a Scala parser in C language, generated using Tree-sitter CLI, and conforming to the Tree-sitter API. Tree-sitter parsers are generally fast, incremental, and robust (ok with partial errors).
Hi everyone. On behalf of the sbt project, I’m happy to announce sbt 1.9.3 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.9.3
See 1.9.0 release note for the details on 1.9.x features.
As a code base becomes larger, it’s useful to have language tooling that can perform automatic refactoring. Thankfully, in 2016 Scala Center created Scalafix. In the announcement blog post Ólafur Geirsson wrote:
Scalafix takes care of easy, repetitive and tedious code transformations so you can focus on the changes that truly deserve your attention. In a nutshell, scalafix reads a source file, transforms usage of unsupported features into newer alternatives, and writes the final result back to the original source file.
Hi everyone. On behalf of the sbt project, I’m happy to announce sbt 1.9.2 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.9.2
See 1.9.0 release note for the details on 1.9.x features.
Hi everyone. On behalf of the sbt project, I’m happy to announce sbt 1.9.1 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.9.1
See 1.9.0 release note for the details on 1.9.x features.
Hi everyone. On behalf of the tree-sitter-scala project, I am happy to announce tree-sitter-scala 0.20.1. The first two segment of the version number comes from the tree-sitter-cli that was used to generate the parser, and the last segment is our actual version number.
tree-sitter-scala is a Scala parser in C language, generated using Tree-sitter CLI, and conforming to the Tree-sitter API. Tree-sitter parsers are generally fast, incremental, and robust (ok with partial errors).
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.9.0. This is the nineth feature release of sbt 1.x, a binary compatible release focusing on new features. sbt 1.x is released under Semantic Versioning, and the plugins are expected to work throughout the 1.x series. Please try it out, and report any issues you might come across.
The headline features of sbt 1.9.0 are:
sbt new, a text-based adventurereleaseNotesURL settingIntegrationTest configurationHi everyone. On behalf of the tree-sitter-scala project, I am happy to announce tree-sitter-scala 0.20.0. The first two segment of the version number comes from the tree-sitter-cli that was used to generate the parser, and the last segment is our actual version number.
tree-sitter-scala is a Scala parser in C language, generated using Tree-sitter CLI, and conforming to the Tree-sitter API. Tree-sitter parsers are generally fast, incremental, and robust (ok with partial errors).
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.9.0-RC2. This is the nineth feature release of sbt 1.x, a binary compatible release focusing on new features. sbt 1.x is released under Semantic Versioning, and the plugins are expected to work throughout the 1.x series. Please try it out, and report any issues you might come across.
The headline features of sbt 1.9.0 are:
sbt new, a text-based adventurereleaseNotesURL settingIntegrationTest configurationHi everyone. On behalf of the sbt project, I’m happy to announce sbt 1.8.3 patch release fixing a security vulnerability. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.8.3
See 1.8.0 release note for the details on 1.8.x features.
A two-day virtual/Tokyo hybrid ScalaMatsuri took place this weekend. Thanks to all the presenters, sponsors, and participants.
Lots of bumps and mishaps for sure, but hopefully it was a successful conference. I join as one of 16 ScalaMatsuri organizers, and also gave a talk and an open-mic session as well.
In sbt 2.0 ideas I wrote:
idea 3-A: limit dependency configuration to
CompileandTestHere are some more ideas to simplify sbt. sbt generally allows creating of custom dependency configuration, but it doesn’t work well. For the most part, anything that requires custom configuration should likely be handled using separate subproject instead.
Dependency configuration, such as Compile, Test etc, is a notion directly imported from Apache Ivy’s configuration, which allows custom configurations and extends-relationship among them. The shift in sbt 0.9 embraced configuration and enabled code reuse via inConfig(...)(...). However, generally the custom configuration often requires reimplementation of all tasks, and thus the complete knowledge of the internals.
There are various technical decisions around sbt and Zinc that impact the Scala ecosystem, but currently the process of adding new features or changes to existing feature is not well defined. For the most part, the contributors like Scala Center and I come up with ideas and execute them.
At the Tooling Summit in Lausanne this week, Iulian Dragos suggested we adopt “a lightweight process based on RFC (request for comments) docs that can serve as a design document.” In general, it would be a good idea to capture motivations and design intent of major changes.
In sbt 2.0 ideas I wrote:
idea 6: more disk cache and remote cache
Extending the idea of cached compilation in sbt 1.4.0, we should generalize the mechanism so any task can participate in the remote caching.
Here are some more concrete ideas for caching.
To summarize the general problem space, currently setting up disk caching for tasks is a manual work, so it’s under-utilized. Remote caching is limited to cached compilation.
It’s spring time, and spring makes us hopeful. I’ll be attending Tooling Summit next week, so I think this would be a good time to gather my toughts around sbt 2.
Bazel generally prefers monoversioning, in which all targets in the monorepo uses the same version given any library (JUnit or Pandas). Monoversioning greatly reduces the version conflict concerns within the monorepo, and in return enables better code reuse. In practice, monoversioning has a drawback of tying everyone at the hip. If service A, B, C, D, etc are all using Big Framework 1.1, it becomes costly to migrate all to Big Framework 1.2 if there might be a regression. Years would go by, and Big Framework 2.0 might come out, and again, it would be too risky.
Jar jar Abrams 1.8.2 and sbt-assembly 2.1.1 are released.
Jar Jar Abrams is an experimental extension to Jar Jar Links, intended to shade Scala libraries.
Released scalaxb 1.9.1 with Scala 3 support contributed by @fthomas.