Conversation
The implementation was removed by f456a34 (Fast sweep), but the remaining inline virtual method can still make ARM builds reference the undefined add_free_list_region method. The active collector uses OldSpace::sweep directly. Verified with the same RP2350 Release build: restoring the declaration fails to link; removing it builds successfully.
This was referenced Sep 20, 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 Toit port for the WeAct RP2350B: the VM and GC, persistent containers and storage, wired peripherals, and USB firmware updates with validation and rollback.
Runtime and peripherals
system.watchdogAPI on ESP32, EC618, and RP2350. Existing platform watchdog APIs remain available; the watchdog package update is toitware/toit-watchdog#17.SweepingVisitordeclaration left behind by the fast-sweep implementation; it caused the ARM linker to reference the removedadd_free_list_regionmethod.Flashing and updates
toit tool firmware -e firmware.envelope flash --port SERIAL_PORTupdates running firmware.flash --bootloader [--serial BOARD_SERIAL]performs initial installation or recovery through the USB ROM bootloader. Recovery images are generated from the current envelope, including installed containers, assets, and configuration.The normal SDK bundles picotool, the native OTA uploader, and replaceable libusb with its source and notices. Flashing requires neither Python nor a mounted drive. The Debian package installs the PICOBOOT USB access rule automatically; archive installs document the one-time setup and the alternative of copying an extracted recovery UF2 onto the mounted ROM drive. Trial updates preserve the previous firmware until the application validates startup; recovery preserves slot B and the registry, with normal ROM version selection still applying.
Documentation covers supported usage, architecture, and reproducible tests. Bring-up transcripts and investigation diaries are not tracked. New first-party build helpers and hardware-test runners use Toit instead of Python.
Changing
RP2350_PROGRAMnow rebuilds the generated application snapshot, including when the selected source is older than the previous build.Validation
Limits
Physical coverage is for the WeAct RP2350B in Arm Secure mode. RP2040, RISC-V, external PSRAM, networking, and GPIO deep-sleep wakeup are not implemented. I2C scanning/address-only probes remain TODO; a GPIO implementation must reuse the bus's reserved pins and restore their peripheral function. SPI controllers support all modes; hardware targets support modes 1/3 and reject modes 0/2.
The classic ESP32 Jaguar I2C target can intermittently NACK long writes at 400 kHz. The merged ESP-IDF fixes are integrated separately by #3245; this PR does not change the ESP-IDF submodule.
macOS/MSVC builds and Windows/macOS physical flashing remain for CI or platform testing.