Skip navigation

Netty 4.2.3.Final released

We are happy to announce the release of netty 4.2.3.Final. We put a lot of work into this release so please ensure to read on for all the changes / bugfixes / performance improvements.

The most important changes are:

  • IoUring: Correctly refetch completions that were produced because of inline submissions (#15480)
  • IoUring: Explicit set CQSIZE by default and use a much saner default for submission ring (#15477)
  • IoUring: Allow to configure what allocation strategy the buffer ring (#15469)
  • IoUring: Add IoUringBufferRingConfig.Builder (#15453)
  • Add property to turn off pinned memory tracker in PoolChunk (#15436)
  • Add JFR events for PooledByteBufAllocator (#15433)
  • More accurate adaptive memory usage accounting (#15423)
  • Fix chunk reuse bug in adaptive allocator (#15424)
  • Reduce magazine proliferation eagerness (#15421)
  • Introduce size-classes for the adaptive allocator (#15399)
  • Fix concurrent ByteBuffer access issue in AdaptiveByteBuf.getBytes (#15402)
  • Add malloc/free based Cleaner/CleanableDirectBuffer (#15366)
  • Adaptive: Fix possible buffer corruption caused by incorrect setCharSequence(...) implementation (#15391)
  • direct buffer preference should not depend on unsafe presence (#15381)
  • AdaptiveByteBuf: Fix AdaptiveByteBuf.maxFastWritableBytes() to take writerIndex into account (#15373)
  • JFR event support (#15369)
  • Fix bug in capacity(int) for the adaptive allocator (#15367)
  • Disable CleanerJava25 at build time for GraalVM <25 (#15325)
  • Only use MemorySegments on Java 25+ (#15338)
  • AbstractDnsRecord: equals() and hashCode() to ignore name field's case (#15329)
  • Guard recomputed offset access with hasUnsafe (#15354)
  • HTTP2: Always produce a RST frame on stream exception (#15352)
  • IoUring: Add the ability to allocate the buffers for the buffering in bulk (#15457)
  • Improved bound checks (#15452)

For more details please visit our bug tracker

Special notes

AdaptiveByteBufAllocator improvements

The AdaptiveByteBufAllocator did see a lot of changes this release to not only fixing bugs but also decrease it's memory overhead dramatically. To ensure we don't regress in the future and also allow others to better understand the characteristics we also added an allocation pattern simulator. For some more details about the improvements please refer to #15429

IoUring improvements

We continue to improve our io_uring based thransport as it is relative new. The improvements include adding new features but also just improve the performance in general. Beside this we also changed a few defaults to better reflect usual workloads. For more details on all the changes please refer to the changes listed above that are prefixed with IoUring.

JFR event support

We finally added JFR event support and added usafe of it for the AdaptiveByteBufAllocator and PooledByteBufAllocator. This allows to better understand the allocation pattern and memory usage of each of the allocators. We plan to add more and more support to other internals soon.

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