Interactive editions

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.

All five pages live. Interactive editions of the last five MicroPython releases (v1.24 through v1.28) are now ready. Browse by release card below, or use the per-port chart further down to find changes for your specific target.
Live
v1.28
April 6, 2026
PWM on alif and stm32, a standardised machine.CAN API, PEP 750 template strings, and the weakref module.
Read the interactive notes →
Live
v1.27
December 10, 2025
ESP32-C5, ESP32-P4 and STM32U5 support, formal port Tier levels, unified pyexec REPL on unix/windows.
Read the interactive notes →
Live
v1.26
August 9, 2025
machine.I2CTarget, the float-accuracy overhaul, native emitter wins, and the new STM32N6 and ESP32-C2 MCUs.
Read the interactive notes →
Live
v1.25
April 16, 2025
ROMFS / VfsRom, the brand-new alif port, @micropython.asm_rv32 inline RISC-V assembler, DTLS support.
Read the interactive notes →
Live
v1.24
October 26, 2024
RP2350 and ESP32-C6 support, RV32 native code emitter, common TinyUSB code, micropython.RingIO.
Read the interactive notes →

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

Hover for per-port breakdown
Hover a bar to see which ports gained boards.

Total: new boards across the five releases.

Contributors per release

Hover for the release headline
Hover a bar to see what shipped that 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
Espressif ESP32 family
Tier 1
mimxrt
NXP i.MX RT
Tier 1
rp2
Raspberry Pi RP2040 / RP2350
Tier 1
samd
Microchip SAMD21 / SAMD51
Tier 1
stm32
ST STM32 (F0/F4/F7/G0/G4/H5/H7/L0/L1/L4/N6/U5/WB/WL)
Tier 1
unix
Linux, BSD, macOS, WSL
Tier 1
windows
Microsoft Windows
Tier 1
alif
Alif Ensemble (E3, E7) — new in v1.25
Tier 2
embed
Embeddable .c/.h sources
Tier 2
·
nrf
Nordic nRF51 / nRF52
Tier 2
renesas-ra
Renesas RA family
Tier 2
webassembly
Browsers and Node.js (PyScript runs here!)
Tier 2
zephyr
Zephyr RTOS
Tier 2
cc3200
TI CC3200
Tier 3
esp8266
Espressif ESP8266
Tier 3
pic16bit
Microchip PIC 16-bit
Tier 3
·
powerpc
IBM PowerPC (incl. Microwatt)
Tier 3
·
bare-arm
Minimum config — tracks core size
Tier M
minimal
Reference for new ports
Tier M
qemu
Cortex-A/M, RISC-V 32 & 64 emulation
Tier M

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.

v1.24
network.ipconfig() IPv6-aware replacement for ifconfig(), plus portable network.PPP.
v1.25
Default I2C/SPI/UART Ports gain default-bus instances so cross-port code can drop the id arg.
v1.26
I2CTarget · Counter · Encoder New peripheral classes (target on 7 ports, counter/encoder on esp32 first).
v1.27
Hard-IRQ timers machine.Timer(hard=True) available on most ports (esp32 still soft-only).
v1.28
PWM & CAN everywhere 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.