// the find
micropython/micropython
MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
MicroPython is a full Python 3 implementation that runs on microcontrollers with as little as 256KB flash and 16KB RAM. It's for embedded developers who want Python's expressiveness without CircuitPython's opinionated abstractions, and for anyone prototyping hardware that will eventually run C. Over a decade old and battle-tested across 20+ ports.
The tiered port support model is genuinely well-thought-out — Tier 1 ports (ESP32, RP2040, STM32) get real CI and active maintenance, so you know what you're getting. The mpy-cross cross-compiler lets you freeze bytecode into firmware, which is a meaningful win on flash-constrained devices. The VM and runtime have zero external dependencies — if you're porting to a new MCU, you're not dragging in a dependency tree. asyncio support on microcontrollers is legitimately useful for juggling I2C sensors and network IO without an RTOS.
Python 3.4 as the baseline means you're missing f-strings (technically available but incomplete), walrus operator, and newer stdlib features that CPython developers reach for without thinking. The stdlib subset is wide but thin — modules exist but large chunks are missing or behave differently, and the differences docs are dense enough that you'll hit surprises in production. Tier 2 and 3 ports vary wildly in quality; the Zephyr port in particular tends to lag when Zephyr itself ships breaking changes. Package management via mpremote/mip is functional but nowhere near pip — dependency resolution is basically nonexistent.