Skip to content

build: release 5.0.0 - #406

Merged
danielplohmann merged 1 commit into
masterfrom
release/5.0.0
Oct 16, 2026
Merged

danielplohmann merged 1 commit into
masterfrom
release/5.0.0

Conversation

@danielplohmann

Copy link
Copy Markdown
Owner

Cuts 5.0.0: __version__ goes from 4.11.0 to 5.0.0. ## [Unreleased] becomes ## [v5.0.0] - 2026-10-16 without its empty subsections (Deprecated, Removed, Security). A fresh ## [Unreleased] skeleton goes above it, and the compare links at the foot are updated. No changelog fixes were needed while cutting.

Major because the release adds an architecture, as v4.0.0 did. The version is a release counter, not semver. None of the three compatibility constants (ESCAPER_DOWNWARD_COMPATIBILITY, INTEL_PIC_HASH_ESCAPE_VERSION, CIL_PIC_HASH_ESCAPE_VERSION) moved since v4.11.0.

What 5.0.0 carries

Milestone v5.0.0, 1 closed before this PR:

Not in this release: #355 (reusable release workflow) and #297 (capstone 6 port).

Checked before opening

  • feat: add 32-bit ARM and Thumb disassembly backend #364 at ecdfbb0: lld-fill and scan-vs-blx blocker repros fixed on six clang/lld builds; x86/x64/AArch64 reports byte-identical to master; full suite 2559 passed, 2 skipped.
  • perf(core): optimize multi-architecture memory layout, CFG recovery, and opcode decode hot paths #404 merged onto 8f15a1a: 19 ARM reports and 6 non-ARM reports byte-identical to master; ARM pickle, deepcopy and fromDict round-trips unchanged; full suite 2561 passed, 2 skipped.
  • fix(build): declare capstone>=5.0.2 #405 merged with master: full suite 2561 passed, 2 skipped on capstone 5.0.2, the new floor.
  • testPackageMetadata.py, testReleaseGuard.py and testCommonModels.py pass on this branch. release_guard.py --tag v5.0.0 passes and extracts the 37-line notes section.
  • A local python -m build produced a 435 KB sdist with no tests/ and a 474 KB wheel with py.typed and the smda/arm/ package. twine check --strict passed, and the metadata reads Version: 5.0.0 and Requires-Dist: capstone<6,>=5.0.2.

After merge

publish-release.yml and release_guard.py are unchanged since v4.11.0, so no TestPyPI rehearsal is needed. Once CI and the benchmark are green on the merge commit, tag it and push the tag:

git tag -a v5.0.0 -m "SMDA 5.0.0"
git push origin v5.0.0

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@danielplohmann danielplohmann added this to the v5.0.0 milestone Oct 16, 2026
@danielplohmann
danielplohmann merged commit a23d395 into master Oct 16, 2026
23 checks passed
@github-actions

Copy link
Copy Markdown

📊 SMDA Performance Evaluation Benchmark Results

Generated on: 2026-10-16 13:51:58

Summary

Metric Result
Correctness ✅ PASS — 0 / 155 common file(s) differ
Determinism ✅ PASS — base 3 run(s), PR 3 run(s)
Verdict inconclusive — within run-to-run noise (±1.7%)
Median paired speedup -0.35% (95% CI [-0.59%, +0.15%])
Timing noise band ±1.7%

Per-side Timing Context (best of 3/3 runs per file)

Side Files Functions Median best time/file (s) Sum of best times (s) Throughput estimate (func/s)
base 155 173540 0.6373 226.06 ~768
pr 155 173540 0.6591 226.27 ~767

These context rows sum each file's best observed time across repeated runs; they are normalized comparison estimates, not single-run CI wall-clock times.

Paired per-file timing (positive speedup = PR faster):

Statistic Value
Files compared 155
Median paired speedup -0.35% (95% CI [-0.59%, +0.15%])
Mean speedup -0.90% (95% CI [-1.62%, -0.19%])
Std dev / IQR 4.52% / 2.78%
Wilcoxon signed-rank p 0.2108 (n=155)

ℹ️ base and PR are timed in the same job on the same runner, with their passes interleaved base/PR/PR/base/base/PR so that drift over the job cancels rather than landing on whichever side ran last. The noise band above is therefore run-to-run variation on one machine, which is what it is able to measure; a difference inside it is reported as inconclusive. Correctness and determinism are not timing-based and are unaffected either way.

Determinism (self-check across repeated runs)

Side Runs Files Deterministic Median timing CV
base 3 155 ✅ 1.7%
pr 3 155 ✅ 1.2%
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.

Comparison Run PR Files Base Files Common Function Set Matches Med PR (s) Med Base (s) Med Diff (s) Speedup %
pr_0 vs base_0 155 155 155 155/155 0.6726s 0.6931s -0.0205s +2.96%
pr_0 vs base_1 155 155 155 155/155 0.6726s 0.7042s -0.0316s +4.49%
pr_0 vs base_2 155 155 155 155/155 0.6726s 0.6820s -0.0094s +1.39%
pr_1 vs base_0 155 155 155 155/155 0.6878s 0.6931s -0.0053s +0.76%
pr_1 vs base_1 155 155 155 155/155 0.6878s 0.7042s -0.0164s +2.33%
pr_1 vs base_2 155 155 155 155/155 0.6878s 0.6820s +0.0058s -0.84%
pr_2 vs base_0 155 155 155 155/155 0.6800s 0.6931s -0.0132s +1.90%
pr_2 vs base_1 155 155 155 155/155 0.6800s 0.7042s -0.0242s +3.44%
pr_2 vs base_2 155 155 155 155/155 0.6800s 0.6820s -0.0021s +0.31%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant