MagicStack/uvloop
Ultra fast asyncio event loop.
30 Releases
Latest: 8mo ago
v0.22.1Latest
This is identical to 0.22.0, re-ran with CI fixes
v0.22.0
📋 Changes
- Fixes for Python 3.14 (#638)
- Add free-threading support (#693)
- Use Cython `enum` for `__PREALLOCED_BUFS` (#634)
- test: fix getaddrinfo test (#663)
- test: fix task name for Python 3.13.3/3.14 (#662)
v0.21.0
📋 Changes
- Add cleanup_socket param on create_unix_server()
- Use cythonized SO_REUSEPORT rather than the unwrapped native one. (#609)
- UDP errors should result in protocol.error_received (#601)
- Updates for Cython3 (#587)
- Test with Python 3.13 (#610)
v0.21.0beta1
v0.20.0
📋 Changes
- Upgrade libuv to v1.48.0 (#600)
- Fix test_create_server_4 with Python 3.12.5 (#614)
- Use len(os.sched_getaffinity(0)) instead of os.cpu_count() (#591)
- Inline _Py_RestoreSignals() from CPython (#604)
v0.19.0
📋 Changes
- Drop support of Python 3.7 and update CI (#578)
- Restore uvloop.new_event_loop and other missing uvloop members to typing (#573)
- Fix docstring of loop.shutdown_default_executor (#535)
- Fix CI status badge (#522)
v0.18.0
📋 Changes
- CI fixes (#520, #553)
- Make extract_stack resilient to lacking frames. (#563)
- Port uvloop to Python 3.12 (#570)
v0.17.0
📋 Changes
- Expose uv_loop_t pointer for integration with other C-extensions (#310)
- Support python 3.11+ (#473)
- Expose libuv uv_fs_event functionality (#474)
- Activate debug mode when `-X dev` is used
- Expose uv_version() for libuv API compatibility (#491)
- Fix loop.getaddrinfo() and tests (#495)
- Bump to libuv 1.43.0
- _TransProtPair is no longer defined in asyncio.events
- + 19 more
v0.16.0
📋 Changes
- Python 3.10 support (#432)
- Bump vendored libuv to 1.42.0 (#433)
- Use cibuildwheel to build wheels (#435)
- Add support for `<timer handle>.when()`
- Fix ref issue when protocol is in Cython
- Set `python_requires` in setup.py
- SSL: schedule first data after waiter wakeup
- Fix a possible race condition in sslproto test
- + 1 more
v0.15.3
📋 Changes
- SSL: schedule first data after waiter wakeup
- Fix a possible race condition in sslproto test
- Fix `call_soon_threadsafe` thread safety
v0.15.2
📋 Changes
- Add `python_requires` in `setup.py` to fix dependency resolution issues
v0.15.1
📋 Changes
- Fix a segfault issue when a Cython protocol is de-referencing itself from `Context.run()` callbacks
v0.15.0
📋 Changes
- Add name keyword argument to `loop.create_task()`
- Add typing support
- SSL: many improvements
- Fix `KeyboardInterrupt` handling logic
- Python 3.8/3.9 compatibility fixes, drop support for 3.5/3.6
- UDP: multiple bug fixes
- Pipe: a critical crash fix that affects subprocess, pipe and socketpair
- Restore context on protocol callbacks
- + 7 more
v0.14.0
📋 Changes
- Add support for Python 3.8.
- Multiple fixes in the SSL/TLS layer.
- Restore `signal.wakeup_fd` after the event loop is closed.
- Handle large timeouts in `loop.call_later()`.
- Fix possible feezing of uvloop on `os.fork`.
- Better handle Unix sockets for datagram transports.
- Avoid double connecting to `remote_addr` for datagram transports.
- Bump Cython to 0.29.13.
- + 1 more
v0.14.0rc2Pre-release
📦 See the full list of updates in [0.14.0rc1 release notes](https://github.com/MagicStack/uvloop/releases/tag/v0.14.0rc1).
- Fix libuv not waking up on SIGINT.
- (by @1st1 in c32c703 for #295)
- Fix SSL proto to better handle EOF.
- (by @fantix in 6476aad)
v0.14.0rc1v0.14.0rc1Pre-release
📋 Changes
- Add support for Python 3.8.
- Multiple fixes in the SSL/TLS layer.
- Restore `signal.wakeup_fd` after the event loop is closed.
- Handle large timeouts in `loop.call_later()`.
- Fix possible feezing of uvloop on `os.fork`.
- Better handle Unix sockets for datagram transports.
- Avoid double connecting to `remote_addr` for datagram transports.
- Bump Cython to 0.29.13.
- + 1 more
v0.13.0
📋 Changes
- Implement `Server.start_serving()` and related APIs.
- Make `Server` an asynchronous context manager.
- Start using high-performance `uv_udp_t` handle. This
- Make address validation faster in `udp.sendto()`.
- `OSError` is no longer logged by Transports.
- Upgrade to libuv `v1.31.0`.
- Use `manylinux-2010`. This means we no longer provide
v0.13.0rc1v0.13.0rc1Pre-release
📋 Changes
- Implement `Server.start_serving()` and related APIs.
- Make `Server` an asynchronous context manager.
- Start using high-performance `uv_udp_t` handle. This
- Make address validation faster in `udp.sendto()`.
- Upgrade to libuv `v1.28.0`.
- Use `manylinux-2010`. This means we no longer provide
v0.12.2
📋 Changes
- Fix circular references in SSL implementation to reduce
- Fix a memory leak in `call_later()` and `call_at()`.
- Fix compilation warnings.
- Round (instead of flooring) delay in `call_later()`.
v0.12.1
📋 Changes
- Fix a circular references case in SSL implementation.
- Cleanup references to callbacks in canceled callback handles.
v0.12.0
📋 Changes
- New SSL implementation. The new implementation is faster and
- New `uvloop.install()` helper function.
- All bug fixes from `0.11.0`—`0.11.3` are included in
- `ssl.CertificateError` is no longer logged as it's delivered to
- Don't use non-existent `UDPTransport._address` attribute.
- Improve `UDPTransport.sendto()` performance.
- Upgrade Cython `0.28.x` -> `0.29.0`.
- Upgrade libuv `v1.22.0` -> `v1.23.0`.
v0.12.0rc1Pre-release
📋 Changes
- New SSL implementation. The new implementation is faster and
- New `uvloop.install()` helper function.
- All bug fixes from `0.11.0`—`0.11.3` are included in
- `ssl.CertificateError` is no longer logged as it's delivered to
- Upgrade Cython `0.28.x` -> `0.29.0`.
- Upgrade libuv `v1.22.0` -> `v1.23.0`.
v0.11.3
📋 Changes
- Use new `PyOS_BeforeFork` and `PyOS_AfterFork_*` 3.7 APIs when available
- Fix async generators finalization to function correctly in debug mode
- Pass `backlog` to `loop.create_unix_server()` when a server is created via
- Don't raise "requires a DNS lookup" error on Unix Domain Socket (#204)
- Fix use of `PyContext*` APIs in 3.7.1
- Bump Cython to 0.28.5
v0.11.2
📋 Changes
- Fix a memory leak related to contextvars support.
v0.10.3
📋 Changes
- Fix a memory leak in contextvars support.
v0.11.1
📋 Changes
- Fix server to shutdown when alive connections exist
- Fix a few bugs and crashes in UDP layer
- Fix FD leakage if spawning a subprocess fails
- Fix libuv process handles leak when `uv_spawn()` fails
v0.11.0
📋 Changes
- Implement support for `BufferedProtocol`.
- Implement `loop.start_tls()`.
- Add `Server.get_loop()`.
- Fix Server to wait in wait_closed() until all transports are done.
- SSLTransport.abort() should mark the transport as closed.
- Fix 3.7 32bit builds.
- `setup.py`: Detect if the libuv submodule has not been checked out.
- Fix race between futures cancellation and `loop.remove_reader()` /
- + 1 more
v0.10.2
📋 Changes
- Use a proper type for the thread indent (fixes 32-bit build for 3.7.)
- Fix cancellation race in `loop.sock_recv()` and `loop.sock_recv_into()`
- Sync SSL error messages with CPython's SSL implementation.
- Fix `SSLTransport.abort()` to mark the transport as closed.
- Detect if libuv submodule has not been checked out in `setup.py`.
v0.10.1
📋 Changes
- Bump Cython from 0.28.2 to 0.28.3.
- Increase default SSL handshake timeout to 60 seconds.
- Add `ssl_handshake_timeout` parameter to `loop.create_connection()`,
- Consistently close transports if create_server/create_connection/etc
v0.10.0
📋 Changes
- Initial support for Python 3.7.
- Implement PEP 567 support (contextvars module) for Python 3.7.
- Add uvloop's own version of `asyncio/sslproto.py`. SSL is now ~50% faster.
- Convert Future-returning loop methods to coroutines to match asyncio 3.7.
- Allow file objects to be passed to `loop.subprocess*()` functions.
- Make signals processing more reliable.
- Prohibit adding a signal handler for `SIGCHLD`.
- Add `uvloop.__version__`.
- + 6 more
