# micropython v1.27.0 — ESP32C5, ESP32P4 & STM32U5 support, enhanced test suite, port Tier levels - Product: micropython (https://whatsnew.fyi/product/micropython) - Vendor: micropython - Date: 2025-12-09 - Version: v1.27.0 - Original notes: https://github.com/micropython/micropython/releases/tag/v1.27.0 - Permalink: https://whatsnew.fyi/product/micropython/releases/v1.27.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Support for ESP32-C5 and ESP32-P4 microcontrollers with board profiles - **added** — Support for STM32U5xx series microcontrollers with board profile for NUCLEO-U5A5ZJ-Q - **added** — Board-specific target_wiring.py configuration for test-related hardware connections - **added** — Support for relative imports in custom __import__ callback - **added** — bool and len unary operation support for dict views - **added** — Support for start and end position in re match and search methods - **added** — IPv6 support in asyncio.start_server() - **added** — Soft and hard IRQ callbacks for machine.Timer objects on most ports except esp32 - **added** — VIRT_RV64 board definition for 64-bit RISC-V in qemu port - **added** — MPS2_AN500 and MPS3_AN547 board definitions in qemu port - **added** — machine.RTC.datetime() method and time.time_ns() to alif port - **added** — esp32.wake_on_gpio() function to support waking up the SoC via GPIO pins - **added** — Hardware I2C implementation for STM32G4xx - **added** — I2CTarget support for STM32L4xx - **added** — Optional TinyUSB support as USB stack for stm32 port - **added** — DAC support for STM32G0xx - **added** — Support for STM32F469xx microcontrollers - **added** — PIO pin wrapping support and RP2350 alternate functions for rp2 port - **changed** — sys module is now enabled at all feature levels by default - **changed** — esp32 port updated to use ESP-IDF v5.5.1 This release of MicroPython adds support for ESP32-C5 and ESP32-P4 microcontrollers. The ESP32-P4 can work either standalone as a general purpose processor, or with an external wireless co-processor, currently either an ESP32-C5 or ESP32-C6. Board profiles are provided for all three of these configurations, as well as for the new ESP32-C5. Support for the low-power and high performing STM32U5xx series is also added in this release, supporting USB, ADC, DAC, UART, I2C, SPI and RTC, with a board profile for the NUCLEO-U5A5ZJ-Q. Rigorous and ongoing hardware-based testing is an important part of MicroPython, and with the increasing number of supported hardware platforms -- along with a growing test suite -- it's important to make the tests run as smoothly and as automated as possible. This release makes progress here by making many improvements to the test suite, such as: - auto-detecting if the target has unicode support - automatically including float tests when possible - always including stress tests - improving the skipping of tests that use slice and the micropython module - supporting different expected outputs when running native tests - making tests behave in low-memory condition - tweaking some tests so they can run on minimal builds - making all test runners use the `-t` argument to select the target - converting some tests to use `unittest` - converting some port-specific tests to cross-port tests - adding a test for serial (REPL) reliability and throughput - updating to use CPython 3.8.2 as the reference Python version - adding more internal benchmark tests. In order to support testing on more hardware targets in a scalable way, this release introduces board-specific `target_wiring.py` configuration. This feature allows defining in one location (one file) all the needed test-related hardware connections for a given port or board, definitions which are then imported and used by the tests that need them. Along with providing default definitions, this scheme allows custom hardware to easily specify its own wiring set up for the tests. To start with, all of the `machine.UART` tests have been converted to use `target_wiring.py`. With all the improvements to the test suite, the MicroPython continuous integration (CI) tests now run on the unix minimal variant, and as many tests as possible now run on the zephyr port CI. MicroPython now defines port Tier levels, which categorizes the 20 existing ports into four groups according to their stage of development. This aims to set expectations for the level of support and development each port receives. And also lower the bar of entry for new ports so they can enter at a low Tier and gradually rise up to Tier 1. See the top-level `README.md` and the docs at https://docs.micropython.org/en/latest/develop/support_tiers.html This release also sees MicroPython drop support for Python 2.7 in its build scripts and tools. Python 2.7 has been EOL since January 2020 and all modern operating systems support Python 3. There have been quite a few other improvements, optimizations and bug fixes to the core runtime, including: better 32-bit RISC-V code generation for the native emitter and Zba opcode support, support for relative imports in custom `__import__` callback, `bool` and `len` unary operation support for `dict` views, support for start and end position in `re` match and search methods and IPv6 support in `asyncio.start_server()`. Most ports (except esp32) now support soft and hard IRQ callbacks for `machine.Timer` objects. And the `sys` module is now enabled at all feature levels by default. Some third party libraries have been updated in this release: LittleFS is now at v2.11.2, TinyUSB is at 0.19.0-24, and stm32lib has N6 at 1.2.0, WB at 1.23.0 and newly added U5 support. The mimxrt's nxp_driver submodule has been restructured to match the official mcux-sdk. The alif port sees the addition of `machine.RTC.datetime()` to get and set _[Truncated at 4000 characters — full notes: https://github.com/micropython/micropython/releases/tag/v1.27.0]_