micropython 更新到 v1.21 版本了

MicroPython、microbit、makecode等
最新动态
回复
头像
shaoziyang
帖子: 3974
注册时间: 2019年 10月 21日 13:48

micropython 更新到 v1.21 版本了

#1

帖子 shaoziyang »

micropython 今天更新到 v1.21 版本了,详细内容稍微贴出。
 

头像
shaoziyang
帖子: 3974
注册时间: 2019年 10月 21日 13:48

Re: micropython 更新到 v1.21 版本了

#2

帖子 shaoziyang »

v1.21:U-module 重命名、压缩模块、IDF 5、板变体和Pico-W BLE

MicroPython的这一版本主要对内置模块进行了重命名,删除了 u 前缀,一个具有可选压缩支持的新deflate模块,引入了板变体,将esp32移植切换为使用IDF 5,并改进了堆管理,支持 RPi Pico W 板载的 BLE,以及STM32H5xx 支持。该项目现在也在使用代码拼写和ruff来提高代码质量。此版本中添加的新开发板有:ARDUINO_NANO_ESP32 和 UM_NANOS3 (esp32 版)、ADAFRUIT_METRO_M7(mimxrt 版)、ARDUINO_PORTENTA_C33 和 VK_RA6M5(renesas ra 版)、ADAFRUIT_ETRO_M4_EXPRESS(samd 版)、NUCLEO_L4A6ZG 和 STM32H573I_DK(stm32 版)。

 对内置模块进行重命名,删除u前缀 —— 例如,utime变为time,uasyncio变为asyncio —— 是为了提高与 CPython 的兼容性,并消除关于是导入名称的 u 版本还是非 u 版本的困惑。现在,应该始终导入非 u 版本,不再考虑 u 命名。唯一剩下的带有 u 前缀的模块是 uctypes,因为它与CPython ctypes模块不兼容。以下模块仍然可以通过其 u 名称进行向后兼容性:array、asyncio、binascii、bluetooth、collections、cryptolib、errno、hashlib、heapq、io、json、machine、os、platform、random、re、select、socket、ssl、struct、time、websocket。这些模块(asyncio除外)也是可扩展的,可以被同名文件覆盖,例如time.py。要强制导入内置模块,必须首先清除(然后还原)sys.path;在这个版本中还实现了对 sys.path 属性进行写入的功能。有关更多信息,请参阅 #9018 的讨论。

此外,导入本身也经过了调整和优化,内置导入不再触及文件系统,这使得典型的内置导入耗时约 0.15ms,而不是 3-5ms。对于导入失败的模块,现在将从 sys.modules 中删除这些模块,以便再次尝试导入。这需要添加“NLR跳转回调”,以便在引发异常时有效地运行某些代码。

对核心运行时的其他改进包括支持f字符串中的转换说明符(例如 !r),通过跟踪最后使用的块来加快增量 GC 周期,添加新的 MICROPY_GC_SPLITHEAPAUTO “自动增长堆”模式,以及支持结构格式的填充字节。文档、示例和测试也进行了总体改进和添加。

对于扩展模块,zlib C 模块已被删除,取而代之的是一个新的 MicroPython 特定的 deflate 模块和 DeflateIO 类,该类经过优化,可提供高效的流压缩和解压缩。zlib(和 gzip)模块现在在 deflate 模块之上用纯 Python 实现。timeq 模块已被删除,它只存在于(u)asyncio的早期版本,不再使用。在 ssl 模块中,添加了SSLContext,以便与 CPython 更加兼容。select 模块现在支持在可能的情况下使用 system/POSIX 轮询,unix 移植版现在使用这个实现,而不是它自己的实现。这意味着 unix 版本现在可以对执行 ioctl 的自定义 Python 对象进行选择/轮询。socket 模块现在支持 SO_BROADCAST,unix 上现在存在 sys.std*.buffer对象。还有一个新的 esp 托管网络驱动程序,用于外部基于 ESP32 的网络协处理器。

mpy-cross 现在允许从 stdin 读取源文件,并将编译后的代码写入 stdout。

esp8266 和 esp32 移植版增加了对 Espressif ESP-NOW 协议的支持,以及设置/获取 WLAN 硬件节能模式的能力。esp8266移植版增加了对板变体的支持,将所有板组合为一个带有FLASH_512K、FLASH_1M 和 OTA 变体的 ESP8266_GENERIC。esp32移植版现在已经完全切换到 ESP-IDF 5,并且所有现有组件都已更新以使用此新IDF(已删除的esp32.hall_sensor()除外)。已为 S2 和 S3 芯片启用 FSM ULP,sockets 现在支持 SO_BINDTODEVICE,并且已实现板级引脚命名和 Pin.board 字典。MicroPython 堆在这个移植版上进行了重新设计,以支持各种各样的内存配置:它现在从 64kbytes 开始,并根据需要自动增长,从IDF堆分配新的段。这意味着,如果只使用少量 RAM,那么带有 SPIRAM 的板具有更快的 GC 收集时间,如果需要,可以使用所有可用的 RAM,并且 IDF 可以访问足够的 RAM 用于 SSL 套接字等。有关更多信息,请参阅 #12141。esp32移植版的通用板也被合并并重命名为 ESP32_GENERIC、ESP32_GENERIC_C3、ESP32_GENERIC_S2 和 ESP32_GENERIC_S3,有些开发板有 SPIRAM 等变体。

mimxrt 移植版对 PWM 和 Pin.irq 进行了修复和改进,并支持 UART 硬件流量控制和 UART.deinit。它还通过 CYW43 驱动程序集成了 WiFi,通过 NimBLE 集成了蓝牙。mbedTLS 绑定已启用证书的时间验证。

renesas-ra 移植版更改了板名以匹配产品名称,更新为使用 FSP v4.4.0,增加了对以下各项的支持:RA6M5 MCU、machine PWM、DAC、RNG 和 SDCard 类、TinyUSB、通过 NimBLE 的蓝牙、通过 lwIP 的网络和mbedTLS。

Pico W 板的 rp2 移植版也增加了蓝牙支持。RPi 板已从 PICO 重命名为 RPi_PICO,并将 PICO_W 重命名为 RPi_PICO_W。Lightsleep 已在该版本上修复,因此它在 WiFi 关闭时可以工作,而 time.time_ns() 现在的分辨率为微秒。

samd 移植版添加了 SPI 和 QSPI 闪存驱动程序,以支持外部闪存上的文件系统。

stm32 移植版增加了对 STM32H5xx MCU 的支持、对 OCTOPI 外围设备的基本支持以及对 STM32L1xx MCU 的 USB 支持。stm 模块增加了新功能,以支持 STM32WL55 上的 sub-GHz 无线电。

在 micropython-lib 中,添加了 SX126x 和 SX127x 芯片组的一个 LoRa 扩展模块,以及 STM32WL55 的驱动程序。此模块同时支持同步和异步(asyncio)模式。此外,作为 u 模块重命名的一部分,urequests 已被重命名为 requests (但为了向后兼容,import urequests 目前仍然有效)。

自上一版本以来,各移植版的代码大小的变化是(文本部分的绝对变化和百分比变化):


代码: 全选

bare-arm: +192 +0.340%
minimal x86: +310 +0.169%
unix x64: +4784 +0.610%
stm32: -524 -0.134%
cc3200: +280 +0.154%
esp8266: +8016 +1.151%
esp32: +112133 +7.293%
mimxrt: +3624 +1.015%
renesas-ra: -2184 -0.348%
nrf: +616 +0.332%
rp2: +1920 +0.595%
samd: -7904 -2.953%

这些数字的变化主要因为:
  • bare-arm、minimal、cc3200、nrf:NLR跳转回调和对可扩展模块的支持
  • unix:mbedTLS 更新到 v2.28.1,支持在 select 模块中轮询 Python 对象
  • stm32:删除 timeq 模块
  • esp8266:添加 espnow 模块
  • esp32:切换到 ESP-IDF 5
  • mimxrt:UART 功能,SSL证书的时间验证
  • renesas ra:移动到 FSP v4.4.0,删除 timeq 模块
  • rp2:machine.PWM 增强
  • samd:舍弃对 VfsLfs1 的支持
自上一版本以来,性能上没有实际的变化。

请注意,这是最后一个对 nightly/unstable 版本使用当前控制方案的版本,因此版本之间的版本控制为v1.200-g(在v1.20.0版本之后)。接下来,nightly 版本现在将被称为预览版本,并使用下一个版本号进行版本控制。例如,如果上一个版本是v1.21.0,那么预览版本的形式将是v1.22.0-preview.g。有关讨论,请参阅 #12127

感谢所有为本次发布做出贡献的人:Adam Green, Alexander Wilde, algonell, Andrew Leech, Andy Piper, Angus Gratton, Armin Brauns, brave ulysses, Brett Cannon, Brian 'redbeard' Harrington, Carlosgg, Chris Wilson, Christian Clauss, Damien George, Damien Tournoud, Daniël van de Giessen, David Grayson, David Lechner, David Yang, dotnfc, Duncan Lowther, Elecia White, elibdev, Elvis Pfutzenreuter, Felix Dörre, Francis Dela Cruz, Glenn Moloney, glenn20, iabdalkader, Ihor Nehrutsa, Jared Hancock, Jim Lipsey, Jim Mussared, Jon Nordby, Jonas Scharpf, Jos Verlinde, Kwabena W. Agyeman, Luca Burelli, marble, Mark Grosen, mbedNoobNinja, mcskatkat, Mingjie Shen, Mirko Vogt, Nicholas H. Tollervey, Oliver Joos, Ondrej Wisniewski, patrick, Peter Harper, Phil Howard, Philipp Ebensberger, Rene Straub, robert-hh, Sebastian Romero, Seon Rozenblum, stephanelsmith, stijn, Takeo Takahashi, Thomas, Tobias Thyrrestrup, UnexpectedMaker, Victor Rajewski, vsfos, Wang Xuancong, Wanlin Wang, Wilko Nienhaus, Wind-stormger, Yaroslav Halchenko, Yilin Sun, Yuuki NAGAO.


本次发布的工作部分由GitHub赞助商资助,部分由George Robotics、Planet Innovation、Espressif、Arduino、乐高教育和OpenMV资助。

下面是根据git提交历史生成的更改的详细列表,并将其组织为多个部分。 

Main components

all:
  • fix spelling mistakes based on codespell check
  • fix strings with backslash by using raw string literals
  • fix various Python coding inconsistencies found by ruff
  • fix cases of Python variable assigned but never used
  • rename MPQSTRumodule to MPQSTRmodule everywhere
  • rename mpumodule, mpmoduleumodule to remove the “u” prefix * rename modumodule, ^umodule to remove the “u” prefix
  • rename UMODULE to MODULE in preprocessor/M…
 
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章