Repository navigation
Conversation
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>
Contributor
Code Metrics Report
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%)Reported by octocov |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.