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

aio-libs / multidict / 37657635511
86%

Build:
DEFAULT BRANCH: master
Ran 07 Oct 2026 05:16PM 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 05:15PM UTC coverage: 85.961%. Remained the same
37657635511

push

github

web-flow
Drop ALWAYS_INLINE from the C extension (#1740)

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

## What do these changes do?

Dropped `ALWAYS_INLINE` from all 48 C functions that still had it, and
removed the macro from `compiler.h`, so GCC makes every inlining
decision; this mirrors #1739 for `NOINLINE`. The AGENTS.md and
`check_inlining.py` guidance no longer suggests `ALWAYS_INLINE`.

Left to itself GCC dropped several hot helpers out of line, so the
follow-up commits keep them inline by construction instead of by
attribute:

- `htkeys_get_index()`, `htkeys_set_index()`, `htkeysiter_init()`,
`htkeysiter_next()`, `_htkeys_build_indices()` and `USABLE_FRACTION()`
became macros. Their `check_inlining.py` rules were dropped, since a
macro has no function to find.
- The four remaining `*_locked` helpers and `md_add_with_hash()` became
plain `static` functions. The `md_add_with_hash_steal_refs` rule (#1644)
was dropped; the constructor rows it guarded moved +1.6% to +3.2% on GIL
and +1.2% on FT.
- `_md_store_new_entry()` fills the new entry with plain stores and then
writes its index slot with release order (`HTKEYS_PUBLISH_INDEX`). The
lock-free `get()` and `in` probes load the index with acquire order
(`HTKEYS_ACQUIRE_INDEX`), so they see the entry filled; probes under the
lock stay relaxed. This replaces the
`publish_value()`/`publish_identity()` stores in the fill, and
`store_hash()` is gone.

The net effect is still a regression. In callgrind the median operation
costs 1.6% more on GIL and 3.0% more on FT. The worst rows are
`MultiDict` `key in d` +19.7% and `d[key]` +10.9% on GIL, and
`iter_keys` +24% and `clear` +10-14% on FT. `CIMultiDict` lookups got
cheaper on FT: `key in d` -10.3%, `d[key]` -5.8%.

## 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,... (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 - 37657635511.1 07 Oct 2026 05:16PM UTC 98
85.96
GitHub Action Run
Source Files on build 37657635511
  • Tree
  • List 49
  • Changed 3
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #37657635511
  • b79bb5df on github
  • Prev Build on master (#37642156089)
  • Next Build on master (#37673564418)
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