From 8f53efdcfb12474daec53d53f7a983faa5c405f2c4ef2cb47f1e22603354c36f Mon Sep 17 00:00:00 2001 From: Dominik Heidler Date: Fri, 15 Aug 2025 08:25:38 +0000 Subject: [PATCH 1/2] =?UTF-8?q?-=20Version=201.26.0=20=20=20*=20Added=20ma?= =?UTF-8?q?chine.I2CTarget=20for=20creating=20I2C=20target=20devices=20on?= =?UTF-8?q?=20multiple=20ports.=20=20=20*=20New=20MCU=20support:=20STM32N6?= =?UTF-8?q?xx=20(800=20MHz,=20ML=20accel)=20&=20ESP32-C2=20(WiFi=20+=20BLE?= =?UTF-8?q?).=20=20=20*=20Major=20float=20accuracy=20boost=20(~28%=20?= =?UTF-8?q?=E2=86=92=20~98%),=20constant=20folding=20in=20compiler.=20=20?= =?UTF-8?q?=20*=20Optimized=20native/Viper=20emitters;=20reduced=20heap=20?= =?UTF-8?q?use=20for=20slices.=20=20=20*=20Time=20functions=20standardized?= =?UTF-8?q?=20(1970=E2=80=932099);=20new=20boards=20across=20ESP32,=20SAMD?= =?UTF-8?q?,=20STM32,=20Zephyr.=20=20=20*=20ESP32:=20ESP-IDF=205.4.2,=20fl?= =?UTF-8?q?ash=20auto-detect,=20PCNT=20class,=20LAN8670=20PHY.=20=20=20*?= =?UTF-8?q?=20RP2:=20compressed=20errors,=20better=20lightsleep,=20hard=20?= =?UTF-8?q?IRQ=20timers.=20=20=20*=20Zephyr=20v4.0.0:=20PWM,=20SoftI2C/SPI?= =?UTF-8?q?,=20BLE=20runtime=20services,=20boot.py/main.py=20support.=20?= =?UTF-8?q?=20=20*=20mpremote=20adds=20fs=20tree,=20improved=20df,=20porta?= =?UTF-8?q?ble=20config=20paths.=20=20=20*=20Updated=20lwIP,=20LittleFS,?= =?UTF-8?q?=20libhydrogen,=20stm32lib;=20expanded=20hardware/CI=20tests.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/micropython?expand=0&rev=53 --- micropython-1.25.0.tar.xz | 3 - micropython-1.26.0.tar.xz | 3 + micropython-gcc15-string-initialization.patch | 231 ------------------ micropython.changes | 15 ++ micropython.spec | 6 +- 5 files changed, 20 insertions(+), 238 deletions(-) delete mode 100644 micropython-1.25.0.tar.xz create mode 100644 micropython-1.26.0.tar.xz delete mode 100644 micropython-gcc15-string-initialization.patch diff --git a/micropython-1.25.0.tar.xz b/micropython-1.25.0.tar.xz deleted file mode 100644 index 0c5d470..0000000 --- a/micropython-1.25.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4d66b0bf198cd7ee8990ee3bdeafd9a2353f68aa1a941ff55419513c0546333e -size 16074024 diff --git a/micropython-1.26.0.tar.xz b/micropython-1.26.0.tar.xz new file mode 100644 index 0000000..2213870 --- /dev/null +++ b/micropython-1.26.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c43e4512fb2ada940a1d7808c84f313a161339b39c921292706b2f0163818062 +size 16178748 diff --git a/micropython-gcc15-string-initialization.patch b/micropython-gcc15-string-initialization.patch deleted file mode 100644 index 1d628df..0000000 --- a/micropython-gcc15-string-initialization.patch +++ /dev/null @@ -1,231 +0,0 @@ -From 531d4839d44a90447c232d51d1bee0cae45add9a Mon Sep 17 00:00:00 2001 -From: Angus Gratton -Date: Fri, 9 May 2025 13:34:37 +1000 -Subject: [PATCH 1/3] extmod/moductypes: Refactor string literal as array - initializer. - -Avoids the new Wunterminated-string-literal when compiled with gcc 15.1. - -Also split out the duplicate string to a top-level array (probably the -duplicate string literal was interned, so unlikely to have any impact.) - -This work was funded through GitHub Sponsors. - -Signed-off-by: Angus Gratton ---- - extmod/moductypes.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/extmod/moductypes.c b/extmod/moductypes.c -index bf45797658fa0..54abce79e06fe 100644 ---- a/extmod/moductypes.c -+++ b/extmod/moductypes.c -@@ -277,15 +277,18 @@ static mp_obj_t uctypes_struct_sizeof(size_t n_args, const mp_obj_t *args) { - } - static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(uctypes_struct_sizeof_obj, 1, 2, uctypes_struct_sizeof); - -+static const char type2char[16] = { -+ 'B', 'b', 'H', 'h', 'I', 'i', 'Q', 'q', -+ '-', '-', '-', '-', '-', '-', 'f', 'd' -+}; -+ - static inline mp_obj_t get_unaligned(uint val_type, byte *p, int big_endian) { - char struct_type = big_endian ? '>' : '<'; -- static const char type2char[16] = "BbHhIiQq------fd"; - return mp_binary_get_val(struct_type, type2char[val_type], p, &p); - } - - static inline void set_unaligned(uint val_type, byte *p, int big_endian, mp_obj_t val) { - char struct_type = big_endian ? '>' : '<'; -- static const char type2char[16] = "BbHhIiQq------fd"; - mp_binary_set_val(struct_type, type2char[val_type], val, p, &p); - } - - -From 0398873d8c8096d2054db130efd1fcecba2a426d Mon Sep 17 00:00:00 2001 -From: Angus Gratton -Date: Fri, 9 May 2025 13:36:05 +1000 -Subject: [PATCH 2/3] py/emitinlinethumb: Refactor string literal as array - initializer. - -Avoids the new Wunterminated-string-literal when compiled with gcc 15.1. - -This work was funded through GitHub Sponsors. - -Signed-off-by: Angus Gratton ---- - py/emitinlinethumb.c | 108 +++++++++++++++++++++---------------------- - 1 file changed, 54 insertions(+), 54 deletions(-) - -diff --git a/py/emitinlinethumb.c b/py/emitinlinethumb.c -index 7818bb4f46da8..d6596337ae5a6 100644 ---- a/py/emitinlinethumb.c -+++ b/py/emitinlinethumb.c -@@ -150,27 +150,27 @@ typedef struct _reg_name_t { byte reg; - byte name[3]; - } reg_name_t; - static const reg_name_t reg_name_table[] = { -- {0, "r0\0"}, -- {1, "r1\0"}, -- {2, "r2\0"}, -- {3, "r3\0"}, -- {4, "r4\0"}, -- {5, "r5\0"}, -- {6, "r6\0"}, -- {7, "r7\0"}, -- {8, "r8\0"}, -- {9, "r9\0"}, -- {10, "r10"}, -- {11, "r11"}, -- {12, "r12"}, -- {13, "r13"}, -- {14, "r14"}, -- {15, "r15"}, -- {10, "sl\0"}, -- {11, "fp\0"}, -- {13, "sp\0"}, -- {14, "lr\0"}, -- {15, "pc\0"}, -+ {0, {'r', '0' }}, -+ {1, {'r', '1' }}, -+ {2, {'r', '2' }}, -+ {3, {'r', '3' }}, -+ {4, {'r', '4' }}, -+ {5, {'r', '5' }}, -+ {6, {'r', '6' }}, -+ {7, {'r', '7' }}, -+ {8, {'r', '8' }}, -+ {9, {'r', '9' }}, -+ {10, {'r', '1', '0' }}, -+ {11, {'r', '1', '1' }}, -+ {12, {'r', '1', '2' }}, -+ {13, {'r', '1', '3' }}, -+ {14, {'r', '1', '4' }}, -+ {15, {'r', '1', '5' }}, -+ {10, {'s', 'l' }}, -+ {11, {'f', 'p' }}, -+ {13, {'s', 'p' }}, -+ {14, {'l', 'r' }}, -+ {15, {'p', 'c' }}, - }; - - #define MAX_SPECIAL_REGISTER_NAME_LENGTH 7 -@@ -368,20 +368,20 @@ typedef struct _cc_name_t { byte cc; - byte name[2]; - } cc_name_t; - static const cc_name_t cc_name_table[] = { -- { ASM_THUMB_CC_EQ, "eq" }, -- { ASM_THUMB_CC_NE, "ne" }, -- { ASM_THUMB_CC_CS, "cs" }, -- { ASM_THUMB_CC_CC, "cc" }, -- { ASM_THUMB_CC_MI, "mi" }, -- { ASM_THUMB_CC_PL, "pl" }, -- { ASM_THUMB_CC_VS, "vs" }, -- { ASM_THUMB_CC_VC, "vc" }, -- { ASM_THUMB_CC_HI, "hi" }, -- { ASM_THUMB_CC_LS, "ls" }, -- { ASM_THUMB_CC_GE, "ge" }, -- { ASM_THUMB_CC_LT, "lt" }, -- { ASM_THUMB_CC_GT, "gt" }, -- { ASM_THUMB_CC_LE, "le" }, -+ { ASM_THUMB_CC_EQ, { 'e', 'q' }}, -+ { ASM_THUMB_CC_NE, { 'n', 'e' }}, -+ { ASM_THUMB_CC_CS, { 'c', 's' }}, -+ { ASM_THUMB_CC_CC, { 'c', 'c' }}, -+ { ASM_THUMB_CC_MI, { 'm', 'i' }}, -+ { ASM_THUMB_CC_PL, { 'p', 'l' }}, -+ { ASM_THUMB_CC_VS, { 'v', 's' }}, -+ { ASM_THUMB_CC_VC, { 'v', 'c' }}, -+ { ASM_THUMB_CC_HI, { 'h', 'i' }}, -+ { ASM_THUMB_CC_LS, { 'l', 's' }}, -+ { ASM_THUMB_CC_GE, { 'g', 'e' }}, -+ { ASM_THUMB_CC_LT, { 'l', 't' }}, -+ { ASM_THUMB_CC_GT, { 'g', 't' }}, -+ { ASM_THUMB_CC_LE, { 'l', 'e' }}, - }; - - typedef struct _format_4_op_t { byte op; -@@ -389,21 +389,21 @@ typedef struct _format_4_op_t { byte op; - } format_4_op_t; - #define X(x) (((x) >> 4) & 0xff) // only need 1 byte to distinguish these ops - static const format_4_op_t format_4_op_table[] = { -- { X(ASM_THUMB_FORMAT_4_EOR), "eor" }, -- { X(ASM_THUMB_FORMAT_4_LSL), "lsl" }, -- { X(ASM_THUMB_FORMAT_4_LSR), "lsr" }, -- { X(ASM_THUMB_FORMAT_4_ASR), "asr" }, -- { X(ASM_THUMB_FORMAT_4_ADC), "adc" }, -- { X(ASM_THUMB_FORMAT_4_SBC), "sbc" }, -- { X(ASM_THUMB_FORMAT_4_ROR), "ror" }, -- { X(ASM_THUMB_FORMAT_4_TST), "tst" }, -- { X(ASM_THUMB_FORMAT_4_NEG), "neg" }, -- { X(ASM_THUMB_FORMAT_4_CMP), "cmp" }, -- { X(ASM_THUMB_FORMAT_4_CMN), "cmn" }, -- { X(ASM_THUMB_FORMAT_4_ORR), "orr" }, -- { X(ASM_THUMB_FORMAT_4_MUL), "mul" }, -- { X(ASM_THUMB_FORMAT_4_BIC), "bic" }, -- { X(ASM_THUMB_FORMAT_4_MVN), "mvn" }, -+ { X(ASM_THUMB_FORMAT_4_EOR), {'e', 'o', 'r' }}, -+ { X(ASM_THUMB_FORMAT_4_LSL), {'l', 's', 'l' }}, -+ { X(ASM_THUMB_FORMAT_4_LSR), {'l', 's', 'r' }}, -+ { X(ASM_THUMB_FORMAT_4_ASR), {'a', 's', 'r' }}, -+ { X(ASM_THUMB_FORMAT_4_ADC), {'a', 'd', 'c' }}, -+ { X(ASM_THUMB_FORMAT_4_SBC), {'s', 'b', 'c' }}, -+ { X(ASM_THUMB_FORMAT_4_ROR), {'r', 'o', 'r' }}, -+ { X(ASM_THUMB_FORMAT_4_TST), {'t', 's', 't' }}, -+ { X(ASM_THUMB_FORMAT_4_NEG), {'n', 'e', 'g' }}, -+ { X(ASM_THUMB_FORMAT_4_CMP), {'c', 'm', 'p' }}, -+ { X(ASM_THUMB_FORMAT_4_CMN), {'c', 'm', 'n' }}, -+ { X(ASM_THUMB_FORMAT_4_ORR), {'o', 'r', 'r' }}, -+ { X(ASM_THUMB_FORMAT_4_MUL), {'m', 'u', 'l' }}, -+ { X(ASM_THUMB_FORMAT_4_BIC), {'b', 'i', 'c' }}, -+ { X(ASM_THUMB_FORMAT_4_MVN), {'m', 'v', 'n' }}, - }; - #undef X - -@@ -428,10 +428,10 @@ typedef struct _format_vfp_op_t { - char name[3]; - } format_vfp_op_t; - static const format_vfp_op_t format_vfp_op_table[] = { -- { 0x30, "add" }, -- { 0x34, "sub" }, -- { 0x20, "mul" }, -- { 0x80, "div" }, -+ { 0x30, {'a', 'd', 'd' }}, -+ { 0x34, {'s', 'u', 'b' }}, -+ { 0x20, {'m', 'u', 'l' }}, -+ { 0x80, {'d', 'i', 'v' }}, - }; - - // shorthand alias for whether we allow ARMv7-M instructions - -From bfd5a0350a0d53f52695d373dae6ee367971b145 Mon Sep 17 00:00:00 2001 -From: Angus Gratton -Date: Fri, 9 May 2025 14:34:09 +1000 -Subject: [PATCH 3/3] lib/littlefs: Fix string initializer in lfs1.c. - -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 ---- - lib/littlefs/lfs1.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/littlefs/lfs1.c b/lib/littlefs/lfs1.c -index 6a3fd670012cc..ec18dc470258c 100644 ---- a/lib/littlefs/lfs1.c -+++ b/lib/littlefs/lfs1.c -@@ -2141,7 +2141,7 @@ int lfs1_format(lfs1_t *lfs1, const struct lfs1_config *cfg) { - .d.elen = sizeof(superblock.d) - sizeof(superblock.d.magic) - 4, - .d.nlen = sizeof(superblock.d.magic), - .d.version = LFS1_DISK_VERSION, -- .d.magic = {"littlefs"}, -+ .d.magic = {'l', 'i', 't', 't', 'l', 'e', 'f', 's'}, - .d.block_size = lfs1->cfg->block_size, - .d.block_count = lfs1->cfg->block_count, - .d.root = {lfs1->root[0], lfs1->root[1]}, diff --git a/micropython.changes b/micropython.changes index 605e760..5d47cad 100644 --- a/micropython.changes +++ b/micropython.changes @@ -1,3 +1,18 @@ +------------------------------------------------------------------- +Fri Aug 15 08:13:39 UTC 2025 - Dominik Heidler + +- Version 1.26.0 + * Added machine.I2CTarget for creating I2C target devices on multiple ports. + * New MCU support: STM32N6xx (800 MHz, ML accel) & ESP32-C2 (WiFi + BLE). + * Major float accuracy boost (~28% → ~98%), constant folding in compiler. + * Optimized native/Viper emitters; reduced heap use for slices. + * Time functions standardized (1970–2099); new boards across ESP32, SAMD, STM32, Zephyr. + * ESP32: ESP-IDF 5.4.2, flash auto-detect, PCNT class, LAN8670 PHY. + * RP2: compressed errors, better lightsleep, hard IRQ timers. + * Zephyr v4.0.0: PWM, SoftI2C/SPI, BLE runtime services, boot.py/main.py support. + * mpremote adds fs tree, improved df, portable config paths. + * Updated lwIP, LittleFS, libhydrogen, stm32lib; expanded hardware/CI tests. + ------------------------------------------------------------------- Thu Jul 10 20:22:14 UTC 2025 - Atri Bhattacharya diff --git a/micropython.spec b/micropython.spec index 0b7bf39..11df842 100644 --- a/micropython.spec +++ b/micropython.spec @@ -1,7 +1,7 @@ # # spec file for package micropython # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,15 +20,13 @@ %{?sle15_python_module_pythons} Name: micropython -Version: 1.25.0 +Version: 1.26.0 Release: 0 Summary: Implementation of Python 3 with very low memory footprint License: MIT URL: https://micropython.org/ Source0: %{name}-%{version}.tar.xz Source1: prepare.sh -# PATCH-FIX-UPSTREAM -Patch0: https://patch-diff.githubusercontent.com/raw/micropython/micropython/pull/17269.patch#/micropython-gcc15-string-initialization.patch BuildRequires: openssl BuildRequires: pkgconfig BuildRequires: python3 From c9e59fe971862c8a3b89f27a4ed0ebfb5572a38e533eee407e7c13a8fda9fa36 Mon Sep 17 00:00:00 2001 From: Dominik Heidler Date: Fri, 15 Aug 2025 09:15:21 +0000 Subject: [PATCH 2/2] - Removed micropython-gcc15-string-initialization.patch as included upstream OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/micropython?expand=0&rev=54 --- micropython.changes | 1 + 1 file changed, 1 insertion(+) diff --git a/micropython.changes b/micropython.changes index 5d47cad..f3c8b59 100644 --- a/micropython.changes +++ b/micropython.changes @@ -12,6 +12,7 @@ Fri Aug 15 08:13:39 UTC 2025 - Dominik Heidler * Zephyr v4.0.0: PWM, SoftI2C/SPI, BLE runtime services, boot.py/main.py support. * mpremote adds fs tree, improved df, portable config paths. * Updated lwIP, LittleFS, libhydrogen, stm32lib; expanded hardware/CI tests. +- Removed micropython-gcc15-string-initialization.patch as included upstream ------------------------------------------------------------------- Thu Jul 10 20:22:14 UTC 2025 - Atri Bhattacharya