cURL 7.86 发布,添加实验性 WebSocket 支持、移除 NPN 支持


cURL 7.86 已发布,此版本添加实验性 WebSocket 支持、移除 NPN 支持,并带来大量修复。

重点

已移除 NPN 支持

curl 不再支持使用 NPN 协商 HTTP/2。执行此操作的标准方法长期以来一直是 ALPN,且浏览器几年前就取消了对 NPN 的支持。

WebSocket API

此版本中包含一个实验性 WebSocket API ,它以三个新功能和一个新的 setopt 选项来控制行为。

WebSocket API 的详细介绍。

Bug修复

一些已解决的问题:

  • aws_sigv4 标头计算代码进行了重大改革。
  • curl 手册页详细说明了每个选项的多用途
  • 弃用带有小 curl_off_t 的构建,这个版本的  curl 不再支持在没有 64 位数据类型的系统上构建。
  • ngtcp2 配置选项默认为“否”,需要明确要求在构建中启用 ngtcp2。
  • 拒绝带有 TAB 字符的 cookie 名称或内容,名称或内容中带有标签的 Cookie无法互操作, curl 将它们保存到磁盘时会出问题,因此拒绝。
  • 对于带有 gcc + want 警告的构建,设置 gnu89 标准,为了更好地确保兼容性。
  • 使用 -O2 作为默认优化配置中的 clang
  • 警告 –ssl 使用是“不安全的”
  • ctype 函数转换为仅宏,用宏替换了整个函数族
  • 100 多个文档拼写修复
  • 使 nghttp2 对 HTTP/2 中的字段空白不那么挑剔,如果使用新的 nghttp2 库构建,curl 对标题字段后的尾随空格不那么挑剔
  • 使用 URL 解码的用户名进行 .netrc 解析,这种回归使得 curl 在使用 .netrc 文件查找相应密码时,无法正确解码 URL 中提供的用户名。
  • 使 certinfo 可用于 QUIC,CURLOPT_CERTINFO选项现在适用于 QUIC/HTTP/3 传输。
  • 强制 IPv4 传输仅使用 A 查询,当要求 curl 仅使用 IPv4 进行传输时,curl 现在仅解析 IPv4 名称。但很大一部分系统在请求 AAAA 地址时会出现问题,因此需要使用此选项来避免 bug。
  • schannel:导入 PFX 时,禁用密钥持久性,使用 Schannel 后端时的一些操作会导致之后磁盘上的剩余文件。
  • 添加和使用 Curl_timestrcmp,curl 在比较库中的密钥时使用这个新的恒定时间函数,避免使用时间作为反馈来判断猜测用户名或密码。
  • curl:防止在并行模式下过度排队,命令行工具过于急切地在并行模式下创建和排队等待传输,使得具有数百万传输的命令行很容易使用海量的内存。
  • url 解析器:在不猜测时更好地提取方案
  • 使用 CURLU_URLENCODE 修复不带斜线的解析 URL
  • url 解析器:更精简,分配更少,URL 解析器现快了几个百分点,且减少了内存分配。
  • url 解析器:拒绝主机名字段中的坏字符
  • wolfSSL:修复会话管理错误,由于缺少引用计数器,会话 ID 缓存处理可能会触发崩溃。

未来计划

计划在未来移除以下功能:

  • 支持没有 64 位数据类型的系统
  • 支持 NSS TLS 库

 

更新公告:https://daniel.haxx.se/blog/2022/10/26/7-86-0-with-websocket/


相關推薦

2022-03-07

curl 7.82.0 现已发布,具体更新内容如下: Changes 有了新的 --json 命令行选项,使得从命令行和 shell 脚本发送 JSON 变得更加方便。curl 支持大量不同的 TLS 库,但现在数量减少了一个(到 13 个),因为官方正式放弃了对 Mesa

2022-12-22

修复。 修复代理的 IDN cmake:在共享库上设置 soname WebSocket 修复了部分框架和缓冲区更新的问题 当 websockets 支持没有内置时,现在返回 CURLE_NOT_BUILT_IN 当连接被关闭时正确返回错误 作为内部重构和为 TLS 引入连接过

2023-11-18

。开发 Mq, Im, Rpc 就跟玩似的。 (3)重新设计了 Solon 的 WebSocket 接口标准 这次的设计很专业、很纯血。未来10年,估计都不用再动了。动它,是下了很大决心的 (4)封装了微 FaaS 引擎:Luffy FaaS 引擎(它也是 Solon 的二级项目

2022-04-29

协议,可能会将合理的信息泄露给错误的一方。 变化 实验性函数 引入了两个 新函数 curl_easy_header() 和 curl_easy_nextheader()。 它们允许应用程序获取特定 HTTP headers 的内容或在传输完成后迭代所有这些 headers。 应用程序之前已

2023-10-19

ebStreams到达稳定状态 添加用于 flip module 默认值的新实验性 flag (--experimental-default-type) 内置 WebSocket 客户端 针对 test runner 的许多更新 …… 公告写道,当 Node.js 20 本月晚些时候成为长期支持版本 (LTS) 时,Node.js 21 将取

2023-03-03

们对此采取什么行动。 这是 cURL 作者 Daniel Stenberg 近日发布的推文节选,直指微软不作为。 抱歉讲太快,现在让我们倒带 <<<<<<<<< 重新梳理一下故事的来龙去脉。 cURL 项目的作者 Daniel Stenberg 对项目的维

2022-07-12

)重命名为Channel.writableBytes() 添加 ProtocolEvent 并让 SSL 和 WebSocket 实现使用它 将通用逻辑移动至AbstractChannel,从而使实现更容易重用代码,还要确保重命名受保护的方法,以更加一致 详情。

2023-11-24

选项,可以在成功写入操作结束时强制刷新数据。 新增实验性的 WebSocket 客户端 使用 --experimental-websocket flag,可以添加一个全局的 WebSocket 对象,符合 WHATWG 的标准。 修复 vm.Script 的 V8 编译缓存支持 详情查看发布公

2022-06-28

议传输数据。这个名字代表了 "Client URL"。 cURL 7.84 正式发布,更新内容如下: 变化 -rate 这个新的命令行选项 rate 限制了每个时间段的传输次数。 弃用 -random-file 和 -egd-file 这两个选项已经有很长一段时间没有人使用了,

2023-09-06

Apache APISIX 3.5.0 现已正式发布,此版本带来了一些新功能和改进的用户体验。包括在主机级别动态配置 TLS 版本、与 Chaitin WAF 的集成、强制删除资源、在独立模式下部署 APISIX 时在配置文件中使用环境变量等。此外,还包含了一

2022-11-01

交补丁,表示准备在 Chrome 110 中移除对 JPEG-XL 图像格式的实验性支持。 许多人对 Chrome 的这个决定感到不解,因为 JPEG-XL 在其生命周期中还非常年轻,正处于成长阶段,并且越来越多行业已经开始关注和支持它。所以他们认为

2022-01-23

cURL 作者 Daniel Stenberg 在邮件透露了为 cURL 添加原生支持 JSON 的计划。 Daniel 解释了为 cURL 添加原生支持 JSON 的理由: 在 REST APIs 等领域,发送 JSON 是十分普遍的做法许多人被问及选择 cURL 替代方案的考虑因素时,“易于

2023-09-10

添加实验性的 WebAssembly 构建支持(WebGL 2.0),由 @nowasm 贡献 已知问题 WebGL context lost 尚未处理 部署在 github pages 的 demo 可快速预览,注意:由于  Github 限制,未开启 WASM 多线程支持,因此多线程模块测试会

2023-10-25

相关的供应商锁定。 Theora 于 2008 年 11 月 3 日全面公开发布,比特流格式于 2004 年 7 月 1 日冻结。Theora 前身是由 On2 Technologies 公司开发的专利视频编解码器 On2 TrueMotion VP3。