Skip navigation

Netty 4.0.51.Final and 4.1.15.Final released

I'm happy to announce the latest bug-fix releases for our 4.0.x and 4.1.x series after 1 month of development. These releases contains bug-fixes, performance enhancements and feature so we encourage everyone to upgrade.

With this release we also support ALPN when using Java9 and so you should be able to use HTTP/2 without the need of using any native SSL implementation. That said using a native SSL implementation may still be beneficially for maximal performance.

The most important changes for 4.0.51.Final and 4.1.15.Final are:

  • Support JDK9-native ALPN (#7126)
  • More bullet-proof way of detecting if ipv6 is supported or not when using the native transport (#7022)
  • DelegatingSslContext should also be able to configure the SslHandler (#7135)
  • Netty 4.1.14.Final fails to load on android (#7117)
  • Include JNIEXPORT on exported symbols (#7127)
  • Unify KQueue and Epoll wait timeout approach (#7042)
  • Make NativeLibraryLoader check java.library.path first (#7102)
  • Use the ByteBufAllocator when copy a ReadOnlyByteBufferBuf and so also be able to release it without the GC when the Cleaner is present (#7107)
  • Ensure netty builds with java9 (build 9+181) (#7106)
  • Make configurable the initial and max size of InternalThreadLocal.stringBuilder (#7093)
  • Fix endless loop in ByteBufUtil#writeAscii (#7096)
  • Correctly support SO_TIMEOUT for OioDatagramChannel (#7046)
  • Ensure we null out the previous set InetAddress on java.net.DatagramPacket (#7064)
  • Correctly handle connect/disconnect in EpollDatagramChannel (#6193)
  • Shutting down the outbound side of the channel should not accept future writes (#7041)

The most important changes for 4.1.15.Final only are:

  • Decouple DnsCache and DnsCacheEntry (#7129)
  • KQueue detect peer close without EVFILT_READ (#7124)
  • Support the little endian floats and doubles by ByteBuf (#7099)
  • We should prefer heap buffers when using the OIO transport to reduce memory copies (#7065)
  • First call channelReadComplete(...) before flush(...) for better performance (#7031)
  • HTTP/2 Child Channel and FrameCodec Feature Parity (#6896)

For the details and all changes, please browse our issue tracker for 4.0.51.Final and 4.1.15.Final.

All changes that are in 4.0.51.Final are also included in 4.1.15.Final. All changes only have milestone 4.1.15.Final do not affect 4.0.51.Final.

As always, please let us know if you find any issues. We love feedback!

More feature complete new HTTP/2 API

A while a go we started to implement a new HTTP/2 API which tries to make writing HTTP/2 code easier when using Netty. For this API we basically create a new Channel per HTTP/2 stream and so each HTTP/2 stream will have its own ChannelPipeline. This allows reuse of existing ChannelHandlers and also feels more "netty-like" in general.

For more detail how to use this API please have a look at the Http2MultiplexCodec, and also the Http2 multiple examples.

That said we are not planing to remove the "old" API anytime soon but working on improving the "new" API with the end-goal of eventually replacing the "old" completely at some point. Please give it a try and let us know how it works for you.

Thank You

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.