#demoscene #arithmetic-coding #no-std #paq

no-std mashi-core

基于PAQ的算术编码、上下文混合压缩器,100%使用Rust和no-std实现的库

1个不稳定版本

0.1.0 2021年11月26日

#443 in 压缩

自定义许可

22KB
543

MASHI まし

100%兼容no-std的Rust实现,PAQ风格的算术编码、上下文混合压缩器。其主要用途是压缩64k演示,但对你来说 whatever works!

快速入门

主要crate是mashi-core,但我提供了一个非常简陋的mashi-cli,以便你可以测试压缩器。

要构建和使用CLI

  • cargobuild --release
  • target/release/mashi-cli compress tests/test.wasm
  • target/release/mashi-cli decompress tests/test.wasm.mashi

Cargo功能

  • 如果你想要包含编码器,请使用encoder功能
  • 要启用std支持(例如运行单元测试),请使用std功能

非科学的基准测试

使用各种压缩器压缩tests/test.wasm

压缩器 % 大小 命令行
mashi 34.4% 12083 mashi-cli compress
zpaq 37.0% 13004 zpaq a-m5
xz 38.5% 13522 xz--格式=raw--lzma2=预设=9e
zstd 41.3% 14536 zstd--ultra-22
gzip 44.5% 15629 gzip--9
original 100% 35151

许可

由于原始PAQ压缩器是GPL许可,请注意Mashi也是GPL许可。

致谢

  • 压缩模型基于Matt Mahoney等人的PAQ工作。
  • 算术编码器是Crinkler中的一个,由Mentor和Blueberry完成。
  • 通过Jeff Miller的视频和Ferris在Revision 2020的压缩研讨会,我更好地理解了这一切。
  • 我的某些移植工作得益于aufdj的工作。

无运行时依赖

功能