Release 1.6.3
Bug fixes on top of 1.6.2.
Fixes
- In compatible mode,
justnow properly handles symbolic links that
occur in output directories or as explicit outputs. The problem was
that the default remote-execution protocol (which is used in
compatible mode) does not require the remote endpoint to store
symbolic links explicitly as blobs in CAS, whilejustinternally
does exactly that and is assuming symbolic links being available in
CAS. This fix now uploads any symbolic link that is received over the
network (e.g., as part of a Directory message) in compatible mode as
separate blob to the remote CAS.
Release notes for1.6.2 (2025-07-30)
Bug fixes on top of 1.6.1.
Fixes
just servecan now also work with a compatible remote-execution
service that relies on the length field of digests being set
correctly (as requested by the protocol). Previously, some blobs
were requested by correct hash but with size set to0. To keep
everything backwards compatible (both, when onlyserveor only
justgets updated), theServeTargetRequestof the internal
serveprotocol was extended by a new field where the client can
send a list of full blob digests asking the server to download
those before handling the request.- If
servereports an error, the full digest of the error-log
blob (including size) is shown to the user and not only the
hash. This allows inspection of the error log, even if a strict
compatible remote execution is used.
Release notes for 1.6.1 (2025-07-16)
Bug fixes on top of 1.6.0.
Fixes
justnow follows the protocol for blob splitting/splicing that was
standardized in bazelbuild/remote-apis#282
Before, this used to bejust-specific extension.- Fixed missing mandatory locking point of the Git cache in a
just serveservice. just-mrnow correctly maintains also the Git cache lock when
callingjustif repository configuration was involved,
preventing any unwanted intermediary repository garbage collection.- The invocation server now correctly reports the total number of
uncached actions. - Allow colons present in remote execution properties.
- Improvements to the documentation.
Note for package maintainers
The dependency on the remote-execution API has been changed to
require a newer version. As this is often provided as a separate
source archive, this might require additional changes.
Release notes for 1.6.0 (2025-06-27)
A feature release on top of 1.5.0, backwards compatible.
New features
just-mrnow supports logging of each invocation by setting
an appropriate configuration in the rc-file. Together with
the newly-added option--profileofjustthis can be used
to gather statistics on build times, cache hit rates, as well as
their evolution over time.- Computing a tree as overlays of other trees was added as a new
in-memory action. - The expression language has been extended to contain new
built-in functions"zip_with","zip_map".
Other changes
- The exit code 1 now strictly refers to build failure due to a
failing build action. Syntactical errors invoking the tool, as
well as errors during analysis now return separate exit codes.
Fixes
just executeandjust servenow create their pid and info
files atomically; so waiting processes can assume the content
to be available as soon as the requested file appears on the
file system.just servenow fetches trees from remote execution in parallel
and through its local CAS; this fixes a performance issue.- A bug was fixed that could cause the number of threads being
the square of what was specified during backing up artifacts of
export targets after build. just-mrnow also considers computed roots (as no-op) when
reporting progress.- The "generic" rule now properly detects staging conflicts, taking
the full inputs into account (and not only the runfiles). - Illegitimate symlinks in explicit source-tree references are now
rejected reliably. - An incorrect error handling in the evaluation of computed roots was fixed.
just execute: Symlinks to directories and files are properly
distinguished as requested by the remote-execution protocol.- Various improvements of the documentation.
Note for package maintainers
Any patching that used to patch etc/repos.json should now patch
etc/repos.in.json. Background: to allow linting with well-defined
dependencies, for the newly-added "lint" repository additional
dependencies are pulled in via just-lock to bootstrap the correct
versions of those tools; the local, manually-edited repository
configuration etc/repos.in.json still contains everything needed
for building and testing. So, to avoid accidentally trying to fetch
more than is absolutely needed, bin/bootstrap.py was changed to
use the original, manually-maintained etc/repos.in.json.