feat: add LZMA1 streaming decoder
ports the range decoder, LZ window, and the LZMA arithmetic model from
hasenbanck/lzma-rust2 (itself a port of tukaani's xz-for-java). the
state machine, literal coder, match-len coder, and rep-len coder all
match the reference; only the streaming wrapper diverges to fit the
StreamReader-shaped byte source the rest of this library already uses.
the range decoder buffers its input internally and throws
RangeUnderflow when the caller hasn't fed enough bytes. the public
decodeLzmaStream async generator catches that signal, refills from
the source, and resumes — the LZMA state is rolled back to the start
of the in-flight decode step before the underflow.
tested against three .lzma fixtures generated with /usr/bin/lzma:
small lipsum, 285 KB of repeated lorem, and 11 KB of English prose.
all roundtrip to byte-identical plaintext.
This is a binary file and will not be displayed.
This is a binary file and will not be displayed.
This is a binary file and will not be displayed.