Skip to content

ci(gnovm): skip print-only coverage instrumentation#5815

Draft
thehowl wants to merge 2 commits into
dev/morgan/gnovm-iface-array-sharefrom
dev/morgan/gnovm-ci-no-coverage
Draft

ci(gnovm): skip print-only coverage instrumentation#5815
thehowl wants to merge 2 commits into
dev/morgan/gnovm-iface-array-sharefrom
dev/morgan/gnovm-ci-no-coverage

Conversation

@thehowl

@thehowl thehowl commented Jun 11, 2026

Copy link
Copy Markdown
Member

Note

Part 5 of 6 of the gnovm performance stack (split from #5800), to be merged in order:

  1. perf(gnovm): parallelize test suites and add gno test -jobs #5811 — perf(gnovm): parallelize test suites and add gno test -jobs
  2. perf(gnovm): avoid heap-boxed byte access in copy, range and index reads #5812 — perf(gnovm): avoid heap-boxed byte access in copy, range and index reads
  3. perf(gnovm): recycle runtime blocks through a per-machine pool #5813 — perf(gnovm): recycle runtime blocks through a per-machine pool
  4. perf(gnovm): share interface-held values when copying arrays #5814 — perf(gnovm): share interface-held values when copying arrays (gas-visible)
  5. ci(gnovm): skip print-only coverage instrumentation #5815 — ci(gnovm): skip print-only coverage instrumentation
  6. perf(gnovm): reduce per-call and per-op allocations #5816 — perf(gnovm): reduce per-call and per-op allocations

Each PR is based on the previous one's branch; this one diffs against part 4. Together: ci / gnovm ~14m → 6m18s; pkg/gnolang test time −64%; VM heap allocations −84% on the heaviest suite.

Summary

Since #5795 the per-module coverage percentages are only printed to the job log; nothing uploads or tracks them. On gnovm the instrumentation costs a measured ~1.24x on the interpreter-heavy tests (TestStdlibs/sort: 22.1s → 27.5s) plus an instrumented rebuild of every package — with -coverpkg=gnovm/... the interpreter hot loop itself is instrumented while it interprets the test workloads.

This adds a coverage input to the reusable Go CI workflow (default true, so gno.land/tm2/misc/contribs keep their current behavior) and opts gnovm out of it. With coverage off, the coverage dir env vars are left unset so testscript-based suites (cmd/gno, gno.land integration) skip coverage collection too, matching a plain local run.

Measurements

4-core CI simulation of pkg/gnolang with the gnovm CI configuration: 424.9s (with coverage) → 273.4s (without). On CI this is the difference between pkg/gnolang at ~630–940s and ~256–390s.

thehowl added 2 commits June 11, 2026 18:31
Since #5795 the per-module coverage percentages are only printed to the
job log; nothing uploads or tracks them. The instrumentation costs a
measured ~1.24x on the gnovm interpreter-heavy tests (TestStdlibs/sort:
22.1s -> 27.5s) plus an instrumented rebuild of every package.

Add a 'coverage' input to the reusable Go CI workflow (default true, so
gno.land/tm2/misc/contribs keep their current behavior) and opt gnovm
out of it.
The coverage dir env vars (TXTARCOVERDIR, GOCOVERDIR, COVERDIR) also
steer testscript-based suites: cmd/gno's Test_Scripts fails when
TXTARCOVERDIR points at a directory that was never created. With
coverage off, leave them empty so those suites skip coverage
collection, matching a plain local run.
@Gno2D2

Gno2D2 commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

🛠 PR Checks Summary

All Automated Checks passed. ✅

Manual Checks (for Reviewers):
  • IGNORE the bot requirements for this PR (force green CI check)
Read More

🤖 This bot helps streamline PR reviews by verifying automated checks and providing guidance for contributors and reviewers.

✅ Automated Checks (for Contributors):

No automated checks match this pull request.

☑️ Contributor Actions:
  1. Fix any issues flagged by automated checks.
  2. Follow the Contributor Checklist to ensure your PR is ready for review.
    • Add new tests, or document why they are unnecessary.
    • Provide clear examples/screenshots, if necessary.
    • Update documentation, if required.
    • Ensure no breaking changes, or include BREAKING CHANGE notes.
    • Link related issues/PRs, where applicable.
☑️ Reviewer Actions:
  1. Complete manual checks for the PR, including the guidelines and additional checks if applicable.
📚 Resources:
Debug
Manual Checks
**IGNORE** the bot requirements for this PR (force green CI check)

If

🟢 Condition met
└── 🟢 On every pull request

Can be checked by

  • Any user with comment edit permission

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

Labels

Projects

Development

Successfully merging this pull request may close these issues.

2 participants