diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index a618b7ee4..91e4752b9 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -16,7 +16,7 @@ on: paths: ['docker/**'] env: - NEEDS_VERSION: 8.0.0 + NEEDS_VERSION: 8.1.0 DEPLOY_IMAGE: ${{ github.event_name != 'pull_request' }} jobs: diff --git a/docs/changelog.rst b/docs/changelog.rst index 93599c00c..d7d9990d8 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,14 +4,40 @@ Changelog ========= -Unreleased ----------- +.. _`release:8.1.0`: + +8.1.0 +----- + +:Released: 20.05.2026 +:Full Changelog: `v8.0.0...v8.1.0 `__ + +This release focuses on **filter performance improvements** and bug fixes. + +Performance +........... + +- ⚡️ Short-circuit simple filter expressions to avoid ``eval()`` overhead (:pr:`1677`) + + Common filter patterns (e.g. ``id == "REQ_001"``, ``type == "spec"``) are now + matched and evaluated directly without invoking Python's ``eval()``, significantly + reducing filtering time for large need sets. + +- ⚡️ Add ``NeedItem.filter_context()`` to avoid costly ``{**need}`` unpacking (:pr:`1706`) + + Filter evaluation no longer creates a full dictionary copy of each need on every + filter call, reducing memory allocations and improving throughput. + +- ⚡️ Cache ``NeedLink`` filter string (:pr:`1705`) + + Pre-compute and store the filter string on ``NeedLink`` construction, avoiding + repeated string formatting on every access through ``NeedItem.__getitem__``. Bug fixes ......... - 🐛 Fix ``needflow`` rendering very dark / black nodes when a need type has no - ``color`` set in ``needs_types`` (:issue:`1664`). + ``color`` set in ``needs_types`` (:issue:`1664`, :pr:`1702`). Previously a hard-coded ``#000000`` fallback was used as the fill color, which produced unreadable nodes — especially under browser dark mode. When no color is configured, no color is emitted and the diagram engine's @@ -26,13 +52,16 @@ Bug fixes light). To preserve the old appearance, set ``"color": "#000000"`` explicitly on the affected ``needs_types`` entry. +- 🐛 Fix ``:need:`` role in section headings by registering ``NeedRef`` node + with Sphinx's LaTeX builder (:pr:`1700`). + .. _`release:8.0.0`: 8.0.0 ----- -:Released: Unreleased -:Full Changelog: `v7.0.0...v8.0.0 `__ +:Released: 19.03.2026 +:Full Changelog: `v7.0.0...v8.0.0 `__ This release introduces **conditional link assessment** — the ability to attach :ref:`filter_string` conditions to links that are checked against the target need at build time. diff --git a/sphinx_needs/__init__.py b/sphinx_needs/__init__.py index 992b1b26a..f0a176275 100644 --- a/sphinx_needs/__init__.py +++ b/sphinx_needs/__init__.py @@ -1,6 +1,6 @@ """Sphinx needs extension for managing needs/requirements and specifications""" -__version__ = "8.0.0" +__version__ = "8.1.0" def setup(app): # type: ignore[no-untyped-def]