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