Netty 5.0.0.Alpha5 已发布,此版本删除了大量重复代码,并对 API 进行了清理。除此之外还增加了在使用 JDK NIO 实现时,对 Unix Domain Socket 的支持。
主要变化
- 对
AbstractChannel
进行简化和流线化 (stream-lined),增加各种传输之间的共享代码主体,并且更容易实现新的传输。 - 引入复制自 ServiceTalk 的新 HTTP header API,它取代了以前
DefaultHeaders
的 API 系列 - 使用新的 HTTP header API,现在还可以更严格地验证 HTTP/1 和 HTTP/2 header
- 改进
Buffer
泄漏检测,并修复了许多泄漏问题 - 从
AsciiString
移除 Mutation 方法 native-image
使用的条件元数据现在支持自动生成
公告写道,为了让开发者能够在使用 4.1 的同时尝试体验 Netty 5,开发团队选择将两个版本放到不同的包,以便它们共存。因为这是一个新的主要版本,所以会包含许多破坏性的变化,这些变化主要受 Netty 4.1.x 生命周期汲取的经验影响。
接下来,开发团队会将 Netty 的默认分支更改为 main,因此对 4.1 版本所能接受的变化会更加严格,此举主要是为了保证 4.1 版本回滚的可能性下降到最低。当然,重要的错误修复也会被移植到 4.1。综上所述,开发团队目前没有计划停止对 4.1.x 的支持,而是同时支持 Netty 5 和 4.1.x。
Netty 5 迁移指南:https://github.com/netty/netty/wiki/Netty-5-Migration-Guide
Netty 4.1.84.Final 主要是修复错误:
- 带有无效字符的 HTTP/2 header 值现在在 header 验证中会被拒绝 (#12760)
- 自动生成用于 native-image 的条件元数据,使 GraalVM 支持更可靠 (#12794)
- 修复由
instanceof
和check-cast
检查引起的可伸缩性问题,该问题导致 JVM 中Klass::secondary_super_cache
字段的错误共享(参见JDK-8180450)(#12806) - 通过使用完美哈希函数 (Perfect hash function)使 HTTP/2 HPACK 静态表实现更快 (#12713)
- 修复当 PEM 文件有多个对象并且 BouncyCastle 在类路径上时,
PEMParser
出现的错误 (#12864)
发布公告提到,Netty 4.1.83.Final 版本在发布过程中遭遇了 macOS KQueue 原生二进制文件的错误编译。除了 macOS 特有的原生代码集成外,团队发布到 Maven Central 的 4.1.83.Final 和 4.1.84.Final 版本之间没有任何区别。
详情查看发布公告。
下载地址