Skip to main content

Module huffman

Module huffman 

Source
Expand description

HPACK/QPACK Huffman 编解码器 (RFC 7541 Appendix B)

全 workspace 唯一实现(zenith-http2 / zenith-http3 统一复用,禁止重复造轮子)。 提供完整的 Huffman 编码与解码能力:

  • 编码:将字面值字节流编码为 Huffman 压缩位流
  • 解码:将 Huffman 压缩位流还原为原始字节

§安全保证

  • 解码器对 EOS (symbol 256) 严格拒绝(RFC 7541 §5.2)
  • 解码器对超长填充(>7 位尾随 1)拒绝
  • 所有位操作使用 checked 算术,溢出 fail-closed
  • 最大输出长度限制,防止解压炸弹

§性能优化

  • 编码器:u64 位累加器 + 批量字节刷新
  • 解码器:8-bit 前缀解码表 O(1) 快速路径覆盖 ≤8 位码(占 HTTP 头部字符 95%+), 仅 >8 位码回退到分组二分查找
  • 回退解码器:预计算码长分组查找表(OnceLock 初始化一次),每码长内二分查找
  • 位读取:u64 批量读取 + 移位掩码,避免逐位循环

Structs§

HuffmanDecoder
Huffman 解码器:将 Huffman 压缩字节还原为原始字节
HuffmanEncoder
Huffman 编码器:将字节流编码为 Huffman 压缩位流

Enums§

HuffmanDecodeError
Huffman 解码错误

Constants§

HUFFMAN_TABLE
Huffman 编码表:HUFFMAN_TABLE[symbol] = (code, length)