LZSA proven to be rather interesting thing.
What I like about it?
- Still "simple LZ" kind of thing.
- Still in "requires no memory for decompression" league (with some notes).
- Seems to be very picky about stream format, trying to balance speed/simplicity vs ratio. LZSA2 looks nice in this regard.
- Not yet an overgrown mammoth monster like brotli, zstd and somesuch.
- LZSA2 got very reasonable ratio on small data sets.
- One could find rather advanced techs here in action - be it repmatch or nibble alignment, that looks really nice.
What I don't like about it:
- Obsession on Z80 and other obsolete/toy platforms, ignoring modern viable uses (e.g. larger blocks for boot loaders/OS kernels/etc, modern CPU cores like e.g. app/mcu/etc ARMs, etc - comparably sized platforms for present-day uses).
- A very strange decompression termination conditions, likely resulting from previous oddity. It looks like this thing was never meant to be decompressed in "safe" way? Like that: "I have 2K buffer for result, never exceed that, even if input is random garbage, no matter what". Seems this algo never been meant to run in safe way? Or I've failed to get idea. Looking on specs it seems author never considered decompressing that in safe manner under limited-size buffer that should never get exceeded, even if input is "damaged" so decompressor fed with (odd/"uncooperative" or even malicious) garbage.
- Ahem, speaking of that, there're tons of standalone asm stuff, but no trivial, standalone C decompressor, digging to decompression routine expressed in C takes all pains of unwinding LZ4-like "enterprise-grade sphaggetti for all occasions". Uh-oh. Of course, perfection is a bitch, but as LZ4 shown, algo could enjoy bu very reasonable speed without resorting to assembly/simd/etc.
TL;DR: out of simple LZs available in source form, on small data only lzoma gets better ratios. On larger datas lzsa isn't anyhow exciting though. I haven't benchmarked proprietary algos or algos with unknown/warez-like licensing since I have no use cases for it. Overall it looks nice for small data sets. So thanks to ppl for bringing this one into attention, I had quite some fun with it.