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

aio-libs / multidict / 37641027055
86%

Build:
DEFAULT BRANCH: master
Ran 07 Oct 2026 02:58PM UTC
Jobs 1
Files 49
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

07 Oct 2026 02:57PM UTC coverage: 85.961%. Remained the same
37641027055

push

github

web-flow
Drop NOINLINE from the C extension (#1739)

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

## What do these changes do?

Dropped `NOINLINE` from all 82 C functions that still had it, and
removed the macro from `compiler.h`, so GCC makes every inlining
decision. Comments that explained why a function was forced out of line
were trimmed, and the AGENTS.md and `check_inlining.py` guidance no
longer suggests `NOINLINE`.

GCC now inlines 33 of the 82 everywhere on GIL and 29 on FT; the rest
stay out of line on their own. Most allocation and construction paths
get cheaper on both builds. On FT, `_md_get_one_owned()` and
`_md_contains_owned()` are inlined into `md_get_one()` and
`md_contains()`, which doubles both functions and adds a stack protector
to `md_get_one()`, so FT `d[key]` and `key in d` cost 2-3.3% more.
`.text` grew 3.6 KB on GIL and shrank 2.0 KB on FT.

## 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, no behaviour change)
- [ ] 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`

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

Callgrind, Ir per op, CPython 3.14.7, `benchmarks/callgrind_driver.py
--include-multidict-only` against f09d0828; rows that moved at least 1%,
median of all 60 cells -0.10% GIL and -0.05% FT.

| Build | Operation | Before | After | Change |
|---|---|---|---|---|
| GIL | `MultiDict.getitem_istr` | 777.8 | 742.8 | -4.50% |
| GIL | `MultiDict.ctor_empty` | 608.0 | 587.0 | -3.45% |
| GIL | `CIMultiDict.iter_new` | 508.0 | 493.0 | -2.95% |
| GIL | `MultiDict.iter_new` | ... (continued)

793 of 1586 branches covered (50.0%)

Branch coverage included in aggregate %.

9353 of 10217 relevant lines covered (91.54%)

1.83 hits per line

Jobs
ID Job ID Ran Files Coverage
1 MyPy - 37641027055.1 07 Oct 2026 02:58PM UTC 98
85.96
GitHub Action Run
Source Files on build 37641027055
  • Tree
  • List 49
  • 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 #37641027055
  • af028830 on github
  • Prev Build on master (#37632228161)
  • Next Build on master (#37642156089)
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