LLVM 项目目前支持 zlib 作为压缩算法,它的使用范围包括从压缩 ELF 调试部分,到序列化性能统计和 AST 数据结构。但 LLVM 的开发者 Cole Kissane 正在关注 Zstd 作为 zlib 的辅助压缩方法的使用,并编写了概念验证代码;用户可以在两种压缩方法之间进行二选一。Zstd 的压缩率与 DEFLATE 相似,但其更快的解压速度使它对许多软件项目具有更大的吸引力;目前已经得到了广泛地采用。
“我们想增加 Zstandard(又名 Zstd)作为 zlib 可供选择的替代品,它倾向于实现更高的压缩率,同时全面提高速度。使用这些内部工具可以在我们压缩 AST 等的地方提高速度,而不牺牲它们的压缩尺寸。”
相关实现的一些初步想法包括:
- 将 lib/Support/Compression.cpp 中声明的 llvm::zlib 命名空间重新定位到这样一个命名空间。
- 添加一个命名空间。
- 根据 llvm cmake flags 定义一个命名空间别名,它可以是 Zstd 或 zlib 命名空间的别名。
Cole 称,“这使我们能够轻松地发现需要更新的代码,并且通过使用而不是或来保持工具内部一致使用相同的压缩。我已经能够用这种实现模式创建一个工作的 POC,它似乎是有效的;但如果有更多吸引人的方法,我也不会感到惊讶。”
更多详情可查看此处。