Skip to content

release: 0.19.0 - #168

Merged
bitwalker merged 25 commits into
mainfrom
next
Oct 21, 2026
Merged

bitwalker merged 25 commits into
mainfrom
next

Conversation

@bitwalker

Copy link
Copy Markdown
Collaborator

No description provided.

greenhat and others added 25 commits October 1, 2026 16:33
chore: merge `main` back to `next` after the `v0.18.0` release
Replace the custom coverage comment workflow with octocov. It comments on
each pull request with the coverage changes against the base branch,
including the files the pull request touches, and writes the same report
to the job summary, which is also available to pull requests from forks.
The report of `next` is stored as an artifact and used as the baseline.

Coverage below 75% no longer fails CI. The `coverage` task drops
`--fail-under-lines`, and octocov flags the shortfall in its report
instead.
Add unit tests for `NativePtr::is_word_aligned` and
`NativePtr::is_element_aligned`, which no test reached before.
ci: report coverage changes with octocov
Render native Octocov summaries with read-only permissions and preserve
baseline artifacts and coverage comparisons. Publish same-repository PR
reports through a reusable workflow, and reconcile fork and Dependabot
comments on a schedule using bounded artifacts tied to the current PR head.

Keep privileged publication separate from PR code and configuration, and
update existing Octocov bot comments only when their report changes.
Use the VM call-frame resolver for debugger and DAP stack presentation,
preserving caller locations and source inline contexts across nested exec,
call, dynexec, recursion, and package boundaries. Keep the event stack for
execution control and fall back to it when source metadata is unavailable.

Adapt fixture metadata to operation ranges and bounded serialization.
Temporarily patch the Miden crates to the sibling checkout containing the
upstream inline-context fixes until those fixes are published.
Generate leaf Source and ExceptionDetails values by default to prevent
unbounded random branching from overflowing the stack in integration tests.
Fixtures needing related sources or nested exceptions can populate those
fields explicitly.
Resolve source metadata once per cycle for local and DAP execution. Use recovered invocation identities for finish and step-out, preserving recursive activations and pending return breakpoints across interruptions.

Fall back to event frames when the active package lacks source metadata, and remove the disabled DAP host implementation.
Sample logical frames so flamegraphs include uninstrumented callers and source inline contexts. Preserve inferred and inline labels, event-frame fallback for stripped callees, and existing VM cycle accounting during execution and replay.
Retain declarations, transient values, memory contexts, and frame bases for
each live physical invocation so recursive and suspended callers expose
their own locals. Capture final caller writes before suspension and preserve
context ownership across external call transitions.

Share variable resolution across local inspection, DAP frame scopes and
evaluation, and scripting snapshots. Expire DAP handles on resume and carry
raw values separately from display text for remote inspection. Keep inline
frame and lexical-scope locals deferred.
Define concrete scope and binding identities, independent visibility and
availability, and ordered activation boundaries required for inline-frame
locals and lexical shadowing. Cover assembler and processor exposure,
anchor-time ownership, format compatibility, validation, and remapping.

Link compiler and debugger follow-up issues with acceptance criteria for
the producer and consumer work after the upstream contract is published.
Select each marked callee relative to its caller source stack, preserving
inline wrapper identities and resolving result widths from the selected
function record. Capture arguments only from the selected invocation so
unmarked helpers cannot contribute their parameters to a wrapper.
Observe recovered call identities before executing each VM cycle so an error on the first callee operation retains its name in the partial trace. Keep frame entry and exit handling tied to completed frame events.
Read arguments in the pre-execution observation phase so writes to memory or the local frame pointer cannot change the recorded call inputs. Preserve captured arguments when the declaring operation fails as well.
End pending callee selection when the current source invocation cannot be recovered. A later unmarked descendant must not supply the missing call identity, argument ownership, or return width. Retain recovery for metadata-bearing wrappers and subsequent calls.
Forward trace callbacks and registered trace names through recording, DAP,
and diagnostic hosts so wrapping a host preserves its trace side effects
and execution errors. Capture diagnostic state at trace callbacks while
keeping trace events out of the advice mutation replay log.
Use a conservative call-trace heuristic to stop pending callee selection
when the current source occurrence lacks assembly and inline metadata.
This prevents stripped static wrappers from borrowing a later callee name
and return signature while preserving frame timing and marked children.

Keep the heuristic local to trace collection and document its limits and
removal condition once the processor exposes active-invocation evidence.
Validate frame bases as u32 addresses and apply local offsets with checked
arithmetic, matching the existing variable resolver. Invalid bases and
address overflow now leave traced argument values unknown instead of
panicking or reading through an invalid base.
This PR is derived from and supercedes #150, but with the work on the
branch rebased on `next`, and modified to use new infra for tracking
call frames, and to address various bugs found during review.

cc @marijamijailovic
)

Match raw assembly context names and their demangled Rust source names so
function breakpoints agree with stack traces, including without std.

Retain focused frame and serialized-package DAP regressions from the
original call-frame work, plus compact inline-range serialization and gap
coverage. Preserve the current finish and step-out policy of stopping at
a caller assembly operation, including tail-only recursive calls.

Co-authored-by: Paul Schoenfelder <paulschoenfelder@fastmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

Code Metrics Report

next (61edca8) #168 (fd93c51) +/-
Coverage 81.3% 81.3% 0.0%
Details
  |           | next (61edca8) | #168 (fd93c51) | +/-  |
  |-----------|----------------|----------------|------|
  | Coverage  |          81.3% |          81.3% | 0.0% |
  |   Files   |             69 |             69 |    0 |
  |   Lines   |          11978 |          11978 |    0 |
  |   Covered |           9748 |           9748 |    0 |

Code coverage of files in pull request scope (85.5% → 85.5%, patch 93.0%)

Files Coverage +/- Patch Coverage Status
crates/engine/src/debug/abi_types.rs 85.6% 0.0% 94.1% modified
crates/engine/src/debug/breakpoint.rs 93.7% 0.0% 100.0% modified
crates/engine/src/debug/calltrace.rs 97.3% 0.0% 97.3% added
crates/engine/src/debug/native_ptr.rs 100.0% 0.0% - modified
crates/engine/src/debug/stacktrace.rs 76.9% 0.0% 91.6% modified
crates/engine/src/debug/stacktrace/recovered.rs 96.1% 0.0% 96.1% added
crates/engine/src/debug/variables.rs 90.9% 0.0% 94.0% modified
crates/engine/src/exec/advice.rs 83.3% 0.0% - modified
crates/engine/src/exec/collect_trace.rs 97.8% 0.0% 97.8% added
crates/engine/src/exec/dap.rs 82.1% 0.0% 99.3% modified
crates/engine/src/exec/dap_client.rs 95.4% 0.0% 96.6% modified
crates/engine/src/exec/diagnostic.rs 92.7% 0.0% 100.0% modified
crates/engine/src/exec/recording_host.rs 70.1% 0.0% 70.1% added
crates/engine/src/exec/snapshot.rs 84.0% 0.0% - modified
crates/engine/src/exec/source.rs 91.7% 0.0% 91.7% added
crates/engine/src/exec/state.rs 88.4% 0.0% 100.0% modified
src/flamegraph.rs 91.7% 0.0% 100.0% modified
src/program_loader.rs 78.0% 0.0% - modified
src/repl/engine.rs 92.0% 0.0% 90.0% modified
src/script/api.rs 92.3% 0.0% 72.5% modified
src/ui/state.rs 79.7% 0.0% 82.6% modified

Reported by octocov

Coverage CI run

@bitwalker
bitwalker merged commit 698c841 into main Oct 21, 2026
34 checks passed
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.

4 participants