Repository navigation
v0.7.0: Scala 3.9.0, the newest libraries and plugins, and no zarr module - #31
Merged
Merged
Conversation
Scala 3.6.4 is no longer patched. Under -source:future, 3.9 no longer accepts implicit vals, and wants implicit arguments passed with using; its unused-symbol checks, errors under -Werror, found unused imports, lambda and pattern parameters, and an unused Order bound on the max of coordinates. Each test suite's PropertyCheckConfiguration becomes a given of the suite, which is preferred over the inherited one: a suite asking for 500 cases still runs 500. TestCoordinates joins the files whose imports serve only assertCompiles. The workflow names the new version.
… version iron 3.4.1, upickle and ujson 4.4.3, pureconfig 0.17.11, mouse 1.4.0, scala-graph 2.0.3, fs2-data-csv 1.14.1, fs2-io 3.14.0 and os-lib 0.11.10; for the tests, scalatest 3.2.20 and scalacheck 1.20.0 with scalatestplus' scalacheck-1-20. jzarr stays at 0.4.2, with the reason beside it. Since iron 3.1.0 a RefinedType is no longer a subtype of the type it refines, so the five refined types extend RefinedSubtype, which keeps them as they were. Since upickle 4.4.0 a read is traced by default, and an error's message is only the JSON path: the DistanceLike codec reads its parts untraced, so that its message still names the value's own error, as a new test checks.
…itory The zarr module read format-2 Zarr stores with jzarr 0.4.2, which brings Unidata's netCDF library (edu.ucar:cdm-core) and jblosc. cdm-core is not on Maven Central, so every build had to name Unidata's repository, and Java on GitHub's macOS runner now rejects that repository's certificate: looptrace's CI failed fetching cdm-core while publishing this library. roi depended on zarr only for readRoiData and its helper getOriginZYX, so roi and io, and whatever depends on them, brought all three. Nothing else here used them, no test covered them, and jzarr can't read format-3 stores. The module, the two functions, jzarr and the Unidata resolver are gone. roi names imaging, which it used and had through zarr. Closes #30.
looptrace builds and runs gerlib with Java 21. CI drops its Ubuntu job on Java 17 and tests on Java 21 alone, on Linux and macOS.
setup-sbt installs the newest sbt launcher unless told otherwise, now 2.0.12, and on 9 November GitHub answered every download of its zip with a 504, so every job failed in "Setup sbt". CI now installs the version project/build.properties names, as the job setup passes it to setup-sbt.
The entry said the pin avoided GitHub's failed downloads of sbt 2.0.12's zip. It doesn't: the same day, during an incident with timeouts on GitHub's release downloads, 1.13.1's zip failed too. What the pin does is install the launcher the build asks for, so a new sbt release can't change how CI starts the build.
The build preamble installed sbt with Homebrew on macOS, for runners whose setup-java no longer brought sbt. setup-sbt now installs the launcher on every runner, and the macOS log shows Homebrew's sbt shadowed by it, so the step only added a second sbt and about 7 s.
cchlanger
marked this pull request as ready for review
November 13, 2026 13:23
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
gerlib moves to Scala 3.9.0, the long-term support line, and to sbt 1.13.1. Its libraries and sbt plugins move to their newest releases within their major versions. The
zarrmodule goes, with jzarr and Unidata's repository, which only it needed. CI runs the scalafmt and scalafix checks, which it had skipped until now, and tests on Java 21 only. looptrace's move to Scala 3.9 (gerlichlab/looptrace#583) needs this release.Merge with a merge commit, not a squash or a rebase. The tag
v0.7.0is already pushed, on the version commitfb2edc6, and looptrace's submodule points at that commit. A merge commit puts it onmain. A squash or a rebase would leave both on a commit that isn't onmain.Closes #30.
Breaking
zarrmodule, and noreadRoiDataorgetOriginZYXinroi. A project that uses them can stay on v0.6.0. The one other user is reparafil, which pins v0.3.0 and Scala 3.5.2.Why the
zarrmodule goes (#30)edu.ucar:cdm-core, and jblosc. cdm-core isn't on Maven Central, so every build had to name Unidata's repository.roidepended onzarronly forreadRoiData, so every user ofroioriobrought all three. looptrace's JAR carried about 1,800 of their entries, and its build named Unidata's repository too.#30 proposed moving
readRoiDataintozarr. That would have kept Unidata's repository in gerlib's own build. It would also have stayed in looptrace's CI and image, which publish every module.Other changes
-source:future, 3.9 refusesimplicit valand wants explicit implicit arguments passed withusing. Each test suite'sPropertyCheckConfigurationis now agivenof the suite, which the compiler prefers over the inherited one.A: Orderbound ofmaxon coordinates, which now asks for less.RefinedSubtype:NonnegativeInt,NonnegativeReal,PositiveInt,PositiveRealandDistancenow extend it instead ofRefinedType. They stay subtypes of what they refine, as they were before iron 3.1.0, so aPositiveIntis still anInt.readby default, and a traced error's message is only the JSON path.DistanceLike's codec reads untraced, so its error still describes the problem with the value. A new test pins this.actions/setup-javav6;ubuntu-latest, and testedrunner.java-version, which doesn't exist. It now testsrunner.os == 'Linux'and the matrix's Java entry.These come after the tag, so the changelog lists them under "Unreleased".
Commits
d4d1c0fsbt 1.13.1.4b05638Scala 3.9.0.7e7bbecthe libraries.dc00a2ethe plugins and scalafix rules.e9bf4f8scalafmt 3.11.5, which aligns sixcasearrows anew.b1884f4the CI checks run.e73ed45nozarrmodule.fb2edc6version 0.7.0, taggedv0.7.0.00f4c7bCI tests on Java 21 only.98a7daeCI installs the sbt launcher the build asks for.a03c006the changelog says why the launcher is pinned.Checked
These checks ran on Java 21 (Zulu 21.0.11):
sbt "assembly; publishLocal", the command looptrace's Dockerfile runs, publishes the 12 modules. Nothing is downloaded from Unidata.cl/jvm_updates, for gerlichlab/looptrace#583):Before merging