Greenlet is a lightweight in-process concurrent programming library that provides micro-threads called greenlets. It is implemented as a C extension for the regular CPython interpreter, and is useful when you need fine-grained control over exactly when code runs, including building advanced control flow structures like generator-like coroutines.
Project status
- Actively maintained, with very recent upstream activity (last push 2026-07-01) and frequent published version updates in 2026 (3.5.0 on 2026-04-27, 3.5.1 on 2026-05-20, 3.5.2 on 2026-06-17, 3.5.3 on 2026-06-26).
- Apparent update cadence is consistently on the order of a few weeks (roughly every 2 to 4 weeks across 3.5.0 to 3.5.3).
AI summary generated
Recent updates
3.5.3
Release 3.5.3 contains a targeted fix for a crash seen on free-threaded/no-GIL builds when greenlets switch while a critical_section is held on a Python object. No release notes were provided in the release_notes block, so the changes below are derived purely from the actual code diff.
3.5.2
Release 3.5.2 updates greenlet's garbage-collection behavior, with special focus on fixing GC crashes on free-threaded Python 3.15 and improving greenlet GC overall. It also raises the minimum supported Python 3.15 version to 3.15b2. The diff shows several deeper internal GC and bootstrap changes beyond what is described at a high level.
Breaking3.5.1
Release 3.5.1 appears to focus on interpreter shutdown behavior for greenlet.getcurrent and on preliminary build/test support for Python 3.15. The provided release notes field contains no text, so documented intent cannot be reliably compared against the diff.
Features3.5.0
Release 3.5.0 changes greenlet shutdown behavior by removing the module-import-time atexit callback and relying only on CPython's Py_IsFinalizing to decide when greenlet APIs are no longer safe. As a result, greenlet.getcurrent and the direct C API PyGreenlet_GetCurrent remain usable longer during shutdown, but C extensions must correctly handle finalization-time NULL/error behavior.
Breaking3.4.0
Release 3.4.0 contains a substantial internal refactor and additional test coverage, but no release notes were provided. The code diff shows new shutdown-state handling, additional pre-switch validation (notably for free-threaded builds), and some behavior changes around deallocation and critical sections.
Breaking3.3.2
Release 3.3.2 was published on 2026-02-20, but no release notes were provided. Without documented changes, developers should review the corresponding code diff, changelog, and tags/commits to identify any breaking or behavioral updates before upgrading.
3.2.5
Release 3.2.5 introduces a fix for crashes occurring when active greenlets exist during interpreter shutdown. The code changes add Python-finalization guards to avoid switching into greenlets during shutdown on Python versions older than 3.11.
3.3.1
Release 3.3.1 primarily focuses on expanding and fixing Windows binary wheel publishing (including Windows ARM where available) and improving compilation compatibility with newer toolchains. It also migrates Windows CI from Appveyor to GitHub Actions and includes a MIPS-specific build fix.
3.3.0
Release 3.3.0 has no publisher-provided release notes in the supplied data. The code diff indicates substantial internal changes focused on supporting free-threaded CPython builds (Py_GIL_DISABLED), including GC-related metadata, thread state handling, and module/thread interaction details.
3.2.4
Release 3.2.4 is a maintenance update focused on less common CPython build configurations, especially free-threaded builds and debug/JIT interactions on Python 3.14. The published CHANGES.rst mentions build/test adjustments and a fix for a 3.14 debug assertion with the experimental JIT, but the code diff shows additional internal behavioral changes related to allocation and deallocation bookkeeping.
3.2.3
Release 3.2.3 primarily updates greenlet’s build support for Python 3.14 beta 2, especially on Windows amd64, and includes a likely fix for NetBSD sparc64 builds. The code changes are mostly build- and compatibility-related, with no public API or type changes apparent in the provided diff.
3.2.2
Release 3.2.2 updates greenlet to build and run against Python 3.14 beta 1. The only user-facing note in the changelog is Python 3.14 beta 1 compatibility, and CI is updated to test that interpreter.
Features3.2.1
Release 3.2.1 was published on 2025-04-22, but no release notes were provided in the information available to analyze. As a result, there is no documented guidance here on new features, fixes, breaking changes, security, or migration steps for this version.