Repository navigation
Releases
v0.11.0
0.11.0 (2026-11-10)
TruffleCEL 0.11.0 adopts TruffleData 0.11.0 and Elide GraalVM 25.5.5-elide.28.
Java 25 remains required. All four Maven modules release together: core, protobuf,
JSON, and the generated-adapter annotation processor.
TruffleData 0.11.0 was built with Myna 0.16.0. TruffleCEL has no direct Myna
artifact dependency and does not enable TruffleData's optional Myna cells routes.
Use the matching GraalVM .28 Maven repository and runtime when upgrading.
The benchmark charts and native-profile investigations retained in this release
were measured with their recorded earlier dependency versions. They are not
performance measurements of the new 0.11.0 dependency combination.
Features
- deps: adopt TruffleData 0.11.0 and GraalVM elide.28 (fd7bbaa)
Benchmark documentation
- generate validated native profile comparison tables (21db3c9)
- qualify bounded native young generation and chart memory tradeoffs (bfebb00)
- qualify native compiler and direct API startup profiles (9abd196)
- qualify native heap profiles and cumulative evaluation cost (3f9d5ae)
- qualify native heap profiles and direct Java startup (#73) (d7c6a8f)
- retain current native phase and startup baselines (435d0ae)
- retain native memory startup and cumulative-cost qualification (4a26a36)
Publication and provenance status
All four modules are published on Elide Maven. All CI checks passed before the dependency and release merges; the review requirement was administratively bypassed with explicit user authorization. Independent follow-up review remains outstanding.
The publication run built, tested, uploaded and verified the Maven bytes successfully. Its subsequent attestation-persistence step failed because GitHub rejected the custom build-type identifier. This release has no available signed build attestation; provenance qualification is incomplete. Published artifacts and the release tag have not been overwritten or rebuilt to replace this evidence.
The attached publication-evidence ZIP is the original run's maven-0.11.0 staging artifact. The attached verification JSON records a separate check that all twelve public JAR/source-JAR/POM files match those original outputs and their SHA-256 sidecars, and all four Maven metadata entries identify 0.11.0. These attachments are unsigned evidence, not signed provenance or an independent rebuild.
v0.10.0
0.10.0 (2026-11-09)
TruffleCEL 0.10.0 adopts published TruffleData 0.10.0 and completes this wave of
CEL tooling, embedding APIs, allocation reductions and regex hardening. Java 25
and Elide GraalVM 25.5.5-elide.27 remain the runtime baseline. All four Maven modules
release together: core, protobuf, JSON and the generated-adapter annotation processor.
Compatibility
RE2/J is now an optional Maven dependency. Compatibility-mode consumers must
explicitly declare com.google.re2j:re2j:1.8. Applications that accept the supported
TruffleRegex subset can opt into Cel.newBuilder().truffleRegexOnly(limit) or the
matching Polyglot options and omit RE2/J entirely. JVM and Native Image packaged
consumers verify matching and guest compilation with the JAR physically absent.
See integration and regex policy.
Functionality and fixes
- Editable syntax trees, custom macros, parser/checker recovery, canonical AST
interchange, copied compiler environments and application validators. - Lazy lexical bindings, opt-in common-subexpression elimination, conservative
charged-operation bounds, field-level partial evaluation and qualified unknowns. - Environment YAML, CEL Policy compilation, embedded source offsets, source-level
tracing, asynchronous evaluation and per-call/non-strict function bindings. - Reflection-free generated POJO/JavaBean/record snapshots, protobuf contexts and
typed field-mask projections, with bounded owned snapshots and preserved extensions. - Correctness fixes for diagnostic/source provenance, sorting budgets, policy
conditions, AST round trips, long unary runs and native guest-compilation boundaries. - Constant regex acceleration recovers after weak-handle collection in its owner
context. Bounded caches evict one entry at a time and cache syntax-failure data
without retaining exception stacks or weakening per-caller limits.
Performance and qualification
Evaluation contexts, binding conversion caches, shared layouts, cached-program
metadata, map snapshots and protobuf wire ingestion use less allocation or retained
storage in their documented comparisons. Scoped TruffleRegex accelerates constant
matches while retaining the tested compatibility fallback.
Fresh release measurements and charts
cover JVM/native evaluation, optimized cel-java, prepared-input controls, ingestion
allocation, and the separate compilation/image-AST comparison. Raw observations,
source/runtime/artifact identities, observed ranges and remaining memory gaps are
preserved. Timing wins do not establish universal optimality or smaller process RSS.
All 75 qualification targets pass, including conformance, packaged consumers,
allocation and native guest-JIT gates. Exact-version staging passes for all four
modules. Full-source coverage meets the unchanged 99.8% line/branch floors, and
CodSpeed classifies all 21 cases as unchanged against pre-adoption main.
v0.9.0
v0.8.0
v0.7.0
TruffleCEL 0.7.0 adds reusable activation snapshots, prepared protobuf access, and lower-overhead ordinary map evaluation. All published modules now depend on TruffleData 0.7.0 where applicable. Java 25 and Elide GraalVM 25.5.5-elide.24 remain required.
Input contract change
Program.evaluate(Map) and test(Map) borrow caller inputs. Keep bindings and reachable data unchanged until evaluation returns, including during host callbacks. Changes between calls are observed. Conversion and bounds checks happen when a binding is read; unused invalid bindings are no longer eagerly rejected. Use Activation.snapshot for eager validation and isolation, and reuse snapshots explicitly when appropriate. See the integration guide.
Runtime and compatibility
- Prepared scalar, repeated, nested and supported well-known protobuf field access, with generic fallbacks.
- Owned internal collection storage avoids redundant normalization copies.
- Complete upstream conformance coverage through the shipped protobuf adapter, including wrapper, Any, JSON, null and equality fixes.
- Reusable activation snapshots retain independent evaluation state and support Native Image build-time preparation.
- TruffleData core, JDBC, protobuf and protobuf-runtime pins advance together to 0.7.0; publication POMs and lockfile agree.
Performance evidence and limits
The borrowed-input report compares both TruffleCEL execution modes with optimized cel-java on a dedicated Threadripper host. Both modes win all six measured fresh-map JVM fixtures and the three measured native fixtures. These measurements used TruffleData 0.6.0; they do not claim an additional speedup from upgrading to 0.7.0. Maps/regex allocation, ingestion costs and a small repeated-field diagnostic regression remain documented gaps. Historical measurements and raw evidence are preserved.
Maven
Published at maven.elide.dev:
dev.elide:trufflecel-core:0.7.0dev.elide:trufflecel-protobuf:0.7.0dev.elide:trufflecel-json:0.7.0
Validation
All 31 JVM test targets pass, including the full conformance corpus and publication consumers. Production coverage is 99.91% of lines and 99.89% of branches. Linux native guest-JIT, representative execution and build-time snapshot gates pass without relaxed allocation or compilation limits. PR and main CI also pass security, dependency review and the CodSpeed regression checks.
v0.4.1
v0.4.0
v0.3.0
v0.2.0
0.2.0 (2026-11-04)
Features
- benchmarks: compare allocation costs and fixed-work peak RSS (a44e273)
- benchmarks: measure interpreter execution and per-process peak RSS (ad3fdcb)
- compare CEL compilation and evaluation on JVM and Native Image (c4f0f20)
- expose Truffle instrumentation and publish memory benchmarks (76f2851)
Bug Fixes
- benchmarks: exclude environment setup from image frontend timings (f243780)
- benchmarks: initialize upstream constants for image-build ASTs (e3df286)
- benchmarks: materialize runfiles for local timing after RBE builds (64abff6)
- release: keep Bazel module version synchronized (d3a0c42)
- release: keep Maven versions out of Bazel dependency resolution (aa7eab5)
Performance Improvements
- allocate only the collections each comprehension needs (456e1bc)
- avoid argument arrays for string predicates (5bdd9be)
- bound compilation work for scoped evaluations (325e7cb)
- count comprehension results without retaining lists (63e1139)
- eliminate eligible comprehension scope allocations (83d8ffc)
- let guest compilation eliminate evaluation contexts (78a4c2c)
- lower constant-right integer arithmetic chains (a44e445)
- reduce integer operator and input normalization allocations (300a638)
- reduce scalar interpreter dispatch and activation allocations (94f39d7)
- resolve local reads to lexical scope slots (252466e)
- reuse immutable compiler declarations (385d755)
- reuse immutable scalar binding snapshots (d415645)
- reuse lexer operator spellings (ede695a)
- reuse owned snapshots for comprehension iteration (75d0941)
- runtime: avoid map iteration during object type dispatch (4e9d35a)
- runtime: compact small activations and reuse default compiler environment (c7b6b6a)
- runtime: reduce field dispatch and numeric equality overhead (cd3befb)
- runtime: reuse local binding slots and defer scope allocation (b489810)
- skip constructor-only adapters during runtime dispatch (b4a0150)
- use checked identifiers for single-binding lookup (65c9089)
- validate small scalar activations without iterators (04d83d6)
v0.1.0
TruffleCEL 0.1.0 is the first stable release, aligned with TruffleData 0.1.0 and Elide GraalVM 25.5.5-elide.23.
Native protobuf integration
- CEL values now retain a lossless TruffleData
ProtoRowinstead of a JavaMessageplus a native snapshot. - Binary decoding and CEL message construction use TruffleData's embedded wire codec and native builders.
- Native presence, numeric enums (including unknown open-enum values), compact bytes, full-width unsigned integers, maps, and nested messages preserve CEL mappings.
ProtobufType.plan()exposes the shared native plan;input(ProtoRow)accepts rows from that plan, andValue.toBytes()encodes them directly.- Java-message export remains explicit. Equality, hashing, and zero checks currently materialize temporary Java messages; no message sidecar is retained. Native unknown-field access is tracked in elide-dev/truffledata#2.
Build and embedding
All three thin JARs are published at https://maven.elide.dev: dev.elide:trufflecel-core:0.1.0, dev.elide:trufflecel-protobuf:0.1.0, and dev.elide:trufflecel-json:0.1.0.
Use Java 25 and configure https://maven.elide.dev/gvm-elide/25.5.5-elide.23 for the matching GraalVM artifacts. The README includes project artwork, compilation and embedding diagrams, CEL references, and a direct stable-release installation example.
The selected conformance corpus contains 2,587 cases across 20 core and six extension suites. This release does not claim every CEL extension or protobuf AST interchange format; see the README's compatibility scope and integration guide.
Validation
- All 16 JVM test targets pass, including 2,587 upstream conformance cases, the published-JAR consumer, and optimizing guest compilation/allocation checks.
- Production coverage: 99.10% lines, 93.21% branches (gates: 98% / 90%).
- Both Native Image gates pass: all 14 benchmark correctness cases and the optimizing guest-JIT smoke test, with build-time blocklist checks enabled.
- GitHub CodSpeed simulation passes; these measurements cover native-AOT execution and are separate from guest-JIT qualification.
Release and Maven publication CI. Public binary/source JARs, POM dependencies, SHA-256 checksums, and Maven metadata were independently verified for all three modules.
0.1.0 (2026-11-03)
Features
- adopt TruffleData 0.1.0 native protobuf rows and codec (5e053f5)
Bug Fixes
- deps: align GraalVM toolchains and libraries with elide.23 (a42b848)