Release 1.0.1-beta.6: extract CLR introspection into NfClr.Core (PackageReference)#46
Merged
Conversation
…ling to the harness ClrInspector and ClrLayout move to the chip-agnostic NanoFramework.Clr.Core and now read through an IClrMemory; this kit supplies the RP2040 adapter (Rp2040ClrMemory over the emulator bus). The CLR walker no longer references RP2040 at all, so STM32/ESP32 kits will reuse it instead of duplicating it. The harness gains CaptureHeap() (dotMemory-style heap snapshots) and ProfileCalls() (dotTrace-style per-method call counts + instructions/cycles).
The run/profile logic moves to NanoFramework.Clr.Core's ClrSession; this kit now supplies Rp2040ClrHost (IClrHost over PicoSimulation + NanoFirmware, bridging the profiling observer and exposing R0/R1) and NanoApp.FromDeployment (wrap a prebuilt deployment.bin). NanoClrHarness keeps its public API but delegates everything. Reference path follows the NanoFramework.Clr umbrella rename.
…rMemory Rp2040ClrMemory exposes RamStart/RamEnd (RP2040 SRAM); Rp2040ClrHost composes it instead of repeating the bus reads.
…ymbols The profiler's ClrLayout is now built from these DWARF-derived offsets (with a per-field fallback), so it adapts to the firmware build instead of hardcoding a nanoCLR version's struct layout.
…en present NanoFirmware.FromDirectory reads nanoCLR*.elf via FirmwareElf and falls back to firmware.manifest.json only when no ELF ships — no hand-written manifest needed.
Replace the long-lived NUGET_API_KEY with NuGet/login@v1: the workflow mints a short-lived key from the GitHub OIDC token at push time (permissions: id-token: write). Requires a Trusted Publishing policy on nuget.org (Repository Owner: PyMCU, Repository: RP2040Sharp, Workflow File: publish.yml) and a repo secret NUGET_USER (nuget.org profile name). The NUGET_API_KEY secret can be deleted once verified. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-beta.1) Now that NfClr.Core ships on nuget.org, replace the cross-repo ProjectReference (..\..\..\NfClr\src\NfClr.Core) with a PackageReference. The published TestKit now declares a clean NfClr.Core dependency instead of needing the sibling repo checked out. Prepares the extract-clr-core branch for the 1.0.1-beta.6 release. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…hing) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
begeistert
marked this pull request as ready for review
June 26, 2026 05:57
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.
Draft — ready for 1.0.1-beta.6 when you are.
Extracts the chip-agnostic nanoCLR introspection (ClrInspector, ClrLayout, heap walk, ClrSession) out of
RP2040Sharp.NanoFramework.TestKitinto the shared NfClr.Core library, and makesNanoClrHarnessa thin facade overClrSessionvia anIClrHost/IClrMemoryadapter (Rp2040ClrHost/Rp2040ClrMemory).Changes
1.0.0-beta.1); this kit only supplies the RP2040 adapter.RP2040Sharp.NanoFramework.TestKitdepends on NfClr.Core via PackageReference (no cross-repo project reference). The published package declares a cleanNfClr.Core 1.0.0-beta.1dependency.Verified
NfClr.Core 1.0.0-beta.1from nuget.org.NfClr.Coredependency; analyzer +buildTransitivetargets + BUSL license intact.Merging this and tagging
v1.0.1-beta.6publishes the updated testkit (via Trusted Publishing, now onmaster).🤖 Generated with Claude Code