Skip to content

Releases: PyMCU/RP2040Sharp

v1.0.1

Choose a tag to compare

@begeistert begeistert released this 14 Jul 08:05
6d6fb2d

RP2040Sharp v1.0.1 — first stable BUSL release 🎉

First stable release under the Business Source License 1.1 (whole project BUSL-1.1, converts to MIT on the Change Date).

✨ Included

  • fix(pwm): implement PWM CSR.DIVMODE (B-pin gated and edge-count modes). Unit: 521/0.

📦 NuGet

RP2040Sharp, RP2040Sharp.TestKit, RP2040Sharp.Wireless, RP2040Sharp.NanoFramework.TestKit @ 1.0.1.

🤖 Generated with Claude Code

v1.0.1-beta.12

v1.0.1-beta.12 Pre-release
Pre-release

Choose a tag to compare

@begeistert begeistert released this 14 Jul 06:14
a6716e6

RP2040Sharp v1.0.1-beta.12

⚖️ Licensing correction

The entire project is BUSL-1.1 — the emulator core (RP2040Sharp) and every package — converting to MIT on the Change Date. The core is no longer MIT. MIT is retained in LICENSE only as attribution for the rp2040js-derived (© Uri Shaked) portions of the core.

All four packages now publish under BUSL-1.1.

🤖 Generated with Claude Code

v1.0.1-beta.11

v1.0.1-beta.11 Pre-release
Pre-release

Choose a tag to compare

@begeistert begeistert released this 12 Jul 07:58
6dbc7f6

RP2040Sharp v1.0.1-beta.11

🐛 Fix

  • ARMv6-M exception priority model — a GPIO IRQ no longer self-preempts. Corrects the Cortex-M0+ exception priority/preemption handling (CortexM0Plus, SystemOps, PpbPeripheral); adds MicroPythonGpioIrqTests.

Verified: unit 516/0, new GPIO IRQ integration test 2/0. BUSL Change Date stamped to release + 4 years (rolling).

🤖 Generated with Claude Code

v1.0.1-beta.10

v1.0.1-beta.10 Pre-release
Pre-release

Choose a tag to compare

@begeistert begeistert released this 12 Jul 07:55
72e2cc8

RP2040Sharp v1.0.1-beta.10

⚙️ CI / Licensing

  • First release built with the rolling BUSL Change Date automation: the packaged license Change Date is now stamped to release date + 4 years at pack time, so every version gets its own full 4-year window before converting to MIT.

Dual model unchanged: RP2040Sharp core is MIT; RP2040Sharp.TestKit, RP2040Sharp.Wireless, RP2040Sharp.NanoFramework.TestKit are BUSL-1.1.

🤖 Generated with Claude Code

v1.0.1-beta.9

v1.0.1-beta.9 Pre-release
Pre-release

Choose a tag to compare

@begeistert begeistert released this 11 Jul 08:43
9fc9de2

RP2040Sharp v1.0.1-beta.9

⚖️ Licensing (clarification only)

Sharpens the BUSL-1.1 commercial-use exception — no functional code change:

  • The Commercial Use definition (a)/(b)/(c) is now authoritative; the free-use list (personal / hobby / educational / academic / evaluation / OSS) is subordinate to it.
  • Uniform Change Date 2030-07-11 → converts to MIT (per-version).

Dual model unchanged: RP2040Sharp core is MIT; RP2040Sharp.TestKit, RP2040Sharp.Wireless, RP2040Sharp.NanoFramework.TestKit are BUSL-1.1.

🤖 Generated with Claude Code

v1.0.1-beta.8

v1.0.1-beta.8 Pre-release
Pre-release

Choose a tag to compare

@begeistert begeistert released this 09 Jul 04:14
8002d22

RP2040Sharp v1.0.1-beta.8

✨ Changes

  • RTC and SSI peripheral corrections.
  • DREQ-paced DMA: OnRxPush now fires from InjectRxData.
  • New integration coverage: CYW43 HTTP RX, FreeRTOS kernel, MicroPython REPL, PyMCU-vs-MicroPython benchmark.
  • Built on top of the NfClr.Core extraction + Trusted Publishing (1.0.1-beta.6).

Supersedes v1.0.1-beta.7, which was tagged from a stale base and has been withdrawn.

⚖️ Licensing (unchanged dual model)

Package License
RP2040Sharp (core) MIT
RP2040Sharp.TestKit BUSL-1.1 → MIT on 2030-06-25
RP2040Sharp.Wireless BUSL-1.1 → MIT on 2030-06-25
RP2040Sharp.NanoFramework.TestKit BUSL-1.1 → MIT on 2030-06-25

📦 NuGet

All four packages @ 1.0.1-beta.8.

🤖 Generated with Claude Code

Pre-Release v1.0.1-beta.6

Pre-release

Choose a tag to compare

@begeistert begeistert released this 26 Jun 05:58
a739e60

Follow-up to v1.0.1-beta.5.
This release extracts the chip-agnostic nanoCLR introspection into a shared package and
moves publishing to NuGet Trusted Publishing. Licensing is unchanged — only the RP2040Sharp
core is MIT; the rest are BUSL-1.1.

🔧 Changed

  • Extracted the nanoCLR introspection into NfClr.Core.
    ClrInspector, ClrLayout, the heap walk and ClrSession now live once in the shared
    NfClr.Core package (1.0.0-beta.1). RP2040Sharp.NanoFramework.TestKit keeps only the
    RP2040 IClrMemory/IClrHost adapter (Rp2040ClrHost / Rp2040ClrMemory) and depends on
    NfClr.Core via PackageReference. NanoClrHarness is now a thin facade over ClrSession;
    firmware symbols, layout and checksums derive from the nanoCLR ELF/DWARF when present.
  • Publishing migrated to NuGet Trusted Publishing (OIDC) — short-lived keys minted from the
    GitHub OIDC token, no long-lived NUGET_API_KEY.

📦 Packages

# MIT core
dotnet add package RP2040Sharp --version 1.0.1-beta.6

# BUSL-1.1
dotnet add package RP2040Sharp.TestKit --version 1.0.1-beta.6
dotnet add package RP2040Sharp.Wireless --version 1.0.1-beta.6
dotnet add package RP2040Sharp.NanoFramework.TestKit --version 1.0.1-beta.6   # now depends on NfClr.Core

Full changelog: https://github.com/PyMCU/RP2040Sharp/blob/master/CHANGELOG.md

Pre-Release v1.0.1-beta.5

Pre-release

Choose a tag to compare

@begeistert begeistert released this 25 Jun 19:55
54547cc

Follow-up to v1.0.1-beta.4
that fixes the nanoFramework TestKit package name. Same licensing model: only the
RP2040Sharp core is MIT; RP2040Sharp.TestKit, RP2040Sharp.Wireless and
RP2040Sharp.NanoFramework.TestKit are BUSL-1.1 (converts to MIT on 2030-06-25).

🔧 Changed

  • Renamed the nanoFramework TestKit package RP2040Sharp.TestKit.NanoFramework
    RP2040Sharp.NanoFramework.TestKit — the previous id had its segments reversed. The
    rename is full and consistent:
    • package id, assembly (RP2040Sharp.NanoFramework.TestKit.dll)
    • namespaces: RP2040.NanoFramework.TestKit / …SourceGen
      RP2040Sharp.NanoFramework.TestKit / …SourceGen
    • bundled NanoSymbols analyzer + the buildTransitive targets file

⚠️ Migration (for nanoFramework TestKit users)

- dotnet add package RP2040Sharp.TestKit.NanoFramework
+ dotnet add package RP2040Sharp.NanoFramework.TestKit
- using RP2040.NanoFramework.TestKit;
+ using RP2040Sharp.NanoFramework.TestKit;

The old RP2040Sharp.TestKit.NanoFramework package (beta.2–beta.4) is unlisted.

📦 Packages

# MIT core
dotnet add package RP2040Sharp --version 1.0.1-beta.5

# BUSL-1.1
dotnet add package RP2040Sharp.TestKit --version 1.0.1-beta.5
dotnet add package RP2040Sharp.Wireless --version 1.0.1-beta.5
dotnet add package RP2040Sharp.NanoFramework.TestKit --version 1.0.1-beta.5

Full changelog: https://github.com/PyMCU/RP2040Sharp/blob/master/CHANGELOG.md

Pre-Release v1.0.1-beta.4

Pre-release

Choose a tag to compare

@begeistert begeistert released this 25 Jun 16:03
f6ce226

Follow-up to v1.0.1-beta.3
that finishes the Wireless rename so the published package is internally consistent. Same
licensing model: only the RP2040Sharp core is MIT; RP2040Sharp.TestKit,
RP2040Sharp.Wireless and RP2040Sharp.TestKit.NanoFramework are BUSL-1.1 (license
file; free for individuals/personal/education/research/evaluation/open-source — Commercial
Use, i.e. enterprise CI/CD or revenue-generating products/services, needs a license;
converts to MIT on 2030-06-25).

🔧 Changed

  • RP2040Sharp.Wireless: assembly and namespaces renamed to match the package id.
    • DLL: RP2040.Wireless.dllRP2040Sharp.Wireless.dll
    • Namespaces: RP2040.Wireless.Ble / RP2040.Wireless.Cyw43
      RP2040Sharp.Wireless.Ble / RP2040Sharp.Wireless.Cyw43

⚠️ Breaking (only for RP2040Sharp.Wireless consumers)

Update your using directives:

- using RP2040.Wireless.Cyw43;
- using RP2040.Wireless.Ble;
+ using RP2040Sharp.Wireless.Cyw43;
+ using RP2040Sharp.Wireless.Ble;

📦 Packages

# MIT core
dotnet add package RP2040Sharp --version 1.0.1-beta.4

# BUSL-1.1
dotnet add package RP2040Sharp.TestKit --version 1.0.1-beta.4
dotnet add package RP2040Sharp.Wireless --version 1.0.1-beta.4
dotnet add package RP2040Sharp.TestKit.NanoFramework --version 1.0.1-beta.4

Full changelog: https://github.com/PyMCU/RP2040Sharp/blob/master/CHANGELOG.md

Pre-Release v1.0.1-beta.3

Pre-release

Choose a tag to compare

@begeistert begeistert released this 25 Jun 15:54
fd0ea1f

Re-cut of 1.0.1-beta.2, which only partially published. This release ships the full
BUSL-1.1 package set with a clean licensing and naming model, plus the CYW43439
wireless stack, a second bootrom revision, and a nanoFramework integration-test harness.

No breaking changes — the public API remains stable under
Semantic Versioning. Everything from
v1.0.1-beta.1 still
applies.

🔒 Licensing

Only the RP2040Sharp emulator core stays MIT. Every other package —
RP2040Sharp.TestKit, RP2040Sharp.Wireless, and RP2040Sharp.TestKit.NanoFramework
is BUSL-1.1, shipped as a license file with a generous Additional Use Grant:

  • Free for individuals and for personal, hobby, educational, academic-research,
    evaluation, and open-source use.
  • Commercial Use — using the packages in enterprise CI/CD (automated build/test
    pipelines run by or for a for-profit organization) or in products/services that
    generate revenue
    — requires a separate commercial license.
  • Change Date 2030-06-25 (4 years): on that date the BUSL packages convert to MIT.

✨ Added

  • RP2040Sharp.Wireless (BUSL-1.1) — firmware-agnostic CYW43439 Wi-Fi + Bluetooth LE
    virtualization for the Raspberry Pi Pico W: the gSPI bus (bit-banged through PIO), the
    SDIO backplane and firmware download, the WHD/SDPCM control + Ethernet data plane, and
    the BT HCI shared-bus transport. Unmodified firmware (pico-sdk, MicroPython,
    CircuitPython) runs in STA and SoftAP modes against a virtual access point; BLE
    advertises/scans/connects and relays GATT between virtual devices.
  • RP2040Sharp.TestKit.NanoFramework (BUSL-1.1) — boot a deployed .NET nanoFramework
    app on the emulator and assert against it from xUnit: native-function-by-symbol runs,
    managed static and instance fields read by name, RunUntil a managed method/variable,
    and a native-checksum compatibility guard. A bundled NanoSymbols source generator
    (shipped as an analyzer, wired by a buildTransitive targets file) emits a
    strongly-typed symbols class for the app's methods and static fields.
  • B2 bootrom + revision selection, PIO FIFO probe, and an emulator strict mode
    that surfaces silent accuracy gaps.

🔧 Changed

  • RP2040Sharp.TestKit is now BUSL-1.1 (was MIT).
  • Renamed the Wireless package RP2040.WirelessRP2040Sharp.Wireless for a
    consistent RP2040Sharp.* id prefix.
  • Renamed the solution RP2040.slnRP2040Sharp.sln.
  • BUSL packages ship the license as a file (LICENSE-BUSL.txt) instead of an SPDX
    expression, which nuget.org does not accept for BUSL-1.1.

🐛 Fixed

  • SSI direct-command flash RX so the bootrom/CLR flash-access path works.
  • PIO RESET gating for PIO blocks.
  • USB CDC OUT delivery moved to a push model; EP_ABORT no longer drops deferred
    completions.

⚠️ Note on 1.0.1-beta.2

1.0.1-beta.2 published only partially and is yanked/superseded by this release. Use
1.0.1-beta.3.

📦 Packages

# MIT core
dotnet add package RP2040Sharp --version 1.0.1-beta.3

# BUSL-1.1
dotnet add package RP2040Sharp.TestKit --version 1.0.1-beta.3
dotnet add package RP2040Sharp.Wireless --version 1.0.1-beta.3
dotnet add package RP2040Sharp.TestKit.NanoFramework --version 1.0.1-beta.3

Full changelog: https://github.com/PyMCU/RP2040Sharp/blob/master/CHANGELOG.md