cocotb 2.1.0 is now available. This release focuses on improving everyday testbench ergonomics. It strengthens concurrency primitives. It refines reporting. It expands documentation. It builds on the major changes introduced in 2.0. It delivers a smoother and more predictable development experience.
Highlights
Stackable test decorators
Test decorators such as @cocotb.test, @cocotb.parametrize, @cocotb.xfail, and @cocotb.skipif can now be combined cleanly.
This makes complex test generation easier to express.
It aligns cocotb more closely with common pytest workflows.
Improved xfail/skipif behavior
xfail and skipif now support pytest-style semantics.
They include optional exception types and reason strings.
This provides more predictable behavior.
It simplifies integration with CI systems.
New concurrency primitives
cocotb 2.1 introduces several new primitives for managing asynchronous tasks.
TaskManager provides structured task cleanup.
gather() awaits multiple awaitables.
wait() waits on multiple awaitables with configurable conditions.
select() returns whichever awaitable completes first.
These additions make complex asynchronous flows easier to write.
They make asynchronous flows easier to reason about.
JUnit XML improvements
JUnit reporting now supports file attachments. It supports relative path hints. It automatically includes logs and waveforms. These changes result in richer CI artifacts. They make test results easier to inspect.
Scheduler rewrite
The internal scheduler has been refactored for clarity. It has been refactored for modest performance improvements. The new implementation is easier to understand. It is easier to debug. It lays groundwork for future enhancements.
Signed integer behavior
Integers derived from signed HDL objects now preserve signedness. This resolves a class of subtle bugs. It makes cocotb’s behavior more intuitive when interacting with simulators.
Documentation improvements
The quickstart has been expanded and clarified. The tutorial has been expanded and clarified. General documentation has been expanded and clarified. New users benefit from a smoother onboarding experience. Experienced users get clearer guidance and examples.
Python compatibility changes
Updated Python requirements
cocotb 2.1 now requires Python 3.9 or newer. Support for Python 3.6, 3.7, and 3.8 has been removed, as these versions have reached end-of-life.
32-bit binaries (wheels) removed
Prebuilt wheels for 32-bit Python are no longer provided. This primarily affects legacy Windows installations, who used 32-bit simulators (such as ModelSim) with 32-bit Python. Source installs remain possible. Users are encouraged to migrate to 64-bit Python environments.
Full changelog
The complete list of changes is available in the release notes. https://docs.cocotb.org/en/stable/release_notes.html#cocotb-2-1-0-2026-08-30