Puma 是一个简单、快速、线程化并且关注高并发的 HTTP 1.1 服务器,适用于开发和生产中的 Ruby/Rack 应用。
Puma 6.0.0 现已发布,该版本更新内容如下:
- Breaking Changes
- 放弃对 Ruby 2.2 和 2.3 的支持(现在是 2.4+)([ #2919 ])
- Remote_addr 功能已更改([ #2652 ],[ #2653 ])
- 不再支持 Java 1.7 或更低版本(JRuby 9.1 是最后一个支持该版本的版本)([ #2849 ])
- 移除 nakayoshi GC ([ #2933 ], [ #2925 ])
- wait_for_less_busy_worker 现在默认开启 ([ #2940 ])
- 为所有环境变量添加前缀
PUMA_
([ #2924 ], [ #2853 ]) - 删除了一些常量([ #2957 ]、[ #2958 ]、[ #2959 ]、[ #2960 ])
- 以下类现在是 Puma 私有 API 的一部分:
Client
、Cluster::Worker
、Cluster::Worker
、HandleRequest
。([ #2988 ]) - 移除
DefaultRackup
等配置常量 ([ #2928 ]) - 从
Events
中提取LogWriter
( [ #2798 ])
-
Features
- 将大型(100kb+)响应体的吞吐量提高 3-10 倍([ #2896 ],[ #2892 ])
- 增加文件响应的吞吐量([ #2923 ])
- 在 Rack 中添加对 streaming bodies 的支持。([ #2740 ])
- 允许通过 'reuse' ssl_bind 方法或绑定字符串查询参数重用 OpenSSL 会话([ #2845 ])
- 允许
run_hooks
将 hash 传递给 blocks 以供以后使用([ #2917 ],[ #2915 ]) - 支持更高精度的 request_body_wait metric ([ #2953 ])
- 允许 header values 是数组(Rack 3)([ #2936 ],[ #2931 ])
- 在 /stats 中导出 Puma/Ruby 版本 ([ #2875 ])
- 允许配置请求 uri 最大长度和请求路径最大长度([ #2840 ])
- 添加几个公共访问器([ #2774 ])
- 当 worker 启动失败时记录整个回溯 ([ #2891 ])
- [jruby] 启用 TLSv1.3 支持 ([ #2886 ])
- [jruby] 支持设置 TLS 协议 + 重命名 ssl_cipher_list ([ #2899 ])
- [jruby] 支持 truststore 选项([ #2849 ],[ #2904 ],[ #2884 ])
-
Bug 修复
- 在将配置传递给 binder 之前加载配置([ #2897 ])
- 不要在不识别或不支持的 HTTP 方法上引发错误,例如 CONNECT ([ #2932 ], [ #1441 ])
- 修复了创建新 SSL listener 时的内存泄漏 ([ #2956 ])
-
Refactor
- log_writer.rb - 添加 internal_write 方法([ #2888 ])
- 将 prune_bundler 代码提取到它自己的类中。([ #2797 ])
- 重构 Launcher#run 以提高可读性(无逻辑更改)([ #2795 ])
- Ruby 3.2 将具有原生 IO#wait_* 方法,不需要 io/wait ([ #2903 ])
- 各种内部 API 重构([ #2942 ]、[ #2921 ]、[ #2922 ]、[ #2955 ])
更新说明:https://github.com/puma/puma/releases/tag/v6.0.0