项目分享:一个带有 Zig 核心的 Python 无 I/O(sans-IO)HTTP 解析器!⚡

2 views
Skip to first unread message

Jiacai Liu

unread,
Aug 3, 2026, 11:05:21 PM (19 hours ago) Aug 3
to zigcc
logo.png

文档:https://zttp.marcelotryle.com
源码:https://github.com/Kludex/zttp

警告: zttp 目前处于实验阶段。API 和行为可能会随时更改,尚不适合用于生产环境。

zttp 是一个无 I/O (sans-IO) 的 HTTP 解析器,其引擎使用 Zig 编写。它支持 HTTP/1.1、HTTP/2 和 HTTP/3,并且不执行任何自身的 I/O 操作:你向它输入字节并提取事件,同时向它索取要发送的字节。它从不触碰套接字(socket),因此它可以与你喜欢的任何 I/O 方案配合使用。

它的理念与 h11 相同,但底层是用手写的 Zig 引擎代替了纯 Python。

核心特点是:

  • 无 I/O (Sans-IO): 干净的、基于事件的 API。通过 receive_data 输入字节,通过 next_event 提取 Request / Data / EndOfMessage 事件。没有回调,没有套接字,没有意外。
  • HTTP/1.1、HTTP/2 和 HTTP/3: 三者使用相同的事件 API,只需通过一个 protocol= 参数进行选择。
  • 速度快: 在 14 个基准测试工作负载中的 13 个上,比 httptools(一个 C 语言解析器)还要快,并且比纯 Python 替代方案快大约 15 倍。
  • 安全: 默认严格。它能够防御请求走私(request smuggling),拒绝纯 LF 换行符,限制每个缓冲区的大小,并且使用 Zig 开启了安全检查的编译模式发布。
  • 类型化: 带有完整类型提示的 py.typed 包。
  • 无依赖: wheel 安装包仅包含编译好的引擎,别无其他。
Reply all
Reply to author
Forward
0 new messages