MicroPython v1.27

Three new MCU families, formal port Tier levels, and a unified REPL on every port.

Released December 10, 2025

🎖
Port Tiers
20 ports, 4 formal tiers
💻
ESP32-C5 / P4
Standalone and co-processor
STM32U5
Low-power, high-performance
📱
Unified REPL
Raw REPL on unix and windows
0 Contributors
0 Timezones
0 New Boards
The language demos on this page run real MicroPython in your browser. MicroPython is compiled to WebAssembly via PyScript and executes live as the page loads — no server required.
New

Port Tier Levels

MicroPython supports more than twenty ports. v1.27 formalises that landscape: every port is now classified into one of four Tier levels, setting expectations for how mature it is, how actively it's tested, and what level of support contributors should expect. The classification also lowers the bar for new ports to land — they can enter at a low Tier and graduate upward.

Interactive Demo — Click a Tier to Filter
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/WB/WL)
Tier 1
unix
Linux, BSD, macOS, WSL
Tier 1
windows
Microsoft Windows
Tier 1
alif
Alif Ensemble (E3, E7)
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
7 Tier 1
6 Tier 2
4 Tier 3
3 Tier M
= 20 total

Note: esp32 has ongoing financial support from Espressif. Full tier definitions live in the MicroPython support tiers documentation.

New MCUs

ESP32-C5 & ESP32-P4 — standalone or paired

v1.27 adds two new RISC-V ESP32 family members. The ESP32-P4 is a higher-performance application processor that has no built-in radio — so for wireless, it's paired with a C5 (WiFi 6) or C6 (WiFi 4 + 802.15.4) co-processor. Board profiles ship for all three configurations.

Interactive Demo — ESP32-P4 Configurations
ESP32-P4 Dual-core RV32 High-performance Application processor
Use case
High-performance compute, no wireless required
Board profile
ESP32_GENERIC_P4
A new pattern
Pairing a high-performance compute MCU with a small wireless co-processor is a departure from the usual all-in-one ESP32 design. The C5 also ships standalone with its own application code — ESP32_GENERIC_C5.
New MCU

STM32U5xx series

Support for STMicroelectronics' low-power, high-performance U5 series — Cortex-M33 with TrustZone, generous RAM, and competitive power numbers. v1.27 brings up USB, ADC, DAC, UART, I2C, SPI and RTC, with a board profile for the NUCLEO-U5A5ZJ-Q.

STM32U5

Cortex-M33
M33 + TZ
low power
USB +DAC +RTC

Targeted at battery-powered IoT applications. v1.27's port supports the core peripherals; expect more (Ethernet, advanced power modes) in subsequent releases. STM32 also gets the F469 disco board, NUCLEO-H7A3ZI-Q, and a WeAct mini H743 in this release.

NUCLEO_U5A5ZJ_Q

STM32 family additions

v1.27 cross-cutting
  • STM32G0xx — DAC support; ADC, Timer(4), RTC wakeup fixes.
  • STM32G4xx — hardware I2C (was bit-banged).
  • STM32L4xxI2CTarget (the v1.26 feature, now on L4).
  • STM32N6xx — LAN works, including gigabit Ethernet via RTL8211 PHY.
  • Optional TinyUSB — opt-in TinyUSB stack alongside the existing STM USB stack. Eventually the default; allows defining USB devices in Python.
Improved

Unified REPL on unix & windows

The unix and windows ports' main REPL loop has been replaced with the same pyexec code that all bare-metal ports use. Behaviour is now consistent across the entire MicroPython family — and crucially, raw REPL is now supported on unix and windows, which means mpremote works against a unix MicroPython build the same way it works against a board.

Bare metal — works since forever
$ mpremote connect /dev/ttyACM0
>>> import sys
>>> print(sys.platform)
rp2
>>> 
Unix port — now works the same way in v1.27
$ mpremote connect ./build-standard/micropython
>>> import sys
>>> print(sys.platform)
linux
>>> 
Why it matters
The unix port is widely used for testing, scripting and CI. With raw-REPL parity, every workflow that uses mpremote against a board now works against a unix build too — including mpremote run, mpremote cp, and the test harness.
Cross-port

Hard IRQ Timer Callbacks — almost everywhere

machine.Timer(...).init(callback=fn, hard=True) now runs your callback inside the actual hardware interrupt context (no scheduler hop), so the latency is sub-microsecond. v1.27 brings hard-IRQ timer support to most ports. esp32 remains soft-IRQ only.

alif
mimxrt
nrf
renesas-ra
rp2
samd
stm32
esp8266 (new)
zephyr (new)
esp32 (soft only)
main.py
from machine import Timer

def on_tick(t):
    # Runs in ISR context: no allocation, no try/except, no print to UART
    pin.toggle()

t = Timer(0)
t.init(freq=10_000, callback=on_tick, hard=True)
New

Python language tweaks

Four small core-language additions in v1.27. Pick one from the dropdown to load the example into the editor, then run it live.

Live demo PyScript
Loading MicroPython…

Highlights

Other notable improvements in v1.27.

Test suite + CI overhaul

Auto-detect unicode/float/native, always run stress tests, ASan + UBSan builds, full suite on unix-minimal and zephyr CI.

tests
🔗

target_wiring.py

Per-board test-wiring config in one file. machine.UART tests already converted; pattern extends to other peripherals.

tests
🗣

Drop Python 2.7 support

EOL since January 2020. Build scripts and tools now require Python 3.

build
🔌

esp32.wake_on_gpio()

Wake the SoC from deep sleep via GPIO pins on the esp32 port.

esp32
🎧

I2S enabled on all ESP32-C6 boards

Audio I/O ships out of the box on every C6 board profile.

esp32
🔨

RP2350 PIO + alt-function fixes

PIO supports pin wrapping; RP2350B upper-bank pins now usable; alt functions fixed for pins > 31. New UART_AUX, XIP_CS1, CORESIGHT_TRACE and HSTX alt functions.

rp2
🌐

asyncio.start_server() IPv6

The asyncio server can now bind IPv6 sockets directly.

asyncio
📊

RISC-V Zba opcodes

Native emitter generates better 32-bit RISC-V code — useful on RP2350 in RV mode and on the ESP32-C-series.

rv32
🍉

QEMU adds RV64 + Cortex-M55

New VIRT_RV64, MPS2_AN500 (M7) and MPS3_AN547 (M55) qemu boards broaden architecture testing.

qemu
🔍

Zephyr v4.2.0

Zephyr port adds machine.ADC, native Zephyr filesystem VFS, GC split heap, hard IRQ timer callbacks, sensor attribute get/set, default-flash auto-format on boot.

zephyr

alif RTC + time_ns

machine.RTC.datetime() get/set, time.time_ns(), plus USB device-address and SPI.init() fixes.

alif
🛡

ESP32 USB CDC stability

TinyUSB ZLP fix that affected REPL reliability, plus a fix for blank USB HID reports on PSRAM boards. network.PPP thread-safety fixes.

esp32

New Boards

14 new board definitions across 3 ports.

By the Numbers

v1.27 in numbers. esp32 grew most, driven by ESP-IDF v5.5.1 and the new RMT API.

0
Contributors
0
Timezones
0
New Boards

Code size delta vs v1.26 (.text section, bytes)

esp32
+2.12% — IDF 5.5.1 + new RMT API
+36210 B
rp2 (PICO)
+1.12% — hashlib.md5, TinyUSB update
+3836 B
unix x64
+0.31% — standard bare-metal REPL
+2608 B
rp2 (PICO_W)
+0.11% — TinyUSB update
+1020 B
minimal x86
+0.47% — sys module enabled
+867 B
samd
+0.22% — TinyUSB update
+596 B
esp8266
+0.07% — hard IRQ timer callbacks
+472 B
mimxrt
+0.08% — TinyUSB, re start/end
+280 B
nrf
+0.07% — SPI baudrate print, UART timeouts
+124 B
cc3200
+0.06% — leading-zero formatting, re start/end
+112 B
renesas-ra
+0.02% — leading-zero formatting
+104 B
stm32
-0.02% — soft IRQ refactor offset gains
-68 B
bare-arm
-0.32% — mul-overflow intrinsic
-180 B
Alessandro Gatti, Alex Tran, Andrew Leech, Angus Gratton, Anson Mansfield, Ayush Singh, Chris Liechti, Chris Mason, Chris Webb, Christian Clauss, Craftzman7, Damien George, Daniël van de Giessen, David Lechner, David Schneider, Dryw Wade, Elvis Pfutzenreuter, ennyKey, Florent, garywill, iabdalkader, Ihor Nehrutsa, Jared Hancock, Jeff Epler, Jimisola Laursen, John Smith, Jos Verlinde, Josip Šimun Kuči, Kwabena W. Agyeman, Matt Trentini, Maureen Helm, Meir Armon, Mike Tolkachev, Mike Wang, Ned Konz, Patrick Van Oosterwijck, Peter Harper, Phil Howard, robert-hh, Steve Sanbeg, stijn, Thomas Watson, Tico06, Vdragon, Vincent1-python, Yanfeng Liu, Yilin Sun, yuan_mo, Yuuki NAGAO.