Netty 5.0.0.Alpha3 released
We are happy to announce the third Alpha release of the upcoming netty 5.0.0. This release is another big milestone for us and the community, towards the eventual final release of Netty 5. This release migrated all of our code to use the new Buffer API And completely removed ByteBuf. Beside this there are a lot of other exciting changes included.
These are the major changes since Alpha 2:
- All code now uses
Buffer(our new buffer API). - Remove
ChannelInboundHandler - Remove
Http2MultiplexCodecandHttp2MultiplexCodecBuilder - A number of convenience methods have been added to
Buffer,EventLoop,Future ChannelHandlerContextdoes not extendAttributeMapanymore- Make half-closure a core-concept of Channel
- Allow sending "custom" events in both direction
- Remove blocking methods from
Futureinterface, people need to useFuture.asStage()to gain access to blocking methods - Remove
Channel.Unsafe - Remove
ChannelOutboundBufferfrom theChannelAPI as its an implementation detail ofAbstractChannel - Remove
@Sharableand replace it byChannelHandler.isSharable() - Remove
EventLoop.Unsafeand addEventLoop.registerForIo(...)/EventLoop.deregisterForIo(...) - Allow
ChannelHandlerto buffer outbound data and influenceChannel.isWritable() by addingChannelHandler.pendingOutboundBytes(...) - Rename
Channel.bytesBeforeUnwritable()toChannel.writableBytes() - Add ProtocolEvent and let SSL and WebSocket implementation use it
- Add
EventLoopGroup.isCompatible(...)method which allows to check if aChannelsubtype is compatible with a givenEventLoopGroup/EventLoop - Don't restrict
SocketChannel/ServerSocketChanneltoInetSocketAddressand so make it possible to use the JDK implementation for unix domain sockets with netty - Move common logic into
AbstractChanneland so make it easier for implementations to re-use code. Also rename protected methods to be more consistent
For more details on all the changes that went into this release please check our issue tracker.
To make it easier to experiment with netty 5 while still use 4.1 at the same time, we have put Netty 5 into its own io.netty5 package. This allows to have both version co-exist at the same time. As this a new major version we also started to introduce breaking changes where it makes sense. These changes were mostly motivation by lessons learned during the life-time of netty 4.1.x. We really hope you enjoy these changes and if not provide feedback in what we should address :)
We will soon start to change the default branch of netty to main and so be more strict about changes that will be accepted for 4.1. While this might sound like a "limitation" it will help to keep the possibility of a regression to a minimum for 4.1. Important bugfixes will of course still be ported to 4.1 as well. With all this said we don't plan to stop supporting 4.1.x any time soon. Both versions will be supported in parallel for now.
To help users to try the next major version of netty we started to write down all the "required" things to do in terms of migrating netty 4.1.x code to 5.0.0. The migration guide can be found on our website.