whois v3.4.0
本次版本将 v3.3.3 的完整 TLS 单文件交付调整为“紧凑主程序 + 完整 TLS companion”双制品模型。每个架构默认提供不含 OpenSSL 与 CA bundle 的 whois-<arch>,并提供可选、可独立运行的 whois-<arch>-tls。紧凑版在实际配置 HTTPS 代理时透明执行同目录、同架构、同版本的 TLS 版;直连、HTTP CONNECT、SOCKS4/4a/5/5h 与全部非 HTTPS 功能无需 companion。
This release changes the full TLS single-binary delivery introduced in v3.3.3 into a compact-main-plus-full-TLS-companion model. Every architecture now ships an OpenSSL/CA-free whois-<arch> binary and an optional, independently executable whois-<arch>-tls binary. When an HTTPS proxy is configured, the compact binary transparently executes the same-directory, same-architecture, same-version TLS companion. Direct connections, HTTP CONNECT, SOCKS4/4a/5/5h, and all other non-HTTPS paths need no companion.
中文概要
- 九架构双制品:7 个 Linux 静态目标与 win32/win64 各提供紧凑版和 TLS 版,共 18 个静态二进制。紧凑版不链接 OpenSSL,也不嵌入 Mozilla CA;TLS 版保留 v3.3.3 的完整 HTTPS proxy 能力、静态 OpenSSL 3.5.8 与 Mozilla CA
2026-08-13(121 张证书)。 - 透明 HTTPS 转交:紧凑版只从自身所在目录派生
-tls文件名,不搜索PATH。POSIX 使用execv,Windows 使用_execv;argv、环境、stdin、stdout、stderr 与最终退出状态保持不变。 - 批量管道兼容:转交发生在读取查询输入前,整个批量进程只转交一次,不会为每条查询创建 TLS 进程。显式
-B、stdin 非 TTY 自动批量、BusyBox 管道和四种 batch strategy 均由 TLS 版按原契约执行。 - 失败关闭:companion 缺失、不可执行、版本不一致或实际不含 TLS 时,在消费 stdin 和访问代理网络前向 stderr 报错并以状态 37 退出;绝不静默回退直连。
- 独立部署:紧凑版可独立完成全部非 HTTPS 查询;TLS 版也可独立运行全部功能。只有“使用紧凑版访问 HTTPS 代理”需要两个同版本文件同目录部署。
- 版本来源:源码版本提升至 v3.4.0;普通源码构建不再从旧 Git 标签意外继承 v3.3.3,发布流程仍可通过
WHOIS_FORCE_VERSION显式锁定版本。 - 构建与发布:默认远程构建在
WHOIS_TLS=1时为每个目标生成 compact 与-tls两份产物;显式WHOIS_TLS=0时仅生成 9 个紧凑版。GitHub workflow、静态资产上传与 one-click dry-run 清单均已扩展至 18 个二进制。 - 聚焦验证(2026-09-04):x86_64、win32、win64 的 compact/TLS 六个制品真实构建并通过 SHA-256 一致性;Windows 两目标保持 full-static。compact 与 TLS win64 均报告 v3.4.0;两行 HTTPS 批量管道在两者上均产生 2 组查询标题与 2 组权威尾行,紧凑版透明转交无 companion 错误;缺失 companion 时状态为 37 且消费查询数为 0。
- 最终全量验证(2026-09-04):LoongArch64 改用 musl 并重建对应 OpenSSL 后,强制 clean
v3.4.0的 Strictlto-auto九架构双制品轮无编译/LTO 告警;18/18 SHA-256、Golden、三起点 referral 与同步全 PASS(out/artifacts/20260904-083712)。24/24 冒烟查询标题与权威尾行配对且异常 0;七个 Linux 架构的 compact/TLS 均为 static/static-pie,Windows 四制品均为 full-static。
English summary
- Dual artifacts across nine architectures: seven Linux static targets plus win32 and win64 each ship compact and TLS variants, for 18 static binaries. Compact binaries contain neither OpenSSL nor the Mozilla CA bundle. TLS binaries retain the complete v3.3.3 HTTPS-proxy implementation, static OpenSSL 3.5.8, and the Mozilla CA bundle dated 2026-08-13 (121 certificates).
- Transparent HTTPS delegation: companion lookup derives the
-tlsfilename only from the current executable directory and never searchesPATH. POSIX usesexecvand Windows uses_execv, preserving argv, environment, stdin, stdout, stderr, and final exit status. - Batch-pipeline compatibility: delegation happens before query input is read and only once for the whole batch, never once per query. Explicit
-B, automatic non-TTY batch mode, BusyBox pipelines, and all four batch strategies run under the TLS binary with the existing contracts. - Fail-closed behavior: a missing, non-executable, version-mismatched, or non-TLS companion reports an error on stderr and exits 37 before consuming stdin or accessing the proxy network. It never silently falls back to a direct connection.
- Independent deployment: the compact binary independently supports every non-HTTPS path, while the TLS binary independently supports all features. Only HTTPS-proxy use through the compact name requires both matching files in one directory.
- Version source: the source version is v3.4.0. Ordinary source builds no longer inherit v3.3.3 from an older Git tag, while release automation can still pin a version through
WHOIS_FORCE_VERSION. - Build and release flow: the default remote
WHOIS_TLS=1orchestration emits compact and-tlsartifacts for every target. ExplicitWHOIS_TLS=0emits only the nine compact binaries. The GitHub workflow, static uploader, and one-click dry-run manifest now expect all 18 binaries. - Focused verification (2026-09-04): real x86_64, win32, and win64 builds produced all six compact/TLS artifacts with matching SHA-256 reports; both Windows targets remain full-static. Compact and TLS win64 binaries report v3.4.0. A two-line HTTPS batch pipeline produces two query headers and two authoritative tails through either binary, with transparent delegation and no companion error. Removing the companion exits 37 with zero queries consumed.
- Final full-matrix verification (2026-09-04): after moving LoongArch64 to musl and rebuilding its OpenSSL prefix, the clean
v3.4.0Strictlto-autonine-architecture dual-artifact run has no compiler/LTO warnings. All 18 SHA-256 checks, Golden, all three referral origins, and artifact sync pass (out/artifacts/20260904-083712). All 24 smoke query headers pair with authoritative tails with zero anomalies; both variants for all seven Linux architectures are static/static PIE and all four Windows artifacts are full-static.
兼容性与限制 / Compatibility and limitations
- 默认直连、stdout/stderr 分工、标题/尾行/折叠格式、RIR referral、DNS health、retry metrics、
NO_PROXY与代理协议语义不变。 - TLS 拆分降低默认下载、存储和非 HTTPS 部署成本;真正执行 HTTPS 时仍由完整 TLS 版承担与 v3.3.3 相当的运行时资源需求。
- 紧凑版与 TLS 版必须来自同一版本。重命名、混放版本或只复制紧凑版却配置 HTTPS 代理都会触发 fail-close。
- 响应读取仍以
--buffer-size(默认 512 KiB)为实际接收上限;超限静默截断行为继承自 v3.3.3,本版未改变。 - Default direct-connect behavior, stdout/stderr separation, header/tail/fold formats, RIR referrals, DNS health, retry metrics,
NO_PROXY, and proxy protocol semantics are unchanged. - The split reduces default download, storage, and non-HTTPS deployment cost. Actual HTTPS execution still uses the full TLS binary and therefore has runtime resource requirements comparable to v3.3.3.
- Compact and TLS binaries must come from the same version. Renaming files, mixing versions, or configuring HTTPS after deploying only the compact binary fails closed.
- The actual response receive cap remains
--buffer-size(512 KiB by default). Silent truncation above that cap is inherited from v3.3.3 and is unchanged.
下载 / Downloads
-
紧凑静态版 / Compact static binaries (GitHub Release v3.4.0):
-
完整 TLS 静态版 / Full TLS static binaries (GitHub Release v3.4.0):
-
CI glibc TLS 构建 / CI glibc TLS build:
-
校验 / Checksums: