Skip to content

Merge MicroPython v1.25.0 #10437

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 548 commits into from
Jun 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
548 commits
Select commit Hold shift + click to select a range
842e361
renesas-ra/Makefile: Remove id_code section from binary file generation.
iabdalkader Dec 11, 2024
aef6705
extmod/lwip-include: Increase number of lwIP timers when mDNS enabled.
tpwrules Jan 22, 2025
321b30c
extmod/modtls_mbedtls: Wire in support for DTLS.
keenanjohnson Feb 13, 2025
8987b39
tests/multi_net: Add test for DTLS server and client.
dpgeorge Feb 13, 2025
71df9d0
rp2: Fix build failure if threads are disabled.
projectgus Feb 11, 2025
516709b
py/mkrules.cmake: Support passing CFLAGS_EXTRA in environment variable.
projectgus Feb 11, 2025
1034b17
tools/ci.sh: Build the W5100S_EVB_PICO board with no threads.
projectgus Feb 11, 2025
6425c9e
esp32: Remove unneeded "memory.h" header file.
agatti Feb 13, 2025
1e3cce1
mimxrt/boards/ADAFRUIT_METRO_M7: Reduce flash freq to 100MHz.
robert-hh Feb 20, 2025
4364d94
mimxrt/hal/flexspi_nor_flash: Fix typo in comment about frequency.
robert-hh Feb 20, 2025
2992e34
tools/mpremote: Add support for relative urls in package.json files.
glenn20 Sep 19, 2023
7e9d19e
github/workflows: Stop using ubuntu-20.04.
dpgeorge Feb 12, 2025
8b1ed44
github/workflows: Include the Python version in the ESP-IDF cache key.
projectgus Feb 12, 2025
5e206fd
all: Upgrade codespell to v2.4.1.
cclauss Feb 18, 2025
3f0dd13
docs: Fix double 'the' in documentation.
rxwb Feb 24, 2025
dc2fcfc
all: Upgrade to ruff v0.9.6.
cclauss Feb 18, 2025
8ce7a58
tests: Four typos in tests directory.
cclauss Feb 25, 2025
731f7ad
stm32/sdcard: Fix unchecked uint32_t overflow in SD card driver.
projectgus Feb 18, 2025
78728dc
stm32/sdcard: Drop the pyb.SDCard timeout from 60 to 30 seconds.
projectgus Feb 18, 2025
e3101ce
qemu/boards/SABRELITE: Increase MicroPython heap to 160k.
dpgeorge Feb 25, 2025
14ba32b
extmod/vfs_rom: Add bounds checking for all filesystem accesses.
dpgeorge Feb 24, 2025
dc2c33b
py/emitinlinerv32: Fix compilation with ESP-IDF v5.2 and later.
agatti Jan 4, 2025
8633abc
py/emitinlinerv32: Reduce the footprint of compiled code.
agatti Jan 4, 2025
50fab08
py/emitinlinextensa: Simplify register name lookup.
agatti Jan 28, 2025
5fdd249
py/parsenum: Reduce code footprint of mp_parse_num_float.
yoctopuce Jan 30, 2025
86526e9
tools/mpremote: Optimise readline support in mount.
pi-anl Feb 26, 2025
71c7c03
tools/mpremote/tests: Add test for RemoteFile.readline.
dpgeorge Feb 26, 2025
13b0237
lib/pico-sdk: Update to version 2.1.1.
dpgeorge Feb 19, 2025
9939b6c
rp2/boards/MACHDYNE_WERKZEUG: Add support for Machdyne Werkzeug.
machdyne Dec 20, 2024
cad62c2
rp2/boards/SPARKFUN_XRP_CONTROLLER_BETA: Add SparkFun XRP Controller.
sfe-SparkFro Feb 18, 2025
bb4ec88
rp2/machine_i2c: Make I2C bus ID arg optional with default.
malcolm-sparkfun Jan 24, 2025
c143eb5
esp32/machine_i2c: Make I2C bus ID arg optional with default.
malcolm-sparkfun Jan 24, 2025
ec876a5
esp32/README: Make some minor improvements to the README.
garywill Dec 22, 2024
cbd21b3
esp32/esp32_common.cmake: Allow overriding linker.lf.
karlp Jan 27, 2025
61cb293
esp32/machine_pin: Implement Pin.toggle() method.
robert-hh Jan 17, 2025
e009ab0
esp8266/machine_pin: Implement Pin.toggle() method.
robert-hh Jan 19, 2025
22310ae
cc3200/mods/pybpin: Implement Pin.toggle() method.
robert-hh Jan 19, 2025
48925fd
docs/library/machine.Pin: Show availability of low, high and toggle.
robert-hh Jan 22, 2025
69ffd2a
renesas-ra/modrenesas: Expose the Flash block device to Python code.
robert-hh Dec 8, 2024
eb45d97
py/objstr: Support tuples and start/end args in startswith and endswith.
glenn20 Feb 25, 2025
213f1c1
samd/machine_i2c: Support default instance and SCL/SDA pin values.
robert-hh Feb 7, 2025
62ed69b
samd/machine_spi: Support default instance and SCK/MOSI/MISO pin values.
robert-hh Feb 7, 2025
daef1c1
samd/machine_uart: Support default instance and TX/RX pin values.
robert-hh Feb 7, 2025
4cbaab1
samd/boards: Add missing TX/RX, SCL/SDA and SCK/MOSI/MISO pin names.
robert-hh Feb 8, 2025
b9b4f1b
samd/boards: Provide default IDs for UART, I2C and SPI.
robert-hh Feb 11, 2025
016ae19
docs/samd: Update the SAMD documentation describing default IDs/pins.
robert-hh Feb 9, 2025
5f01232
tests/run-tests: Remove any 'expected' file from a unittest run.
projectgus Feb 25, 2025
b4cf82b
test/run-tests: Print a note if it looks like unittest.main() missing.
projectgus Feb 26, 2025
f5b4545
py/modsys: Add sys.implementation._build entry.
dpgeorge Mar 2, 2025
859b6ef
zephyr/machine_wdt: Add watchdog timer implementation.
danicampora Feb 21, 2025
fc71f78
py/makeqstrdata.py: Implement MicroPython compatibility.
vshymanskyy Oct 18, 2024
e1b2f2e
tools/mpy-tool.py: Add support for self-hosting of mpy-tool.
vshymanskyy Oct 18, 2024
6fba1e4
tools/mpy-tool.py: Support calling main() from an external script.
vshymanskyy Oct 18, 2024
4d034f8
esp8266/network_wlan: Allow enumerating connected stations in AP mode.
agatti Feb 14, 2025
6be7570
nrf/modules: Fix access of read-only buffer in Flash.writeblocks.
dpgeorge Mar 3, 2025
9dd4cef
py/objarray: Add MP_DEFINE_MEMORYVIEW_OBJ convenience macro.
dpgeorge Jan 3, 2025
89e6c58
extmod/modvfs: Add vfs.rom_ioctl function and its ioctl constants.
dpgeorge Nov 15, 2024
d4b8ca2
extmod/vfs: Add mp_vfs_mount_romfs_protected() helper.
dpgeorge Feb 20, 2025
840b641
py/runtime: Automatically mount ROMFS as part of mp_init.
dpgeorge Feb 21, 2025
0c98c60
tools/mpremote: Add romfs query, build and deploy commands.
dpgeorge Mar 3, 2022
bea7645
stm32: Implement vfs.rom_ioctl with support for internal/external flash.
dpgeorge Mar 3, 2022
45c36f8
stm32/boards: Enable ROMFS partitions on PYBD_SFx boards.
dpgeorge Feb 20, 2025
50a7362
rp2: Implement vfs.rom_ioctl with support for external flash.
dpgeorge Mar 3, 2022
0255cb7
esp32: Implement vfs.rom_ioctl with support for external flash.
dpgeorge Mar 3, 2022
75ff8e5
esp8266: Implement vfs.rom_ioctl with support for external flash.
dpgeorge Nov 15, 2024
6bec36a
esp8266/boards: Add FLASH_2M_ROMFS variant with 320k ROM partition.
dpgeorge Mar 1, 2025
be0fce9
unix/main: Add coverage test for mounting ROMFS filesystem at startup.
dpgeorge Mar 4, 2025
3823aeb
zephyr/machine_timer: Add machine.Timer class implementation.
danicampora Feb 21, 2025
0ec496a
lib/cyw43-driver: Update driver to latest version v1.1.0.
dpgeorge Mar 12, 2025
dafff1f
extmod/network_cyw43: Add WPA3 security constants.
dpgeorge Mar 12, 2025
4b1c666
esp32: Merge the per-SoC "main" components back together.
projectgus Mar 4, 2025
4d65b4e
esp32: Remove the ESP32 ringbuffer linker workaround.
projectgus Mar 4, 2025
79fb5aa
esp32/machine_sdcard: Add SDCard pin assignments for ESP32-S3 support.
projectgus Feb 5, 2025
c85eefc
esp32/machine_sdcard: Add SDCard SPI mode support for ESP32-S2,C3,C6.
projectgus Feb 5, 2025
464121f
esp32/boards: Enable machine.SDCard on all boards.
projectgus Feb 5, 2025
bfd974d
esp32/machine_pwm: Correctly stop LEDC timer.
garywill Dec 6, 2024
4d2d60d
esp32/machine_pin: Fix logic clearing USB_SERIAL_JTAG_USB_PAD_ENABLE.
garywill Nov 14, 2024
1d5dc72
esp32/machine_pin: Fix availability of USB Serial/JTAG pins on ESP32-C6.
projectgus Nov 15, 2024
e75ffc3
rp2/modrp2: Fix rp2.bootsel_button() function for RP2350.
Gadgetoid Mar 11, 2025
9a070fe
rp2/boards/SPARKFUN_IOTREDBOARD_RP2350: Add support for IoT RedBoard.
SFE-Brudnerd Mar 4, 2025
8dcf929
rp2/boards/WEACTSTUDIO_RP2350B_CORE: Add WeAct Studio RP2350B Core.
mattytrentini Mar 8, 2025
ac30dcb
rp2/boards/SPARKFUN_XRP_CONTROLLER: Add SparkFun XRP Controller.
sfe-SparkFro Mar 10, 2025
2264340
rp2/boards/SPARKFUN_XRP_CONTROLLER_BETA: Fix XRP Controller Beta URL.
sfe-SparkFro Mar 10, 2025
416c6cf
rp2/boards/SEEED_XIAO_RP2350: Add new Seeed XIAO board definition.
Lesords Nov 26, 2024
bf9cdd2
stm32: Rename ROMFS partition config variables to start at index 0.
dpgeorge Mar 11, 2025
d5aeca2
esp8266: Rename ROMFS partition config variables to include "part0".
dpgeorge Mar 11, 2025
043dc79
stm32/boards/ARDUINO_GIGA: Enable 4MiB ROMFS partition in ext flash.
iabdalkader Jan 14, 2025
edc927a
stm32/boards/ARDUINO_NICLA_VISION: Enable 4MiB ROMFS part in ext flash.
iabdalkader Jan 14, 2025
96ce08e
stm32/boards/ARDUINO_PORTENTA_H7: Enable 4MiB ROMFS part in ext flash.
iabdalkader Jan 14, 2025
9db2398
stm32/can: Refactor can.h API to not depend on pyboard can types.
projectgus Oct 9, 2024
dbda43b
tests/multi_pyb_can: Add multitests for pyboard CAN controller.
projectgus May 23, 2024
f187c77
shared/runtime/pyexec: Add helper function to execute a vstr.
iabdalkader Feb 27, 2025
5197611
tools/mpy_ld.py: Allow linking static libraries.
vshymanskyy Sep 12, 2024
1a7cbac
tools/ci.sh: Build Xtensa natmods as part of the CI process.
agatti Mar 6, 2025
31a008c
tools/ci.sh: Do not assume the Python interpreter is called "python".
agatti Mar 6, 2025
f1018ee
mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT: Add new Makerdiary board.
robert-hh Mar 3, 2025
58f1ade
mimxrt/machine_adc: Add ADC.read_uv() method.
robert-hh Dec 6, 2024
d8edae0
mimxrt/mpconfigport: Enable support for exFAT.
robert-hh Jan 17, 2025
2a5b97b
mimxrt/mpconfigport: Enable PPP for boards with lwIP.
robert-hh Feb 15, 2025
2d20dbc
mimxrt/machine_uart: Remove duplicate init and make IRQ optional.
robert-hh Feb 22, 2025
1398e7f
mimxrt/hal/qspi_nor_flash_config: Use a safe common CS timing.
robert-hh Feb 23, 2025
b85ad4b
mimxrt/machine_uart: Fix rx/tx buffer allocation bug.
robert-hh Mar 9, 2025
1e7328c
mimxrt/machine_i2c: Support the timeout keyword argument.
robert-hh Mar 13, 2025
cdcc70d
mimxrt: Enable default devices for I2C, SPI and UART.
robert-hh Mar 13, 2025
274c8c4
mimxrt/boards: Update deploy instructions.
robert-hh Mar 23, 2025
c61e859
drivers: Add MP_QSPI_IOCTL_MEMORY_MODIFIED to indicate flash changed.
dpgeorge Mar 19, 2025
396ab26
stm32/qspi: Implement MP_QSPI_IOCTL_MEMORY_MODIFIED ioctl.
dpgeorge Mar 19, 2025
1e92bdd
rp2/boards: Fix SparkFun vendor name.
malcolm-sparkfun Mar 17, 2025
93a8c53
rp2/boards/SPARKFUN_IOTNODE_LORAWAN_RP2350: Add SD card support.
malcolm-sparkfun Mar 17, 2025
39452db
docs/rp2: Add network information to the rp2 quickref.
mattytrentini Dec 22, 2024
f315a37
rp2/machine_i2c: Require an I2C bus ID when no default is available.
Gadgetoid Mar 13, 2025
a861223
rp2/machine_spi: Make SPI ID optional.
Gadgetoid Mar 12, 2025
dd7a950
rp2/machine_spi: Allow MISO to be unspecified.
Gadgetoid Mar 12, 2025
6fa498c
rp2/mpnetworkport: Fix lost CYW43 WiFi events when using both cores.
projectgus Mar 12, 2025
23fb171
rp2/mpnetworkport: Refactor out cyw43_has_pending global variable.
projectgus Mar 18, 2025
35d4d2d
rp2/pendsv: Account for PendSV running on both cores, and without CYW43.
projectgus Mar 12, 2025
2b2a431
rp2/machine_uart: Fix unintended UART buffer allocation on init().
robert-hh Mar 9, 2025
6db7b47
samd/machine_uart: Fix unintended UART buffer allocation on init().
robert-hh Mar 9, 2025
4dfee50
samd/machine_uart: Fix lock-up in loopback mode if read buffer is full.
robert-hh Mar 9, 2025
56e90cb
py/mpconfig: Enable 2-argument built-in next() at basic feature level.
dpgeorge Mar 11, 2025
994751c
tests/cpydiff: Remove builtin_next_arg2.py difference.
dpgeorge Mar 17, 2025
fdc0c6f
py/dynruntime: Make malloc functions raise MemoryError on failure.
dpgeorge Mar 17, 2025
fa42487
extmod/moddeflate: Keep DeflateIO state consistent on window alloc fail.
dpgeorge Mar 17, 2025
458a8f2
extmod/vfs: Refactor mp_vfs_mount to enable no-args mount overload.
AJMansfield Mar 14, 2025
1487a13
extmod/vfs: Return mount table from no-args vfs.mount call.
AJMansfield Mar 14, 2025
9fcc25b
tests/extmod/vfs_mountinfo.py: Add test for no-args mount output.
AJMansfield Mar 3, 2025
c68a40a
docs/library/vfs: Document no-args mount output.
AJMansfield Mar 3, 2025
e4051a1
extmod/vfs_rom: Implement minimal VfsRom.getcwd() method.
dpgeorge Mar 11, 2025
2db0c02
tools/mpremote: Make mip install skip /rom*/lib directories.
dpgeorge Mar 11, 2025
cccac2c
rp2,esp32,extmod: Implement UPDATE_SUBMODULES in CMake.
projectgus Mar 11, 2025
50da085
rp2: Print an error message if pico-sdk submodule is missing.
projectgus Mar 11, 2025
a828b99
esp32/Makefile: Use $(Q) prefix on all commands.
dpgeorge Mar 28, 2025
5eee5a6
rp2/Makefile: Use $(Q) prefix on all commands.
dpgeorge Mar 28, 2025
f96417d
rp2/cyw43_configport: Fix cyw43 mDNS by properly starting mDNS on netif.
Mar 31, 2025
b33b9f8
stm32/main: Catch and report corrupted lfs filesystem at startup.
pi-anl Jan 23, 2024
1a47379
stm32/boards: Add F427 AF CSV file.
iabdalkader Jan 15, 2025
3b94889
stm32/stm32_it: Add handler for timer 20 interrupt.
H-Grobben Feb 5, 2025
91386b3
stm32/timer: Use APB2 to calculate timer 20 source frequency.
H-Grobben Feb 5, 2025
c18e925
stm32/timer: Add support for STM32H5 Timer 1.
mattytrentini Mar 23, 2025
ac1cbef
stm32/qspi: Add qspi_memory_map_exit and restart.
dpgeorge Mar 19, 2025
1660faa
stm32/boards/PYBD_SF2: Restart qspi memory-mapped mode during startup.
dpgeorge Mar 19, 2025
9ab6906
esp32/esp32_common.cmake: Use native gchelper for RISC-V.
agatti Mar 22, 2025
fda9bf4
esp32/esp32_common.cmake: Clean up RISC-V directives.
agatti Mar 22, 2025
6bb5866
esp32/esp32_common.cmake: Remove obsolete definition.
agatti Mar 22, 2025
3805e65
tools/mpy_ld.py: Give better error for unsupported ARM absolute relocs.
jonnor Mar 28, 2025
e34412f
tools/ci.sh: Manually install picotool for rp2 builds.
dpgeorge Apr 5, 2025
57f1e60
tests/cpydiff: Update CPy diff for assign expr in nested comprehensions.
projectgus Apr 1, 2025
e9a80fc
tests/cpydiff: Remove types_str_endswith.
projectgus Apr 1, 2025
74a5bf9
tools/gen-cpydiff.py: Fail CPython diff generation if output matches.
projectgus Apr 1, 2025
9e9be83
tools/mpremote: Allow .img for ROMFS file and validate ROMFS image.
iabdalkader Mar 29, 2025
11f057d
rp2: Add support for PSRAM with auto-detection.
Gadgetoid Aug 6, 2024
b7d5caf
rp2/mpconfigport: Configure heap for PSRAM.
Gadgetoid Aug 9, 2024
89eea0f
rp2/rp2_flash: Support flash writes from PSRAM.
MichaelBell Aug 11, 2024
91cff8e
rp2/rp2_flash: Configure optimal flash timings.
MichaelBell Mar 25, 2025
0ee160e
extmod/extmod.mk: Add cyw43_spi.c to list of sources.
dpgeorge Dec 18, 2024
a9384c7
extmod/extmod.mk: Switch from drivers/cyw43/cywbt to lib/cyw43-drivers.
dpgeorge Feb 28, 2025
7268034
top: Add "ser" to codespell exclusion list.
dpgeorge Feb 20, 2025
c5102a7
lib/alif_ensemble-cmsis-dfp: Add new submodule for Alif SDK v1.3.2.
dpgeorge Dec 11, 2023
1356860
lib/alif-security-toolkit: Add new submodule for Alif Security Toolkit.
dpgeorge Mar 11, 2025
092d855
alif/tinyusb_port: Add Alif TinyUSB DCD driver.
dpgeorge Dec 11, 2023
ebecd6d
alif/tinyusb_port: Disable USB IRQ on deinit.
iabdalkader Oct 22, 2024
b8a9cdf
alif/tinyusb_port: Implement SOF event.
dpgeorge Mar 27, 2025
ccc5935
alif: Add initial port to Alif Ensemble MCUs.
dpgeorge Dec 11, 2023
40ff0c2
alif/system_tick: Use a UTIMER for system ticks and timing.
dpgeorge Jan 10, 2024
975f84f
alif/mphalport: Enable efficient events and implement quiet timing.
dpgeorge Jan 10, 2024
ada0939
alif/system_tick: Integrate soft timer.
dpgeorge Jan 10, 2024
53b7c14
alif/modmachine: Enable machine.Timer.
dpgeorge Jan 10, 2024
4e62ade
alif/se_services: Add SE services interface.
dpgeorge Jan 26, 2024
c6cb082
alif/mpconfigport: Enable os.urandom().
dpgeorge Jan 26, 2024
64af93e
alif/mpconfigport: Enable MICROPY_PY_RANDOM_SEED_INIT_FUNC.
dpgeorge Jan 26, 2024
2a580b0
alif/modalif: Add alif.info() function.
dpgeorge Feb 2, 2024
2f85a19
alif/modmachine: Implement machine.unique_id(), fix machine.reset().
dpgeorge Feb 2, 2024
31d18c5
alif/usbd: Implement proper USB serial number.
dpgeorge Feb 2, 2024
62beb54
alif/machine_adc: Add basic ADC support.
dpgeorge Feb 13, 2024
b7df5aa
alif/mcu: Add ToC config for dual images.
iabdalkader Jul 10, 2024
8f82089
alif: Support building the port for HE or HP or both cores.
iabdalkader Jul 10, 2024
6b4d465
alif: Support running the port on the HE core.
iabdalkader Jul 17, 2024
4f6f283
alif: Implement Open-AMP port backend.
iabdalkader Jul 17, 2024
cee8e11
alif/irq: Define more IRQ priorities.
iabdalkader Jul 28, 2024
bbb8fd7
alif/system_tick: Implement optional LPTIMER support for systick.
dpgeorge Aug 14, 2024
c6ebecc
alif/system_tick: Implement optional ARM SysTick support for systick.
dpgeorge Aug 28, 2024
58d6fe2
alif/mpconfigport: Select SysTick on HE core.
dpgeorge Sep 3, 2024
4c4b484
alif/mpu: Add custom MPU_Load_Regions function.
dpgeorge Oct 10, 2024
84effb3
alif/ospi_flash: Generalise flash driver to support MX chips.
dpgeorge Oct 7, 2024
41e1688
alif/ospi_flash: Enter XIP mode when flash is idle.
dpgeorge Oct 31, 2024
3d17f63
alif/mpu: Define constants for MPU regions.
iabdalkader Nov 21, 2024
5152a1f
alif/mpmetalport: Add Open-AMP MPU region.
iabdalkader Nov 21, 2024
1585080
alif/ospi_flash: Fix XIP for 8-bit instructions (ISSI).
iabdalkader Dec 14, 2024
aec0300
alif/ospi_flash: Support flash device auto-detection in runtime.
iabdalkader Dec 16, 2024
8807f8d
alif/ospi_flash: Configure dummy cycles.
iabdalkader Dec 16, 2024
872f3d7
alif/ospi_flash: Add negative clock pin.
iabdalkader Dec 14, 2024
0709936
alif/ospi_flash: Enable pull-up IO2/WP.
iabdalkader Dec 19, 2024
df06bf9
alif/ospi_ext: Optimize XIP speed.
iabdalkader Dec 20, 2024
602bc86
alif/ospi_flash: Use OSPI in XIP mode only.
iabdalkader Jan 8, 2025
92f056d
alif/ospi_flash: Add 16-bit words swap flash setting.
iabdalkader Feb 6, 2025
ff6ed73
alif/se_services: Use EUI extension for unique id.
iabdalkader Feb 5, 2025
039df0c
alif/modmachine: Implement proper low-power modes.
iabdalkader Feb 3, 2025
82bae65
alif: Add support for pin alternate function selection.
iabdalkader Jan 9, 2025
9073270
alif/machine_i2c: Add machine.I2C peripheral support.
iabdalkader Jan 2, 2025
280e6e2
alif/machine_spi: Add machine.SPI peripheral support.
iabdalkader Jan 19, 2025
ec92bcf
alif/machine_rtc: Add basic machine.RTC support.
iabdalkader Jan 31, 2025
facd0b7
alif/ospi_flash: Use mp_hal_pin_config to configure OSPI pins.
iabdalkader Feb 7, 2025
b9e5f1f
alif/se_services: Add a secondary MHU channel.
iabdalkader Feb 15, 2025
182b5f3
alif/mpmetalport: Use MHU to notify remote cores.
iabdalkader Feb 15, 2025
68b1dae
alif: Link with libnosys.
iabdalkader Feb 19, 2025
7e32c23
alif/mpmetalport: Only notify after metal subsystem is init'd.
dpgeorge Mar 6, 2025
ca3d50a
alif/mpuart: Use mp_hal_pin_config for TX/RX configuration.
dpgeorge Mar 6, 2025
af574a8
alif/alif_flash: Distinguish between total flash size and FS size.
dpgeorge Dec 23, 2024
d895a62
alif/alif_flash: Make flash respond to the buffer protocol.
dpgeorge Dec 23, 2024
f83f6e7
alif/mpu: Add function to set read-only bit on MRAM MPU region.
dpgeorge Mar 6, 2025
8297c95
alif/vfs_rom_ioctl: Add vfs_rom_ioctl with support for OSPI and MRAM.
dpgeorge Mar 6, 2025
d1b12cb
alif/modules: Make HE core set /rom as current dir.
dpgeorge Mar 8, 2025
4f2a8bd
alif/mphalport: Add mp_hal_pin_config_irq_falling helper.
dpgeorge Oct 23, 2024
411146b
alif/mpuart: Generalise UART driver to suppot all UART instances.
dpgeorge Oct 14, 2024
526c7ea
alif: Integrate lwIP and mbedTLS.
dpgeorge Oct 14, 2024
d6e3342
alif: Integrate cyw43 WLAN driver.
dpgeorge Mar 10, 2025
30dfbe5
alif: Integrate cyw43 Bluetooth with NimBLE.
dpgeorge Mar 10, 2025
da46b4d
alif/mcu: Remove json config files.
iabdalkader Mar 13, 2025
19a4689
alif/mcu: Pre-process Alif ToC config file.
iabdalkader Mar 13, 2025
293e8db
alif/mpuart: Enhance UART to support bits/parity/stop and more IRQs.
dpgeorge Mar 17, 2025
29a873e
alif/machine_uart: Add machine.UART peripheral support.
dpgeorge Mar 14, 2025
737acef
alif: Support more fine-grained pin alternate function selection.
dpgeorge Mar 20, 2025
3564ce5
alif/ospi_flash: Don't invalidate cache after erasing/writing.
dpgeorge Mar 31, 2025
df5e4ce
alif/ospi_flash_settings: Use 8-bit DFS for XIP.
dpgeorge Mar 31, 2025
c395f5e
alif/ospi_flash: Restore XIP settings after erase and write.
dpgeorge Apr 1, 2025
b79b64a
alif/mpu: Add MPU region for OSPI1 XIP memory range.
dpgeorge Mar 31, 2025
7c216d1
alif/boards/ALIF_ENSEMBLE: Add Alif Ensemble board config.
iabdalkader Dec 17, 2023
704d2f2
alif/boards/OPENMV_AE3: Add OpenMV AE3 board definition.
dpgeorge Sep 2, 2024
547207d
github/workflows: Add Alif port to CI.
iabdalkader Feb 20, 2025
2ad5925
tests/ports/alif_hardware: Add flash testing script.
dpgeorge Oct 21, 2024
037f2da
tests: Update UART and SPI tests to work on Alif boards.
dpgeorge Mar 17, 2025
1aa9b3d
tools/mpremote: Add recursive remove functionality to filesystem cmds.
Josverl Apr 7, 2025
72d4c40
tools/mpremote/tests: Add tests for mpremote rm -r.
Josverl Apr 7, 2025
ef8282c
docs/reference/mpremote: Update docs for mpremote rm -r.
Josverl Apr 7, 2025
e7edf07
drivers/memory/spiflash: Allow a board/port to configure chip params.
dpgeorge Apr 9, 2025
b078569
drivers/memory/spiflash: Allow a board/port to detect SPI flash.
dpgeorge Apr 2, 2025
2c0240e
drivers/bus/qspi: Make num_dummy configurable for quad reads.
dpgeorge Apr 2, 2025
1d83c81
stm32/vfs_rom_ioctl: Allow ROMFS configuration to be dynamic.
dpgeorge Apr 1, 2025
aa09456
stm32/qspi: Allow SPI flash size to be decided at runtime.
dpgeorge Mar 13, 2025
de08190
stm32/mboot: Allow USB strings to be dynamic.
dpgeorge Apr 2, 2025
ed4833d
stm32/modmachine: Add SPI flash size to machine.info dump.
dpgeorge Apr 2, 2025
db85427
stm32/boards/PYBD_SF6: Support boards with larger SPI flash.
dpgeorge Apr 2, 2025
0b3ad98
mimxrt/Makefile: Fix dependencies for generation of flexram_config.s.
dpgeorge Apr 10, 2025
9ee2ef5
py/emitinlinerv32: Move include of asmrv32.h to within feature guard.
dpgeorge Apr 10, 2025
9f30627
lib/micropython-lib: Update submodule to latest.
dpgeorge Apr 14, 2025
f498a16
all: Bump version to 1.25.0.
dpgeorge Apr 15, 2025
5fb3f96
MicroPython v1.25.0 merge
dhalbert Jun 19, 2025
1263d11
Merge remote-tracking branch 'adafruit/main' into merge-micropython-v…
dhalbert Jun 20, 2025
b874e04
micropython v1.25.0 merge: fix tests, fix typos, fix includes
dhalbert Jun 21, 2025
2d9f304
shrink wiznet boards
dhalbert Jun 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .codespell/ignore-words.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@ ftbfs
straightaway
ftbs
ftb
curren
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2013-2024 Damien P. George
Copyright (c) 2013-2025 Damien P. George

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
26 changes: 13 additions & 13 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -271,20 +271,20 @@ check-translate:

.PHONY: stubs
stubs:
@rm -rf circuitpython-stubs
@mkdir circuitpython-stubs
@$(PYTHON) tools/extract_pyi.py shared-bindings/ $(STUBDIR)
@$(PYTHON) tools/extract_pyi.py extmod/ulab/code/ $(STUBDIR)/ulab
@for d in ports/*/bindings; do \
rm -rf circuitpython-stubs
mkdir circuitpython-stubs
$(PYTHON) tools/extract_pyi.py shared-bindings/ $(STUBDIR)
$(PYTHON) tools/extract_pyi.py extmod/ulab/code/ $(STUBDIR)/ulab
for d in ports/*/bindings; do \
$(PYTHON) tools/extract_pyi.py "$$d" $(STUBDIR); done
@sed -e "s,__version__,`python -msetuptools_scm`," < setup.py-stubs > circuitpython-stubs/setup.py
@cp README.rst-stubs circuitpython-stubs/README.rst
@cp MANIFEST.in-stubs circuitpython-stubs/MANIFEST.in
@$(PYTHON) tools/board_stubs/build_board_specific_stubs/board_stub_builder.py
@cp -r tools/board_stubs/circuitpython_setboard circuitpython-stubs/circuitpython_setboard
@$(PYTHON) -m build circuitpython-stubs
@touch circuitpython-stubs/board/__init__.py
@touch circuitpython-stubs/board_definitions/__init__.py
sed -e "s,__version__,`python -msetuptools_scm`," < setup.py-stubs > circuitpython-stubs/setup.py
cp README.rst-stubs circuitpython-stubs/README.rst
cp MANIFEST.in-stubs circuitpython-stubs/MANIFEST.in
$(PYTHON) tools/board_stubs/build_board_specific_stubs/board_stub_builder.py
cp -r tools/board_stubs/circuitpython_setboard circuitpython-stubs/circuitpython_setboard
$(PYTHON) -m build circuitpython-stubs
touch circuitpython-stubs/board/__init__.py
touch circuitpython-stubs/board_definitions/__init__.py

.PHONY: check-stubs
check-stubs: stubs
Expand Down
4 changes: 4 additions & 0 deletions docs/library/array.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ Classes
array are given by an `iterable`. If it is not provided, an empty
array is created.

In addition to the methods below, array objects also implement the buffer
protocol. This means the contents of the entire array can be accessed as raw
bytes via a `memoryview` or other interfaces which use this protocol.

.. method:: append(val)

Append new element ``val`` to the end of array, growing it.
Expand Down
2 changes: 1 addition & 1 deletion docs/library/binascii.rst
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@ Functions

.. function:: crc32(data, value=0, /)

Compute CRC-32, the 32-bit checksum of the bytes in *data* starting with an
Compute CRC-32, the 32-bit checksum of the bytes in ``data`` starting with an
initial CRC of *value*. The default initial CRC is 0. The algorithm is
consistent with the ZIP file checksum.
2 changes: 2 additions & 0 deletions docs/library/builtins.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ Functions and types

.. class:: bytearray()

|see_cpython| `python:bytearray`.

.. class:: bytes()

|see_cpython| `python:bytes`.
Expand Down
2 changes: 1 addition & 1 deletion docs/library/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ These libraries are not currently enabled in any CircuitPython build, but may be
json.rst
platform.rst
re.rst
sys.rst
select.rst
sys.rst

Omitted ``string`` functions
----------------------------
Expand Down
9 changes: 4 additions & 5 deletions extmod/extmod.mk
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ SRC_EXTMOD_C += \
extmod/vfs_posix.c \
extmod/vfs_posix_file.c \
extmod/vfs_reader.c \
extmod/virtpin.c \
shared/libc/abort_.c \
shared/libc/printf.c \

Expand Down Expand Up @@ -253,6 +252,7 @@ SRC_THIRDPARTY_C += $(addprefix $(MBEDTLS_DIR)/library/,\
pkcs12.c \
pkcs5.c \
pkparse.c \
pk_ecc.c \
pk_wrap.c \
pkwrite.c \
platform.c \
Expand Down Expand Up @@ -411,15 +411,14 @@ CYW43_DIR = lib/cyw43-driver
GIT_SUBMODULES += $(CYW43_DIR)
CFLAGS_EXTMOD += -DMICROPY_PY_NETWORK_CYW43=1
SRC_THIRDPARTY_C += $(addprefix $(CYW43_DIR)/src/,\
cyw43_bthci_uart.c \
cyw43_ctrl.c \
cyw43_lwip.c \
cyw43_ll.c \
cyw43_sdio.c \
cyw43_spi.c \
cyw43_stats.c \
)
ifeq ($(MICROPY_PY_BLUETOOTH),1)
DRIVERS_SRC_C += drivers/cyw43/cywbt.c
endif

$(BUILD)/$(CYW43_DIR)/src/cyw43_%.o: CFLAGS += -std=c11
endif # MICROPY_PY_NETWORK_CYW43
Expand Down Expand Up @@ -577,6 +576,6 @@ $(BUILD)/$(OPENAMP_DIR)/lib/virtio_mmio/virtio_mmio_drv.o: CFLAGS += -Wno-unused
# We need to have generated libmetal before compiling OpenAMP.
$(addprefix $(BUILD)/, $(SRC_OPENAMP_C:.c=.o)): $(BUILD)/openamp/metal/config.h

SRC_THIRDPARTY_C += $(SRC_LIBMETAL_C) $(SRC_OPENAMP_C)
SRC_THIRDPARTY_C += $(SRC_OPENAMP_C) $(SRC_LIBMETAL_C:$(BUILD)/%=%)

endif # MICROPY_PY_OPENAMP
111 changes: 111 additions & 0 deletions extmod/lwip-include/lwipopts_common.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2025 Damien P. George
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef MICROPY_INCLUDED_LWIPOPTS_COMMON_H
#define MICROPY_INCLUDED_LWIPOPTS_COMMON_H

#include "py/mpconfig.h"

// This sys-arch protection is not needed.
// Ports either protect lwIP code with flags, or run it at PendSV priority.
#define SYS_ARCH_DECL_PROTECT(lev) do { } while (0)
#define SYS_ARCH_PROTECT(lev) do { } while (0)
#define SYS_ARCH_UNPROTECT(lev) do { } while (0)

#define NO_SYS 1
#define SYS_LIGHTWEIGHT_PROT 1
#define MEM_ALIGNMENT 4

#define LWIP_CHKSUM_ALGORITHM 3
#define LWIP_CHECKSUM_CTRL_PER_NETIF 1

#define LWIP_ARP 1
#define LWIP_ETHERNET 1
#define LWIP_RAW 1
#define LWIP_NETCONN 0
#define LWIP_SOCKET 0
#define LWIP_STATS 0
#define LWIP_NETIF_HOSTNAME 1

#define LWIP_DHCP 1
#define LWIP_DHCP_CHECK_LINK_UP 1
#define LWIP_DHCP_DOES_ACD_CHECK 0 // to speed DHCP up
#define LWIP_DNS 1
#define LWIP_DNS_SUPPORT_MDNS_QUERIES 1
#define LWIP_MDNS_RESPONDER 1
#define LWIP_IGMP 1

#if MICROPY_PY_LWIP_PPP
#define PPP_SUPPORT 1
#define PAP_SUPPORT 1
#define CHAP_SUPPORT 1
#endif

#define LWIP_NUM_NETIF_CLIENT_DATA LWIP_MDNS_RESPONDER
#define MEMP_NUM_UDP_PCB (4 + LWIP_MDNS_RESPONDER)

// The mDNS responder requires 5 timers per IP version plus 2 others. Not having enough silently breaks it.
#define MEMP_NUM_SYS_TIMEOUT (LWIP_NUM_SYS_TIMEOUT_INTERNAL + (LWIP_MDNS_RESPONDER * (2 + (5 * (LWIP_IPV4 + LWIP_IPV6)))))

#define SO_REUSE 1
#define TCP_LISTEN_BACKLOG 1

// TCP memory settings.
// Default lwIP settings takes 15800 bytes; TCP d/l: 380k/s local, 7.2k/s remote; TCP u/l is very slow.
#ifndef MEM_SIZE

#if 0
// lwIP takes 19159 bytes; TCP d/l and u/l are around 320k/s on local network.
#define MEM_SIZE (5000)
#define TCP_WND (4 * TCP_MSS)
#define TCP_SND_BUF (4 * TCP_MSS)
#endif

#if 1
// lwIP takes 26700 bytes; TCP dl/ul are around 750/600 k/s on local network.
#define MEM_SIZE (8000)
#define TCP_MSS (800)
#define TCP_WND (8 * TCP_MSS)
#define TCP_SND_BUF (8 * TCP_MSS)
#define MEMP_NUM_TCP_SEG (32)
#endif

#if 0
// lwIP takes 45600 bytes; TCP dl/ul are around 1200/1000 k/s on local network.
#define MEM_SIZE (16000)
#define TCP_MSS (1460)
#define TCP_WND (8 * TCP_MSS)
#define TCP_SND_BUF (8 * TCP_MSS)
#define MEMP_NUM_TCP_SEG (32)
#endif

#endif // MEM_SIZE

// Needed for PPP.
#define sys_jiffies sys_now

typedef uint32_t sys_prot_t;

#endif // MICROPY_INCLUDED_LWIPOPTS_COMMON_H
14 changes: 9 additions & 5 deletions extmod/moddeflate.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ static bool deflateio_init_read(mp_obj_deflateio_t *self) {
}
}

size_t window_len = 1 << wbits;
size_t window_len = (size_t)1 << wbits;
self->read->window = m_new(uint8_t, window_len);

uzlib_uncompress_init(&self->read->decomp, self->read->window, window_len);
Expand All @@ -168,16 +168,20 @@ static bool deflateio_init_write(mp_obj_deflateio_t *self) {

const mp_stream_p_t *stream = mp_get_stream_raise(self->stream, MP_STREAM_OP_WRITE);

self->write = m_new_obj(mp_obj_deflateio_write_t);
self->write->input_len = 0;

int wbits = self->window_bits;
if (wbits == 0) {
// Same default wbits for all formats.
wbits = DEFLATEIO_DEFAULT_WBITS;
}

// Allocate the large window before allocating the mp_obj_deflateio_write_t, in case the
// window allocation fails the mp_obj_deflateio_t object will remain in a consistent state.
size_t window_len = 1 << wbits;
self->write->window = m_new(uint8_t, window_len);
uint8_t *window = m_new(uint8_t, window_len);

self->write = m_new_obj(mp_obj_deflateio_write_t);
self->write->window = window;
self->write->input_len = 0;

uzlib_lz77_init(&self->write->lz77, self->write->window, window_len);
self->write->lz77.dest_write_data = self;
Expand Down
4 changes: 3 additions & 1 deletion extmod/modos.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,13 +171,15 @@ static const mp_rom_map_elem_t os_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_chdir), MP_ROM_PTR(&mp_vfs_chdir_obj) },
{ MP_ROM_QSTR(MP_QSTR_getcwd), MP_ROM_PTR(&mp_vfs_getcwd_obj) },
{ MP_ROM_QSTR(MP_QSTR_listdir), MP_ROM_PTR(&mp_vfs_listdir_obj) },
#if MICROPY_VFS_WRITABLE
{ MP_ROM_QSTR(MP_QSTR_mkdir), MP_ROM_PTR(&mp_vfs_mkdir_obj) },
{ MP_ROM_QSTR(MP_QSTR_remove), MP_ROM_PTR(&mp_vfs_remove_obj) },
{ MP_ROM_QSTR(MP_QSTR_rename), MP_ROM_PTR(&mp_vfs_rename_obj) },
{ MP_ROM_QSTR(MP_QSTR_rmdir), MP_ROM_PTR(&mp_vfs_rmdir_obj) },
{ MP_ROM_QSTR(MP_QSTR_unlink), MP_ROM_PTR(&mp_vfs_remove_obj) }, // unlink aliases to remove
#endif
{ MP_ROM_QSTR(MP_QSTR_stat), MP_ROM_PTR(&mp_vfs_stat_obj) },
{ MP_ROM_QSTR(MP_QSTR_statvfs), MP_ROM_PTR(&mp_vfs_statvfs_obj) },
{ MP_ROM_QSTR(MP_QSTR_unlink), MP_ROM_PTR(&mp_vfs_remove_obj) }, // unlink aliases to remove
#endif

// The following are MicroPython extensions.
Expand Down
23 changes: 21 additions & 2 deletions extmod/modplatform.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,20 +36,34 @@
// See: https://sourceforge.net/p/predef/wiki/Home/

#if defined(__ARM_ARCH)
#if defined(__ARM_ARCH_ISA_A64)
#define MICROPY_PLATFORM_ARCH "aarch64"
#else
#define MICROPY_PLATFORM_ARCH "arm"
#endif
#elif defined(__x86_64__) || defined(_M_X64)
#define MICROPY_PLATFORM_ARCH "x86_64"
#elif defined(__i386__) || defined(_M_IX86)
#define MICROPY_PLATFORM_ARCH "x86"
#elif defined(__xtensa__)
#define MICROPY_PLATFORM_ARCH "xtensa"
#elif defined(__riscv)
#if __riscv_xlen == 64
#define MICROPY_PLATFORM_ARCH "riscv64"
#else
#define MICROPY_PLATFORM_ARCH "riscv"
#endif
#else
#define MICROPY_PLATFORM_ARCH ""
#endif

#if defined(__GNUC__)
#if defined(__clang__)
#define MICROPY_PLATFORM_COMPILER \
"Clang " \
MP_STRINGIFY(__clang_major__) "." \
MP_STRINGIFY(__clang_minor__) "." \
MP_STRINGIFY(__clang_patchlevel__)
#elif defined(__GNUC__)
#define MICROPY_PLATFORM_COMPILER \
"GCC " \
MP_STRINGIFY(__GNUC__) "." \
Expand Down Expand Up @@ -86,12 +100,17 @@
#elif defined(_PICOLIBC__)
#define MICROPY_PLATFORM_LIBC_LIB "picolibc"
#define MICROPY_PLATFORM_LIBC_VER _PICOLIBC_VERSION
#elif defined(__ANDROID__)
#define MICROPY_PLATFORM_LIBC_LIB "bionic"
#define MICROPY_PLATFORM_LIBC_VER MP_STRINGIFY(__ANDROID_API__)
#else
#define MICROPY_PLATFORM_LIBC_LIB ""
#define MICROPY_PLATFORM_LIBC_VER ""
#endif

#if defined(__linux)
#if defined(__ANDROID__)
#define MICROPY_PLATFORM_SYSTEM "Android"
#elif defined(__linux)
#define MICROPY_PLATFORM_SYSTEM "Linux"
#elif defined(__unix__)
#define MICROPY_PLATFORM_SYSTEM "Unix"
Expand Down
Loading