Symbolic Macros and Rule Finalizers
summary
Structured symbolic macros land in Bazel 8.0 and require typed attributes, automatic name and visibility handling, and configurable support for selects so macros safely accept label selects; attribute inheritance and lazy macro expansion are planned in 8.x (aiming for 8.1) as opt‑ins. A new finalizer=true symbolic macro type runs in the final load stage, may call native.existing to inspect non‑finalizer targets, and forces eager expansion when its namespace is requested. Workbench shows improved visibility scoping and reduced accidental target proliferation via lazy macro expansion (opt‑in).
AI-written summary · about
chapters (9)
- 0:00Legacy macros in Bazel
- 2:05Problems with legacy macros
- 6:21Symbolic macros
- 9:11Naming and visibility
- 13:10Visibility benefits
- 15:39Restrictions and finalizers
- 17:27Rule finalizers
- 20:20New features timeline
- 22:30Q&A
related talks
01h 03mModern Macros
25mRewriting Macros on the Fly: A Modular Approach to Administrative Reduction During(…)
20mPredictable macros for hindley milner
40mLet's Build a Hygienic Macro Expander
12mMulti-Stage Programming with Generative and Analytical Macros
39mPhilosophy of Scala macros
39mRust metaprogramming - macro_rules! beyond basics
43mAdventures in Metaprogramming: Macros versus Shapeless
