<feed xmlns='http://www.w3.org/2005/Atom'>
<title>odenwald/rs, branch master</title>
<subtitle>Mirror of https://github.com/pks/odenwald.git
</subtitle>
<id>https://git.simianer.de/mirrored/odenwald/atom?h=master</id>
<link rel='self' href='https://git.simianer.de/mirrored/odenwald/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.simianer.de/mirrored/odenwald/'/>
<updated>2026-02-26T18:28:22Z</updated>
<entry>
<title>Add Rust implementation of SCFG decoder</title>
<updated>2026-02-26T18:28:22Z</updated>
<author>
<name>Patrick Simianer</name>
<email>patrick@lilt.com</email>
</author>
<published>2026-02-26T18:28:22Z</published>
<link rel='alternate' type='text/html' href='https://git.simianer.de/mirrored/odenwald/commit/?id=0abcdd7e4358cb902c320b008d3c04bde07b749e'/>
<id>urn:sha1:0abcdd7e4358cb902c320b008d3c04bde07b749e</id>
<content type='text'>
Rust port of the Ruby prototype decoder with performance
optimizations for real Hiero-style grammars:

- Rule indexing by first terminal/NT symbol for fast lookup
- Chart symbol interning (u16 IDs) instead of string hashing
- Passive chart index by (symbol, left) for direct right-endpoint lookup
- Items store rule index instead of cloned rule data

Includes CKY+ parser, chart-to-hypergraph conversion, Viterbi
decoding, derivation extraction, and JSON hypergraph I/O.

Self-filling step in parse uses grammar lookup (not just
remaining active items) to handle rules that were consumed
during the parse loop or skipped by the has_any_at optimization.

Produces identical output to the Ruby prototype on all test examples.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
