【Rust日报】2026-09-21 Vortex:可扩展列式格式如何适配任意数据形状
内容提要
Vortex 是 Rust 实现的开源列式格式,与 Arrow 零拷贝兼容,将逻辑类型、物理编码与存储布局解耦,可承载标量到嵌套 JSON 等任意数据。Portus 是基于 Pingora 的 Kubernetes Gateway API 实现,通过 130 项一致性测试,性能优于 agentgateway。confset 用一份 Pkl 生成多种工具原生配置。另有 Windows 上 MSVC link 与 rust-lld 链接对比,后者快约 20%、内存省约 48%。
延伸解读
Vortex 解耦设计的意义
Vortex 将逻辑类型、物理编码与存储布局拆开,使同一格式能承载从标量到嵌套 JSON 等任意数据,无需为新类型另起文件格式。这种解耦让编码可级联压缩,计算内核能在压缩数据上直接操作,减少解压开销。类型、编码与布局均可扩展注册,无需修改中央枚举或等待规格委员会,提升了灵活性和可扩展性。
Portus 的性能与架构优势
Portus 基于 Pingora 数据面,控制器将 Gateway API CRD 直接编译为 protobuf 配置,通过 gRPC 下发,配置原子切换,无二次配置语言和 sidecar 注入。在 Gateway API v1.6.2 实验频道五个 profile 中通过 130/130 一致性测试。与 agentgateway 对比,裸 GET 在 64/128/256 连接下 QPS 高约 21%–40%,固定 30,000 QPS 时 p99 约 0.35 ms 对 0.82 ms,显示其低延迟和高吞吐潜
confset 的配置管理机制
confset 用一份 confset.pkl 生成 oxlint、rustfmt、ruff 等工具的原生配置文件,内嵌 pklr 无需本地安装 Pkl CLI。它通过 .confset/state.json 记录输出所有权和 SHA-256,拒绝覆盖非托管或被外部修改的文件,变更时旁路 staging 后原子替换,避免配置冲突。提供 init、generate、validate 等命令,安装方式包括预编译二进制和 cargo。
Windows 链接器性能对比
在 Windows 11 上对比 MSVC link.exe 与 rust-lld,开发构建中 rust-lld 使墙钟中位数从 5.683 秒降至 4.508 秒,约快 20.4%,进程树峰值内存从 2,887 MiB 降至 1,499 MiB,约省 48.1%。但 CPU 时间增加约 6.4%,PDB 增大 11.8%,EXE 大小几乎不变。这表明 rust-lld 能显著缩短链接时间和降低内存占用,但可能增加 CPU 和调试信息开销。
Q&A
Vortex 是什么?它和 Apache Arrow 有什么关系?
Vortex 是 Linux Foundation 下的开源列式数据格式,用 Rust 实现,并与 Apache Arrow 零拷贝兼容。
Vortex 如何做到用同一格式承载任意数据形状?
Vortex 将逻辑类型、物理编码与存储布局解耦。核心数据是带 DType 的 Array,DType 只描述逻辑含义(如 Primitive、Utf8、List、Struct、Extension),不绑定磁盘布局;同一逻辑类型可采用不同物理编码(如字典编码、run-end、bitpacking),编码之间可级联压缩。类型、编码与 layout 都可扩展并注册到 session,无需修改中央枚举或等待规格委员会。
Portus 是什么?它的性能表现如何?
Portus 是用 Rust 写的 Kubernetes Gateway API 实现,数据面基于 Cloudflare Pingora 0.9。对 Gateway API v1.6.2 experimental channel 的五个 profile(HTTP/gRPC/TLS/TCP/UDP)共 130/130 一致性测试通过。与 agentgateway v1.5.0 对比:裸 GET 在 64/128/256 连接下 QPS 约高 21%–40%;固定 30,000 QPS 时 p99 约 0.35 ms 对 0.82 ms。
confset 是做什么的?它如何管理生成的配置文件?
confset 用一份 confset.pkl 生成 oxlint、oxfmt、rustfmt、ruff、cargo-deny、prettier 等工具的原生配置文件。内嵌 pklr,不要求本机安装 Pkl CLI。输出所有权记录在 .confset/state.json(路径与 SHA-256);拒绝覆盖非托管或被外部改过的文件,变更按文件旁路 staging 后原子替换。
在 Windows 上,使用 rust-lld 替代 MSVC link 链接有什么好处?
根据 GitComet 作者的对比,在 Windows 上使用 rust-lld(MSVC 兼容模式)替代 Microsoft link.exe 进行最终 native link,开发构建墙钟中位数从 5.683 s 降至 4.508 s(约 −20.4%),进程树峰值 committed memory 从 2,887 MiB 降至 1,499 MiB(约 −48.1%),进程树 CPU 时间约 +6.4%,PDB 约 +11.8%,EXE 大小几乎不变。
confset 支持哪些命令?如何安装?
confset 支持 init / generate(含 --watch)/ validate / list / clean 命令。安装方式:GitHub release 预编译、cargo binstall confset,或 cargo install confset --locked(需 Rust ≥ 1.98.1)。