跳到正文
参考文档 / ZLIB × LEAN

输入配置与覆盖颜色

此页源文件快照 · 02345a29bbdaa1ba · 对应提交的原文 ↗

构建保持固定:默认 x86_64 Linux、LP64、静态库和默认分配器,并采用已接受的平台假设。 每个对象的 2^63 字节上界由所有范围共享。下列范围针对 API 输入参数, 不引入新的形式化契约,也不改变已有目标。

对每个目标族,默认输入包含于常见输入,常见输入包含于全部支持的输入。 两个流式引擎的包含关系是严格的。具体入口可能忽略或固定某些维度,投影后的范围便可能相同。 不应为该入口凭空增加工作。

颜色 要求完整通过检查的覆盖范围
灰色 尚未完整证明默认输入。可能已有内部引理。
蓝色 已证明默认输入;尚未完整证明常见输入。
黄色 已证明常见输入;尚未完整证明全部支持的输入。
绿色 覆盖精确目标陈述允许的全部输入。

这些是累积的范围,不是工作量百分比。几个例子的证明不构成配置覆盖。 每个范围都量化其契约规定的数据、缓冲区、堆内容、失败和调用历史。 红色边框记录障碍。登记情况和指定提交上的 CI 验收与覆盖范围分开陈述。

Deflate 输入

压缩器的参数控制不同的事情:level 选择压缩级别,strategy 选择匹配与编码策略,memLevel 控制内部索引和符号存储的内存规模。windowBits 同时选择包装形式和窗口尺度;去掉包装选择后,指数 b 对应 2^b 个窗口字节。例如 15 对应 32768 字节。表中的数值是允许的参数,不是数据样例的个数。

三个范围都使用 method = Z_DEFLATED = 8。

参数 默认 常见 全部支持
level -1,规范化为 6 -1 和 0 到 9 -1 和 0 到 9
memLevel 8 8 1 到 9
windowBits 15 -15、15、31 -15 到 -9;8 到 15;25 到 31
strategy 0 0 0 到 4
包装格式 zlib raw、zlib、gzip raw、zlib、gzip

每一列包括该列所有组合。常见输入保持 32 KiB 窗口、默认内存级别和默认策略。 有符号窗口参数 -15 选择 raw,15 选择 zlib,31 选择 gzip。 在完整范围中,zlib 的 8 被规范化为 9;固定版本源码拒绝 raw -8 和 gzip 24。

五种策略是默认(0)、过滤(1)、仅 Huffman(2)、游程编码(3)和固定码(4)。 内存级别改变哈希维度以及符号/待输出存储。因此,较小的内存级别会影响输出重叠证明。

引擎与辅助函数的范围

声明族 相关范围与执行区别
默认初始化 deflateInit_ 固定方法、窗口、内存级别和策略,但保留任意压缩级别。其精确定理独立于通用 Init2 定理。
通用初始化 deflateInit2_ 暴露完整参数元组。它的默认/常见实例必须先有各自完整的执行契约,才能分别着色。
策略分派 级别 0 选择直接存储;1 到 3 选择快速匹配;4 到 9 选择延迟决策的慢速匹配。非零级别下,仅 Huffman 和游程编码策略覆盖普通选择。
匹配搜索 在同一引擎内,有可能参数化处理表选出的 候选链遍历预算、延迟决策长度阈值和提前停止搜索长度阈值。证明必须为每个纳入的表行建立实际边界。
补充与滑动 窗口和哈希维度决定数组边界、环形位置和滑动。固定窗口引理不会自动成为覆盖全部窗口的定理。
树与块输出 符号容量、待输出存储和未读符号位置与内存级别关联。树或单符号引理不能建立完整的重叠上界。

这些行按实现环节划分义务,具体证据见对应条目。 组件指南解释不变量;进度记录当前证据与剩余工作。

Inflate 输入

Inflate 没有压缩级别、内存级别或策略参数。 其输入语法已经包含全部直接存储块、固定编码块和动态编码块。

范围 windowBits
默认 15
常见 -15、15、31、47
全部支持 -15 到 -8;0;8 到 15;16;24 到 31;32;40 到 47

常见输入选择 32 KiB 的 raw、zlib、gzip 或自动检测流。 零窗口位形式从头部选择大小,并保留固定版本对 gzip 的处理。 较小窗口影响距离检查和完整性;接受每一个有效格式流需要目标规定的窗口条件。

快速与慢速执行

快/慢路径分派与上述输入配置是不同的划分。 实际快速调用要求至少六个可用输入字节、至少 258 个可用输出字节,以及少于八个已保留位。 调用者改变缓冲区时,默认配置的流也可能走任一路径。 因此默认覆盖必须包括两条路径及其切换。

声明族 必须建立的联系
初始化与重置 为所选窗口/包装建立表示条件和受模式保护的条款。
建表 默认输入配置和更广范围都要覆盖直接存储块、固定编码块和动态编码块。
快速解码 从分派状态推导真正的快速调用前提,保留其位/输入/输出和内存效果。
慢速解码 在实际返回状态上组合字面量、长度、距离和匹配步骤。
分派与退出 组合两条路径、等待/错误退出、窗口更新和计数器回写。

参见组件指南。通过检查的路径引理仍以其入口不变量为条件, 不能赋予完整流的覆盖颜色。

各入口的输入

对于校验和、查询、缓冲区工具、回调、gzip 文件和其他内部目标,应阅读精确陈述的参数与前置条件。 只有参数或被表示状态确实依赖流参数维度时,该维度才适用。 封闭的精确目标证明使该陈述的定义域获得绿色,包括其明确写出的内部前提。 它不会使调用者的目标获得绿色,也不会消除这些前提。

当前图发现的是精确完整目标的证明。默认/常见颜色保留给经过审阅、具有精确受检证明的限定范围契约。 仅有范围表不会提供这些契约,也不会提高覆盖等级。 证据索引区分登记、局部证明和未证明目标。

所有适用的错误、分配失败和清理要求仍然保留。 完整公开入口目标也保留其规定的无效参数拒绝行为。 修改文字中的范围不能缩小公开定理,也不能完成目标。

ZLIB × LEAN

全局目录

当前位置输入配置与覆盖颜色