MicroPython Release Notes
Browser-runnable, demo-driven walkthroughs of recent MicroPython releases — built and maintained by the Melbourne MicroPython Meetup.
Currently covering v1.24 – v1.28
Release timeline
Five releases over 18 months, each spaced roughly four months apart. The gaps below are actually proportional to the time between releases — hover any dot for the headline + stats; click to read the notes.
machine.CAN API,
PEP 750 template strings, and the weakref module.
machine.I2CTarget, the float-accuracy overhaul, native emitter
wins, and the new STM32N6 and ESP32-C2 MCUs.
VfsRom, the brand-new alif port,
@micropython.asm_rv32 inline RISC-V assembler, DTLS support.
micropython.RingIO.
Project at a glance
Two compact charts — new boards landing per release, and the contributor headcount on each one. Hover any bar to reveal the breakdown behind the number.
New boards per release
Total: … new boards across the five releases.
Contributors per release
Average: … contributors per release.
Browse by Port
Every MicroPython port is classified into one of four Tier levels (formalised in v1.27). Click a tier to filter the chart, or click any release chip on a port to jump to that release's notes — useful when you only care about what changed for a specific target.
esp32 has ongoing financial support from Espressif (*).
Greyed-out chips link to release pages that haven't been written yet.
Full tier definitions are in the
MicroPython support tiers documentation.
MCU family adoption
Ten new MCU families landed across these five releases — arguably the strongest "evolution" story of the period. Each chip is colour-coded by vendor; hover for capabilities, click to jump to the relevant release page.
… new MCU families across 18 months.
Code-size evolution
Cumulative firmware-size delta vs the v1.23 baseline, kilobytes, for the four ports that moved most. The esp32 line tells a great story: ESP-IDF was cleaned up in v1.24 and dropped 53 kB, then steadily climbed back as new features landed. Hover a port chip to isolate its line; hover a data point for exact bytes and the reason given in the release tag.
The machine.* standardisation arc
The strongest cross-release storyline of the last five releases is the steady
push to standardise machine-module APIs across every port
— so portable code really does run unchanged.
ifconfig(), plus portable
network.PPP.
id arg.
machine.Timer(hard=True) available on most ports
(esp32 still soft-only).
machine.PWM on every Tier 1 & 2 port, standardised
machine.CAN API across STM32 and friends.
Other recurring threads
Patterns worth noticing as you read across the releases.
RISC-V grows up
v1.24 ships the RV32 native emitter. v1.25 adds the
asm_rv32 inline assembler. v1.26 optimises emitter output
across all archs including RV32. v1.27 adds Zba opcodes and an RV64 qemu
target. v1.28 picks up the Zcmp extension.
The ESP-IDF treadmill
v1.24 → IDF 5.2.2, v1.25 → 5.3/5.4, v1.26 → 5.4.2, v1.27 → 5.5.1. Each bump moves esp32 firmware size noticeably and unlocks new chips.
New STM32 families per release
STM32H7 octospi (v1.24), STM32N6 with ML accelerators (v1.26), STM32U5 low-power and an STM32F469 disco board (v1.27).
Native & viper emitter wins
Every release improves native code generation. Notable: Thumb v1 long-jump support (v1.26) lifted the function-size limit on RP2040, and Xtensa LX3 inline opcodes near feature-parity (v1.26).
mpremote ergonomics
Hash-based recursive copy (v1.24), rm -r + romfs
(v1.25), fs tree + better df + ESP CDC
detection (v1.26), DTR/RTS quirks ironed out (v1.27).
Zephyr port maturation
Threading (v1.24), Timer/WDT (v1.25),
PWM/UART/SPI/I2C and boot.py/main.py at
startup (v1.26), ADC + native FS VFS (v1.27).
asyncio everywhere
v1.24 enables top-level await of Task/
Event on the webassembly port. v1.25 makes implicit awaits
implicit. v1.26 fixes scheduler edge cases. v1.27 adds IPv6 to
asyncio.start_server().
TinyUSB consolidation
Common CDC code unified across esp32-S2/S3, mimxrt, renesas-ra, rp2 and samd in v1.24. ESP32 native USB stabilises through v1.26.1. stm32 starts adopting TinyUSB optionally in v1.27.