chore: cut v4.6.0 - #334
Conversation
📊 SMDA Performance Evaluation Benchmark ResultsGenerated on: 2026-09-10 20:49:05 Summary
Per-side Timing Context (best of 3/3 runs per file)
Paired per-file timing (positive speedup = PR faster):
Determinism (self-check across repeated runs)
Pairwise run matrix (individual run medians, diagnostic)Diagnostic only: each row compares one raw PR run against one raw base run. The headline verdict above uses paired per-file best-of-runs timings.
|
The changelog entry for what has landed since v4.5.1 (4868e19): #300, #325 and #299. Ten engine changes under feat(core) plus a hot-path pass is a minor-bump shape, which is why #299 and #300 were re-scoped off v4.5.1 rather than squeezed into it. VERSION in src/smda/SmdaConfig.py and __version__ in src/smda/__init__.py bumped together with the entry, per AGENTS.md. No escaper output changed anywhere in this set. The only escaping-related edit memoises escapeBinary results behind a cache keyed on its complete input tuple and no escaper module is touched, so ESCAPER_DOWNWARD_COMPATIBILITY stays at 4.4.5 and INTEL_PIC_HASH_ESCAPE_VERSION at 4.3.5, and no report needs reprocessing. Figures are the contributor's own except the ARM64 Mach-O row and the ReadyToRun result, which were reproduced during the #300 review; the entry says which is which rather than presenting one table as equally checked. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
AGENTS.md:117 has prescribed ` * YYYY-MM-DD: vX.Y.Z - <summary>` since before v4.5.1, while v4.5.1 and v4.6.0 both put the mechanism, the measurement and the cost under that header line as a nested list of **Topic:** bullets. An agent following the file wrote a one-line entry for a release the maintainer then expanded by hand. The header line is still exactly what the file said; what is added is what goes under it, and a pointer to which entries are the model, since everything before v4.5.1 is one long paragraph. Independent of #323, which would replace this line again if keep-a-changelog is adopted. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4a905d5 to
4bf3ab3
Compare
Cuts v4.6.0 over what has landed since v4.5.1 (
4868e19): #300 (50d3289), #325 (e9dfe5f) and #299 (46adf4b).Ten engine changes under
feat(core)plus a hot-path pass is a minor-bump shape, which is the reason #299 and #300 were re-scoped off v4.5.1 rather than squeezed into it. Nothing else is queued for this release.Format
Deliberately the current format, not keep-a-changelog. #323 proposed adopting against an empty
Unreleasedso the first entries it holds are written by their authors at merge time; v4.6.0 cannot be that, because #299's and #300's entries are being written here at release time either way. Adopting after this release means the inaugural section fills itself from the seven PRs currently open, which is the demonstration #323 was after. Four of @r0ny123's additions are also still unsettled, one of which (reusing thesemantic-pr-title.ymlscope list as the entry prefix vocabulary) would rewrite every heading below.What this entry does adopt is the compromise: each topic keeps the mechanism and its headline figure with the cost, and links the PR that carries the full measurement, the per-rule attribution and the dead ends. It is ~2,200 words against v4.5.1's ~2,790, so the depth that matters at release time is here and the rest is one click away. This is the first entry in the file to use links at all.
What the entry covers
endbr64seeding refusal, the AArch64 noreturn-call boundary, the pre-analysis candidate snapshot, and theblfall-through seed moving behindRESOLVE_TAILCALLS— including the −580 FP / −53 TP row and why the gate is kept.USE_LSDA_LANDING_PADSandUSE_ELF_FDE_INTERIOR_GAPS, each with the guard that makes it safe and the cost measured without it (the PLT exemption's 3,457 real functions; the FDE-starts-in-padding 35), plus the combinedendbr64result: 822 false positives to zero.updateFunctionGaps()revert, 6,249 → 5,247 on a 32-bit MSVC PE), two moved fixture baselines, Compatibility, new fixtures, Housekeeping (feat(core): function-boundary accuracy from what the image declares #300, chore: correct the figures and the directory lookup #300 shipped #325).Compatibility
No escaper output changed. The only escaping-related edit memoises
escapeBinaryresults behind a cache keyed on its complete input tuple, and no escaper module is touched, soESCAPER_DOWNWARD_COMPATIBILITYstays at4.4.5andINTEL_PIC_HASH_ESCAPE_VERSIONat4.3.5. No report needs reprocessing.Provenance of the figures
The contributor's own except the ARM64 Mach-O row and the ReadyToRun result, which were reproduced during the #300 review. The entry says which is which rather than presenting one table as equally checked — the same distinction v4.5.1 made.
Second commit
docs(docs)fixesAGENTS.md:117, which has prescribed a one-line changelog entry since before v4.5.1 while v4.5.1 and v4.6.0 both use the nested**Topic:**list. Independent of #323, which would replace that line again on adoption — raised in the #299/#300 review pass and never ruled on, so it is folded in here rather than sent round as a one-line PR of its own.Checks run locally
pytest tests/test*— 2094 passed, 2 skipped, 2596 subtests, in 159s.ruff check .andruff format --check .clean.ty check src/smda/ fuzzing/ profiling/ .github/workflows/scripts/— exit 0, unchanged against master.34521599914).🤖 Generated with Claude Code