Repository navigation
Releases
v0.0.8
Zabel v0.0.8 binaries for Linux and macOS on aarch64 and x86_64.
[v0.0.8] - 2026-09-06
2026-08-30
- Made
repository_ctx.path(Label)validate the Label's package without
implicitly watching the named file by default. Added
--noincompatible_no_implicit_watch_labelto restore Bazel's implicit watch;
repository_ctx.readandrepository_ctx.patchretain their own watch modes. - Stored BUILD attribute defaults once per rule declaration and retained
per-target overrides. Across four matched LLVM loading-query pairs, median
peak RSS fell 14.52% and median wall time fell 8.37%.
v0.0.7
Zabel v0.0.7 binaries for Linux and macOS on aarch64 and x86_64.
[v0.0.7] - 2026-08-21
2026-08-20
- Published Bazelisk-compatible raw executables alongside release archives for
Linux and macOS onaarch64andx86_64, with verified SHA-256 checksums for
all eight assets. - Reduced configured-target and provider memory and evaluation overhead by
borrowing generic depset topology during provider freezing and eliminating
redundant configured-action materialization, discarded execution
configurations, and temporary provider tuples.
2026-08-19
- Reduced Starlark evaluation across 262 source-matched benchmarks by 15.38%
retired instructions, 10.74% CPU cycles, and 9.61% wall time through
specialized compiled calls and arithmetic; all 16,792 allocation controls
remained unchanged.
2026-08-18
- Added Bazel-compatible
build --nobuild, which validates configured target
analysis without executing actions or creating build outputs. - Reduced BuildBuddy
test //...wall time from 577 s to 220 s and zero-CPU
time from 155 s to 14 s across the same 610 passing tests by hydrating remote
test logs through asynchronous Content Addressable Storage reads. - Added Bazel-compatible remote-action profiling for execution,
WaitExecution, queueing, worker input fetch, execution, and upload while
keeping concurrent build and test completion slots full. - Matched Bazel
aqueryaction keys, symlink inputs, and label-order checksums
for BuildBuddy repositories while reducing redundant repository scans. - Reduced Starlark module-definition allocations from 1,057 to 13 in a
522-function benchmark, with 5.09% fewer retired instructions and 5.22% fewer
CPU cycles.
2026-08-17
-
Replaced cooperative Starlark profiling with genuine 1 ms CPU-triggered
SIGPROFsampling, preserving native-call stacks and source attribution
with approximately 0.4% retired-instruction overhead on LLVM builds. -
Supported selected BLAKE3 or SHA-256 for source files, repository inputs,
Merkle trees, remote Content Addressable Storage, ByteStream transfers,
remote execution, requested outputs, and uploaded Build Event Service
profiles while preserving Bazel's fixed SHA-256 ActionKey and
algorithm-specific integrity contracts. -
Resolved recursive workspace
.bazelrcimports, authenticated user
.bazelrcselections, command scopes, selected--configvalues,
platform-specific configurations, and startup digest selection before
creating remote-execution or Build Event Service clients. -
Opened the authenticated workspace once before startup digest and Build Event
Service configuration, with a clear missing-workspace diagnostic. -
Transferred accepted non-watch
cqueryoutput buffers without copying or
temporary disk spill while preserving validation and atomic output. -
Added Bazel-compatible stable and volatile workspace-status files, stamped
genrules, custom status shell commands,--embed_label, and
SOURCE_DATE_EPOCH; stable projection 29 and volatile projection 30 feed
execution projection 31 without invalidating actions for volatile changes. -
Expanded producer-authenticated TreeArtifact inputs for Go and other
ordinary Spawn and parameter-file actions, and materialized requested
top-level TreeArtifact directories, including empty directories, verified
child downloads, producer recovery, and child-only Build Event Service
reporting. -
Accepted dependency-provider generic depsets directly in
Args.add_all,
Args.add_joined, andTemplateDict.add_joinedwhile preserving
producer-qualified depset identity. -
Lazily exposed authenticated
FilesToRunProviderrunfiles and repo-mapping
manifest artifacts from retained producer-owned runfiles actions. -
Implemented Bazel-compatible
DefaultInfoconstruction and nested provider
forwarding with sparsely retained executable and legacy runfiles and exact
publicfiles,files_to_run,data_runfiles, anddefault_runfiles. -
Preserved authenticated foreign-provider
FileArtifact identities in
Args.add_allandArgs.add_joinedaction argument lists. -
Followed direct-sibling source-directory symlinks through authenticated
source observations when constructing action-input Merkle trees. -
Matched Bazel's
OutputPathsMode.STRIPfor eligible Go and other Spawn
actions, including collision-safe derived paths,pm-<original-config>
ActionKeys,cfgexecution andaquerypaths, virtual parameter files, and
selected SHA-256 or BLAKE3 action inputs and outputs. -
Resolved configurable top-level
alias(actual = select(...))in exact and
wildcard builds, including authenticated rule and source-file actuals. -
Analyzed native
config_settingand grouped settings with producer-owned
matching validation, canonical empty Bazel providers, and no additional
DICE dependencies. -
Analyzed native
platformrules through existing effective-platform DICE
producers with complete immutable typedPlatformInfoproviders and no
common retained-row growth. -
Analyzed native
constraint_settingwith genuineConstraintSettingInfo,
NODEPdefault values, emptyDefaultInfo, and Bazel-gated provider
members. -
Applied Bazel's default
["manual"]tags to native configuration,
platform, constraint, andtoolchainrules while preserving explicit
tag overrides and declaration order. -
Exposed package-owned
ctx.attr.testonlywith Bazel package defaults,
test-rule defaults, and explicit attribute overrides. -
Corrected
config_setting(flag_values=...)to prefer configured
FeatureFlagInfoover raw build-setting values, fixingrules_python
python_version_major_minorselection. -
Resolved incoming rule transitions and aliases before reading configured
FeatureFlagInfofrom authenticated final configured targets. -
Used canonical
Labelvalues for repository-rule attributes, enabling
Label.same_package_labelandLabel.relativeinrules_pythonwheel
repositories. -
Unified direct repository-rule
Labelresolution under authenticated
declaring-module mappings and producer-owned repository sources. -
Canonicalized generated repository-rule Label attributes through the
authenticated module-extension mapping already retained in generated
repository specifications. -
Executed authenticated repository-created executable symlinks, including
rules_pythonPython interpreter symlinks. -
Executed
rules_pythoninterpreter symlinks across generated repositories
using authenticated executable manifests without adding DICE dependencies. -
Resolved
StarlarkPath.realpathfor repository-private and generated
repository symlinks used byrules_pythonPython interpreters. -
Exposed
return_code,stderr, andstdoutin
dir(repository_ctx.execute(...))forrules_pythonrepository commands. -
Extracted ZIP entries with permission-only or special metadata as regular
files, matching Bazel and supportingcoloramaPython wheels. -
Supported
repository_ctx.extractfor private wheel archives created by
repository_ctx.execute, matching Bazel repository behavior. -
Enumerated authenticated repository-private directories and extracted wheel
contents during recursiverules_pythonrepository processing. -
Supported repository-generated files as
repository_ctx.templateinputs
while preserving authenticated source ownership and Bazel watch semantics. -
Supported Bazel Python
py_internal.declare_constant_metadata_fileand
producer-owned constant-metadata build-data artifacts. -
Implemented
py_internal.cc_helper.is_valid_shared_library_artifactand
configuration-ownedpy_internal.stamp_binaries(ctx)for Bazel-compatible
Python shared-library classification and binary stamping. -
Ignored syntactically valid, nonvisible String action-toolchain labels when
automatic execution groups are disabled, matching Bazel. -
Loaded Bazel private-builtins exported rules into
.bzlnative namespaces,
preserved root-onlyinject_repo, and kept the existing BuildBuddy
workspace unmodified without patching Gazelle, adding ZabelMODULE.bazel
entries, or applying child-module repository injections. -
Accepted inherited
restricted_to = Noneforwarded byrules_docker;
nonempty legacy environment constraints remain unsupported. -
Implemented
native.repo_name()and default-enabled legacy
native.repository_name()using the active BUILD package's canonical
repository identity. -
Propagated owner rule tags, network restrictions, execution requirements,
execution-info modifiers, and path-stripping eligibility to ordinary Spawn,
C++ compile, native genrule, parameter-file, and test actions. -
Applied literal native
genrule.exec_propertiesto authenticated execution
platforms and remote commands, including container-image, network, and CPU
properties; configurable native values remain unsupported. -
Resolved native
genrulecommand selectors through their existing
authenticated configured matcher even whensrcsis empty. -
Assigned native
genqueryQueryResultActionits authenticated configured
ActionOwnerand existing execution-platform settings. -
Added deterministic MODULE-extension
modextwdworking directories,
keyed pre-stack admission, FILE/DIR/ENOENT watch observations, and
authenticated asynchronous extension command execution. -
Coordinated concurrent module-extension workspace leases across processes
with cancellable waiting and deadlock-free same-process admission. -
Verified repository downloads and executable outputs with SHA-256,
SHA-384, or SHA-512 integrity, and reused existing authenticated Bazel
repository-cache entries with exact canonical-ID restrictions. -
Normalized uppercase and mixed-case SHA-256 download checksums before
repository and module-extension download observation, matching Bazel. -
Verified
repository_ctx.download_and_extractwith SHA-256, SHA-384, or
SHA-512 integrity, e...
v0.0.6
Zabel v0.0.6 binaries for Linux and macOS on aarch64 and x86_64.
[v0.0.6] - 2026-08-17
2026-08-17
- Reduced incremental LLVM
build --watchC-source rebuilds from approximately
10.5 s to 1.7 s and subsequent unchangedBUILD.bazelrebuilds from 6.1 s to
0.11 s by reusing DICE action and configured-owner publications; a changed
source still executes exactly one remoteCppCompile. - Reduced configured-analysis memory by shrinking provider-builder field rows
from 72 to 32 bytes, storing 272-byte C++ feature headers only when present,
and eliminating duplicate provider/depset copies, constructor-field lookups,
File-depset traversal state, and provider-root materialization scratch tasks. - Reduced Starlark evaluation and native
CppCompileregistration overhead by
reusing compiler-owned registers, function results, and authenticated
producer values; reduced--starlark_cpu_profileoverhead while preserving
native-call and source-line attribution. - Reduced Bzlmod and configured-analysis work by reusing selected registry
MODULE.bazelevidence, avoiding duplicate configured-alias resolution, and
skipping empty toolchain requests.
2026-08-16
- Added Bazel-compatible flaky test retries with configured defaults, ordered
--flaky_test_attemptsoverrides, repeated execution of the same remote
action, preserved failed-attempt logs, andFLAKYtest results. - Added repeated remote test execution with
--runs_per_testand
Bazel-compatible--cache_test_results, includingexternaltests. - Matched Bazel's mixed-target test builds, including
--build_tests_only,
generated outputs, manual targets, and build-failure ordering. - Added authenticated expansion of direct
TreeArtifactinputs in
parameter-file actions, includingDirectoryExpander.expand,
Args.add_all(map_each=...),Args.add_joined(map_each=...), and
zero-capture local mapper functions. - Expanded Bazel configuration and toolchain compatibility with target-platform
constraints, platform-named transition outputs, selected late-bound
transition defaults, and leading negative lookahead in
--modify_execution_info. - Added recursive BUILD
glob()patterns with wildcard directory components
before**, including*/wasm/**andbase/*/*/**. - Expanded Bazel rule and repository compatibility with
ctx.superrule
inheritance, forwardedDefaultInfoexecutable and data runfiles,
canonicalrepository_ctx.attr.name, and authenticated external-repository
working directories. - Started recording substantial Zabel changes in
CHANGELOG.mdand publishing
entries added since the previous successful binary release. - Recovered requested remote outputs, including
build --watchoutputs, and
evicted TreeArtifact children by reexecuting their authenticated producers,
including cached outputs, missing source inputs, and safe watch cancellation
when source files change. - Implemented connection-owned gRPC keepalive with authenticated
PING
acknowledgements, gracefulGOAWAYstream draining, complete TLS records,
and automatic connection recovery.
2026-08-15
- Added
zabel testwith package and recursive target patterns,test_suite
expansion, manual-test filtering, configured timeouts and sharding,
producer-owned remoteTestRunneractions, Bazel test output roots, and
test spawn environments. - Reduced retired Starlark evaluation instructions by 16.98% across 215
workloads by trusting compiler-produced bytecode inReleaseFastbuilds,
without increasing allocations. - Shared default registry, repository, archive, download, ActionCache, CAS,
and host-platform caches across workspaces under the captured
~/.cache/zabeldirectory.