Status
Stable. v1.0 is the current release on the default channel — the Install and Update default, superseding v0.9.1 “Pulsar”.
The data directory moves from /Pulsar/ to /Vela/. Updating devices migrate automatically — accounts, WiFi profiles, settings and installed packages are all preserved.
Supported hardware
v1.0 targets the Pico 2 W (RP2350) and the ESP32-S3.
RP2040 boards are not supported by this release. The Pico 1 and Pico 1 W cannot run the v1.0 multitasking build in 264 KB of RAM — it idles near the ceiling and climbs until it fails. Those boards should stay on v0.9.1, which is fully supported. A separate optimised image for them is planned rather than cutting the portable base down to fit.
Multitasking
This is the headline change. The shell is cooperative rather than blocking, which is what lets background services, on-screen apps and the serial terminal share one small device.
- The multitasking shell is the default. Background services keep running while you work at the prompt.
asyncmode offswitches to the classic synchronous shell, which also remains the automatic crash fallback. appkit, a cooperative app framework for package authors. A foreground TUI yields instead of monopolising the loop, so it runs alongside background services.read_keyis non-blocking andread_lineyields.- Background services are supervised, survive a cancelled command line, and are managed with
service list | add | remove.
Shell & terminal
- Typing is faster. Each keystroke repaints only what changed rather than redrawing the whole line, which is what makes input feel immediate over serial.
- Pasting a block works. A pasted block — and a held backspace, or a held printable key — is processed in batches instead of one character per loop turn.
- Backspace behaves everywhere. Terminals disagree about which byte plain Backspace sends; both are now treated as a single-character delete, with Ctrl+W as the terminal-independent delete-word-back.
- Word-wise keys work in PuTTY and mpremote — both the SS3 and CSI encodings — in the shell and in the editor.
- Escape sequences no longer leak into the line as stray characters such as
;5A. - An idle shell yields the CPU. The reader backs off when nothing is being typed, so it stops competing with background work.
grep -ifor case-insensitive matching.
Networking
- Async
ping,wgetandcurl— network commands yield on every socket wait, so a download no longer freezes the device and background services keep serving throughout. - HTTPS fixed on current firmware. TLS uses
SSLContext, which MicroPython v1.29 and later require. - Honest HTTPS failures. A TLS handshake needs one unbroken block of about 16.7 KB. Memory is now reclaimed before the handshake rather than after it fails, and when the block genuinely is not available the error says so — and reports how much contiguous memory there actually is — instead of a generic failure.
- Downloads no longer slow down as they grow. The response body was being rebuilt on every chunk; it is assembled once at the end.
- WiFi autoconnect and NTP time sync at boot.
Memory & reliability
On a device this size the recurring failure is not running out of memory but running out of contiguous memory. MicroPython’s heap does not compact, so it can report 200 KB free and still refuse a 16 KB allocation. Several changes target that directly.
meminforeports the largest allocatable block and a fragmentation percentage, not just the free total — the number that actually decides whether an HTTPS request can succeed.defragreclaims memory and reports what it recovered.freeupnow frees memory on compiled builds. Commands loaded from.mpylive on in the module table, so clearing the command cache released almost nothing. It now evicts the command modules themselves — measured on a Pico 2 W as a change from 2 KB recovered to 84 KB.- Automatic reclaim. The scheduler reclaims when free memory is low or when a contiguity check fails, rather than waiting for something to break.
- Package installs stream to flash. A
.pkgis extracted entry by entry instead of being read into memory whole, which is what made large packages fail to install.
Packages & updates
safeboot— reboot without background services so an update runs with the full heap available. It can also stage a command for the next boot, which is what lets an update started from a screen finish reliably.- An opt-in beta channel —
update channel beta | stable. With no channel chosen, a device follows the stage of the build it is running, so a pre-release device checks the pre-release manifest rather than comparing itself against something older. - Update checks never offer a downgrade. A differing build id is no longer enough on its own: the version must match and the build counter must be ahead.
- Non-interactive updates (
-y), so an update begun somewhere without a keyboard can complete. - Removing a package stops its services first and clears its autostart entries, instead of deleting files out from under a running service.
- Installed packages take priority over frozen modules on the import path, so a package update is picked up even when an older copy is built into the firmware.
Storage
- SD card support —
sdmgr, thesdcommand, and optional auto-mount at boot. - A storage guard that warns at 95% full and blocks writes at 98%, rather than letting the filesystem fill and fail in the middle of a write.
Platform
- One place for hardware differences. Die temperature, safe clock range and current frequency now come from a single platform module, so RP2040, RP2350 and ESP32-S3 differences are not scattered through the tree.
- A sensible boot clock. An unconfigured RP2350 runs at 200 MHz instead of the old flat 125 MHz default — which was slower than the chip’s own default of 150.
- Command output is captured properly. Results printed as status lines are captured alongside ordinary output, so a command whose entire result is a single status line is no longer invisible to pipes, scripts and on-screen apps.
diagandsysinforeport more, in plainer wording.
Nova D1
The Nova D1 multi-tool runs on Vela as a package suite. It is developed alongside this release and has its own version line; see the packages page for the current build.
Installing
Fresh install: pick RPCortex Vela in the Web Installer — it is the default.
Updating from v0.9.1 on a Pico 2 W or ESP32-S3:
update channel beta
update check
safeboot update online -y
Accounts, WiFi profiles, settings and installed packages are preserved, and /Pulsar/ is migrated to /Vela/ automatically. update channel stable switches back at any time; it will not downgrade an existing install.
Known limitations
- RP2040 is not supported — see supported hardware. Stay on v0.9.1.
- Contiguous memory is still the binding constraint on a device that has been running a long time with a large package resident. Run
freeupbefore an update, or reboot first — a fresh boot has the least fragmentation. - A firmware flash erases the filesystem. Applying an
.rpcOS update does not; flashing MicroPython itself does. - This is a pre-release. The core is hardware-verified on the Pico 2 W, but behaviour may still change. Please report anything rough.
RPCortex Vela — v1.0.0 pre-release • by dash1101. Issues and PRs welcome. Looking for the stable release? See the v0.9.1 Pulsar notes.