Commit Graph

18358 Commits

Author SHA1 Message Date
Duncan Lowther
8a56be6660 extmod/moductypes: Be more defensive with uctypes_struct_agg_size args.
Some checks failed
qemu port / build_and_test_rv64 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
windows port / build-vs (Debug, x64, v143, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, v143, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, v142, dev, 2019, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, v142, standard, 2019, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, v143, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, v143, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, v142, dev, 2019, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, v142, standard, 2019, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, v143, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, v143, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
Eliminates read-beyond-end when calling `uctypes_struct_agg_size()` on the
length 1 tuple (uctypes.ARRAY ,).

Signed-off-by: Duncan Lowther <Duncan.Lowther@glasgow.ac.uk>
2026-04-20 23:14:45 +10:00
Damien George
1f601e8987 samd: Convert port to use new event waiting functions.
Convert the samd port from the old `MICROPY_EVENT_POLL_HOOK` macro to use
the new `mp_event_wait_xxx()` functions in conjunction with
`MICROPY_INTERNAL_WFE`.

This change should be functionally equivalent to the existing behaivour
because `mp_event_wait_ms()` is equal to
`mp_handle_pending(MP_HANDLE_PENDING_CALLBACKS_AND_EXCEPTIONS); __WFE()`,
which is what `MICROPY_EVENT_POLL_HOOK` was.

Signed-off-by: Damien George <damien@micropython.org>
2026-04-16 16:20:57 +10:00
Damien George
941cc31db2 mimxrt: Convert port to use new event waiting functions.
Convert the mimxrt port from the old `MICROPY_EVENT_POLL_HOOK` macro to use
the new `mp_event_wait_xxx()` functions in conjunction with
`MICROPY_INTERNAL_WFE`.

This change should be functionally equivalent to the existing behaivour
because `mp_event_wait_ms()` and `mp_event_wait_indefinite()` are equal to
`mp_handle_pending(MP_HANDLE_PENDING_CALLBACKS_AND_EXCEPTIONS); __WFE()`,
which is what `MICROPY_EVENT_POLL_HOOK` was.

Signed-off-by: Damien George <damien@micropython.org>
2026-04-16 16:13:34 +10:00
Andrew Leech
036bd81636 stm32: Fix mboot build with TinyUSB-enabled boards.
usbd_conf.c unconditionally includes shared/tinyusb/mp_usbd.h which
pulls in tusb.h when MICROPY_HW_ENABLE_USBDEV is set. The
BUILDING_MBOOT guard that disables TinyUSB comes after the include,
so mboot builds fail with missing tusb.h. Guard the include with
!BUILDING_MBOOT.

Also add forward declaration of mp_usbd_ll_init() next to the
MICROPY_HW_TINYUSB_LL_INIT macro in mpconfigboard_common.h, since
the function is used in an inline function in mp_usbd.h but only
declared in the port-specific usbd_conf.h.

Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2026-04-16 15:20:58 +10:00
iabdalkader
50348ce0eb stm32/mpconfigport: Enable machine.CAN if CAN2 is used.
Enable machine.CAN if CAN1 or CAN2 or both are enabled.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2026-04-15 16:11:44 +10:00
Damien George
2752d398ad esp32/modules: Use "from machine import *" instead of __getattr__.
The esp32 port has the machine Counter and Encoder classes implemented in
Python, requiring a `machine.py` that extends the built-in machine module.

That previously used `__getattr__()` to delegate lookups to the built-in,
but that means any failed lookup raises an `AttributeError` instead of an
`ImportError`.  This means (among other things) that certain tests like
CAN and I2CTarget would fail because they couldn't skip the test correctly.

This commit improves the situation by using `from machine import *` instead
of `__getattr__()`, which puts all the built-in functions/classes/constants
directly in the `machine.py` global namespace.  That means an `ImportError`
is now correctly raised for attributes that don't exist.

Although this takes up a bit more RAM, it's now a lot faster to import from
the machine module: what used to take around 100us to lookup a name now
takes only 5us.

Signed-off-by: Damien George <damien@micropython.org>
2026-04-15 16:08:34 +10:00
Alessandro Gatti
c895770d4a tests/ports/qemu: Add ROMFS tests to CI.
This commit adds a new test to make sure ROMFS files are mounted and
read correctly, to be run as part of the CI process.

The changes also include the source binary files that have been used to
create the pre-baked ROMFS partition image used in the test, along with
a Makefile to allow recreating said file.

The CI test ROMFS image is mounted only if no other ROMFS partition is
mounted in slot 0.  The specific test is executed only if there actually
is a ROMFS partition mounted and if the partition is identified as the
one used to run tests on.  This allows for user images to be mounted and
for a successful test run if that is the case.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-15 16:04:26 +10:00
Alessandro Gatti
67de20ae0a tests: Rename "tests/frozen" into "tests/assets".
This commit renames the "tests/frozen" directory into "tests/assets" to
make it more explicit that it does contain files that are needed for
other tests to function.

Right now there's only a single pre-compiled module being used for
miscellaneous tests, but it will soon hold ROMFS test data as well.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-15 16:04:26 +10:00
Alessandro Gatti
75441f49ad qemu/boards/SABRELITE: Add ROMFS support.
This commit lets the SABRELITE machine definition load a ROMFS
partition at the very end of the RAM space.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-15 16:04:26 +10:00
Alessandro Gatti
809cf6f561 qemu/boards/MPS2_AN385: Add ROMFS support.
This commit lets the MPS2_AN385 machine definition load a ROMFS
partition right at the beginning of the 16MiB PSRAM area.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-15 16:04:26 +10:00
Alessandro Gatti
f3e79c8b56 qemu/boards/VIRT_RV64: Add ROMFS support.
This commit reserves a memory area to mount ROMFS partitions into, and
lets the port Makefile know the memory area details.

A 4 MiB segment is allocated at 0x8062_0000, which is inside the
emulated machine's DRAM segment.  The virt board requires the image
loaded in its DRAM segment to be contiguous, so the ROMFS segment is
placed right after the stack area.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-15 16:04:26 +10:00
Alessandro Gatti
acaba3f469 qemu/boards/VIRT_RV32: Add ROMFS support.
This commit reserves a memory area to mount ROMFS partitions into, and
lets the port Makefile know the memory area details.

A 4 MiB segment is allocated at 0x8061_0000, which is inside the
emulated machine's DRAM segment.  The virt board requires the image
loaded in its DRAM segment to be contiguous, so the ROMFS segment is
placed right after the stack area.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-15 16:04:26 +10:00
Alessandro Gatti
083b0cc60f qemu/Makefile: Refactor shared ROMFS definitions.
This commit refactors shared ROMFS definitions appearing in some Arm
boards configuration, moving them into the QEMU port's Makefile.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-15 16:04:26 +10:00
Alessandro Gatti
cf0ef5a9d7 rp2/rp2_dma: Reduce footprint of the DMA control fields table.
This commit shortens the amount of space taken by the DMA control fields
table, and explicitly marks it as `const`.

The DMA fields info table used a full-size QSTR index value, and 9 bits
of numeric information.  Given that the QSTR index could be converted
into a `qstr_short_t`, there is no fields spill outside a machine word
boundary - albeit with having 7 unused bits but there isn't much that
can be done for that.  The effective structure size for each entry is
halved, from 8 bytes down to 4.

Also, the structure is only read from, yet it was not marked as `const`.
Marking the structure as constant did not help reduce the final size but
at least correctly signals the compiler that no write accesses are
possible.

This shrinks the RPI_PICO/RPI_PICO_W build by 56 bytes, with a similar
size reduction for RPI_PICO2/RPI_PICO2_W.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-15 16:03:38 +10:00
Jeff Epler
bd69a0ddef lib/re1.5: Check stack during compilecode.
Otherwise, a very deeply nested regular expression like

    re.compile("(" * 65536)

can exhaust the host stack during the compile phase. This turns
that into a `RuntimeError: maximum recursion depth exceeded`
instead.

This crash was found via fuzzing.

Signed-off-by: Jeff Epler <jepler@unpythonic.net>
2026-04-15 16:01:21 +10:00
Jeff Epler
98e4264ea6 tests/run-tests.py: Correct spelling errors.
Signed-off-by: Jeff Epler <jepler@unpythonic.net>
2026-04-15 16:01:15 +10:00
Angus Gratton
eeed037f70 extmod/machine_usb_device: Document xfer_cb result value, add enums.
This callback argument was previously mis-labelled as a boolean,
but it's actually the tusb_xfer_result_t values from TinyUSB.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:57:04 +10:00
Jeff Epler
02f2683bfc py/objint_longlong: Fix signed comparison error.
Under `afl-cc` (acting as a wrapper for clang), the following
diagnostic occurs (wrapped for clarity):

    ../../py/objint_longlong.c:232:32: error:
        comparison of integers of different signs:
        'long long' and 'unsigned long' [-Werror,-Wsign-compare]

Add a cast to silence it. The value is known statically to fit inside
`long long`.

Signed-off-by: Jeff Epler <jepler@gmail.com>
2026-04-15 15:55:16 +10:00
Damien George
a43a8ac89e py/mpconfig: Automatically configure thumb2 and float emitter features.
Prior to this commit a port would need to manually configure the
`MICROPY_EMIT_THUMB_ARMV7M` and `MICROPY_EMIT_INLINE_THUMB_FLOAT` options,
based on whether the CPU is Thumb2 and whether it has hardware floating
point support (eg Cortex-M0+ vs Cortex-M3 vs Cortex-M4).

This is error prone, for example on stm32:
- `NUCLEO_G0B1RE` (a Cortex-M0+ MCU) had both enabled even though neither
  options work on that target.
- `NUCLEO_L152RE` (a Cortex-M3 MCU) had both enabled but this target does
  not support hardware floating point.

The change here automatically enables the two options based on built-in
compiler macros.

This change is tested on the following boards:
- alif ALIF_ENSEMBLE: both enabled
- rp2 RPI_PICO: both disabled
- rp2 RPI_PICO2: both enabled
- samd SAMD21_XPLAINED_PRO: both disabled
- samd SAMD_GENERIC_D51X20: both enabled
- stm32 NUCLEO_G0B1RE: both disabled
- stm32 NUCLEO_L152RE: only MICROPY_EMIT_THUMB_ARMV7M enabled
- stm32 PYBD_SF6: both enabled
- stm32 PYBV10: both enabled

Signed-off-by: Damien George <damien@micropython.org>
2026-04-15 15:49:44 +10:00
Jeff Epler
1834dcf8b5 py/objtuple: Support __add__ and __iadd__ with tuple subclasses.
Properly cast tuple subclasses to the native base class before performing
`__add__` or `__iadd_`.

Closes: #7304

Signed-off-by: Jeff Epler <jepler@unpythonic.net>
2026-04-15 15:43:49 +10:00
Jeff Epler
5b127f022e py/modio: Error out on over-long read()/write() in user IO code.
It is a mistake in Python code if the result of readinto()/write()
is more bytes than requested. This can lead to misbehavior
e.g., in mp_stream_rw if the invariant is not respected.

CPython appears to largely ignore the values returned from
readinto()/write(), at least from `print()` & `json.load()`.
Consequently, an expected output file is needed for the
new test.

Closes: #18845

Signed-off-by: Jeff Epler <jepler@unpythonic.net>
2026-04-15 15:41:48 +10:00
Jeff Epler
5ddc551bc4 py/compile: Reject *arg after keyword argument.
Document this in cpydiff and add a test with expected output
for coverage testing.

As discussed in #11441, the code growth from handling this
case seems to outweigh the benefit of implementing it
properly.

Closes: #11439

Signed-off-by: Jeff Epler <jepler@unpythonic.net>
2026-04-15 15:40:15 +10:00
Alessandro Gatti
b67c55cb4f py/emitinlinethumb: Shrink condition code lookups.
This commit optimises the lookup of opcodes' condition codes, in order
to take up less code than before.

The original data was held in a table containing the condition code
value (an incrementing 0-based integer) and the two condition ASCII
characters.  Given that the condition code value also matches the
entry's index in the table, that can be safely omitted.

This saves 52 bytes when compiled for Thumb.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-15 15:35:27 +10:00
Alessandro Gatti
1a8c835308 docs/library/machine.Pin: Update pull-up/down constants.
This commit updates the documentation bits for pull-up/pull-down
constants, part of the `machine.Pin` class.

The documentation now mentions port-specific entries into a separate
section, making the only three standard pull-up/pull-down values being
`Pin.PULL_UP`, `Pin.PULL_DOWN`, and `None`.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-15 15:32:27 +10:00
Angus Gratton
35652ff03c docs/library/gc: Add some simple examples for gc.threshold().
Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:29:28 +10:00
Angus Gratton
5e7d4bf9a6 docs/library/gc: Add documentation for gc.isenabled().
Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:29:28 +10:00
Angus Gratton
c9bb9250db docs/develop: Link to module docs, remove extraneous example code.
Small cleanup.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:29:28 +10:00
Angus Gratton
50218dd2a8 docs: Link memory management & gc docs more, reduce duplication.
This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:29:28 +10:00
Angus Gratton
4f04f08903 docs/develop/memorymgt: Expand on MicroPython memory management from C.
This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:29:28 +10:00
Angus Gratton
3eb617da02 docs/develop/cmodules: Add some notes about C dynamic memory and C++.
This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:29:28 +10:00
Angus Gratton
e379cb4479 rp2: Allow setting MICROPY_C_HEAP_SIZE from make command line.
This isn't a necessary change, but allows make MICROPY_C_HEAP_SIZE=nnn as
an alternative to setting it in a board's .cmake file.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:25:50 +10:00
Angus Gratton
bc92f5a249 nrf: Add support for building C++ user modules.
The compiler flags -ansi -std=c11 were both being passed to g++, causing
weirdness. Removed the -ansi flag entirely, it's superseded by explicitly
setting the standard.

Also adds build coverage for user C modules (including C++) in CI.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:25:50 +10:00
Angus Gratton
5ce74c3f7f tests/misc: Skip cexample_subclass.py on minimal unix variant.
Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:25:37 +10:00
Angus Gratton
c080565170 ports: Refactor C++ compilation support.
Move the common CXXFLAGS and LDFLAGS into py/mkrules.mk

Changes ports minimal, esp8266, mimxrt, renesas-ra, samd,
stm32, unix, windows (mingw32).

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:24:52 +10:00
Angus Gratton
523ad2c6f0 tools/ci.sh: Build the usercmodule example in CI for more ports.
Adds build coverage of C++ compilation on the following ports:
mimxrt, renesas-ra, esp8266, windows (mingw32).

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:24:40 +10:00
Angus Gratton
6d327a1a84 mimxrt: Provide abort so that C++ libunwind can link.
Also add missing SRC_CXX support to the mimxrt build, same as
on other ports.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 15:24:11 +10:00
Angus Gratton
a179cb6913 tests: Use a unique domain name for tests/multi_wlan/getaddrinfo.
Otherwise test can fail if the "should fail" lookup is resolved
from a cached result.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-15 10:08:36 +10:00
dependabot[bot]
8c6dfa5bd4 github/workflows: Bump codecov/codecov-action from 5 to 6.
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5 to 6.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-09 11:52:31 +10:00
dependabot[bot]
ba28b8f231 github/workflows: Bump microsoft/setup-msbuild from 2 to 3.
Bumps [microsoft/setup-msbuild](https://github.com/microsoft/setup-msbuild) from 2 to 3.
- [Release notes](https://github.com/microsoft/setup-msbuild/releases)
- [Commits](https://github.com/microsoft/setup-msbuild/compare/v2...v3)

---
updated-dependencies:
- dependency-name: microsoft/setup-msbuild
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-09 11:46:21 +10:00
Angus Gratton
b0d2072114 github: Ignore codecov upload failure on forks with no token set.
If you enable Actions on your fork of MicroPython then it consistently
fails the Coverage Upload step (unless you set a codecov token in your
fork).  This means you get a failure email each time you push to your own
repo.

This commit fixes that.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-08 23:24:50 +10:00
Angus Gratton
da0149f629 github: Improve error on "Build mpremote wheel" if fork is missing tags.
Avoids a vague error from the 'vcs' versioning scheme if recent tags
haven't been pushed to the fork.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2026-04-08 23:23:18 +10:00
Andrew Leech
295df7c0b4 github/workflows: Drop VS2017, use preinstalled v142 toolset for VS2019.
The VS 2017 and VS 2019 MSVC CI jobs have been failing intermittently for
months due to Chocolatey/Microsoft installer infrastructure issues when
downloading old Visual Studio build tools onto windows-latest runners.
These are not code failures - the build tools installation itself is
unreliable (CDN timeouts, corrupt downloads, installer self-update loops).

This removes VS 2017 from the matrix entirely and switches VS 2019 to use
the v142 toolset that's already pre-installed on windows-2022 runners as a
component of VS 2022.  The PlatformToolset is now passed explicitly to
MSBuild for both VS 2019 (v142) and VS 2022 (v143), and the Chocolatey
installation step is removed.

VS 2017 reached end-of-life in 2022, and the v141 toolset is no longer
reliably installable on GitHub-hosted runners (actions/runner-images#9701,
actions/runner-images#12764).  The windows-2019 runner image was removed in
June 2025.  Docker containers are not supported on Windows runners, and the
repo's 10GB Actions cache is already full, so caching the installation
isn't feasible either.  MSVC v143 is binary-compatible back to v141, so the
testing value of v141 was marginal.

The net effect is 16 MSVC jobs (down from 24) with zero installation steps
and hopefully no more flaky failures.

Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2026-04-08 22:49:04 +10:00
Dryw Wade
f456a23b62 esp32/machine_pin: Make all pins on ESP32-P4 output capable.
All GPIO pins on the ESP32-P4 are output capable, so there is no need to
define GPIO_FIRST_NON_OUTPUT.

Fixes #18982.

Signed-off-by: Dryw Wade <dryw.wade@sparkfun.com>
2026-04-08 22:44:03 +10:00
Alessandro Gatti
2f16bf430a esp32/network_wlan: Look up IP addresses for the stations list.
This commit extends the output of `WLAN.status('stations')` to also
include the IP address of WiFi stations connected to the device if in AP
mode.

IP address lookup is currently not available on targets that use hosted
WiFi (eg. ESP32P4), as the hosted API does not yet support performing
the MAC->IP lookup on the WiFi MCU end.

The ESP32 port is brought up to parity with most ports in this regard
(primarily with the ESP8266).  This functionality depends on the DHCP
server provided by ESP-IDF, which is automatically run on the WiFi
interface if the device is put in AP mode.  Currently the ESP32 port
cannot run with said DHCP server disabled, so if a device does not
request a static IP it may either have the wrong IP address returned
(since the DHCP server assigned an address which is then discarded by
the client), or it won't have any (ie. "0.0.0.0").  In the latter case
`None` will be returned as the station's address instead.

This implements #9203.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-08 22:04:55 +10:00
Dryw Wade
e57e522182 esp32/machine_sdcard: Make default SDMMC slot configurable.
Resolves part of #18984.  On ESP32-P4, SDMMC slot 0 supports SDIO 3.0, and
is liekly the default for most boards.  MICROPY_HW_SDMMC_DEFAULT_SLOT can
be set in `mpconfigboard.h` to change default slot.

Signed-off-by: Dryw Wade <dryw.wade@sparkfun.com>
2026-04-08 21:55:56 +10:00
Pierre Gaufillet
71d2314164 esp32/boards/LILYGO_T3_S3: Add LILYGO T3-S3 board definition.
ESP32-S3FH4R2 with SX1262 LoRa (HPD17A), SSD1306 OLED, SD card.
Freezes lora-sx126x and ssd1306 from micropython-lib.

Signed-off-by: Pierre Gaufillet <pierre.gaufillet@bergamote.eu>
2026-04-08 21:47:09 +10:00
Alessandro Gatti
024178455d unix/modsocket: Add "sendall" method to socket class.
This commit adds an implementation for "socket.sendall" to the Unix
port.

Right now the implementation is a wrapper over a single "socket.send"
call, since it wasn't possible to let "socket.send" perform a partial
transfer.  With no partial transfers it is not possible to have a
testable implementation following the expected behaviour, so a single
send operation is done and OSErr(EINTR) is raised if a partial transfer
occurs.

The discussion for the issue linked to this PR contains more information
about the efforts made to let partial transfers happen.

This fixes #16803.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-04-08 19:20:51 +10:00
Damien George
a91910cd73 py/persistentcode: Use MP_ENCODE_UINT_MAX_BYTES instead of custom macro.
MP_ENCODE_UINT_MAX_BYTES has an equivalent value to BYTES_FOR_INT and the
former is used in other locations to encode variable (u)int values.

Signed-off-by: Damien George <damien@micropython.org>
2026-04-08 19:14:42 +10:00
Anson Mansfield
8af714e5b9 py/obj: Explicitly cast slot initializer values to (const void *).
This resolves an issue compiling with IAR, where an implicit cast from a
function pointer to a void pointer is disallowed.

Based on comments from @hammondeggs in the MicroPython discord:
https://discord.com/channels/574275045187125269/1012726673709469818/1423683501374308392

Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
2026-04-08 18:23:53 +10:00
Anson Mansfield
e274a38e0f py/obj: Enforce slot function signatures at compile time.
By explicitly casting each slot to its slot type, this will ensure that
a compiler diagnostic is generated when MP_DEFINE_CONST_OBJ_TYPE is
invoked with a slot function with the incorrect signature.

Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
2026-04-08 18:23:53 +10:00