- Harden logic against exceptions in SSLTransport constructor
- Various performance improvements in TCP and SSL transports
- Change default ssl_outgoing_bio_size from 64Kb to 256Kb. This improves walltime benchmark results for bigger messages
- Performance improvements from @river-walras in SSL fallback engine.
- Fix potential hangups in SSLEngineFallback for some specific ssl MemoryBIO sizes.
- Simplify logic by always using SSLTransport_Transport when ssl fallback engine is used.
- aiofastnet now works with uv standalone python; ssl layer is slightly slower than when regular python is used
but it is still faster than ssl layer in asyncio and uvloop.
- Fixed potential error in create_connection on python < 3.11 due to missing ExceptionGroup
- Fixed NotImplementError from sendfile when used on windows with proactor loop and tcp transport
- Added unix sockets primitives: create_unix_connection, create_unix_server, open_unix_connection, start_unix_server
- Refactored OpenSSL libs lookup, made it possible to work with memray
- Various minor optimizations for the hot path, refactor exception handling
- Optimize syscall usage, tune SocketTransport performance for simple protocols
- Tune simple buffer read path in SocketTransport for better performance
- Optimized simple buffer read path in SocketTransport, do not copy memory
- Harden logic against rare exceptions
- Added some missing attributes and methods to SSLObject
- Fixed sendfile(count=None) not sending file at all for TCP case, added test
- Fixed sendfile infinite loop in case of oversized count value, added test
- Optimized simple buffer read path in SocketTransport
- Fixed Protocol.eof_received() returning True closed transport anyway on Windows
- Added undocumented, but used by 3rdparties Transport._sendfile_compatible attribute
- Added type annotations for the public API
- Optimized bytes object creation for data_received in simple protocols
- Fall back to memory bio early if kTLS is requested, but prerequisites are not satisfied
- Fail with a clean ImportError when importing aiofastnet by python with statically linked openssl
- Improve compatibility with older OpenSSL versions
- Export OPENSSL_DYN_LIBS for testing and verification
- Fixed Protocol.get_buffer not requiring PyBUF_WRITABLE from user buffer
- Cleaned up nogil usage, harden logic against multithreading misuse by user code.
- Fixed potential double-free error in SSLObject.__init__
- Fixed potential hangups on invalid ssl_handshake_timeout and ssl_shutdown_timeout values
- Add loop monkey-patching via install_policy, loop_factory, patch_loop
- Allow mocking transport.write and writelines methods
- Reimplement SSL layer to work directly with a socket instead of through transport by default.
- Add Kernel TLS support.
- Add unlikely for debug branches and other rare branches
- Add missing write_nocheck and writelines_nocheck to WrappedTransport
- Build for windows arm64
- Add write_nocheck, writelines_nocheck, write_c to the Transport interface
- Add open_connection and start_server API
- Add ssl_incoming_bio_size and ssl_outgoing_bio_size to API
- Officially support free threaded python. All extensions modules are free threading compatible.
- Add free threaded benchmark, free threaded echo server and client examples
- Update README
First release * Contains optimized versions of create_connectio, create_server, start_tls and sendfile