Skip to content

Releases

v0.0.8

Choose a tag to compare

@dzbarsky dzbarsky released this 06 Sep 22:54

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_label to restore Bazel's implicit watch;
    repository_ctx.read and repository_ctx.patch retain 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

Choose a tag to compare

@dzbarsky dzbarsky released this 21 Aug 05:24

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 on aarch64 and x86_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 aquery action 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
    SIGPROF sampling, 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 .bazelrc imports, authenticated user
    .bazelrc selections, command scopes, selected --config values,
    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 cquery output 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, and TemplateDict.add_joined while preserving
    producer-qualified depset identity.

  • Lazily exposed authenticated FilesToRunProvider runfiles and repo-mapping
    manifest artifacts from retained producer-owned runfiles actions.

  • Implemented Bazel-compatible DefaultInfo construction and nested provider
    forwarding with sparsely retained executable and legacy runfiles and exact
    public files, files_to_run, data_runfiles, and default_runfiles.

  • Preserved authenticated foreign-provider File Artifact identities in
    Args.add_all and Args.add_joined action argument lists.

  • Followed direct-sibling source-directory symlinks through authenticated
    source observations when constructing action-input Merkle trees.

  • Matched Bazel's OutputPathsMode.STRIP for eligible Go and other Spawn
    actions, including collision-safe derived paths, pm-<original-config>
    ActionKeys, cfg execution and aquery paths, 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_setting and grouped settings with producer-owned
    matching validation, canonical empty Bazel providers, and no additional
    DICE dependencies.

  • Analyzed native platform rules through existing effective-platform DICE
    producers with complete immutable typed PlatformInfo providers and no
    common retained-row growth.

  • Analyzed native constraint_setting with genuine ConstraintSettingInfo,
    NODEP default values, empty DefaultInfo, and Bazel-gated provider
    members.

  • Applied Bazel's default ["manual"] tags to native configuration,
    platform, constraint, and toolchain rules while preserving explicit
    tag overrides and declaration order.

  • Exposed package-owned ctx.attr.testonly with Bazel package defaults,
    test-rule defaults, and explicit attribute overrides.

  • Corrected config_setting(flag_values=...) to prefer configured
    FeatureFlagInfo over raw build-setting values, fixing rules_python
    python_version_major_minor selection.

  • Resolved incoming rule transitions and aliases before reading configured
    FeatureFlagInfo from authenticated final configured targets.

  • Used canonical Label values for repository-rule attributes, enabling
    Label.same_package_label and Label.relative in rules_python wheel
    repositories.

  • Unified direct repository-rule Label resolution 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_python Python interpreter symlinks.

  • Executed rules_python interpreter symlinks across generated repositories
    using authenticated executable manifests without adding DICE dependencies.

  • Resolved StarlarkPath.realpath for repository-private and generated
    repository symlinks used by rules_python Python interpreters.

  • Exposed return_code, stderr, and stdout in
    dir(repository_ctx.execute(...)) for rules_python repository commands.

  • Extracted ZIP entries with permission-only or special metadata as regular
    files, matching Bazel and supporting colorama Python wheels.

  • Supported repository_ctx.extract for private wheel archives created by
    repository_ctx.execute, matching Bazel repository behavior.

  • Enumerated authenticated repository-private directories and extracted wheel
    contents during recursive rules_python repository processing.

  • Supported repository-generated files as repository_ctx.template inputs
    while preserving authenticated source ownership and Bazel watch semantics.

  • Supported Bazel Python py_internal.declare_constant_metadata_file and
    producer-owned constant-metadata build-data artifacts.

  • Implemented py_internal.cc_helper.is_valid_shared_library_artifact and
    configuration-owned py_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 .bzl native namespaces,
    preserved root-only inject_repo, and kept the existing BuildBuddy
    workspace unmodified without patching Gazelle, adding Zabel MODULE.bazel
    entries, or applying child-module repository injections.

  • Accepted inherited restricted_to = None forwarded by rules_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_properties to authenticated execution
    platforms and remote commands, including container-image, network, and CPU
    properties; configurable native values remain unsupported.

  • Resolved native genrule command selectors through their existing
    authenticated configured matcher even when srcs is empty.

  • Assigned native genquery QueryResultAction its authenticated configured
    ActionOwner and existing execution-platform settings.

  • Added deterministic MODULE-extension modextwd working 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_extract with SHA-256, SHA-384, or
    SHA-512 integrity, e...

Read more

v0.0.6

Choose a tag to compare

@dzbarsky dzbarsky released this 17 Aug 22:34

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 --watch C-source rebuilds from approximately
    10.5 s to 1.7 s and subsequent unchanged BUILD.bazel rebuilds from 6.1 s to
    0.11 s by reusing DICE action and configured-owner publications; a changed
    source still executes exactly one remote CppCompile.
  • 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 CppCompile registration overhead by
    reusing compiler-owned registers, function results, and authenticated
    producer values; reduced --starlark_cpu_profile overhead while preserving
    native-call and source-line attribution.
  • Reduced Bzlmod and configured-analysis work by reusing selected registry
    MODULE.bazel evidence, 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_attempts overrides, repeated execution of the same remote
    action, preserved failed-attempt logs, and FLAKY test results.
  • Added repeated remote test execution with --runs_per_test and
    Bazel-compatible --cache_test_results, including external tests.
  • Matched Bazel's mixed-target test builds, including --build_tests_only,
    generated outputs, manual targets, and build-failure ordering.
  • Added authenticated expansion of direct TreeArtifact inputs in
    parameter-file actions, including DirectoryExpander.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/** and base/*/*/**.
  • Expanded Bazel rule and repository compatibility with ctx.super rule
    inheritance, forwarded DefaultInfo executable and data runfiles,
    canonical repository_ctx.attr.name, and authenticated external-repository
    working directories.
  • Started recording substantial Zabel changes in CHANGELOG.md and publishing
    entries added since the previous successful binary release.
  • Recovered requested remote outputs, including build --watch outputs, 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, graceful GOAWAY stream draining, complete TLS records,
    and automatic connection recovery.

2026-08-15

  • Added zabel test with package and recursive target patterns, test_suite
    expansion, manual-test filtering, configured timeouts and sharding,
    producer-owned remote TestRunner actions, Bazel test output roots, and
    test spawn environments.
  • Reduced retired Starlark evaluation instructions by 16.98% across 215
    workloads by trusting compiler-produced bytecode in ReleaseFast builds,
    without increasing allocations.
  • Shared default registry, repository, archive, download, ActionCache, CAS,
    and host-platform caches across workspaces under the captured
    ~/.cache/zabel directory.

v0.0.5

Choose a tag to compare

@dzbarsky dzbarsky released this 14 Aug 23:24

Zabel v0.0.5 binaries for Linux and macOS on aarch64 and x86_64.

v0.0.4

Choose a tag to compare

@dzbarsky dzbarsky released this 29 Jul 11:45

Zabel v0.0.4 binaries for Linux and macOS on aarch64 and x86_64. Built from hermeticbuild/zabel commit 4ae93e993c7f179864fef0110a2f9c4442b6cc11.

v0.0.3

Choose a tag to compare

@dzbarsky dzbarsky released this 28 Jul 11:42

Zabel v0.0.3 binaries for Linux and macOS on aarch64 and x86_64.

v0.0.2

Choose a tag to compare

@dzbarsky dzbarsky released this 27 Jul 14:14

Zabel v0.0.2 binaries for Linux and macOS on aarch64 and x86_64.

v0.0.1

Choose a tag to compare

@dzbarsky dzbarsky released this 27 Jul 01:52

Zabel v0.0.1 binaries for Linux and macOS on aarch64 and x86_64.