Releases: TraceMachina/nativelink
v0.5.4
NativeLink v0.5.4
This release focuses on stability, implements various quality-of-life improvements, and adds experimental support for high-availability deployments.
Important
While this release doesn't contain breaking changes, the config schema changed to use arrays of named specs for stores and schedulers. This release supports both schemas, but the next release will remove support for the old one in a breaking change.
// Old:
"stores": {
"SOMESTORE": {
"memory": {}
}
},
"schedulers": {
"SOMESCHEDULER": {
"simple": {}
}
}
// New:
"stores": [
{
"name": "SOMESTORE",
"memory": {}
}
],
"schedulers": [
{
"name": "SOMESCHEDULER",
"simple": {}
}
]
🐋 Images
docker pull ghcr.io/tracemachina/nativelink:v0.5.4
# This image copies nativelink to a specified location such as a mounted
# volume. You can then re-mount that volume into your worker container.
docker pull ghcr.io/tracemachina/nativelink-worker-init:v0.5.4
# The nativelink-worker-lre-cc remote execution container for Bazel with a
# Clang/LLVM 19 C++ toolchain:
docker pull ghcr.io/tracemachina/nativelink-worker-lre-cc:v0.5.4
See the contribution docs for instructions on how to build from source with Bazel, Cargo, and Nix.
📜 Changelog
✨ Major changes
- Schedulers can now have a Redis backend. This lets you deploy NativeLink in a high-availability mode—that is, without a single point of failure (#1343).
- Changed the config schema as outlined above (#1496).
- Implemented Local Remote Execution for Rust (#1510).
- Added a new
OriginEvent
API which lets you trace data as it flows through NativeLink (#875). - Introduced new documentation and examples to aid with testing remote execution (#1498).
🩹 Notable fixes
- Fixed an interaction between
S3Store
andVerifyStore
that could lead to cache poisoning (#1383). - Fixed an issue where configurations using raw
FilesystemStore
s required an explicit--digest_function
flag in Bazel and which could lead to nonfunctional deployments in Reclient. If you used the--digest_function
flag before to work aroundmissing digest
issues, you can remove this now (#1489).
See CHANGELOG.md for the full list of changes.
❤️ Thanks to our Contributors
This release contains contributions from @SchahinRohani, @aleksdmladenovic, @amonshiz, @blakehatch, @caass, @jaroeichler, @KGrewal1, @swarren12, @WillDoItMyself and various contributors at @TraceMachina.
v0.5.3
NativeLink v0.5.3
This is a hotfix release to fix the VerifyStore which was broken in v0.5.1
.
🐋 Images
docker pull ghcr.io/tracemachina/nativelink:v0.5.3
# New! This image copies nativelink to a specified location such as a mounted
# volume. You can then re-mount that volume into your worker container.
docker pull ghcr.io/tracemachina/nativelink-worker-init:v0.5.3
# The nativelink-worker-lre-cc remote execution container for Bazel with a
# Clang/LLVM 18 C++ toolchain:
docker pull ghcr.io/tracemachina/nativelink-worker-lre-cc:v0.5.3
See the contribution docs for instructions on how to build from source with Bazel, Cargo, and Nix.
📜 Changelog
🩹 Notable Fixes
- Fix verify_size w/ verify_hash set to true in VerifyStore (#1273)
- Fix bug in redis store when zero data stored but data does not exist (#1304)
See CHANGELOG.md for the full list of changes.
❤️ Thanks to our Contributors
This release contains contributions from various contributors at @TraceMachina.
v0.5.1
NativeLink v0.5.1
This is a hotfix release to unbreak the S3 store which was broken in v0.5.0
.
🐋 Images
docker pull ghcr.io/tracemachina/nativelink:v0.5.1
# New! This image copies nativelink to a specified location such as a mounted
# volume. You can then re-mount that volume into your worker container.
docker pull ghcr.io/tracemachina/nativelink-worker-init:v0.5.1
# The nativelink-worker-lre-cc remote execution container for Bazel with a
# Clang/LLVM 18 C++ toolchain:
docker pull ghcr.io/tracemachina/nativelink-worker-lre-cc:v0.5.1
See the contribution docs for instructions on how to build from source with Bazel, Cargo, and Nix.
📜 Changelog
🩹 Notable Fixes
- Unbreak the S3 store (#1248).
See CHANGELOG.md for the full list of changes.
❤️ Thanks to our Contributors
This release contains contributions from various contributors at @TraceMachina.
v0.5.0
NativeLink v0.5.0
This release implements several major overhauls: A new scheduler, better metrics and new docs.
Most changes are non-breaking. However, you might want to revisit your existing deployments since you no longer need to bundle NativeLink in remote execution worker images.
🐋 Images
docker pull ghcr.io/tracemachina/nativelink:v0.5.0
# New! This image copies nativelink to a specified location such as a mounted
# volume. You can then re-mount that volume into your worker container.
docker pull ghcr.io/tracemachina/nativelink-worker-init:v0.5.0
# The nativelink-worker-lre-cc remote execution container for Bazel with a
# Clang/LLVM 18 C++ toolchain:
docker pull ghcr.io/tracemachina/nativelink-worker-lre-cc:v0.5.0
See the contribution docs for instructions on how to build from source with Bazel, Cargo, and Nix.
📜 Changelog
❌️ Breaking changes
- The
VerifyStore
now auto-detects the digest function. To migrate, removehash_verification_function
settings on your config. You can toggle whether hashes should be verified with the newverify_hash
boolean setting (#899).
✨ Major changes
- The scheduler internals have been rewritten. This is an important step towards high availability deployments (#1169).
- Quantities in the configs now support human readable strings such as
10s
and15KiB
(#891). - NativeLink now has experimental support for the Build Event Protocol (BEP) via the
experimental_bep
config option (#961). - Worker images no longer need to bundle the
nativelink
executable (#1013). See the chromium example which shows how to levarage this viainitContainers
in K8s. - The documentation infrastructure has been rewritten (#1056) and doc contents were overhauled (#1138). A continuously updated configuration reference is available in the docs.
- Metrics are now much more fine-grained and flexible (#1192).
See CHANGELOG.md for the full list of changes.
❤️ Thanks to our Contributors
This release contains contributions from @SchahinRohani, @aleksdmladenovic, @Abhinav-Chdhary, @eltociear, @ibilalkayy, @matdexir and various contributors at @TraceMachina.
v0.4.0
NativeLink v0.4.0
This release implements some big quality-of-life features: More readable logs, Redis support, a new development cluster, and various other improvements to stability and overall user experience.
Installation
🦀 Cargo
cargo install --git https://github.com/TraceMachina/nativelink --tag v0.4.0
❄️ Nix
nix run github:TraceMachina/nativelink/v0.4.0
🐋 Docker
docker run ghcr.io/tracemachina/nativelink:v0.4.0
# For the nativelink-worker-lre-cc remote execution container
# for Bazel with an LLVM 18 C++ toolchain:
docker run ghcr.io/tracemachina/nativelink-worker-lre-cc:v0.4.0
📜 Changelog
❌️ Breaking changes
- Health status checks have been factored out into a dedicated service (#823). To migrate, add a
health: {}
field to the"services"
object.
✨ Major changes
- Introduced a new
native-cli
command to develop NativeLink and custom toolchains against a local Kubernetes Cluster (#851, #872). The Kubernetes examples have been updated accordingly. Thenative-cli
is importable in external nix flakes via thepackages.${system}.native-cli
flake output. - All logging now uses the
tracing
crate (#871). This vastly improves the readability of NativeLink's logs. - Introduced a new
RedisStore
(#393). Seenativelink-config/src/stores.rs
for usage instructions.
See CHANGELOG.md for the full list of changes.
❤️ Thanks to our Contributors
This release contains contributions from @blizzardc0der, @chrisstaite-menlo, @aleksdmladenovic and various contributors at @TraceMachina.
v0.3.0
NativeLink v0.3.0
This is a fairly large release with various new features and stability improvements.
Installation
🦀 Cargo
cargo install --git https://github.com/TraceMachina/nativelink --tag v0.3.0
❄️ Nix
nix run github:TraceMachina/nativelink/v0.3.0
🐋 Docker
docker run ghcr.io/tracemachina/nativelink:v0.3.0
# For the nativelink-worker-lre-cc worker remote execution container
# for Bazel with an LLVM 17 C++ toolchain:
docker run ghcr.io/tracemachina/nativelink-worker-lre-cc:v0.3.0
📜 Changelog
❌️ Breaking changes
- Removed completeness checking logic in CacheLookupScheduler (#826). To migrate, remove the
"cas_store"
field inCacheLookupScheduler
configurations and use theCompletenessCheckingStore
wrapper. - Generalized LRE to arbitrary toolchains and refactored image publishing worflows (#728). NativeLink containers no longer ship with
cacerts
. Instead, an external CA needs to be mounted into the image explicitly. See deployment-examples/kubernetes for updated deployment instructions. - The
/status
endpoint now returns a JSON status object (#636). - The
GRPCScheduler
andGRPCStore
no longer take a string as endpoint but a newGRPCEndpointConfig
object which bundles the endpoint string and TLS configuration and has an optional field for concurrency limits (#627). - Unknown fields during configuration initialization will now raise errors (#693). This breaks configurations which were already faulty but would previously be accepted silently.
✨ Major changes
- NativeLink now supports mTLS (#470)
- The
VerifyStore
now supports blake3 (#575) - Documentation is now generated via Docusaurus (#586)
S3Store
may now disable http2 (#604)- Bazel builds now use Bzlmod (#626)
CompressionStore
andExistenceCacheStore
now support metrics (#647)- NativeLink Production deployments are now built against musl libc (#583) and use mimalloc (#749) as memory allocator.
- Action directories during remote execution now run under a configurable root directory (#752)
- Added a chromium/Reclient example (#786)
- A new
nativelink-worker-lre-cc
image for C++ remote execution is now published frommain
(#794) - A new
nativelink-debug
target has been added to the nix flake to aid debugging concurrency issues (#811)
See CHANGELOG.md for the full list of changes.
❤️ Thanks to our Contributors
This release contains contributions from @blizzardc0der, @chrisstaite-menlo, @DolceTriade, @steed924 and various contributors at @TraceMachina.
v0.2.0
Nativelink v0.2.0
This is a quality-of-life release with various updates to dependencies, improvements to installation and usage instructions, as well as improved publishing workflows.
Installation
🦀 Cargo
cargo install --git https://github.com/TraceMachina/nativelink --tag v0.2.0
❄️ Nix
nix run github:TraceMachina/nativelink/v0.2.0
🐋 Docker
docker run ghcr.io/tracemachina/nativelink:v0.2.0
📜 Changelog
❌️ Breaking changes
- Renamed the
cas
executable tonativelink
. Cargo installations should now invoke it asnativelink ./config.json
. The container entry point is now/bin/nativelink
(#573).
✨ Major changes
- Starting with this release we publish SemVer-tagged containers in addition to the rolling containers (#569).
- Remote execution containers for LRE toolchains are now based on LLVM 17.0.6 (#557).
- Fixed an issue in the S3 store where certain deployments wouldn't correctly register provided credentials (#494).
See CHANGELOG.md for the full list of changes.
❤️ Thanks to our Contributors
This release contains contributions from @steed924 and various contributors at @TraceMachina.
v0.1.0
🎉 Nativelink v0.1.0
We're excited to publish our initial release!
Installation
🦀 Cargo
cargo install --git https://github.com/TraceMachina/nativelink --tag v0.1.0
❄️ Nix
nix run github:TraceMachina/nativelink/v0.1.0
🐋 Docker
docker run ghcr.io/tracemachina/nativelink:wm6l3qi72hv9phn44853ir1dxs3q7k65
📜 Changelog
The changelog for this release contains commits from the beginning of the project until the release of v0.1.0
. See CHANGELOG.md for the full list of changes.
❤️ Thanks to our Contributors
This release contains contributions from @chrisstaite-menlo, @steed924, @jaroeichler, @TripleKai, @mhz5, @cormacrelf, as well as various contributors at @TraceMachina.