Back to Explore

MagicStack/uvloop

GitHub
1 updates · last 90 days2 watchersOpen source

Last release:

uvloop is an ultra fast, drop-in replacement for Python’s built-in asyncio event loop. It is implemented in Cython and uses libuv, making it useful for speeding up asyncio networking workloads. The project provides a `uvloop.run()` helper (or `uvloop.install()`) to start asyncio using the uvloop event loop.

Project status

  • Actively maintained: Yes, the most recent upstream push was 2026-10-06, and v0.23.0 (2026-09-30) included multiple C-level performance optimizations plus correctness fixes.
  • Apparent update cadence: Recent updates suggest ongoing work, but with bursty timing. After v0.22.1 (2025-10-16), the next significant update was v0.23.0 (2026-09-30), about 11+ months later, and earlier gaps are often longer.

AI summary generated

AI-generated from public sources. May be inaccurate. Report

Recent updates

  • v0.23.0

    v0.23.0 adds support for the create_task(eager_start=...) keyword (on supported CPython versions) and introduces special hostname handling for <broadcast>, along with various performance optimizations in the C implementation. It also upgrades libuv and includes correctness fixes, notably detaching sockets on create_connection cancellation to prevent fd double-close, plus removal of the private loop._ready_len attribute.

    BreakingFeatures
  • v0.22.1

    Release v0.22.1 claims to be identical to v0.22.0, re-run with CI fixes. The code diff is limited to the GitHub Actions workflow for publishing to PyPI and the package version constant.

  • v0.22.0

    v0.22.0 focuses on Python 3.14 compatibility and adds support for CPython free-threading builds. The diff also includes several packaging and CI updates to build and test additional Python variants, including 3.14 and 3.14t.

    Features
  • v0.21.0

    v0.21.0 primarily updates packaging/build metadata, with no runtime code changes shown in the diff from v0.21.0beta1 to v0.21.0. The only code-related modification visible is the version string update, plus a CI workflow update to a newer cibuildwheel action.

  • v0.21.0beta1

    v0.21.0beta1 adds CI coverage for Python 3.13 and updates build tooling (notably cibuildwheel and Cython requirements). The code changes also introduce new UNIX socket cleanup behavior and adjust internal UDP/TLS related handling, but the release notes section is empty so these changes are not documented.

    Features
  • v0.20.0

    v0.20.0 upgrades the bundled libuv dependency and includes a few build/test reliability fixes. The release notes mention libuv 1.48.0, a Python 3.12 test fix, switching to sched_getaffinity for build parallelism, and inlining _Py_RestoreSignals from CPython. The code diff also shows additional, user-visible DNS behavior changes and new security regression tests that are not described in the release notes.

  • v0.19.0

    v0.19.0 drops Python 3.7 support, updating package metadata, build/runtime checks, docs, and CI to require Python 3.8+. Most other code changes are ancillary (typing/docs fixes and CI workflow maintenance), with a larger internal refactor in `uvloop.__init__` focused on improving typing.

    Breaking
  • v0.18.0

    v0.18.0 is primarily focused on CI and Python 3.12 compatibility. The release notes mention making `extract_stack` more resilient and porting to Python 3.12, plus a set of CI workflow fixes.

  • v0.17.0

    v0.17.0 adds Python 3.11 support and bumps the bundled libuv to 1.43.0. It also exposes additional libuv integration points (uv_loop_t pointer, uv_fs_event functionality, and uv_version) and includes a set of bug fixes related to asyncio/uvloop edge cases.

    BreakingFeatures
  • v0.16.0

    v0.16.0 adds Python 3.10 support, updates the bundled vendored libuv to 1.42.0, and introduces a small API addition for timer handles. It also contains several SSL and threading related fixes and adjusts the project build/test automation to use cibuildwheel for wheel creation.

    Features
  • v0.15.3

    v0.15.3 contains targeted bug fixes related to SSLProtocol wakeup/data ordering and thread-safety of call_soon_threadsafe. It also includes internal scheduling changes in the loop implementation to make ready-handle enqueueing safer under concurrency.