Home

Awesome

Bazel Documents

This is an index of all documents for Bazel.

There are two kinds:

Design doc workflow

New proposals follow the design process and are sent for review as a GitHub discussion.

State diagram of the design process

stateDiagram-v2    
    ur: Under review
    
    Draft --> ur
    ur --> Approved
    Approved --> Implemented
    Draft --> Dropped
    ur --> Dropped
    Approved --> Dropped
    
    classDef success fill:#ded
    classDef failure fill:#fcc
    
    class Implemented success
    class Dropped failure

Live documents

Last updatedTitleAuthor(s) alias
2023-10-09Starlark Rules Roadmap@comius
2023-09-26Bazelbuild Repositories Maintenance Guide@comius and @meteorcloudy
2023-08-30Bazel Proto Rules@comius
2023-08-01Problems with Bazel's code coverage collection@c-mita
2023-07-27A Guide to Skyframe StateMachines@aoeui
2022-02-17The Bazel codebase@lberki

Design docs

Under review

Last updatedTitleAuthor(s) aliasCategory
2024-08-15Execution platform selection for test actions in multi-platform builds@fmeumConfigurability, Execution
2024-08-08Per-target execution platform constraints for exec groups@fmeumConfigurability, Execution
2024-08-01Introspecting selects@comiusConfigurability
2024-07-31SEP-001 Bootstraping Starlark Types@comiusStarlark
2024-07-17Dormant Dependencies II@lberkiBuild Language
2024-06-17Generic Flag Propagation Model@aranguyenConfigurability
2024-03-18A new home for the host platform@WyveraldConfigurability, External Repositories
2024-02-06Linking on multiple platforms@comiusC++ linking
2024-01-22Garbage collection for the disk cache@tjgqPerformance
2024-01-18Bazel Remote Output Service@coeuvreRemote Execution
2023-12-12--remote_local_fallback Respects Strategy Declarations@Silic0nS0ldierConfigurability, Execution Strategy
2023-12-5Offline & Vendor Modes@salmasamyBazel, External Repositories
2023-11-09Avoiding accidental secret leaks in the BEP@jmmvCore
2023-09-19Bazel Ruleset GOVERNANCE | MECHANICS@radvani13Rules
2023-10-25C++20 Modules Support@PikachuHyAC++
2023-09-12Proto toolchainization@comiusProtos
2023-09-07A true repository cache@WyveraldExternal Repositories
2023-08-08Standard exec configurations@gregestrenConfigurability
2023-08-08Inheritance of Target Incompatibility@fmeumPlatforms, Configurability
2023-06-30Fingerprinting Starlark Functions@brandjonStarlark and actions
2023-06-16Extending Bazel rules@comiusStarlark Rules
2023-06-15Integrated bzl_library@brandjonStarlark
2023-05-31subrule: Decomposing Starlark rules@comiusStarlark Rules
2023-03-17C/C++ standard resolution for Bazel modules@fmeumC++, External Repositories
2023-03-17More accurate cquery@gregestrenConfigurability
2022-10-17Dependency adapters for virtual targets@vdyeBazel

Draft

Last updatedTitleAuthor(s) aliasCategory
2024-08-29A New Code Coverage API@c-mitaCode Coverage
2024-07-28Execution Platform Scoped Spawn Strategies@Silic0nS0ldierConfigurability, Execution Strategy
2023-11-23Regular rules in module extensions@matts1External Repositories
2023-10-25Faster aspects: pruning on the way down@aiuto
2023-10-25Better SBOMS: annotated rule attributes@aiuto
2023-10-23Incremental builds with small memory footprint@lberkiCore
2023-01-18Modular cc toolchains@silvergaspCC toolchain rules
2020-10-09Adding http mirror to accelerate repos downloading@yanclExternal Repositories
2021-06-25Better Starlark analysis unit tests@hvadehraStarlark
2022-04-25Extend expand_template() API to reduce retained memory@hvadehraStarlark
2022-04-29@since(version) annotations in documentation.@aiutoDocumentation

Approved

Last updatedTitleAuthor(s) aliasCategory
2024-05-08Selectively Enabling Execution Platforms@katreConfiguration
2024-04-29Starlark Transition Composition@katreConfiguration
2023-08-14Platform-based flags@katrePlatforms
2023-08-08Standard platform transitions@katrePlatforms
2023-06-12Remote Output Service: place bazel-out/ on a FUSE file system@EdSchoutenRemote Execution
2023-03-07Build Stamping API for Starlark rules@buildbreaker2021Starlark Rules
2023-01-23Remote Cache Eviction for Build without the Bytes@coeuvreRemote Execution
2022-10-11Renaming applicable_licenses@aiutoConfiguration
2022-05-11Deprecating managed_directories@lberkiExternal Repositories
2021-02-15External directory reshuffling@lberkiExternal Repositories
2021-02-15C++ rules skylark migration plan@mhlopkoC++
2019-05-08Android Native to Starlark Migration@timpeutAndroid
2018-08-14Decoupling android_ndk_repository from Bazel@jinAndroid
2018-07-31Splitting large BEP events@buchgrBuild Event Protocol

Implemented

Last updatedTitleAuthor(s) aliasCategory
2024-06-06Simplifying lockfile maintenance@fmeumExternal Repositories
2023-12-06bazel mod tidy@fmeumExternal dependencies
2023-05-04Directory watching API for repo rules@WyveraldExternal Repositories
2023-03-21Bazel feature detection in Starlark@WyveraldGeneral, Starlark Rules
2023-03-20Automatic use_repo fixups for module extensions@fmeumExternal Repositories
2023-03-14REPO.bazel@WyveraldExternal Repositories
2023-01-30Transitive static libraries@fmeumC++
2022-12-15Bzlmod lockfile@salmasamyBazel, External Repositories
2022-09-05Automatic exec groups for toolchains@comius @kotlajaConfigurability
2022-08-17Locating runfiles with Bzlmod@fmeumExternal Repositories, Bazel
2022-06-13Credential Helpers for Bazel@YannicExternal Repositories
2022-05-12Bzlmod External Dependencies Inspection Tool@andyrinne12External Repositories
2022-03-18proto_common module@comiusProto Rules
2021-06-23Improving native.existing_rules@tetromino, @brandjonBuild Language
2021-06-09Aspects Propagating other Aspects@messaStarlark
2021-04-22Custom constructors for providers@brandjonBuild Language
2021-03-24Java common refactoring@comiusJava rules
2020-12-22Injecting Starlark Values Into Builtins@brandjonStarlark
2021-03-06OSS License Declarations@aiutoProduct
2021-02-15Rules for software license compliance@aiutoLicense Rules, Bazel
2023-03-31Optional Toolchains@katreConfigurability
2022-05-25Canonical label literals@WyveraldExternal Repositories
2022-03-07Representing repeatable Starlark flags as config.string_list@fmeumConfigurability, Build Language
2022-01-14Proposal for subpackages built-in helper function@kkressBazel
2021-08-02Bazel Central Registry Policies and Procedures@meteorcloudyExternal Repositories
2021-03-06Remote Persistent Workers[@ulfjack]
2021-03-06Rules authors SIG@alexeagleCommunity
2021-02-18Require ProtoInfo for proto_lang_toolchain#blacklisted_protos@YannicProtobuf
2021-02-16Selecting Between Python 2 and 3@brandjonPython
2021-02-16Remote Downloads@EricBurnett, @jmillikin, @sstrikerExternal Repositories
2021-02-16Starlark Directory Expansion in Args MapEach@haileiyuStarlark
2021-02-16Test execution on Windows without Bash@laszlocsomorWindows
2021-02-15Toolchain resolution using configuration flags@comiusConfigurability
2021-02-15Configured Query Starlark Output@c-parsonsConfigurability, Starlark
2021-02-15Proposal: new format ‘flag_per_line’ for Args@vmaverickStarlark
2021-02-15cquery somepath: easy mode@gregestrenConfigurability
2021-02-15Automatically migrating maven_jar to rules_jvm_external@jinExternal Repositories
2021-02-15Target-level execution properties@agoultiConfigurability
2021-02-15Bazel Starlark API: add ctx.resolve_tools@laszlocsomorStarlark
2021-02-15Auto-configured Host Platform@katreConfigurability
2021-02-15Multiplex persistent worker@borkaehwBazel
2021-02-15Starlark Build Configuration@juliexxia, @gregestrenConfigurability
2021-02-15Crosstool in Skylark@scentini, @mhlopkoC++
2021-02-15Declared Providers@dslomov, @laurentlbStarlark
2021-02-15Java Platformization@comiusConfigurability
2021-02-15Starlark Shorthand Flag Mapping@WarkahScottConfigurability
2021-02-15Measuring Configuration Overhead@gregestrenConfigurability
2021-02-15Action Groups (Multi-Toolchain Resolution)@juliexxiaConfigurability
2021-02-15Common Bazel Constraints@gregestrenConfigurability
2021-02-15Starlark Build Configurations - Parameterized-Transitions API@juliexxiaConfigurability
2021-02-15Partial C++ Starlark API@oquenchilC++
2021-02-15Crosstool in Skylark@mhlopkoC++
2021-02-15Shrinking the Bazel binary@buchgr, @meistertBazel
2021-02-15External C/C++ libraries rules@ichernBazel
2021-02-15Bazel Runfiles Libraries@laszlocsomorBazel
2021-02-15Name resolution@laurentlbStarlark
2020-10-28Keepalived remote execution@coeuvreRemote Execution
2020-10-19Bazel External Dependencies Overhaul@meteorcloudy, @philwo, @WyveraldExternal Repositories
2020-09-30Toolchain Transition Migration@katreConfigurability
2020-09-30Toolchain Transitions@katreConfigurability
2020-09-30Passing Toolchain Context across Dependencies@katreConfigurability
2020-05-13Execution Transitions@katreConfigurability
2020-05-13Old Flags to Platform Migration@aragosConfigurability
2019-12-20Incompatible Target Skipping@AustinSchuh, @gregestrenConfigurability
2019-12-17cquery somepath: easy mode@gregestrenConfigurability
2019-12-17Exposing Target Platform Constraints@katreConfigurability
2019-10-24Visibility for source files@aehligBuild API
2019-04-22Move //tools/build_defs/pkg to rules_pkg@aiutoBazel
2019-05-10Bazel with NPM package manager@ichernExternal Repositories
2019-05-27Authentication for ctx.download@aehligExternal Repositories
2019-04-29Forcing non-cache-hits in the repository cache@aehligExternal Repositories
2019-04-05Handling download failures@aehligExternal Repositories
2018-12-14Versioned Documentation@jinDocumentation
2018-11-26Update Download Functions in repository_ctx@dkelmerExternal Repositories
2018-11-14Platform Inheritance@katreConfigurability
2018-11-09Config Setting Chaining@gregestrenConfigurability
2018-10-29Progress reporting for external repositories@aehligExternal Repositories
2018-11-10Symlinks in Remote Execution@buchgrRemote Execution
2018-08-27Args Directory Support@tomluStarlark
2018-08-20Skylark API to the C++ toolchain@mhlopkoC++
2018-08-03Skyframe threading model@tomluSkyframe
2018-07-13Bazel hashing of external directory output@aehligExternal Repositories
2018-05-24Unified Configuration Transitions@gregestrenConfigurability
2018-04-26Per-Rule Execution Platform Constraints@katreConfigurability
2017-10-06Dynamic Bazel Configurations@gregestrenConfigurability
2017-03-03Label-keyed String Dictionary Type for Build Attributes@serynthConfigurability
2017-01-20Aspect required providers@tomlu, @dslomovStarlark
2017-01-20Aspects-on-aspects@dslomovStarlark
2016-10-18Invalidation of remote repositories@damienmgExternal Repositories
2016-10-11Distribution Artifact for Bazel@aehligRelease
2016-09-30Central cache for external repositories@jinExternal Repositories
2016-09-05Building Python on Windows@meteorcloudyPython, Windows
2016-06-21Specifying environment variables@aehligBazel
2016-06-02Sandboxing@philwoBazel
2016-05-26Implementing Beautiful Error Messages (Loading Phase)@laurentlbBazel
2016-05-23Beautiful error messages@laurentlbBazel
2016-04-18Parameterized Skylark Aspects@dslomov, lindleyfStarlark
2016-02-16Generating C++ crosstool with a Skylark Remote Repository@damienmgToolchains
2015-07-02Skylark Remote Repositories@damienmgExternal repositories

Dropped

Last updatedTitleAuthor(s) aliasCategory
2024-07-17Dormant Dependencies@lberkiBuild Language
2023-06-21Integrated bzl_library@brandjonStarlark
2022-02-18Coding guidelines for Starlark rules@comiusStarlark Rules
2019-07-11Load Bazel Protobuf rules from @rules_proto@YannicProtobuf
2022-07-07Enabling Global exec_groups@susinmotionConfigurability
2021-06-17Starlark fail(errorcode="")@aiutoDocumentation / Event Stream
2023-03-31Execution Platforms vs. Strategies@katre and @aragosConfigurability
2021-02-18Toolchainifying proto rules@YannicProtobuf
2023-03-30Guidance for Rules Authors how to deal with Bazel versions / upgrades@philwoBazel
2022-11-16Platforms on Targets@katreConfiguration
2021-07-21Monorepo Toolchain Registration@katreToolchains
2021-02-16Semantics of the expansion of Labels@aehligExternal Repositories
2021-02-16Propagate tags from the targets to actions@ishikhmanBazel, Starlark
2021-02-16Remote Repository CachejmillikinExternal Repositories
2021-02-16Moving Skylark out of Bazel@brandjonStarlark
2021-02-16Dependency Discovery Proposal@stevebillingsExternal Repositories
2021-02-16s/skydoc/stardoc/g: a plan@jinDocumentation
2021-02-16Experimental Content-Based Output Paths@gregestrenConfigurability
2021-02-15Managing Breaking Changes in Bazel@dslomovCommunity
2021-02-15Separating Build API from Bazel@c-parsonsStarlark
2021-02-15Improved Command Line Reporting@cvcalBazel
2021-02-15Bazel External Dependencies Roadmap@dslomovExternal Repositories
2021-02-15Aspects Propagating Other Aspects@lberkiBuild API
2021-02-15Mandatory load() statements in BUILD files@lberkiStarlark
2021-02-15Visibility for implicit attributes@aehligBuild API
2021-02-15Structured Compiler Diagnostics@illicitonionBuild Event Protocol, Build API
2021-02-15Replacing native <lang>_proto_library rules with Starlark@YannicProtobuf
2021-02-15Always dirty repository rules@ichernExternal Repositories
2021-02-15Design for a Python Toolchain@brandjonPython
2021-02-15Bazel Federation@dslomov, @laurentlbCommunity
2021-02-15On custom shell toolchain for Bazel Starlark rules@ichernToolchains, Starlark
2021-02-15Recursive Workspaces@aehligExternal Repositoires
2021-02-15Resource auto-tuning via flags@jmmvPerformance
2021-02-15Repository Remapping Revisited@dkelmerExternal Repositories
2021-02-15Bazel Rules Curation@laurentlbCommunity
2021-02-15Extending the design of WORKSPACE files@aehlig, @dslomovExternal Repositories
2021-02-15Namespaces when using multiple bazel repositories@aehlig, @dslomovExternal Repositories
2021-02-15Delaying of load statements@aehligExternal Repositories
2021-02-15Repository rules with multiple return values@aehligExternal Repositories
2021-02-15Diamond Splitting for External Repositories@dslomovExternal Repositories
2021-02-15Output Map Madness@brandjonStarlark
2021-02-15External Repositories: The Future@aehlig, @dslomovExternal Repositories
2021-02-15A Brave New World for the Bazel WORKSPACE File@mattmoor, @dslomov, @davidstanke, @damienmgExternal Repositories
2021-02-15Garbage Collection for the Repository Cache@aehligExternal Repositories
2021-02-15Saner Skylark Sets@dslomovStarlark
2021-02-15Customizing the Python Stub Template@brandjonPython
2021-02-15HTTP downloads with Authorization using .netrc@genrymExternal Repositories
2021-02-15Package Validation Proposal@kkressBazel, Starlark
2020-10-19Adding a constraint to default target platform@comiusConfigurability
2020-09-30Bazel Constraint Equality@aragosConfigurability
2020-09-30Versioned Runtime APIs under Platforms & Toolchains@aragosConfigurability
2020-01-16Starlark project files@robbertvanginkelBazel, Starlark
2019-08-22Non-Hermetic Tool Paths in Platforms@aragosConfigurability
2019-08-01Platforms and Strategies@katreConfigurability, Execution Strategy
2018-06-14Platforms and Configurations@katreC++, Starlark
2016-09-19Recursive WORKSPACE file parsing@kchodorowExternal Repositories
2015-03-06bazel init a.k.a ./configure for Bazel@damienmgBazel