2026 年 4 月版本
本页归档 2026 年 4 月发布记录。
2026-04
v0.5.1
版本定位
- Patch Release,重点修复
any_matchquick setup 依赖分析和query_recorder分页、清理边界。
主要变更
- 修复
any_match在依赖分析阶段会丢失 quick setup 表达式的问题。qname $provider、qtype 1等 quick setup matcher 会按原表达式解析并展开依赖。 - 修复
query_recorder的保留期清理与分页游标边界。清理截止时间改为基于真实时间戳计算,分页列表会多取一条记录判断是否还有下一页。 - 调整
query_recorder记录时间字段的存取类型,避免时间戳在写入、读取和清理路径中发生不必要的无符号转换。 - 同步修正
upgradeCLI 默认缓存和备份目录为./upgrade-cache与./upgrade-backups,并修复对应默认值测试。
配置与升级说明
- 本次发布不引入新的配置字段,
v0.5.0配置可直接升级。 - 已启用
query_recorder或在any_match中使用 quick setup 表达式的部署,建议升级到v0.5.1。 query_recorder仍处于 Experimental 阶段,其 API 与配置字段后续仍可能调整。
v0.5.0
版本定位
- Minor Release,新增查询审计能力、组合 matcher 能力,并增强 HTTP/3 发现体验。
主要变更
- 新增
query_recorderexecutor,支持将查询记录落盘、按保留策略清理,并通过插件 API 查询统计、分页读取和单条记录详情。 - 新增
any_matchmatcher,支持在一个 matcher 中聚合多条 matcher 表达式,只要任意一条命中即返回 true,并支持!$tag形式的否定表达式。 - HTTP server 在启用 HTTP/3 时,会在 HTTP/2 响应中自动宣告
Alt-Svc: h3=":<listen-port>"; ma=86400,帮助客户端发现并升级到 H3。 - 修复
sequence中否定 matcher(如!$has_resp)未正确纳入依赖跟踪的问题,避免 quick setup / 依赖分析阶段遗漏引用(Closed #75)。 - 时间相关逻辑统一到
jiff + AppClock,使 cron 触发、日志时间和系统时间获取路径更一致。
配置与升级说明
- 本次发布不引入必须变更的全局配置字段,现有
v0.4.x配置可直接升级。 query_recorder当前为 Experimental 能力,后续小版本中其 API 与配置字段可能调整。- 启用查询审计时,可在
sequence中按需插入query_recorder,并结合 retention 参数控制磁盘占用。 - 启用 DoH 客户端自动发现 HTTP/3 时,应确认 HTTP server 已设置
enable_http3: true且证书配置完整。
v0.4.2
版本定位
- Patch Release,修复上游竞争场景的连接释放问题,并新增自动升级能力。
主要变更
- 修复在配置多个并发 upstream、启用 fallback 等存在上游竞争的场景下,部分连接未被正确释放的问题。
- 新增
upgradeCLI 工具及插件,支持自动更新并替换二进制文件。 - 应用以 Linux Service 方式运行时,
upgrade支持更新后自动重启应用。
配置与升级说明
- 本次发布不引入新的必填配置字段。
- 依赖多 upstream 并发竞争、fallback 或自动升级流程的部署可升级到
v0.4.2。
v0.4.1
版本定位
- Patch Release,修复 upstream
request_map内存泄漏,并提升 DoH HTTP 响应兼容性。
主要变更
- 修复 upstream
request_map在连接关闭、请求超时和异常回收场景下的内存泄漏问题,避免 pending query waiter 与 sender 残留。 - 重写
request_map为固定容量的稀疏表实现,不再为每条连接预留完整u16DNS ID 空间。 - 修复 DoH 响应头生成逻辑:
application/dns-message响应会写入正确的Content-Length,并按实际 DNS TTL 生成Cache-Control: max-age=...。 NoError、NXDOMAIN、NODATA等常见 DoH 响应会分别从 answer TTL 或 SOA negative TTL 推导 HTTP 缓存时间;拒绝类响应不再强行附带误导性缓存头。
配置与升级说明
- 本次发布不引入新的配置字段,
v0.4.0配置可直接升级到v0.4.1。 - 由于修复的是 upstream
request_map的内存泄漏问题,建议长期运行、长连接较多或上游并发较高的部署升级到v0.4.1。 - 通过
dig +https://...、浏览器、反向代理或网关缓存访问 DoH 的场景,升级后可获得更稳定的 HTTP 响应兼容性。
v0.4.0
版本定位
- Minor Release,新增 provider 级热刷新能力,并重构 provider 组合与初始化模型。
主要变更
- 新增
reload_providerexecutor,以及 provider 级管理接口POST /plugins/<provider_tag>/reload。下载或覆盖规则文件后,可以只刷新受影响的 provider,而不必触发应用级全量reload。 - 重构 provider 组合模型:
domain_set/ip_set只编译自身本地规则,运行时继续查询sets中引用的 provider。 - runtime 初始化会跳过没有 live dependents 的 provider,避免未被消费的规则集在启动阶段做无意义的文件读取、dat 解析和内存占用。
- quick setup 依赖分析扩展到
sequence/cron等运行时引用场景,使插件依赖图与初始化顺序更准确。 - 文档新增 targeted provider reload 的 API 与
reload_providerexecutor 说明,并补充下载后刷新 provider 的串联示例。
配置与升级说明
- 现有“
download覆盖文件后再全量reload”的流程,通常可以改为“download -> reload_provider”,降低对其它插件的重建影响。 reload_provider只适用于刷新 provider 的既有配置和外部数据文件;变更涉及config.yaml、provider tag、sets拓扑或插件列表时,仍需要使用全量reload。- 未被任何 live 路径引用的 provider 将不会进入 runtime registry;依赖其运行时 API 或行为时,应确保它被
server、executor、matcher直接或间接引用。
v0.3.2
版本定位
- Patch Release,降低正常连接生命周期产生的误报日志,并改善调试输出。
主要变更
- 调整 UDP、TCP、DoT、DoQ 上游连接池的初始化策略,不再在启动时预创建空闲连接,减少部分上游主动关闭空闲连接时产生的误报 EOF / reset 日志。
- TCP 上游连接复用流程将预期内的 EOF、连接回收和失效连接淘汰视为
debug级事件,避免正常连接生命周期被误记为告警。 - DoH 服务端将浏览器或代理主动中断引发的 TLS、HTTP/2、HTTP/3 握手失败,以及客户端提前关闭响应流导致的发送失败,下调为
debug日志。 - Debug 日志中的 DNS 请求与响应信息现在直接输出
questions、消息 ID、EDNS 和 answers 内容;Record新增更易读的Debug/Display输出格式。
配置与升级说明
- 本次发布不引入新的配置字段,现有
0.3.x配置可直接升级。 - 监控依赖 warning 日志计数时,升级到
v0.3.2后,正常的上游断连和 DoH 客户端中断将不再放大告警噪音。
v0.3.1
版本定位
- Patch Release,修正
sequence内建控制流语义,并补齐发布元数据。
主要变更
- 修正
sequence的内建控制流语义:accept/reject稳定终止当前链路,return显式返回调用方,jump与goto在嵌套sequence中的恢复行为更一致。 - 移除依赖内部 flow state 的控制方式,改为由
ExecStep显式传播控制流结果,减少sequence、with_nextexecutor 和嵌套调用混用时的语义歧义。 - 补强
sequence的单元测试与集成测试,覆盖accept、return、reject、jump、goto以及adguard_rule/question组合分支。 - 为
oxidns-proto、oxidns-zoneparser、oxidns-ripset补齐 crates.io 发布所需的包元数据、README、仓库信息和依赖版本声明。 - 更新
configuration、executor、matcher文档,对sequence内建控制流、mark语法,以及qtype/qclass数值写法给出更明确说明。
配置与升级说明
- 配置依赖嵌套
sequence、jump/goto/return组合时,建议升级到v0.3.1以获得更稳定且可预测的控制流行为。 - 本次发布不引入新的配置字段,主要是控制流修正、测试补强和发布元数据整理。
v0.3.0
版本定位
- Minor Release,新增 HTTP 回调、配置检查、dat 导出、zone 解析和 Linux netlink 集成能力。
主要变更
- 新增
http_requestexecutor,支持在before/after两个阶段向外部http/https服务发起同步或异步回调,并支持模板变量、json/form/body、SOCKS5、重定向和错误策略。 - CLI 新增
check与export-dat命令;check --graph可静态校验配置并输出插件依赖图,export-dat可把geosite.dat/geoip.dat按 selector 导出为 OxiDNS 或原始文本规则。 hosts语义向 mosdns 对齐;arbitrary引入更完整的 zone parser,支持$ORIGIN、$TTL、$INCLUDE、$GENERATE、RFC3597 等更丰富记录语法。- Linux
ipset/nftsetexecutor 改为内置 Rust netlink 后端,不再依赖运行时ipset/nft命令。 - workspace 新增
oxidns-proto、zoneparser、ripset三个内部 crate;网络热路径引入可复用 wire buffer 池,并优化 UDP/TCP/上游 socket 参数。 - docs 新增 CLI 页面,并更新
executor、provider、quickstart、benchmarks、releases等章节。
配置与升级说明
hosts中无前缀规则现在等价于full:;正向本地答案 TTL 固定为10;域名命中但地址家族不匹配时会返回NoError + 空 Answer + fake SOA,默认不再透传后续 executor。arbitrary不再提供旧 quick setup 语法,升级时建议改为显式rules/files配置。- quickstart 新增 Docker Compose 示例,补充 Docker 镜像仓库、Windows release 资产与服务部署说明。
v0.2.1
版本定位
- Patch Release,修复 DoH over HTTP/2 上游 GET 请求问题,并补充 quickstart 文档。
主要变更
- 修复 DoH over HTTP/2 上游 GET 请求未正确结束 stream,导致部分上游在 5 秒后超时的问题。
- 完善
Question的Display输出,统一日志和调试信息中的查询展示格式。 - 放宽 cache TTL 单测中的时间边界假设,避免 CI 在跨秒时出现偶发失败。
- quickstart 文档移除 Docker
linux/arm/v7支持说明,并新增docker compose部署示例。
配置与升级说明
- 本次发布不引入新的配置字段。
- 使用 DoH over HTTP/2 上游 GET 请求的部署建议升级到
v0.2.1。
v0.2.0
版本定位
- Feature Release,新增订阅下载、定时任务、脚本执行和 geodata provider 能力。
主要变更
- 新增
downloadexecutor,支持将远程http/https文件下载到本地目录,并支持 SOCKS5 代理、HTTP 重定向跟随、启动时自动补齐缺失文件。 - 新增
cronexecutor,可按固定间隔或标准 5 字段 cron 表达式执行后台任务。 - 新增
reloadexecutor,可触发一次完整的应用级 reload。 - 新增
scriptexecutor,可执行外部命令并注入稳定上下文字段。 - 新增
geoip、geosite、adguard_ruleprovider,以及questionmatcher;qname域名匹配新增对adguard_rule规则集的支持。 - cache 新增
stale lazy refresh行为,rule matcher 完成结构拆分与热路径优化,并新增可配置日志文件轮转能力。 - 系统更新
executor、matcher、provider、server、quickstart、scenarios等文档,并新增 docs-site CI。
配置与升级说明
startup_if_missing默认启用,更适合首次部署和规则文件自举场景。ros_address_list支持fixed_ttl=0,表示无超时。hosts、black_hole、cache的 quick setup 新增short_circuit支持。- 移除
hostsquick setup,收敛早期不够稳定的快速配置入口。 - 从
serde_yml迁移到serde_yaml_ng,并同步更新部分依赖和 CI 工具链。