Skip to content

v0.3.0

Latest

Choose a tag to compare

@ydah ydah released this 11 Aug 12:34

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