BoundaryML
baml
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
Move catch arm type/value filtering from handler bytecode to exception table Instead of emitting instanceof/TypeTag dispatch chains in catch handler blocks, put CatchFilter entries in the exception table. The VM now does type and value matching during the table scan. Each catch arm gets its own handler block containing only binding + body — no dispatch code. CatchFilter variants: Wildcard, Class(ObjectIndex), TypeTag(i64), Eq(u16). Union types (e.g. Panic alias) expand to multiple table entries pointing at the same handler. Handler blocks are CFG-unreachable (only reachable via exception table), so DCE/RPO in optimizer, emitter analysis, and emitter RPO all seed from catch_regions. All 58 exception tests pass with updated bytecode snapshots.
antonio/exception-tables
5 hours ago
Adding arch files (#3325) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added comprehensive architecture reference documentation for the compiler pipeline and internal compiler design. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: rossirpaulo <rossir.paulo@gmail.com> Co-authored-by: rossirpaulo <82104712+rossirpaulo@users.noreply.github.com>
canary
7 hours ago
Add bytecode snapshots to all 58 exception tests
antonio/exception-tables
10 hours ago
Fix 3 exception handling bugs, un-ignore all 19 tests Bug 2: Literal value patterns (e.g. "boom" =>) returned DefiniteMatch in pattern_match_strength, consuming the throw fact from the residual and making subsequent wildcard arms unreachable. Changed to MayMatch. Bug 4: Panic type bindings (err: DivisionByZero => err.field) were narrowed to `never` because panics aren't in the declared throw set. Fixed by: resolving TypedBinding annotations via bare_type_sugar_to_ty (handles baml.panics.* namespace), falling back to lower_pattern_type_expr; narrowing the clause binding to the pattern type when may_match is empty for explicit panic arms. Bug 3: The Panic type alias (a union) wasn't expanded because dependency type aliases weren't collected. Fixed by: including dep package aliases in the MIR type_aliases map, and expanding union IsType checks into an OR chain at the MIR level. Also extracted resolve_type_expr helper to deduplicate the bare_type_sugar_to_ty-with-fallback pattern (was copy-pasted 3x), and removed the dead narrowed_ty parameter from pattern_binding_for_arm.
antonio/exception-tables
10 hours ago
Add named binding and field access tests for catch arms New tests: - §2b: named typed binding for primitives (msg: string => msg) - §3a: named typed binding for user classes (err: NetworkError => err.url) - §5b: named typed binding for panics (err: DivisionByZero => err.dividend) → discovers bug: TIR narrows panic binding to `never` instead of using the explicit type annotation, so field access fails 39 passing, 19 ignored.
antonio/exception-tables
11 hours ago
bump some CI runner resources (#3327) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * CI jobs switched to higher-resource runners (ubuntu-32gb). * CI cache keys updated to match new runners (e.g., linux-cargo-32gb, linux-msrv-32gb). * No application code or public API changes. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
canary
11 hours ago
Fix catch arm type discrimination for bare type sugar patterns The MIR's lower_pattern_test treated bare type sugar patterns (e.g. DivisionByZero =>) as unconditional bindings. This meant any catch arm with a bare type name matched all exceptions regardless of actual type. Two fixes: - TIR: record resolved types for all bare type sugar catch arm patterns in bindings (not just panic types), so MIR can read them via pat_types - MIR: when a Binding pattern has a resolved type in pat_types, emit an IsType check instead of an unconditional goto Also restores unreachable arm diagnostics that were incorrectly suppressed: the throw_set_is_known guard was too broad, suppressing warnings for _ on non-throwing functions even though _ doesn't catch panics.
antonio/exception-tables
13 hours ago
DRY type alias resolution in emit: compute once per package Extract TypeAliasCache to avoid recomputing collect_type_aliases + find_recursive_aliases at every call site in generate_project_bytecode.
antonio/exception-tables
13 hours ago
Latest Branches
CodSpeed Performance Gauge
-3%
Exception tables + typed panic classes
#3316
5 hours ago
f1e3fd5
antonio/exception-tables
CodSpeed Performance Gauge
-1%
add vertex ai support to baml_language
#3323
14 hours ago
418531b
avery/vertex
CodSpeed Performance Gauge
0%
Add baml-cli generate and integ-tests
#3315
1 day ago
6442550
greg/baml-cli-generate
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs