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

aio-libs / multidict / 36254418343
87%

Build:
DEFAULT BRANCH: master
Ran 26 Sep 2026 04:09PM UTC
Jobs 1
Files 44
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

26 Sep 2026 04:08PM UTC coverage: 87.109%. Remained the same
36254418343

push

github

web-flow
Keep the insert-path resize out of line (#1601)

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

## What do these changes do?

Marks `_md_resize_for_insert()` as `NOINLINE`. On GIL builds GCC inlined
`_md_shrink()` through it into `md_add_with_hash_steal_refs()`, so the
insert helper's prologue saved six callee-saved registers instead of two
on every insert, for a branch taken only when the table is full.
Free-threaded builds were not inlining it and are unchanged.

Instruction counts from `benchmarks/callgrind_driver.py` (3.14.7,
`multidict_c`, rows that moved by 0.3% or more):

| operation | before | after | delta |
| --- | ---: | ---: | ---: |
| `ctor_items` | 46705 | 44704 | -4.28% |
| `ctor_small` | 4411 | 4229 | -4.13% |
| `setitem_insert` | 412 | 403 | -2.11% |
| `add` | 503 | 494 | -1.73% |
| `setdefault_new` | 521 | 512 | -1.67% |
| `add_istr` | 840 | 831 | -1.05% |
| `update` | 39230 | 39625 | +1.01% |

On 3.14.7t no row moved by 0.3% or more. `update` pays about 1% because
`md_update_from_dict()` lays its loop out differently once the budget
shifts.

## Are there changes in behavior for the user?

No, only performance.

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

No, it is a single attribute.

## 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; the
existing suite covers the insert and resize paths)
- [ ] Documentation reflects the changes (N/A)
- [ ] If you provide code modification, please add yourself to
`CONTRIBUTORS.txt` (N/A, already listed)
- [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>

Tests: `pytest -q` passed on 3.14.7 (2790 passed) and 3.14.7t (2777
passed); `pytest... (continued)

781 of 1562 branches covered (50.0%)

Branch coverage included in aggregate %.

8213 of 8763 relevant lines covered (93.72%)

1.87 hits per line

Jobs
ID Job ID Ran Files Coverage
1 MyPy - 36254418343.1 26 Sep 2026 04:09PM UTC 88
87.11
GitHub Action Run
Source Files on build 36254418343
  • Tree
  • List 44
  • 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 #36254418343
  • 8708f360 on github
  • Prev Build on master (#36250920366)
  • Next Build on master (#36255949632)
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