• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

aio-libs / multidict / 38538425053
86%

Build:
DEFAULT BRANCH: master
Ran 14 Oct 2026 08:55AM UTC
Jobs 1
Files 50
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

14 Oct 2026 08:54AM UTC coverage: 85.863%. Remained the same
38538425053

push

github

web-flow
Force inlining of the atomic and free-threading helpers (#1796)

<!-- Thank you for your contribution! -->

## What do these changes do?

Marks every helper in `atomic_helpers.h` and `freethreading.h`
`ALWAYS_INLINE`, a macro added back to `compiler.h`.

On the GIL build the extension is byte-identical to master: GCC already
inlined all of these. On the FT build none of them had an out-of-line
copy either, but forcing them changes how GCC spends its inlining budget
elsewhere, and `clear()`, `copy()`, `delitem` and key iteration get
cheaper (callgrind numbers below).

Turning the same helpers into macros gives identical inlining on both
builds and the same callgrind numbers, but loses type checking and
evaluates `Py_NewRef()` arguments twice in `publish_value()` and
`replace_compact_key()`, so functions stay.

The pure-Python backend has no equivalent and is unaffected.

## Are there changes in behavior for the user?

No.

## Is it a substantial burden for the maintainers to support this?

No.

## Related issue number

N/A

## Checklist

- [x] I think the code is well written
- [ ] Unit tests for the changes exist: N/A, covered by the existing
suite
- [ ] Documentation reflects the changes: N/A
- [ ] If you provide code modification, please add yourself to
`CONTRIBUTORS.txt`: N/A
- [x] Add a new news fragment into the `CHANGES/` folder
- [x] `make doc-spelling` passes and any new technical words are added
to `docs/spelling_wordlist.txt`

Drafted with Claude Code (Claude Opus 5.5); reviewed by @asvetlov.

<details>
<summary>Agent run details (optional, for reviewers)</summary>

Callgrind (`benchmarks/callgrind_driver.py --include-multidict-only`),
3.14.7t, master 407f543f vs this branch, rows that moved by 0.5% or
more;
median 0.00%. GIL not measured: the disassembly is identical.

| op | impl | before Ir/op | after Ir/op | delta |
|---|---|---|---|---|
| clear | MultiDict | 6577.0 | 6176.0 | -6.10% |
| copy | MultiDict | 12952.1 | 12551.1 | -3.10% |
| ... (continued)

842 of 1684 branches covered (50.0%)

Branch coverage included in aggregate %.

9799 of 10709 relevant lines covered (91.5%)

1.83 hits per line

Jobs
ID Job ID Ran Files Coverage
1 MyPy - 38538425053.1 14 Oct 2026 08:55AM UTC 100
85.86
GitHub Action Run
Source Files on build 38538425053
  • Tree
  • List 50
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #38538425053
  • aee688db on github
  • Prev Build on master (#38453516661)
  • Next Build on master (#38584115273)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc