summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-07-08zephyr/prj.conf: Use UART for console as default, not CONSOLE_SUBSYS.Damien George
Most boards enable the UART console because it's needed for USB (where USB CDC creates a virtual UART), and for ctrl-C to work. The `prj_minimal.conf` settings still use CONSOLE_SUBSYS. Fixes issue #17608. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08zephyr/README: Update URL describing QEMU network settings.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-08zephyr/boards: Disable WDT on qemu boards and networking for cortex_m3.Damien George
This gets qemu_x86 and qemu_cortex_m3 building with `prj.conf` settings. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08zephyr/machine_pin: Configure OUT pin also as input so it's readable.Damien George
Zephyr allows setting both GPIO_OUTPUT and GPIO_INPUT on a pin, which means it's an output pin that can have its current value read. Fixes issue #17596. Signed-off-by: Damien George <damien@micropython.org>
2025-07-08zephyr/machine_uart: Complete UART driver and make it interrupt driven.Daniel Campora
Before this commit the UART would only work in very simple use cases. Receiving large amounts of data would result in lost bytes. Plus the print function would crash due to `uart_config_get()` returning incorrect values. Additionally, receiving data with `timeout==0` would fail even if data was already available in the internal UART Rx FIFO. This commit fixes those issues. The non-implemented functions have also been made usable. Signed-off-by: Daniel Campora <danicampora@gmail.com>
2025-07-06esp32/panichandler: Support building against IDFv5.4.2.Daniël van de Giessen
The IDF panic handler resets the watchdog timeout to prevent the printing of the error message from being cut off by a WDT reset. We use the exact same function call in our wrapper function for the same purpose. In IDFv5.4.2 the function used for this was changed from `esp_panic_handler_reconfigure_wdts` to `esp_panic_handler_feed_wdts`, specifically in this commit: https://github.com/espressif/esp-idf/commit/cd887ef59a7b966a7f431754aaec6ee653849d77 Signed-off-by: Daniël van de Giessen <daniel@dvdgiessen.nl>
2025-07-06github/workflows: Use Python 3.11 for unix coverage testing.Jeff Epler
This removes the need for an explicit `sys_settrace_features.py.exp` file. This means that people testing locally will also need to install Python 3.11 in some way, such as with pyenv or uv, and use it during `make VARIANT=coverage test`, or they will get failures. When using Python from GitHub actions/setup-python, pip3 can't be wrapped by sudo, because this invokes the operating system python instead. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-06tools/ci.sh: Increase test timeout to 60s in coverage jobs.Jeff Epler
The additional overhead of the settrace profiler means that the `aes_stress.py` test was running too slowly on GitHub CI. Double the timeout to 60 seconds. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-06github/workflows: Remove the unix "settrace" CI job.Jeff Epler
This becomes redundant when the main coverage build includes settrace. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-06py/profile: Fix printing lineno in frame objects.Jeff Epler
The argument corresponding to a `%q` specifier must be of type `qstr`, not a narrower type like `int16_t`. Not ensuring this caused an assertion error on one Windows x64 build. The argument corresponding to a `%d` specifier must be of type `int`, not a potentially-wider type like `mp_uint_t`. Not ensuring this prevented the function name from being printed on the unix nanbox build. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-06unix/coverage: Initialize more code_state fields.Jeff Epler
When `MICROPY_PY_SYS_SETTRACE` was enabled, a crash was seen in the qemu_mips build. It seems likely that this was due to these added fields not being initialized. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-06py/runtime: Initialize profile fields in mp_thread_init_state.Jeff Epler
If the fields added for `MICROPY_PY_SYS_SETTRACE` are not initialized properly, their value in a thread is indeterminate. In particular, if the callback is not NULL, it will be invoked as a function. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-06tests/misc: Improve test coverage of py/profile.c.Jeff Epler
Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-06unix/variants/coverage: Enable sys.settrace.Jeff Epler
The unix coverage variant should have all features enabled, so they can be tested for coverage. Therefore, enabled `MICROPY_PY_SYS_SETTRACE`. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-04py/emitnative: Let emitters know the compiled entity's name.Alessandro Gatti
This commit introduces an optional feature to provide to native emitters the fully qualified name of the entity they are compiling. This is achieved by altering the generic ASM API to provide a third argument to the entry function, containing the name of the entity being compiled. Currently only the debug emitter uses this feature, as it is not really useful for other emitters for the time being; in fact the macros in question just strip the name away. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-04tools/mpremote: Fix disconnect handling on Windows and Linux.Andrew Leech
Changes in this commit: - Handle SerialException on Windows when device disconnects. - Print clean 'device disconnected' message instead of stack trace. - Fix terminal formatting issues on Linux after disconnect. - Return disconnected state after console cleanup to avoid terminal issues. This ensures proper disconnect messages on both platforms without showing confusing error traces to users. Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-07-04webassembly/objpyproxy: Avoid throwing on symbol or iterator has-check.Andrea Giammarchi
JavaScript code uses "Symbol in object" to brand check its own proxies, and such checks should also work on the Python side. Signed-off-by: Andrea Giammarchi <andrea.giammarchi@gmail.com>
2025-07-03alif/machine_spi: Improve transfer function to poll events.iabdalkader
Poll events during SPI transfer (USB fails during long transfers otherwise). And add a timeout for the blocking transfer. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-07-03alif/machine_pin: Add support for machine.Pin IRQ.iabdalkader
Matches existing `Pin.irq()` API. Both rising and falling edge work. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-07-01py/asmthumb: Clean up integer-indexed load/store emitters.Alessandro Gatti
This commit cleans up the single entry point integer-indexed load/store emitters that have been built by merging the single operand type load/store functions in 1f5ba6998bb1895354f5afcd7bb52d83a02733be. To follow the same convention found in RV32 and Xtensa emitters, the function operand size is not named after the left shift amount to apply to the initial offset to get its true byte offset, but by a generic "operand size". Also, those functions were updated to use the new MP_FIT_UNSIGNED macros to perform bit width checks when figuring out which opcode encoding is the best one to use. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-01tests/run-tests.py: Allow injected code customisation.Alessandro Gatti
This commit introduces a mechanism to customise the code that is injected to the board when performing a test file upload and execution. A new argument, --begin", is added so regular Python code can be inserted in the injected fragment between the module file creation and the effective file import. This is needed for running larger tests (usually ones that have been pre-compiled with "--via-mpy --emit native") on ESP8266, as that board does not have enough memory to fit certain blocks of code unless additional configuration is performed. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-01tests/micropython: Improve viper ptr boundary tests.Alessandro Gatti
This commit reworks the Viper pointer boundary tests in order to make them more accurate and easier to extend. The tests are now easier to reason about in their output, using easier to read values, and bit thresholds are now more configurable. If a new conditional code sequence is introduced, adding a new bit threshold is just a matter of adding a value into a tuple at the beginning of the relevant test file. Load tests have also been made more accurate, with better function templates to test register-indexed operations. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-01py/asmx64: Implement the full set of Viper load/store operations.Alessandro Gatti
This commit expands the implementation of Viper load/store operations that are optimised for the x86 platform. Like x86, x64 already implemented all necessary functions and all it took to expose these to Viper after the infrastructure refactoring was to add a few defines. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-01py/asmx86: Implement the full set of Viper load/store operations.Alessandro Gatti
This commit expands the implementation of Viper load/store operations that are optimised for the x86 platform. Unlike other platforms, x86 already implemented all necessary functions and all it took to expose these to Viper after the infrastructure refactoring was to add a few defines. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-01py/asmthumb: Remove redundant load/store opcode implementations.Alessandro Gatti
This commit removes load/store opcode implementations that have been made redundant in 1f5ba6998bb1895354f5afcd7bb52d83a02733be. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-01py/asmxtensa: Implement the full set of Viper load/store operations.Alessandro Gatti
This commit expands the implementation of Viper load/store operations that are optimised for the Xtensa platform. Now both load and store emitters should generate the shortest possible sequence in all cases. Redundant specialised operation emitters have been aliased to the general case implementation - this was the case of integer-indexed load/store operations with a fixed offset of zero. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-01py/asmarm: Implement the full set of Viper load/store operations.Alessandro Gatti
This commit expands the implementation of Viper load/store operations that are optimised for the Arm platform. Now both load and store emitters should generate the shortest possible sequence in all cases. Redundant specialised operation emitters have been folded into the general case implementation - this was the case of integer-indexed load/store operations with a fixed offset of zero. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-01py/asmrv32: Implement the full set of Viper load/store operations.Alessandro Gatti
This commit expands the implementation of Viper load/store operations that are optimised for the RV32 platform. Given the way opcodes are encoded, all value sizes are implemented with only two functions - one for loads and one for stores. This should reduce duplication with existing operations and should, in theory, save space as some code is removed. Both load and store emitters will generate the shortest possible sequence (as long as the stack pointer is not involved), using compressed opcodes when possible. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-01py/misc: Introduce macros to check values' bits size.Alessandro Gatti
This commit adds two macros that lets check whether a given value can fit an arbitrary number of bits, either as a signed or as an unsigned number. The native emitter code backends perform a lot of bit size checks to see if a particular code sequence can be emitted instead of a generic one, and each platform backend has its own ad-hoc macros (usually one per bit count and signedness). With these macros there's a single way to perform those checks, plus there's no more chance for off-by-one mask length errors when dealing with signed numbers. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-07-01unix/README: Add some small documentation about sanitizers.Jeff Epler
Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-01tools/ci.sh: Disable "stack use after return" in ASan build.Jeff Epler
This check, runtime-enabled by default in gcc 13 (and existing at least since gcc 12, but runtime-disabled) changes the stack layout in ways that are not compatible with assumptions spread across the core code (nlr, gc, and stack checking). Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-01github/workflows: Run the address sanitizer (ASan) build during CI.Jeff Epler
Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-06-26alif/Makefile: Allow specifying a custom build directory.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-06-26alif/README: Update README with build instructions.iabdalkader
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-06-26alif/boards/ALIF_ENSEMBLE: Add board.json and deploy instructions.iabdalkader
The firmware for this board will now be built and available automatically. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-06-26tools/autobuild: Build alif boards as part of auto-build.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-06-26alif/Makefile: Create firmware.zip with files needed for deploying.Damien George
The resulting `firmware.zip` file is self contained with everything needed to deploy the firmware, eg over SE UART. Signed-off-by: Damien George <damien@micropython.org>
2025-06-26extmod/modlwip: Fix crash when calling recv on listening socket.Andrew Leech
Add check to prevent calling recv on a socket in the listening state. This prevents a crash/hard fault when user code mistakenly tries to recv on the listening socket instead of on the accepted connection. Add corresponding test case to demonstrate the bug. Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-06-26stm32/uart: Enable UART FIFO for H7 MCUs.ennyKey
The H7 has a hardware UART FIFO, so it's worth enabling it, to reduce the chance of missed incoming characters. Note that `HAL_UART_Init(&huart)` does not activate the FIFO, it must be done explicitly by calling `HAL_UARTEx_EnableFifoMode(&huart)`. Signed-off-by: ennyKey <ennyKey@fn.de>
2025-06-26stm32/boards/ARDUINO_GIGA: Define additional GC blocks in SDRAM.iabdalkader
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-06-26stm32/main: Add support for additional GC blocks.iabdalkader
Add support for defining additional GC blocks via linker scripts. A board would need to define `_gc_blocks_table_start` and `_gc_blocks_table_end` and within that region have pairs of (address, length) for each GC block to add. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-06-26stm32/boards/ARDUINO_PORTENTA_H7: Free reserved timer.iabdalkader
This pin is used for the camera clock on Portenta carrier, and vision shield but it doesn't need to be reserved. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-06-26esp32/boards/GARATRONIC_PYBSTICK26_ESP32C3: Add pybstick26-esp32c3 defn.Garatronic
2025-06-25py/misc: Fix fallback implementation of mp_popcount.Damien George
Tested using gcc 7.3.1 which does not have the popcount built-in and uses this fallback version. Without the fix, mpy-cross produces mpy files with corrupt RISC-V machine code. With the fix, mpy-cross output is correct. Signed-off-by: Damien George <damien@micropython.org>
2025-06-24py/obj: Fix nan handling in object REPR_C and REPR_D.Yoctopuce dev
CPython math.nan is positive with regards to copysign. The signaling bit (aka sign flag) was incorrectly set. In addition, REPR_C and REPR_D should only use the _true_ nan to prevent system crash in case of hand-crafted floats. For instance, with REPR_C, any nan-like float following the pattern `01111111 1xxxxxxx xxxxxxxx xxxxx1xx` would be switched to an immediate object or a qstr string. When the qstr index is too large, this would cause a crash. This commit fixes the issue, and adds the relevant test cases. Signed-off-by: Yoctopuce dev <dev@yoctopuce.com>
2025-06-23py/runtime: Add support for using __all__ in star import.Yoctopuce dev
When the symbol `__all__` is defined in a module, `mp_import_all()` should import all listed symbols into the global environment, rather than relying on the underscore-is-private default. This is the standard in CPython. Each item is loaded in the same way as if it would be an explicit import statement, and will invoke the module's `__getattr__` function if needed. This provides a straightforward solution for fixing star import of modules using a dynamic loader, such as `extmod/asyncio` (see issue #7266). This improvement has been enabled at BASIC_FEATURES level, to avoid impacting devices with limited ressources, for which star import is of little use anyway. Additionally, detailled reporting of errors during `__all__` import has been implemented to match CPython, but this is only enabled when ERROR_REPORTING is set to MICROPY_ERROR_REPORTING_DETAILED. Signed-off-by: Yoctopuce dev <dev@yoctopuce.com>
2025-06-23zephyr/boards/beagleconnect_freedom: Remove board overlay.Ayush Singh
Since MicroPython supports Zephyr v4.0.0, no need for overlay to enable PWM. It is enabled by default for a while now. Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-06-23zephyr/boards/beagleconnect_freedom: Enable networking.Ayush Singh
Having both PWM and networking enabled now works fine. So enable subg networking. Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-06-19samd/boards: Change the SparkFun vendor name to SparkFun.robert-hh
Only the board.json files are affected. No other file uses the style "Sparkfun". The documentation is fine. Signed-off-by: robert-hh <robert@hammelrath.com>
2025-06-19py/repl: Skip private variables when printing tab completion options.Andrew Leech
Any '_' variables/functions in frozen modules are currently printed, when they shouldn't be. That's due to underscore names possibly existing between the start and end qstrs which are used to print the auto-complete matches. The underscore names should be skipped when iterating between the two boundary qstrs. The underscore attributes are removed from the extra coverage exp file because tab completing "import <tab>" no longer lists modules beginning with an underscore. Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>