Back to Blog

RIDDL 1.23.0 Released

RIDDL 1.23.0 is now available.

release riddl compiler

RIDDL 1.23.0 is now available. This release of the RIDDL compiler and language tooling includes the following changes:

What’s New

What’s New

Features

  • GBNF grammar for llama.cpp — The RIDDL grammar is now available in GBNF format for constrained text generation with llama.cpp and compatible inference engines. An automated Python converter (ebnf_to_gbnf.py) transforms the canonical EBNF grammar (258 rules) into GBNF, handling whitespace insertion automatically by classifying rules as terminal (character-level) vs structural (syntax-level). Three rules with negative lookahead patterns are maintained as hand-written state-machine equivalents in a separate overrides file. The generated grammar is committed at language/shared/src/main/resources/riddl/grammar/riddl-grammar.gbnf.

  • Grammar API: loadGbnfGrammar — The Grammar object in the language module now provides loadGbnfGrammar and loadGbnfGrammarOrThrow methods to load the GBNF grammar from the classpath, alongside the existing EBNF loading methods. The GbnfResourcePath constant is also exposed for direct resource access.

  • GBNF validation test suite — A comprehensive validator (gbnf_validator.py) checks the generated GBNF for correctness: syntax validation, rule completeness (no dangling references), override coverage, EBNF-to-GBNF rule coverage (all 258 EBNF rules present), and freshness verification (committed file matches regeneration). Integrated into CI alongside the existing EBNF TatSu validation.

Internal

  • Fixed CI workflow paths for Scala 3.8.3 upgrade (release.yml, scala.yml, coverage.yml all referenced stale scala-3.7.4 paths)
  • Added context-types.riddl to EBNF include fragment exclusion lists in both TatSu and Lark validators