Releases: yanxulang/yanxu-http
Releases · yanxulang/yanxu-http
Release list
1.0.0
yanxu-http 1.0.0
版本摘要
1.0.0 把早期的一次请求 HTTP 基础库升级为严格、有界、可复用的 HTTP/1.1 服务端协议层。公开契约现在覆盖安全解析、持久连接、分块、表单、Cookie、路由适配与 WebSocket 握手所有权边界。
新功能
HTTP限制统一请求行、首部、正文、分块、尾部、Multipart、超时和连接寿命预算;HTTP连接支持 keep-alive、客户端流水线、干净 EOF、临时响应、响应顺序和连接复用判断;- 请求与响应支持严格 chunked framing 和尾部;
- URL 编码表单与 Multipart 保留重复字段和二进制文件;
- Host、路径、方法与
路由视图为上层框架提供稳定输入; - Cookie 支持安全前缀、删除、SameSite、Partitioned 和重复请求值;
- WebSocket 版本 13 握手支持规范接受值、Origin 允许列表、服务器偏好子协议和缓冲字节移交;
- 生成 API、架构、错误、安全、性能、迁移与贡献文档进入版本库,并由 CI 防漂移。
修复与安全加固
- 唯一确定 Content-Length 与 Transfer-Encoding 优先级,拒绝所有冲突和模糊组合;
- 严格验证 CRLF、Host、首部 token、控制字符、块大小、尾部禁用字段和响应 framing;
- 对解析循环、集合数量和字节分配设置固定或可配置上限;
- 升级失败或协议失败后不再复用连接;101 无法从普通响应编码器绕过;
- Cookie 安全属性组合在渲染前统一验证。
兼容性
- 最低言序:1.1.6;当前稳定验证:1.1.8;
- 清单格式:2;构建目标:字节码;
- 直接依赖:无;
言据响应只消费调用方已经规范序列化的文字; - 支持 Linux、macOS 与 Windows 的纯言序路径;TCP 夹具只使用回环地址;
- 旧的离线解析、响应工厂、
读取请求和发送响应入口保留。
破坏性变化
- 最低言序由 1.1.5 提升为 1.1.6;
- 请求解析比 0.1 更严格:无 Host、重复关键首部、冲突 framing、非法 Cookie 和非规范输入会被拒绝;
- 稳定程序错误接口统一为
YANXUN_*代码;调用方不应依赖旧展示文字; - 持久连接响应必须携带对应请求对象,以保证 HEAD、关闭和顺序语义;
- 普通
HTTP响应不能编码 101,必须使用 WebSocket 升级方法。
迁移
把依赖范围改为^1.0并重新锁定。一次请求应用可以保留旧套接字助手;需要 keep-alive、chunked、流水线或升级时创建HTTP连接。检查更严格的错误分支,并通过错误详情读取代码。完整步骤见 MIGRATION_1.0.md。
权限
包只声明127.0.0.1、::1与localhost的 TCP 监听权限;文件、任意网络、UDP、环境、进程和原生扩展均未申请。顶层应用仍需按实际监听地址声明自己的权限。
已知限制
- 仅 HTTP/1.1,不含 TLS、HTTP/2、HTTP/3 或代理信任;
- 请求和响应正文当前在内存中形成完整字节串,没有应用级流式背压;
- Multipart 不自动落盘或扫描文件;
- WebSocket 只含握手和原始通道,不含帧、压缩、心跳或关闭协议;
- IPvFuture Host 未实现。
测试结果
- 21 个言序源码、规格、示例、负载和集成夹具文件通过当前与最低工具链静态检查;
- 9 个规格文件在言序 1.1.8 与 1.1.6 的树解释器和字节码 VM 上通过;
- 测试与解析负载的树/VM 对照全部通过;
- 真实 TCP 在两套工具链的树解释器与 VM 四种组合中通过,覆盖 103、定长响应、分块请求/响应、流水线和 WebSocket 超前字节;
- 两套工具链生成的公开 API 完全一致,发布构建均成功;
- CI 继续在最低工具链上覆盖 Ubuntu、macOS 与 Windows。