Repository navigation
feat(emulation): add caller-owned modules and persistent execution - #1448
Merged
Merged
Conversation
This was referenced Oct 19, 2026
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.
Adds a caller-owned catalogue for binary/debug resources and persistent CPU execution. Callers register official or private modules through the same interface, choose eager/lazy preparation, and bind resources into a stopped address space. A recoverable missing-resource stop retains its request token and execution state so the caller can supply a resource and resume.
ModuleSet, generic mapping/publication transactions and execution control share ownership across the C++ API, versioned C ABI, Python SDK and JSON-lines CLI. Source/debug identity validation, failed-publication rollback, cumulative budgets and finite integer-ABI calls remain explicit. Source/PDB symbol addresses are metadata; access and execution require the relevant mapping/model authority. Preexisting opaque export observations are validated by their environment without granting RAM permissions.The public execution factory in this PR supports raw CPU buffers. The Windows driver adapter is the dependent follow-up #1449; the unregistered-driver rejection is covered even when driver emulation is compiled in. Process/Ring3 adapters remain a design reservation.
Integration base:
9e3b7d948fb585d715e333169f6ef54f8649926b. The inherited settled-handler query is inline in its existing C++ header so Windows shared-SDK tests do not depend on an unexported private DLL symbol.The regression counts below were collected before the final upstream-only integration, on captured base
1e82f9c1128df07eb8e1e161a179874bc75b4b30. Integration onto9e3b7d948preserves the tested feature files and upstream changes; overlapping documentation/test additions were merged and the scoped diffs checked. Per the requested delivery scope, the final upstream refresh does not trigger another full regression.Validation uses Release, pinned LLVM r6 and the repository's dependency-refreshing build entry point:
The three Windows failures are
SessionCAPITest.AStatedNoReturnCalleeKeepsItsArguments,AStatedNoReturnReachesTheCallersOfItsCallers, andANameLeadsToOneAddress: the existing fixture compiler supplies-fPIE -pieto clang's MSVC target. These cases pass on Ubuntu. Other skips cover optional native transports and fixtures absent from this software-emulation profile. Repeated cases across targets are counted as executions.No executables, PDBs, sample drivers or local lab artifacts are included. Callers provide their resources through the documented API.