The following changes were performed on the original source code: - removed slf4j, log4j, log4j2 logging - removed internal classes for GraalVM (SCM) - removed internal classes for Blockhound - removed jetbrains annotations - private copy of jctools in io.netty.jctools - removed SecurityManager code - add module info - removed lzma dependency (too old for module) - use JdkZLibDecoder/JdkZlibEncoder in websocketx - removed JettyAlpnSslEngine - removed JettyNpnSslEngine - removed NPN - use of javax.security.cert.X509Certificate replaced by java.security.cert.Certificate - private copy of com.jcraft.zlib in io.netty.zlib - precompiled io.netty.util.collection classes added - refactored SSL handler to separate subproject netty-handler-ssl - refactored compression codecs to separate subproject netty-handler-codec-compression - moved netty-tcnative/openssl-classes to netty-internal-tcnative - removed logging handler test - removed native image handler test Challenges for Netty build on JDK 21 - unmaintained com.jcraft.jzlib - JCTools uses sun.misc.Unsafe, not VarHandles - PlatformDependent uses sun.misc.Unsafe - finalize() in PoolThreadCache, PoolArena