HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
micropython
micropython
C2014–2025
micropython / micropython

micropython

MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems

56Distinct people
93Mentions
0Explicit recommenders
22.2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 11:56:56 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year93 dated mentions

Observed mentions: 2014-01-01 21:11:51 UTC to 2025-12-09 21:25:33 UTC.

051015202014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 13 mentions; 3 submissions, 10 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 18 mentions; 3 submissions, 15 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 9 mentions; 0 submissions, 9 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 9 mentions; 3 submissions, 6 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC13310
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC817
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC18315
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC707
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC514
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC404
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC909
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC514
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC312
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC936
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC514
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC725

From the project README

An excerpt from the repository, fetched Nov 12, 2026.

Read the project’s introduction
The MicroPython project This is the MicroPython project, an implementation of Python 3.x for microcontrollers, embedded systems and other constrained platforms. You can find the official website at micropython.org. MicroPython implements the entire Python 3.4 syntax (including exceptions, with, yield from, etc., and additionally async/await keywords from Python 3.5 and some select features from later versions). The following core datatypes are provided: str(including basic Unicode support), bytes, bytearray, tuple, list, dict, set, frozenset, array.array, collections.namedtuple, classes and instances. Builtin modules include os, sys, time, re, and struct, etc. Some ports have support for _thread module (multithreading), socket and ssl for networking, and asyncio. Note that only a subset of Python 3 functionality is implemented for the data types and modules. MicroPython can execute scripts in textual source form (.py files) or from precompiled bytecode (.mpy files), in both cases either from an on-device filesystem or "frozen" into the MicroPython executable. MicroPython also provides a set of MicroPython-specific modules to access hardware-specific functionality and peripherals such as GPIO, Timers, ADC, DAC, PWM, SPI, I2C, CAN, Bluetooth, and USB. Getting started See the online documentation for the API reference and information about using MicroPython and information about how it is implemented. We use GitHub Discussions as our forum, and Discord for chat. These are great places to ask questions and advice from the community or to discuss your MicroPython-based projects. For bugs and feature requests, please raise an issue and follow the templates there. For information about the MicroPython pyboard, the officially supported board from the original Kickstarter campaign, see the schematics and pinouts and documentation. MicroPython design values "Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." ―- Antoine de Saint-Exupéry. For its design and implementation, MicroPython aims to follow a set of values. Although not a strict set of rules, these values and principles serve as a useful guide for new and seasoned contributors, as well as maintainers. MicroPython is at heart a combination of "Micro" and "Python": it's about resource constrained systems running the Python programming language. Both of these concepts balance off against each other in all parts of MicroPython's design and implementation. The key concepts that focus the development of MicroPython are: Minimalism: do lots with little. Efficiency: engineering, build, execution, storage, power consumption. Consistency: the whole system feels like it was designed at once. When using MicroPython, the Python language is used as the human interface to a system, giving fine control over the entities attached to that system. In a hardware setting, MicroPython aims to give the user a bare-metal feeling: one should feel like they have complete control over the system, with very little between the programmer and the physical world. MicroPython recognises that systems can be very complex. The existing Python libraries in combination with the MicroPython-specific libraries provide a user-friendly way to harness the complexity of a system. Python language compatibility is very important to MicroPython, and at first glance MicroPython should look just like regular Python. In the first instance, most Python scripts should run unchanged on MicroPython, even on devices with very tight resources. Beyond that, there are ways to extend MicroPython if needed to better match Python. The provided built-in modules are an efficient subset of the corresponding Python ones, without duplication of functionality, and allow extension in Python if needed. Contributing MicroPython is an open-source project and welcomes contributions. To be productive, please be sure to follow the Contributors' Guidelines and the Code Conventions. Note that MicroPython is licenced under the MIT license, and all contributions should follow this license. About this repository This repository contains the following components: py/ -- the core Python implementation, including compiler, runtime, and core library. mpy-cross/ -- the MicroPython cross-compiler which is used to turn scripts into precompiled bytecode. ports/ -- platform-specific code for the various ports and architectures that MicroPython runs on. lib/ -- submodules for external dependencies. tests/ -- test framework and test scripts. docs/ -- user documentation in Sphinx reStructuredText format. This is used to generate the online documentation. extmod/ -- additional (non-core) modules implemented in C. tools/ -- various tools, including the pyboard.py module. examples/ -- a few example Python scripts. "make" is used to build the components, or "gmake" on BSD-based systems. You will also need bash, gcc, and Python 3.3+ available as the command python3. Some ports (rp2 and esp32) additionally use CMake. Supported platforms & architectures MicroPython runs on a wide range of microcontrollers, as well as on Unix-like (including Linux, BSD, macOS, WSL) and Windows systems. Microcontroller targets can be as small as 256kiB flash + 16kiB RAM, although devices with at least 512kiB flash + 128kiB RAM allow a much more full-featured experience. The Unix and Windows ports allow both development and testing of MicroPython itself, as well as providing lightweight alternative to CPython on these platforms (in particular on embedded Linux systems). Over twenty different MicroPython ports are provided in this repository, split across three MicroPython Support Tiers. Tier 1 Ports 👑 Ports in Tier 1 are mature and have the most active development, support and testing: Port Target Quick Reference esp32* Espressif ESP32 SoCs (ESP32, ESP32S2, ESP32S3, ESP32C3, ESP32C6) here mimxrt NXP m.iMX RT here rp2 Raspberry Pi RP2040 and RP2350 here samd Microchip (for
Read the full README on GitHub

What Hacker News says

93 sources
it's not an embeddable runtime like Lua While it's true you can't have multiple MicroPython interpreters running concurrently (or at least not easily; it's not that the design makes this impossible, it's just that all in all MicroPython is fairly young and development focus has been put elsewhere), it is possible to embed MicroPython. Not completely out of the box, needs some glue code etc. See for example https://github.com/micropython/micropython/tree/master/ports....
In Lua beats MicroPython for embedded devs
Yes, although MicroPython is focused on running on microcontrollers it can be useful if you want to reduce memory consumption, flash space and even startup time on servers. The challenge is that MicroPython has many fewer standard libraries: https://github.com/micropython/micropython/wiki/Standard-Lib... And so many Python libraries targeting CPython won't work out-of-the box and you'll need to modify them or use alternatives that do work on the MicroPython subset.
In MicroPython v1.25.0
I find it interesting that MicroPython's `re` module[0] is implemented with a backtracking regular expression engine from re1.5[1], instead of one of the linear-time engines from the same library. (Russ Cox covers the various engines in the excellent blog series[2] which re1 is a companion to.) I figure the choice was made due to binary size or memory constraints, though they're all quite small. [0]: https://github.com/micropython/micropython/tree/master/lib/r... [1]: https://github.com/pfalcon/re1.5/tree/v0.8.2 [2]: https://swtch.com/~rsc/regexp/regexp2.html
In MicroPython v1.25.0
MicroPython supports[1] PIC16 and SAMD21/SAMD51, STM32, ESP8266/ESP32 and more, but it also supports Zephyr as a target, and with it the platforms Zephyr supports[2]. So yeah not everything under the sun, but certainly not what I'd consider a "very small" number of MCUs. Of course, support level varies among the platforms, but you're not going to be doing too fancy things in MicroPython I imagine. [1]: https://github.com/micropython/micropython?tab=readme-ov-fil... [2]: https://docs.zephyrproject.org/latest/boards/index.html
In Linux 6.12 Features Super Real-Time, Sched_ext, Intel Xe2 and Pi 5
The `match` statement is the most obvious - its motivation [0] is "pattern matching syntax is found in many languages" and "[it will] enable Python users to write cleaner, more readable code for [`if isinstance`]". But `if isinstance` is bad Python! [1] `match` also breaks fundamental Python principles [2] and interacts badly with the language's lack of block scope: >>> a, b = 1, 2 >>> match a: ... case b: pass ... >>> a, b (1, 1) Not to mention that it also required large changes to the CPython implementation, including an entirely new parser(!) - which means other implementations may never support it [3]. Clearly `match` doesn't fill a gap in a coherent design for Python. It seems to have been added due to a combination of FOMO and/or resume-driven development. Another example is async-await - while the conc
Read the rest
ept is fine (although I think stackful coroutines are a better fit for a high-level language), the syntax is just copy-pasted from other languages [4]. There seems to have been little thought as to why C# etc chose that syntax (to allow `async` and `await` to be contextual keywords), nor how `async def` contradicts existing Python syntax for generators. [0] https://peps.python.org/pep-0635/#motivation [1] http://canonical.org/%7Ekragen/isinstance/ [2] https://x.com/brandon_rhodes/status/1360226108399099909 [3] https://github.com/micropython/micropython/issues/8507 [4] https://peps.python.org/pep-0492/#why-async-and-await-keywor...
In Russ Cox is stepping down as the Go tech lead
Gah, I just ordered one on impulse [1]. I've wanted to build out a WiFi PDA for quite some time now and I like this hardware. I'm quite liking the idea of running tulip MicroPython [2] on it, or going back to pure MicroPython [3] and writing some drivers. Apparently something like ampy can be used to upload/download Python files [4]. Threads could be quite exciting for running multiple programs at once [5], although I have no idea what it means for two programs to fight over GPIO! It does seem as though MicroPython can only utilise a single core [6]. [1] https://www.lilygo.cc/products/t-deck?variant=43087936487605 [2] https://github.com/bwhitman/tulipcc/tree/main/tulip/tdeck [3] https://docs.micropython.org/en/latest/esp32/tutorial/intro.... [4] https://www.digikey.co.uk/en/maker/projects/micropython-basi... [5] https://docs.micropython.o
Read the rest
In Lilygo T-Deck: 2.8-inch IPS LCD display, mini keyboard, and ESP32 processor
> probably impossible https://github.com/raspberrypi/pico-sdk/ links to a PDF about connecting to the interwebs with a pi pico: "Connecting to the Internet with Raspberry Pi Pico W" https://rptl.io/picow-connect micropython/micropython//ports/rp2/boards/RPI_PICO_W: https://github.com/micropython/micropython/tree/master/ports... micropython/micropython//lib: https://github.com/micropython/micropython/blob/master/lib micropython/micropython//examples/network/http_server_simplistic.py: https://github.com/micropython/micropython/blob/master/examp... micropython/micropython//examples/network/http_server_ssl.py: https://github.com/micropython/micropython/blob/master/examp... raspberrypi/pico-sdk//lib: btstack, cyw43-driver, lwip, mbedtls, tinyusb https://github.com/raspberrypi/pico-sdk/tree/master/lib raspberrypi/pico-examples//pico_w/wif
Read the rest
i/access_point/picow_access_point.c: https://github.com/raspberrypi/pico-examples/blob/master/pic... There's an iperf opkg pkg, or is it just netperf (which works with the flent CLI and GUI)? raspberrypi/pico-examples//pico_w/wifi/iperf/picow_iperf.c: https://github.com/raspberrypi/pico-examples/blob/master/pic... raspberrypi/pico-examples//pico_w/wifi/freertos/iperf/picow_iperf.c: https://github.com/raspberrypi/pico-examples/blob/master/pic... FreeRTOS > Process management: https://en.wikipedia.org/wiki/FreeRTOS#Process_managememt elf2uf2: https://github.com/raspberrypi/pico-sdk/tree/master/tools/el... adafruit/circuitpython//tests/micropython: https://github.com/adafruit/circuitpython/tree/main/tests/mi... adafruit/circuitpython//tools: https://github.com/adafruit/circuitpython/tree/main/tools adafruit/circuitpython//tools/cortex-m-fault-gdb.py: https://github.com/adafruit/circuitpython/blob/main/tools/co... RP2040 > Features: 2x ARM Cortex-M0 https://en.wikipedia.org/wiki/RP2040#Features
In Show HN: MicroLua – Lua for the RP2040 Microcontroller

Showing the 15 most recent of 93 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.