Sourced from multidict's releases.
6.9.0
Bug fixes
Protected
repr()ofMultiDict,MultiDictProxy, and their views in the C extension with a critical section, avoiding data races on the free-threaded build of CPython -- by :user:asvetlov.Related issues and pull requests on GitHub: #1431.
Guarded
repr()ofMultiDictProxyin the C extension and ofKeysViewin both the C extension and the pure-Python implementation against infinite recursion on self-referential containers, matching the existing guard onMultiDict,ItemsView, andValuesView-- by :user:asvetlov.Related issues and pull requests on GitHub: #1431.
Protected
MultiDict.update(),.extend(),.merge(),.clear(),.copy(), and theMultiDict/CIMultiDictconstructors in the C extension with a critical section, using the two-object form when a second multidict, multidict proxy, or plaindictinstance is involved, avoiding data races and a segmentation fault on the free-threaded build of CPython..clear()now also publishes the empty table before releasing any entry's references, so a concurrent caller can never observe a partially-cleared multidict even if releasing a value runs arbitrary Python code that suspends the held critical section -- by :user:asvetlov.Related issues and pull requests on GitHub: #1433.
Protected
MultiDict.add(),__setitem__/__delitem__,get()/getone()/__getitem__,__contains__,getall(),setdefault(),pop()/popone()/popall()/popitem(),__eq__, iteration, and the&/|/-/^/in/isdisjoint()operations on.keys()and.items()views in the C extension with a critical section, avoiding data races and use-after-free crashes on the free-threaded build of CPython -- by :user:asvetlov.Related issues and pull requests on GitHub: #1438.
Fixed a data race on the free-threaded build where
MultiDictObject.usedwas written non-atomically whilelen()read it with a relaxed atomic load -- by :user:asvetlov.
... (truncated)
Sourced from multidict's changelog.
6.9.0
(2026-09-18)
Bug fixes
Protected
repr()ofMultiDict,MultiDictProxy, and their views in the C extension with a critical section, avoiding data races on the free-threaded build of CPython -- by :user:asvetlov.Related issues and pull requests on GitHub: :issue:
1431.Guarded
repr()ofMultiDictProxyin the C extension and ofKeysViewin both the C extension and the pure-Python implementation against infinite recursion on self-referential containers, matching the existing guard onMultiDict,ItemsView, andValuesView-- by :user:asvetlov.Related issues and pull requests on GitHub: :issue:
1431.Protected
MultiDict.update(),.extend(),.merge(),.clear(),.copy(), and theMultiDict/CIMultiDictconstructors in the C extension with a critical section, using the two-object form when a second multidict, multidict proxy, or plaindictinstance is involved, avoiding data races and a segmentation fault on the free-threaded build of CPython..clear()now also publishes the empty table before releasing any entry's references, so a concurrent caller can never observe a partially-cleared multidict even if releasing a value runs arbitrary Python code that suspends the held critical section -- by :user:asvetlov.Related issues and pull requests on GitHub: :issue:
1433.Protected
MultiDict.add(),__setitem__/__delitem__,get()/getone()/__getitem__,__contains__,getall(),setdefault(),pop()/popone()/popall()/popitem(),__eq__, iteration, and the&/|/-/^/in/isdisjoint()operations on.keys()and.items()views in the C extension with a critical section, avoiding data races and use-after-free crashes on the free-threaded build of CPython -- by :user:asvetlov.Related issues and pull requests on GitHub: :issue:
1438.
... (truncated)
087fbed
Update CHANGE for the release fix PR (#1476)c715fac
Stop installing hypothesis where its tests never run (#1475)e1ddc39
Release 6.9.0 (#1474)a9aa239
Speed up adding many values for the same key (#1466)684b085
Disable pytest output capturing in the ASan/TSan CI jobs (#1472)255ad03
Add bencmarks for setitem (#1471)72eadcc
Skip abstractmethods from coverage leaks report (#1470)445f9f9
Drop dead code (#1469)f4218f8
Build(deps): Bump actions/upload-artifact from 4 to 7 (#1468)838ebf7
Bump to 6.9.0.dev0 (#1467)