diff --git a/_posts/2026-08-30-cocotb-2.1.md b/_posts/2026-08-30-cocotb-2.1.md new file mode 100644 index 0000000..0e4339a --- /dev/null +++ b/_posts/2026-08-30-cocotb-2.1.md @@ -0,0 +1,77 @@ +--- +title: "cocotb 2.1.0 released" +date: 2026-08-30 +author: Philipp Wagner +--- + +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](_posts/2025-11-19-cocotb-2.0.md). +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