This new release of CEL for C++ brings a significant milestone: official support for MacOS builds. Beyond expanding platform compatibility, this update introduces a robust AST validation framework and several quality-of-life improvements for extension libraries.
🍎 MacOS & Cross-Platform Support
The headline feature of this release is the stabilization of MacOS builds. We’ve refined our Bazel rules and addressed platform-specific test failures to ensure a smooth experience for developers in the Apple ecosystem.
- MacOS Build Support: Updated Bazel rules and test suites to fully support MacOS environments ([#1957](#1957), [#1942](#1942), [#1943](#1943)).
- Windows (MSVC) Fixes: Continued improvements for Windows cross-compilation and MSVC compatibility ([#1835](#1835), [#1879](#1879)).
- BCR Automation: Added Bazel Central Registry (BCR) automation for smoother automated publishing of release tags ([#1804](#1804)).
✅ New AST Validation Framework
We’ve introduced a comprehensive Validator API. This allows developers to enforce constraints on expressions before they are executed, providing an extra layer of safety and performance predictability.
- Core Validator Implementation: Initial implementation of the
Ast Validatorand compiler integration ([#1927](#1927), [#1932](#1932)). - Standard Validators:
🛠 Extension Libraries & Language Features
CEL continues to grow its standard library and extension capabilities to match the feature sets of Java and Go implementations.
- List Extensions: New
list.first()andlist.last()functions have been added ([#1890](#1890)). - Library Versioning: Introduced versioning for math, string, and list extensions to allow for stable evolution ([#1888](#1888), [#1891](#1891), [#1893](#1893)).
- Standard Extension Bundle: A new bundle that simplifies registering common CEL extensions ([#1895](#1895)).
- Escaped Identifiers: Backtick-quoted identifiers (e.g.,
`var.name`) are now enabled by default ([#1916](#1916)).
🚀 Performance & Internal Refactoring
Under the hood, we've focused on slimming down the codebase and optimizing core routines.
- Unparse Optimization: Significant performance gains in
google::api::expr::Unparseby reducing unnecessary map andSourceInfocopying ([#1798](#1798), [#1800](#1800)). - Type System Cleanup: Removed deprecated
TypeFactoryandTypeManagerinterfaces in favor of the moderncel::Typesystem ([#1920](#1920)). - Recursive Safety: Simplified recursive planning limit checks to prevent stack overflows during expression planning ([#1900](#1900)).
🤝 New Contributors
A warm welcome to our first-time contributors!
Full Changelog: [v0.14.0...v0.15.0](v0.14.0...v0.15.0)