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>
This brings in:
- sdcard: Send stop bit after multi-block read/write
- sdcard: Compute CRC7 for all SPI commands
- sdcard: Add read/write speed test to sdtest
- lsm6dsox: Add pedometer support
- lsm6dsox: Add pedometer example code
- unix-ffi/re: Handle PCRE2_UNSET in group and groups methods
- unix-ffi/re: Add tests for empty string match in ffi regex
- unix-ffi/machine: Retrieve a unique identifier if one is known
- senml/docs: Correct capitalization of 'MicroPython'
- unix-ffi/_libc: Extend FreeBSD libc versions range
- string: Convert string module to package and import templatelib
Signed-off-by: Damien George <damien@micropython.org>
This brings in:
- usb-device: raise RuntimeError when DCD error occurs
- usb-device-hid: return True after submit_xfer
- inspect: implement a very basic signature function
- datetime: apply localtz patch to include naive date/time support
- datetime: optimize for code size
- sdcard: updating sector calculation for SDXC
- mip: optimize _CHUNK_SIZE const for code size
- aioble/examples: change variable name to _ADV_INTERVAL_US
- aioble: fix typo in README in aioble.ADDR_PUBLIC
- copy: fix typo in _deepcopy_dispatch
- requests: update example for fetching using requests
- all: fix formatting errors in docstrings
- CONTRIBUTING: add guidelines for module documentation and versioning
- cbor2: silence missing `__eq__` warning
- pyproject.toml: reorganize ruff lint settings for newer ruff
- all: correct various typos in comments and docs
- lora: fix import error detection for missing drivers
- inspect: support closures/generators/async-funcs in inspect.signature
- usb-device-hid: fix descriptor protocol config and set correct default
- usb-device-hid: use report protocol after report descriptor requested
- umqtt.simple: add unsubscribe method
- aiohttp: correctly handle WebSocket message fragmentation
- iperf3: fix use as a CLI on the unix port of MicroPython
- iperf3: factor out data transfer logic to separate function
- iperf3: fix server UDP mode
- unix-ffi/socket: remove ip add/drop membership from socket
- tarfile: add basic unittest for tarfile.TarFile
- tarfile: fix FileSection.skip to not rely on extended readinto args
- argparse: Add support for custom argument types
- pyproject.toml: add codespell configuration, CI and precommit
- all: fix spelling and typos in comments and docstring
- aioble/examples: change variable name to _ADV_INTERVAL_US
Signed-off-by: Damien George <damien@micropython.org>
This is 0.19.0 plus the following changes:
- remove obsolete dcd_esp32sx
- fix for HID stylus descriptor and HID example
- typos, docs and generator scripts
- MTP fix
- DWC2 enumeration when EP0 size=8
- DWC2 fix for EP0 IN
- stm32 FSDEV IRQ remapping fix
- DWC2 ZLP fix
The reason we need the extra 24 commits is due to a bug with TinyUSB's
handling of zero-length-packets in the DWC2 (Synopsis) backend, which
affects the stm32 port. That's fixed by
https://github.com/hathach/tinyusb/pull/3293
Signed-off-by: Damien George <damien@micropython.org>
Added STM32N6 with HAL1.2.0
Added STM32U5 with HAL1.8.0
Updated STM32WB from HAL1.10.0 to HAL1.23.0
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
This is the case in arm-none-eabi-gcc 14.2.1 (debian trixie).
This fixes a diagnostic like:
../../lib/libm_dbl/libm.h:92:9: error:
"DBL_EPSILON" redefined [-Werror]
/usr/lib/gcc/arm-none-eabi/14.2.1/include/float.h:114:9: note:
this is the location of the previous definition
when building MPS2_AN500 (qemu port).
Signed-off-by: Jeff Epler <jepler@unpythonic.net>
The official mcux-sdk follows a slightly different structure to the
current nxp_sdk submodule, with many drivers moved to a common location.
To ease updating the newer versions of the SDK and/or add new families
the nxp_sdk submodule has been updated to follow the structure of
mcux-sdk, just trimmed down to families used here to considerably
reduce the size.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
This brings in:
- lora: fix SNR value in SX126x received packets
- utop: add initial implementation for ESP32
- utop: print MicroPython memory info
- utop: print IDF heap details
- urllib.urequest: add support for headers to urequest.urlopen
- aiorepl: use blocking reads for raw REPL and raw paste
- errno: add ENOTCONN constant
- logging: allow logging.exception helper to handle tracebacks
- aioble-l2cap: raise correct error if l2cap disconnects during send
- abc: add ABC base class
- aiohttp: fix partial reads by using readexactly
- aiorepl: handle stream shutdown
Signed-off-by: Damien George <damien@micropython.org>
SDK 2.1.1 shipped with PICOTOOL_FETCH_FROM_GIT configured to fetch the
"develop" branch. This broke downstream CI, which was trusting Pico
SDK to fetch the correct version.
RPi have added a "2.1.1-correct-picotool" tag which fixes this.
lib/pico-sdk: Bump to "2.1.1-correct-picotool" tag.
Signed-off-by: Phil Howard <github@gadgetoid.com>
That's almost the same as FLT_EVAL_METHOD == 0, but indicates the
presence of _Float16_t support.
Signed-off-by: Damien George <damien@micropython.org>
Avoids the new Wunterminated-string-literal when compiled with gcc 15.1.
It would be preferable to just disable this warning, but Clang
-Wunknown-warning-option kicks in even when disabling warnings so this
becomes fiddly to apply.
This work was funded through GitHub Sponsors.
Signed-off-by: Angus Gratton <angus@redyak.com.au>
Getting this to work required fixing a small issue in `lfs2_util.h`, which
has been submitted upstream.
Signed-off-by: Daniël van de Giessen <daniel@dvdgiessen.nl>
Going above the root directory (/../foo) now gives an error. This is an
intentional change made by LittleFS. It required a update of the testsuite
and is a (minor) compatibility break.
Signed-off-by: Daniël van de Giessen <daniel@dvdgiessen.nl>
This updates lwIP from STABLE-2_2_0_RELEASE, which was released in
September 2023. The latest STABLE-2_2_1_RELEASE was released in February
2025.
Signed-off-by: Damien George <damien@micropython.org>
This brings in:
- requests: do not leak header modifications when calling request
- mip: allow relative URLs in package.json
- mip: make mip.install() skip /rom*/lib directories
- umqtt.simple: restore legacy ssl/ssl_params arguments
- nrf24l01: increase startup delay
- nrf24l01: properly handle timeout
- nrf24l01: optimize status reading
- lora-sx126x: fix invert_iq_rx / invert_iq_tx behaviour
- unix-ffi/json: accept both str and bytes as arg for json.loads()
- unix-ffi/machine: use libc if librt is not present
- requests: use the host in the redirect url, not the one in headers
- aiohttp: fix header case sensitivity
- aiohttp: allow headers to be passed to a WebSocketClient
- usb-device-cdc: optimise writing small data so it doesn't require alloc
- inspect: fix isgenerator logic
- inspect: implement iscoroutinefunction and iscoroutine
Signed-off-by: Damien George <damien@micropython.org>
Includes various fixes and improvements to the WLAN driver, in particular:
- Add WPA3 STA and AP support.
- Attempt to reconnect to AP in response to validation error.
- Update 43439 BT firmware for Data Length Extension fix.
Signed-off-by: Damien George <damien@micropython.org>
This brings in:
- umqtt.simple: add optional socket timeout to connect method
- aioespnow,webrepl: use recommended network.WLAN.IF_[AP|STA] constants
- unittest: allow SkipTest to work within a subTest
- unittest: always use "raise" with an argument
Signed-off-by: Damien George <damien@micropython.org>
This brings in:
- requests improvements with overriding headers
- use non-u versions of built-in modules, including asyncio
- fix to logging so StreamHandler calls parent constructor
- various fixes to usb-device packages
- fixes to lora sx126x and sx127x drivers
- improvements to unix-ffi/sqlite3
- support additional gap_connect arguments in aioble
Signed-off-by: Damien George <damien@micropython.org>
Libffi is updated to the latest stable version (v3.4.6) as the version
of libffi that was linked by the repository predates the introduction of
RISC-V processors (both 32 and 64 bits).
This is necessary as the packaged version of libffi used by the CI for
RISC-V 64 turned out to simply not work correctly, whilst a source-built
version of libffi worked just fine.
Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
With the recent qemu (d9a0fdda9a and
0426934969) and zephyr
(05cad7b56f) changes to how their tests are
run, two things became unused:
- The tinytest framework, which embedded a set of tests and their expected
output within firmware, so these tests could be run stand-alone.
- The `--write-exp` and `--list-tests` options to `tests/run-tests.py`,
which were needed primarily to generated the expected test output for
tinytest (also the associated `tests/run-tests-exp.py/.sh` scripts are
now unused).
This commit removes the tinytest component and all its helper code. This
eliminates a maintenance burden.
Signed-off-by: Damien George <damien@micropython.org>
This updates lwIP from STABLE-2_1_3_RELEASE, which was released in November
2021. The latest STABLE-2_2_0_RELEASE was released in September 2023.
Signed-off-by: Damien George <damien@micropython.org>
fdilibm was originally meant to see _IEEE_LIBM defined from outside the
libm code, not it being hardcoded in. Picolibc assumes this assumption
holds true and attempts to define itself, conflicting with the existing
definition.
Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
Since C99, `FLT_EVAL_METHOD` should be left for the compiler/libc to
define. Its redefinition breaks compilation with picolibc as the
target's libc, since it defines said symbol in math.h before the libm
define is evaluated by the compiler.
In its place, there is a check to make sure floating point type sizes
are what are expected to be, triggering a compilation error if those
assumptions are no longer valid.
Co-authored-by: Angus Gratton <angus@redyak.com.au>
Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
This brings in:
- fixes to: aiohttp, tarfile, lora, gzip
- fixes and improvements to aioble
- deprecation of cbor2 decoder and encoder modules
- new usb package
- new pyusb package
Signed-off-by: Damien George <damien@micropython.org>
This updates the berkeley-db-1.xx submodule URL to a repository hosted
under the micropython organisation, and makes the following changes:
- Moves the berkeley-db header files to a single directory within the
submodule, and references all these headers with a much fuller path,
which prevents symbol clashes (eg with esp32 and queue.h).
- Removes unused/non-working files from berkeley-db, which removes all
symlinks in that repo (symlinks don't play well under Windows).
- Allows injecting an external configuration header into berkeley-db, so
the configuration doesn't have to be provided by -Dxx=yy flags to the
compiler (and possibly clashing with other symbols).
- Removes the advertising clause from the BSD 4-clause license of
berkeley-db (see relevant commit and README.Impt.License.Change for
details).
Signed-off-by: Damien George <damien@micropython.org>
OpenAMP framework provides a standard inter processor communications
infrastructure for RTOS and bare metal environments. There are 3 major
components in OpenAMP: libmetal, remoteproc and RPMsg. libmetal provides
abstraction of the low-level underlying hardware, remoteproc is used for
processor Life Cycle Management (LCM) like loading firmware, starting,
stopping a core etc., and RPMsg is a bus infrastructure that enables Inter
Processor Communications (IPC) between different cores.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>