Releases: ydah/ibex
Release list
v0.3.0
ibex v0.3.0
This release significantly expands Ibex’s grammar analysis, verification, and declarative configuration capabilities while preserving racc-compatible behavior as the default.
Highlights
- Expanded grammar analysis and verification
Adds ibex verify, ibex equiv, ibex diff, ibex metrics, and ibex fix for independent table verification, bounded equivalence search, structural change reports, grammar metrics, and verified conflict-repair proposals. - Analysis-only Bison import
ibex import bison converts Bison-shaped grammar structure into extended Ibex source for analysis. C actions remain opaque, unsupported directives are reported with source locations, and structurally incomplete imports cannot be used for repairs. - Declarative parser configuration
Extended grammars can declare the parser construction algorithm, entry strategy, and CST trivia ownership. ibex config reports effective values, origins, and conflicts in text or JSON without executing grammar actions or user sections. LSP support now provides assistance for parser settings. - Generated syntax sessions
Generated parsers can expose an explicit syntax-session boundary with syntax-only edits, immutable diagnostics, reuse and fallback metrics, cancellation, and bounded repair proposals. This surface is Experimental and requires explicit trust acknowledgement. - Data-only verification bundles
Experimental data-only parser tables and verification bundles can validate table data and bind generated wrappers, reports, and manifests without loading generated Ruby. These artifacts are not part of the default generated output or stable runtime ABI. - Experimental direct IELR construction
--algorithm=ielr --ielr-strategy=direct enables direct LR(0)-based IELR construction. The default LALR path and conservative IELR partition strategy remain unchanged. - Improved portability and reproducibility
Embedded generation from installed gems, compatibility across alternative Ruby engines, and deterministic normalization of JSON and UTF-8 logical paths in verification artifacts have been improved. - Documentation and project site
Added task-oriented entry points, getting-started material, migration guidance, gallery examples, and API documentation.
Upgrade notes
- Regenerate parsers with Ibex v0.3.0. Non-embedded generated parsers require ibex-runtime ~> 0.3.
- All legacy parser table formats v1–v5, including non-CST tables, are no longer accepted. Regenerate affected parser artifacts with the current generator and runtime.
- Legacy Grammar IR and Automaton IR compatibility readers have been removed. Persisted IR documents must be regenerated or re-exported in the current format.
- The legacy Ibex::Runtime::JSONLTracer has been removed. Use Ibex::Runtime::EventJSONLTracer or parser.observe instead.
- Embedded generated parsers must be regenerated to receive the new syntax-session and runtime APIs.
ibex-runtime v0.3.0
This release extends the standalone runtime with generated-language syntax services while retaining the existing semantic parsing APIs and parser-table format v6.
Highlights
- Generated syntax sessions
Provides syntax-only editing sessions with immutable results, diagnostics, reuse and fallback metrics, cancellation, resource limits, and bounded repair proposals. - Improved runtime portability
Fixed runtime cache behavior across Ruby engines, including alternative Ruby implementations and TruffleRuby fast paths. - Deterministic event and report serialization
Runtime events, verification reports, logical paths, and UTF-8 filenames now have more consistent cross-runtime JSON behavior.
Breaking changes
- Legacy parser table formats v1–v5 are rejected before token consumption. Regenerate parsers with Ibex v0.3.0.
- The hook-based Ibex::Runtime::JSONLTracer API has been removed in favor of EventJSONLTracer and parser.observe.
Full Changelog: v0.2.0...v0.3.0
v0.2.0
ibex v0.2.0
This release significantly expands Ibex’s opt-in grammar and tooling capabilities while preserving racc-compatible behavior as the default.
Highlights
-
Standalone runtime package
Generated parsers now use the separately versioned ibex-runtime package, allowing applications to deploy parsers without installing the generator and development
tooling. The -E option remains available for generating a self-contained parser. -
Expanded extended grammar mode
pragma extended now supports parameterized and inline rules, grammar fragment imports, multiple entry points, declarative stateful lexers, typed AST generation,
declarative error recovery, and grammar-defined tests. These features are currently Preview and do not change the default compatible mode. -
Integrated authoring and build workflow
This release adds a formatter, LSP server, watch mode, Rake integration, static migration checks for racc grammars, and transactional generation that avoids
publishing partially updated output. -
New syntax-tree and parser analysis capabilities
pragma cst now generates format-v6 Red/Green syntax metadata. The generator also adds a Preview IELR backend and expanded conflict and ambiguity analysis.
Upgrade notes
- Regenerate parsers with ibex v0.2.0. Non-embedded generated parsers require ibex-runtime ~> 0.2.
- CST users must migrate to the format-v6 Red/Green APIs. CST table formats v1–v5 are no longer accepted.
ibex-runtime v0.2.0
This release introduces ibex-runtime as a standalone deployment package for parsers generated by Ibex.
Highlights
-
Red/Green concrete syntax trees
The new lossless and error-tolerant CST runtime provides immutable Green nodes, lazy Red navigation, typed syntax views, persistent editing and structural diffing,
exact source reconstruction, and versioned ibex_cst serialization. -
Incremental syntax processing
Experimental syntax-only sessions can relex edited input and conservatively reuse validated subtrees, with deterministic fallback when reuse is unsafe. -
Stronger runtime controls and observability
Isolated parser sessions, resource limits, immutable runtime events, JSONL tracing, streaming lexer support, and bounded recovery and repair APIs improve support for
editors, language tooling, and long-running applications.
Breaking changes
- The legacy mixed semantic/syntax CST API, including CST::Node and CST::Token, has been removed.
- Parsers using CST table formats v1–v5 must be regenerated with ibex v0.2.0. Existing non-CST table formats remain readable.
Full Changelog: v0.1.0...v0.2.0
v0.1.0
Full Changelog: https://github.com/ydah/ibex/commits/v0.1.0