Support metadata-validated POD WinRT vectors - #179
Open
leileizhang (lei9444) wants to merge 5 commits into
Open
leileizhang (lei9444) wants to merge 5 commits into
leileizhang (lei9444) wants to merge 5 commits into
Conversation
Retain word/reference fast paths and map admission; add aligned POD ownership, cached metadata-driven collection callbacks, and SDK-typed ABI/lifetime coverage. This is the vector-only first phase of #161, isolated from the current release. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Exercise SDK Point and BasicGeoposition collection consumers plus optional AI hint RectInt32 vector preparation with matching JS/Python runtimes. Keep map, non-POD, scalar, unsafe-constructor and current-release boundaries explicit. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Hold the owner before retaining input values and until notification/state borrows return. Verify final reentrant Release also drops handler closures without creating owner cycles. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Replace historical post-release exclusion wording with phase-one scope proposed for release, subject to PR review, final integration and platform CI. Keep implementation and historical validation attribution unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Mixed-language test coverageWorkflow status: ✅ Passed
|
Exercise constructor/factory parity, typed BasicGeoposition bulk lookup, and geoshape properties in the existing native E2E case. Restore the unchanged Python aggregate coverage gate after the added POD projection closure lowered coverage to 69.83%; matched local Python coverage now reaches 70.19%. No production or threshold changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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.
Summary
Partially addresses #161: phase-one support for empty and populated checked POD WinRT vectors, not completion of the broader struct-collection issue.
IVector<T>, live/snapshotIVectorView<T>,IIterable<T>, iterators, bulk operations, and observable/reentrant lifetime paths, including ARM64 HFAs and larger/nested aggregates.No public facade, codegen implementation, dependency, or release-workflow changes. The existing
native_callbackimplementation is reused unchanged. Seedocs/architecture/winrt-pod-vectors.mdfor the design and boundaries.Local validation and revision attribution
Implementation validated at 0ef52e6. Follow-up bb153fb changes only release wording in four documentation files;
git diff --checkpassed. The original three implementation/coverage commits were not rebased or rewritten, and historical evidence manifests remain unchanged.cargo test --locked --offline -p dynwinrtMatched generated JS/Python E2E passed stock
InkStrokeBuilderPoint inputs and all threeGeopath/GeoboundingBoxBasicGeoposition overloads. The optionalpod_hint_specs.jsonfixture exercises generated RectInt32 vector preparation only and remains explicitly documented as such. Empty producers remain real non-null collections; native consumers retain their own empty-input semantics.Additional local ARM64 gallery trial
A later user-confirmed trial used the exact release addon from
0ef52e69(SHA256D214D97ACB6BFBB61DA14F6871138C325E93F5754DBC84F4BEB8AF55F7EB0F94) with unchangedf50fd14codegen, all 132 WinMD hashes, and all 1,313 generated files. Real empty RectInt32 input matched the prior null control (850x566, 481,100 mask bytes; 401,288 opaque / 79,812 transparent). A nonempty rectangle(225, 20, 400, 540)passed field roundtrip and native AI mask execution, and the renderer → IPC → utility → native → canvas route also passed. Missing-image input still rejected with0x80070002.This is local evidence for those gallery paths, not general AI/UI or WinAppSDK qualification; it does not change the preparation-only test fixture's scope.
Release admission
Proposed for this release, subject to PR review, final integration, and platform CI; not an already-released capability or a claim that CI is green. A local merge-tree check against
mainat6a9bb4ebf57b3a9cd81891decc3f7701ee08e56bwas conflict-free, but the merge result has not been requalified by the historical local suites.Coverage follow-up: 7da277c
The failed coverage run reached the final Python aggregate gate: 7,220 / 10,340 lines = 69.83%, below the unchanged 70% minimum. It was not a build or test-assertion failure. Adding the POD E2E inputs expanded the measured generated projection set; a diagnostic control without those two new specs measured 71.06%.
7da277c changes only the existing Python geolocation E2E case: constructor/factory parity, BasicGeoposition view bulk reads and lookup, shape/spatial/altitude properties, and reconstructed bounding-box checks. No production code, workflows, coverage filters, thresholds, or existing assertions were changed.
The local Python coverage slice used the official codegen artifact for CI merge 5215faa, source-matched native runtime, and local SDK 26100 metadata. The before result matched CI's numerator and denominator exactly; after the assertions it measured 7,263 / 10,348 = 70.19%, passing the unchanged validator. All 44 standard Python E2E specs and 4 + 19 implementation scenarios passed, as did binding tests (14 existing unavailable WinUI-fixture skips), the focused two POD specs, threshold regression tests, Python compilation, and
git diff --check.This reproduction was native ARM64 / CPython 3.13.15 / cached coverage.py 7.16.0; the failed hosted run used x64 / CPython 3.12.10 / coverage.py 7.16.1. No new remote CI success is claimed; the follow-up still requires its normal CI checks.