MicroPython 更改日志

========

2021 年 9 月 2 日星期四 00:07:13 +1000

v1.17 F-strings, new machine.I2S class, ESP32-C3 support and LEGO_HUB_NO6 board

此版本的 MicroPython 添加了对 f-strings (PEP-498) 的支持,与普通 Python 相比有一些限制。F 字符串本质上是 "".format() 的语法糖,使格式化字符串更加方便。对核心运行时的其他改进包括在有两个参数(一个 errno 代码和一个字符串)时漂亮地打印 OSError、在主线程上调度 KeyboardInterrupt,以及支持优化形式的 StopIteration 的单个参数。

machine 模块中添加了一个新的 I2S 类,支持 esp32 和 stm32 端口。这为在阻塞、非阻塞和基于 asyncio 的操作中传输和接收音频数据提供了一致的 API。此外,json 模块支持转储和转储函数中的“分隔符”参数,并且 framebuf 现在包括一种使用调色板在不同格式的帧缓冲区之间进行 blit 的方法。还添加了一个新的便携式 machine.bitstream 功能,该功能可以输出具有可配置时序的位流,并用作跨端口以通用方式驱动 WS2812 LED 的基础。

对存储库目录布局进行了一些重组,所有第三方代码现在都在 lib/ 目录中。并且添加了一个新的顶级目录 shared/ ,其中第一方代码以前在 lib/ 中移动到那里。

The docs 通过对 rp2 部分的增强和添加以及 zephyr 端口的新快速参考进行了进一步改进。术语主/从已被控制器/外设取代,主要与 I2C 和 SPI 使用有关。并且 u-module 引用已被替换为没有 u-前缀的模块名称,以帮助清除 MicroPython 中模块的预期用途。

对于 esp8266 和 esp32 端口,隐藏网络现在包含在 WLAN 扫描结果中。在 esp32 上,RMT 类通过 idle_level 和 write_pulses 模式得到增强。初步支持带有 GENERIC_C3 和 GENERIC_C3_USB 板的 ESP32-C3 芯片。

JavaScript 端口已经对其 Makefile 和垃圾收集器实现进行了重新设计,因此它可以使用 asyncify 与最新的 Emscripten 一起编译和运行。

mimxrt 端口看到增加了硬件 I2C 和 SPI 支持,以及一些额外的方法到机器模块。还支持 Hyperflash 芯片。

nrf 端口现在具有完整的 VFS 存储支持,在回溯时启用源代码行,并具有与其他端口一致的 .mpy 特性。

对于 rp2 端口,现在有更多的板卡可配置性,并且添加了更多板卡。

stm32 端口有一个新的 LEGO_HUB_NO6 板定义,其中包含如何让这个 LEGO Hub 运行股票 MicroPython 的详细信息。现在还支持更改 STM32WB MCU 上的 CPU 频率。并且 USBD_xxx 描述符选项已重命名为 MICROPY_HW_USB_xxx。

感谢为此版本做出贡献的所有人:Amir Gonnen、Andrew Scheller、Bryan Tong Minh、Chris Wilson、Damien George、Daniel Mizyrycki、David Lechner、David P、Fernando、finefoot、Frank Pilhofer、Glenn Ruben Bakke、iabdalkader、Jeff Epler、Jim Mussared、Jonathan Hogg、Josh Klar、Josh Lloyd、Julia Hathaway、Krzysztof Adamski、Matúš Olekšák、Michael Weiss、Michel Bouwmans、Mike Causer、Mike Teachman、Ned Konz、NitiKaur、Vanoclyke , Peter Hinch, Peter Züger, Philipp Ebensberger, robert-hh, Roberto Colistete Jr, Sashkoiv, Seon Rozenblum, Tobias Thyrrestrup, Tom McDermott, Will Sowerbutts, Yonatan Goldschmidt。

下面是一个详细的更改列表,从 git 提交历史生成,并组织成部分。

主要成分

==============

全部:

- 修复了 -fsanitize=undefined 中的带符号移位和 NULL 访问错误

- 更新以指向新共享/目录中的文件

py 核心:

- mpstate:使线程本地例外

- mpstate:在主线程上安排KeyboardInterrupt

- mperrno: 添加 MP_ECANCELED 错误代码

- makeqstrdefs.py:不要在预处理中明确包含 .h 文件

- 标记字节码解码宏中未使用的参数

- objexcept:当它有 2 个参数时,也会打印出漂亮的 OSError

- makeversionhdr: 将 --tags arg 添加到 git describe

- vm: 在 yield-from 操作码中简化 MP_OBJ_STOP_ITERATION 的处理

- objexcept: 使 mp_obj_exception_get_value 支持子类 excs

- 支持单参数优化 MP_OBJ_STOP_ITERATION

- 介绍和使用 mp_raise_type_arg helper

- modsys:通过使用异常帮助程序优化 sys.exit 的代码大小

- objexcept:使 mp_obj_new_exception_arg1 内联

- obj:修复 mp_obj_is_integer 的注释格式

- 发射:在need_stack_settled 中重用need_reg_all func

- 发射性:确保堆栈在分支中是安全的

- 运行时:修复原生类型子类的 bool 一元操作

- builtinimport:修复包含 do_execute_raw_code() 的条件

- mkrules:如果不存在则自动构建mpy-cross

- 实现部分 PEP-498 (f-string) 支持

- 词法分析器:在词法分析器上清除 fstring_args vsstr 免费

- mkrules.mk:在“制作子模块”中进行子模块同步

extmod:

- btstack:将缺少的调用添加到 mp_bluetooth_hci_uart_deinit

- btstack:在执行操作之前检查 BLE 是否处于活动状态

- uasyncio:在创建任务之前获取地址并绑定服务器套接字

- axtls-include: 添加 axtls_os_port.h 自定义 axTLS

- 更新加密算法、re1.5、uzlib 到 lib

- moduselect:有条件地编译select()

- 灵活:修复 l2cap_send 中的泄漏,如果 send-while-stalled

- btstack/btstack.mk:使用-Wno-implicit-fallthrough,而不是=0

- utime:当 >= 到 0ms 时总是调用 mp_hal_delay_ms

- modbluetooth:将 MTU 值限制为 32->UINT16_MAX

- 灵活:允许 modbluetooth 绑定挂钩“发送的 HCI 数据包”

- 灵活:为 l2cap_send 添加“内存停滞”机制

- uasyncio:在 open_connection 中使用套接字创建中的地址信息

- modujson:添加对转储/转储分隔符关键字参数的支持

- modlwip:修复关闭和清理 UDP 和原始套接字

- modbluetooth:将 send_update 参数添加到 gatts_write

- 添加machine.bitstream

- modframebuf:通过调色板在不同格式之间启用 blit

lib:

- tinyusb:更新到版本 0.10.1

- pico-sdk:更新到 1.2.0 版

- utils/stdout_helpers:使 mp_hal_stdout_tx_strn_cooked 高效

- axtls:切换到 micropython/axtls 的 repo

- axtls:更新到最新的 axtls 2.1.5 并有额外的提交

- re1.5:将 re1.5 代码从 extmod 移动到 lib

- uzlib:将 uzlib 代码从 extmod 移动到 lib

- 加密算法:将加密算法代码从 extmod 移动到 lib

- 根据这些目录的内容更新自述文件

司机:

- neopixel:添加常用的基于machine.bitstream的neopixel模块

- neopixel:优化 fill() 以提高速度

- neopixel:减少驱动程序的代码大小

- cyw43:修复 cyw43_deinit 使其可以连续调用多次

- cyw43:如果接口未激活,则使 wifi 加入失败

mpy-cross:

- 使用 Emscripten 构建时禁用堆栈检查

支持组件

==================

文档:

- 库:记录新的 esp32.RMT 功能并修复 wait_done

- 库:警告 ustruct 不处理格式字符串中的空格

- esp8266/tutorial: 将 flash 模式从 dio 更改为 doout

- 在 I2C 和 SPI 中用控制器/外设替换主/从

- rp2:增强quickref并将图像更改为Pico pinout

- rp2:更新一般部分以提供简要的技术概述

- library/utime.rst:阐明 sleep ms/us 的行为和精度

- library/uasyncio.rst: 文档流 readexactly() 方法

- library/machine.I2S.rst:修复示例中 sd 引脚的使用

- zephyr:添加 Zephyr 端口的快速参考

- library/zephyr:添加特定于 Zephyr 端口的库

- 模板:将 unix 和 zephyr 快速引用链接添加到 top-index

- 将 ufoo.rst 重命名为 foo.rst

- 在所有文档中用 foo 替换 ufoo

- library/index.rst:阐明模块命名和目的

- library/builtins.rst: 添加模块标题

- library/network.rst:简化套接字导入

- 为 machine.bitstream 和 neopixel 模块添加文档

- 库:修复 :term 的用法:用于冻结模块引用

- esp8266:对软件工具使用等宽

- 参考:提到切片内存视图会导致分配

examples:没有特定于此组件/端口的更改

测试:

- extmod:使 uasyncio_heaplock 测试更具确定性

- cpydiff/modules_struct_whitespace_in_format:运行黑色

- extmod/ujson:为转储/转储分隔符参数添加测试

- run-multitests.py:添加广播和等待设施

- multi_bluetooth/ble_subscribe.py:添加订阅测试

- extmod/vfs_fat_finaliser.py:确保在从未使用的 GC 块上分配

- 基础知识:将 f 字符串调试打印拆分为带有 .exp 的单独文件

- pybnative:让while.py 在没有pyb.delay 的板上测试运行

工具:

- 自动构建:添加脚本以构建发布固件

- 删除过时的 build-stm-latest.sh 脚本

- ci.sh: 在 ci_powerpc_setup 中运行 apt-get update

- makemanifest.py:允许将标志传递给mpy-tool.py

- 自动构建:添加 mimxrt 端口以构建用于夜间构建的脚本

- pyboard.py: 添加 cmd-line 选项使软复位可配置

- mpremote:连接列表输出中PID和VID的交换顺序

- ci.sh:构建 unix dev 变体作为 macOS CI 的一部分

- ci.sh:构建 GENERIC_C3 板作为 esp32 CI 的一部分

- 自动构建:使用单独的 IDF 版本来构建更新的 esp32 SoC

- 自动构建:将 FeatherS2 和 TinyS2 添加到 esp32 自动构建

- mpremote:为挂载的文件添加查找位置

- mpremote:在不受支持的 RemoteFile.seek 上引发 OSError

- 自动构建:将 MIMXRT1050_EVKB 板添加到日常构建中

- ci.sh: 添加 mpy-cross 构建到 nrf 端口

- codeformat.py:在代码格式中包含ports/nrf/modules/nrf

- gen-cpydiff.py: 不要在 diff 输出中将 foo 重命名为 ufoo

- 自动构建:为硅认知 wESP32 添加自动构建

- mpremote:在 VID/PID 为 None 的情况下修复连接列表

- mpremote:为“连接列表”添加“devs”快捷方式

- mpremote:删除对 pyb.USB_VCP 输入/输出专业化的支持

- autobuild:不要使用“-B”作为make,它已经是一个全新的构建

- pyboard.py: 将 --no-exclusive/--soft-reset 移出互斥组

- pyboard.py: 使 --no-follow 使用与 --follow 相同的变量

- pyboard.py: 添加 --exclusive 以匹配 --no-exclusive

- pyboard.py: 使 --no-soft-reset 与其他参数一致

- uncrustify:在文件末尾强制换行 1

- mpremote:将版本提高到 0.0.6

CI:

- 工作流:添加工作流以构建和测试 javascript 端口

- 工作流程:从 Coveralls 切换到 Codecov

- 工作流:从 lcov 切换到 gcov

- 工作流:添加工作流以构建和测试 unix dev 变体

端口

==========

所有端口:

- 使用普通的 mp_hal_stdout_tx_strn_cooked 而不是自定义的

- 更新加密算法,uzlib 到 lib

- 将 USBD_VID/PID 配置宏重命名为 MICROPY_HW_USB_VID/PID

裸臂端口:没有特定于此组件/端口的更改

cc3200 端口:没有特定于此组件/端口的更改

esp8266 端口:

- 在 NeoPixel 驱动中添加 __len__ 以支持迭代

- Makefile:添加更多的 libm 文件来构建

- 在 WLAN.scan 结果中包括隐藏网络

- 用 machine.bitstream 替换 esp.neopixel

- 删除 machine_bitstream 中 end_ticks 的死代码

esp32 端口:

-boards/sdkconfig.base:禁用 MEMPROT_FEATURE 从 IRAM 分配

- 在 NeoPixel 驱动中添加 __len__ 以支持迭代

- main: 允许覆盖 MICROPY_DIR

- esp32_rmt:在较新的 IDF 版本中修复 RMT 循环

- esp32_rmt:使用 idle_level 和 write_pulses 模式增强 RMT

- 添加新的 machine.I2S 类以支持 I2S 协议

- machine_spi:计算实际达到的波特率

- machine_hw_spi:使用 2 项 SPI 队列进行长传输

- machine_dac:添加MICROPY_PY_MACHINE_DAC选项,默认开启

- machine_i2s:添加MICROPY_PY_MACHINE_I2S选项,默认开启

- 修复 mp_int_t、size_t 和 uintptr_t 的使用

- 添加对 ESP32C3 SoC 的初始支持

-boards/GENERIC_C3:添加基于C3的通用板

- modmachine:在machine.idle()中释放GIL

- mphalport:在 delay_ms 中总是至少产生一次

- machine_uart: 添加flow kw-arg 开启硬件流控

-板:添加硅认知wESP32板配置

- mpconfigport.h:启用反向和就地特殊方法

- 在 WLAN.scan 结果中包括隐藏网络

- makeimg.py:从 sdkconfig 中获取引导加载程序和分区偏移量

- 默认启用MICROPY_PY_FSTRINGS

- machine_hw_spi: 在传输过程中释放 GIL

- machine_pin:根据芯片变体检查非输出引脚

- 用 machine.bitstream 替换 esp.neopixel

- 删除 machine_bitstream 中 end_ticks 的死代码

- 板:添加 GENERIC_C3_USB 板,支持 USB 串行/JTAG

javascript 端口:

- 返工 Makefile 和 GC,使其适用于最新的 Emscripten

- Makefile:抑制来自数组边界的编译器错误

- Makefile:将变量更改为 EXPORTED_RUNTIME_METHODS

mimxrt 端口:

- 将 calc_weekday 辅助函数移动到 timeutils

- machine_spi:将SPI类添加到machine模块

- moduos:在启动时使用 TRNG 播种 PRNG

- 板:将 vfs 分区开始设置为 1 MBbyte

- main: 如果 boot.py 失败则跳过运行 main.py

- main:扩展help()返回的信息

- mimxrt_flash:删除注释掉的代码

- modmachine:在machine模块中添加一些小方法

- machine_led:使用 mp_raise_msg_varg 助手

- machine_i2c:将基于硬件的machine.I2C添加到machine模块

- 添加对 Hyperflash 芯片的支持

- 板:添加对 MIMXRT1050_EVKB 板的支持

- machine_pin:为Pin实现ioctl

最小端口:

- Makefile:添加对使用用户 C 模块构建的支持

nrf 端口:

- 模块:在SPI中用控制器/外设替换主/从

-boards/common.ld:计算未使用的闪存区域

- modules/nrf: 添加新的带有闪存块设备的 nrf 模块

- 驱动程序:添加对使用 Flash 块设备与 SoftDevice 的支持

- mpconfigport.h:设置 MICROPY_PY_NRF 时暴露 nrf 模块

- README:更新 README.md 以反映内部文件系统

- mpconfigport.h:调整 FAT FS 配置

- Makefile:从 make 添加 _fs_size 链接器脚本覆盖

- modules/uos:允许单板配置MICROPY_VFS_FAT/LFS1/LFS2

- mpconfigport.h: 启用 FS 时启用 MICROPY_PY_IO_FILEIO

- qstrdefsport.h:为内置 FS 挂载点添加条目

- main:为内部flash FS添加自动挂载和自动格式化挂钩

- 板:为 FAT/LFS1/LFS2 启用所需的功能

- 方便使用冻结清单

- 板:当 nrf51 目标上存在 SD 时,将 FROZEN_MANIFEST 设置为空白

- 模块/脚本:添加文件系统格式化脚本

- Makefile:为所有目标设置默认清单文件

- mphalport:为 mp_hal_time_ns() 添加虚拟函数

- 板:为所有目标板启用MICROPY_VFS_LFS2

- modules/uos: 将 ilistdir 添加到 uos 模块

- modules/nrf: 添加启用/禁用 DCDC 的功能

- 在回溯上启用源代码行

- 设置与文档和其他端口一致的 .mpy 特性

pic16bit 端口:没有特定于此组件/端口的更改

powerpc 端口:没有特定于此组件/端口的更改

qemu-arm 端口:没有特定于此组件/端口的更改

rp2 端口:

- 在 RTC 中使用 0=星期一日期时间约定

- machine_rtc:在RTC.datetime中,自动计算工作日

- CMakeLists.txt:抑制 pico-sdk 和 tinyusb 的编译器错误

- tusb_config.h:将 CFG_TUD_CDC_EP_BUFSIZE 设置为 256

- machine_uart:添加硬件流控支持

- machine_uart:允许覆盖默认机器 UART 引脚

- machine_i2c:允许开发板使用新宏配置 I2C 引脚

- machine_spi:允许开发板使用新宏配置 SPI 引脚

- machine_uart:修复 poll ioctl 以检查硬件 FIFO

- machine_uart:修复当 FIFO 有字符但 ringbuf 没有时读取

- tusb_port:允许板子配置USB VID和PID

-boards/ADAFRUIT_FEATHER_RP2040:配置自定义VID/PID

-boards/ADAFRUIT_FEATHER_RP2040:配置I2C/SPI默认引脚

-boards/SPARKFUN_PROMICRO:配置UART/I2C/SPI默认引脚

-boards/SPARKFUN_THINGPLUS:配置I2C/SPI默认引脚

- 板:添加 AdafruitItsyBitsy RP2040

- 板:添加 Adafruit QT Py RP2040

- 板:添加 Pimoroni Pico LiPo 4MB

- 板:添加 Pimoroni Pico LiPo 16MB

- 版块:添加 Pimoroni Tiny 2040

- CMakeLists.txt:允许板子的 cmake 设置清单路径

- 默认启用MICROPY_PY_FSTRINGS

- Makefile:添加“子模块”目标,以匹配其他端口

- rp2_flash: 在调用 flash_erase/program 时禁用 IRQ

- CMakeLists.txt:添加选项以启用双击重置到 bootrom

- mpconfigport.h:允许板子添加根指针

samd 端口:

- 添加对使用用户 C 模块构建的支持

stm32 端口:

- softtimer:添加 soft_timer_reinsert() 辅助函数

- mpbthciport:从 sysstick 更改为用于 BT 调度的软定时器

- 提供与软定时器集成的自定义BTstack runloop

- usb: 使 irq 的默认触发器启用所有事件

- boardctrl:如果 boot.py 有错误,跳过运行 main.py

- sdio:修复对 H7 上 DMA 流的未定义引用

- dma:为H7添加DMAMUX配置以修复dma_nohal_init

- main: 在 main 的末尾调用 mp_deinit()

- adc:允许对H7使用ADC12和ADC3

- adc:定义用于内部通道的ADC实例

- adc:简化和概括如何定义 pin_adcX 表

- 添加新的 machine.I2S 类以支持 I2S 协议

- 板/NUCLEO_F446RE:修复 I2C1 引脚分配以匹配数据表

- 在 I2C 和 SPI 中用控制器/外设替换主/从

- systick:延迟毫秒时总是 POLL_HOOK

- sdram:使 SDRAM 测试缓存感知,并且可选失败与 msg

-板/NUCLEO_F446RE:启用CAN总线支持

- 板:添加对 SparkFun STM32 MicroMod 处理器板的支持

- uart:修复 LPUART1 波特率设置/获取

- uart:支持 LPUART1 低波特率

-板/STM32F429DISC:设置正确的UART2引脚并添加UART3/6

-boards/NUCLEO_F439ZI:为 NUCLEO_F439ZI 添加板定义

-板/LEGO_HUB_NO6:为LEGO_HUB_NO6添加板定义

- Makefile:更新为仅拉入使用过的蓝牙库

- README.md:更新支持的 MCU,以及子模块和 mboot 的使用

- usbd_desc:重命名 USBD_xxx 描述符选项为 MICROPY_HW_USB_xxx

- usbd_cdc_interface:重命名 USBD_CDC_xx opts 为 MICROPY_HW_USB_xx

- powerctrl: 支持改变 WB MCU 的频率

-boards/NUCLEO_H743ZI2:添加修改版的NUCLEO_H743ZI

- mbedtls:修复有关未初始化的 val 的编译警告

- 默认启用MICROPY_PY_FSTRINGS

- 添加 machine.bitstream 的实现

- Makefile:允许扩展 GIT_SUBMODULES 和 LIBS

- stm32_it:支持 WB MCU 上的 TIM17 IRQ

- 在受限板上禁用计算转到

- 存储:使扩展块设备更可配置

-boards/LEGO_HUB_NO6:更改SPI闪存以使用硬件SPI

-boards/LEGO_HUB_NO6:跳过第一个 1MiB 的 SPI 闪存用于存储

-板/LEGO_HUB_NO6:添加make命令来备份/恢复固件

teensy 端口:没有特定于此组件/端口的更改

Unix 端口:

- modffi:在回调中添加锁定GC的选项,以及cfun访问

- Makefile:将 LIB_SRC_C 添加回目标文件列表

- 变体:在标准和开发上启用帮助和帮助(“模块”)

- Makefile:在 arm-linux-gnueabi-gcc 上禁用错误压缩

windows 端口:

- Makefile:将 .exe 扩展名添加到可执行文件名称

- appveyor:更新到 VS 2017 并使用 Python 3.8 进行构建/测试

和风端口:

- machine_spi:添加对硬件SPI的支持

========

2021 年 6 月 18 日星期五 16:38:06 +1000

v1.16 新增mpremote工具,mimxrt端口获取Pin、ADC、UART、RTC和VFS

此版本的 MicroPython 包括一个名为“mpremote”的新命令行工具,旨在成为从命令行远程控制基于 MicroPython 的设备的主要方式。它具有串行终端、文件系统访问、支持在远程设备上安装本地目录以及用于定义自定义命令的宏语言。这个工具可以通过“pip3 install mpremote”从 PyPI 安装,它适用于 Linux、Windows 和 Mac。作为其中的一部分,对 pyboard.py 进行了改进,包括以独占模式打开串行端口以更轻松地管理多个设备。

在 Python 核心中,OSError 异常现在支持“.errno”属性,并且添加了一个选项来编译 MicroPython 没有错误消息,以进一步减少需要的代码大小。REPL 得到了改进,因此它不会对私有方法(以下划线开头的方法,如果还没有输入下划线)进行制表符补全,而且现在还可以在“import”键入后用制表符补全内置模块名称。

相对导入异常有一个小的突破性变化:在 CPython 中进行相同的更改之后,以前的 ValueError 更改为 ImportError。参见提交 53519e322a5a0bb395676cdaa132f5e82de22909。

在 extmod 组件中,uctypes 修复了 FLOAT32 的 ARRAY 的大小和偏移量计算,如果在调用摘要后重用散列,uhashlib 现在会引发异常,并且 urandom 支持将 0 传递给 getrandbits (在 CPython 更改之后)。在uasyncio中,Stream类中增加了readinto方法,修复了两个竞争条件:一个是start_server和wait_closed,一个是取消任务等待任务完成;分别参见 de2e081260395f47d21bf39a97f3461df3d8b94f 和 514bf1a1911ac9173a00820b7e09dfb387e6b941。

esp32 端口现在支持使用新的 CMake 构建系统指定 FROZEN_MANIFEST,在 GPIO32 和 GPIO33 上支持 NeoPixel,在 IDF v4.1 及更高版本中支持 network.LAN,并在 WLAN 中提供新的“重新连接”选项STA 接口,用于配置在 WiFi 出现故障时进行多少次(如果有)重新连接尝试。

mimxrt 端口添加了许多功能,包括:具有内部闪存存储的 VFS 文件系统支持、Pin、Pin.irq 和 ADC 支持、UART、SoftI2C 和 SoftSPI 总线支持、定时器和 RTC 类,以及浮点数字。

rp2 端口现在具有用于配置 RTC 的 machine.RTC 类,以及用于 SparkFun 的 Thing Plus RP2040 和 Pro Micro 板的新板定义文件。

stm32 端口现在支持带有基于 C 的回调的静态软定时器,并且 mboot 已变得更加可配置,特别是 LED 和复位模式选择现在可以由板完全自定义。添加了两个新板:VCC_GND_F407VE 和 VCC_GND_F407ZG。对 SDIO 驱动程序进行了错误修复,以确保 DMA 不会在传输过程中关闭;当使用某些 SPI 总线时,这会影响 WLAN 操作。有关详细信息,请参阅提交 a96afae90f6e5d693173382561d06e583b0b5fa5。UART 的引脚配置已修改,因此现在仅在 RX 和 CTS 上配置上拉,而不是在 TX 和 RTS 上配置;见 748339b28126e69fd2dc2778b2a182901d0a4693。USB_VCP 类有一个新的 irq 方法来设置 USB 数据接收事件的回调。以太网驱动程序现在支持低功耗模式,

在 zephyr 端口,计划回调现在在空闲 REPL 和睡眠期间运行,并且有一个支持 BLE 扫描和广告的初始 ubluetooth 模块。为nucleo_wb55rg 板提供了配置。

下面是一个详细的更改列表,从 git 提交历史生成,并组织成部分。

感谢为此版本做出贡献的所有人!

主要成分

==============

全部:

- 将 mp_keyboard_interrupt 重命名为 mp_sched_keyboard_interrupt

- 用总线替换总线

py 核心:

- objexcept: 支持 OSError 异常的 errno 属性

- 添加编译选项,根本没有任何错误消息

- dynruntime.h: 添加 mp_obj_get_array() 函数

- 配置文件:使用 mp_handle_pending() 引发未决异常

-调度程序:添加 mp_sched_exception() 以调度待处理的异常

- 调度程序:在调度某事时添加可选的端口钩子

- 运行时:从 mp_deinit() 中删除注释掉的代码

- 调度程序:添加缺少的 MICROPY_WRAP_MP_SCHED_EXCEPTION 用法

- repl:从制表符补全中过滤私有方法

- repl:不匹配时输入四个空格

- repl:重构自动完成以减少嵌套

- repl:重构自动完成,提取可重用部分

- repl:自动完成内置模块

- gc:使 gc_lock_depth 每个线程都有一个计数

- mkenv.mk:如果设置了 BUILD_VERBOSE,则不发出有关信息

- objarray:禁止比较不匹配的类型

- objarray:为数组实现更多/更少的比较

- objarray:在 mp_obj_new_memoryview 中使用 mp_obj_memoryview_init 助手

- objarray:修复从内存视图构造内存视图

- nlraarch64:为 Darwin ABI 的函数符号添加下划线前缀

- nlrx64:更正达尔文ABI的检测

- asmx64:支持在 src_r64 参数中使用前 8 个 regs

- 发射器:修复 x86-64 发射器以生成正确的 8/16 位存储

- mkrules.cmake: 添加 MPY_LIB_DIR 和 BOARD_DIR 到 makemanifest 调用

- asmarm:使用内置 func 来刷新 ARM 7 archs 上的 I- 和 D-cache

- 编译:在异步函数外部与/为异步引发错误

- gc:以与 asan 兼容的方式访问根指针列表

- repl: 不要读到 import_str 的末尾

- builtinimport:将相对导入的 ValueError 更改为 ImportError

-emitglue:分配原生 ARM 代码时总是刷新缓存

- stackctrl:禁用堆栈检查时防止未使用的var警告

- gc:仅对 GCC 4.8 及更高版本使用 no_sanitize_address 属性

extmod:

- uasyncio:对于 OSError 异常,使用 .errno 而不是 .args[0]

- 删除用于自动文档生成的旧评论

- moductypes:去除双空行并调试 printf 的

- moductypes:用宏常量替换数字

- moductypes:修复 FLOAT32 数组的大小和偏移量计算

- moduhashlib:在调用摘要后将哈希 obj 置于最终状态

- modurandom:当 getrandbits 值错误时添加错误消息

- modurandom:支持位=0 到getrandbits 的参数

- uasyncio:修复 start_server 和 wait_closed 竞争条件

- uasyncio:将 readinto() 方法添加到 Stream 类

- uasyncio:修复与已取消任务等待完成任务的竞争

- nimble: 删除关于 notify_custom 释放 om 的 TODO 评论

库:

- utils:从 pyexec.h 中删除未使用的 PYEXEC_SWITCH_MODE

- utils:添加ARM半主机实用程序功能

- lwip:切换到使用 GitHub 镜像仓库

- mbedtls: 切换到 LTS 分支 v2.16 当前最新提交

司机:

- sdcard:在 SDCard.readinto 同步循环中添加 sleep_ms(1) 延迟

- cyw43/cyw43_ctrl:使用新的 sdio 启用 API 函数

- cyw43/cywbt:为射频开关添加编译选项

- cyw43/cywbt: 删除硬编码的 UART6 备用功能设置

- display/ssd1306.py: 添加旋转方法

- display/ssd1306.py:添加对 72x40 显示器的支持

mpy-cross:没有特定于此组件/端口的更改

支持组件

==================

文档:

-库/机器:指定初始machine.PWM类

- 库/机器:添加 machine.bootloader 文档

- esp8266:添加关于同时使用 STA_IF 和 AP_IF 的注释

- esp8266:添加手动进入编程模式的说明

- esp8266:阐明 esp8266 中 SSL 的限制并修复拼写错误

- 修正一些拼写错误

- pyboard:修复 pyb.Switch 教程中的错字

- esp32: 将 UART 添加到 quickref

- esp32: 将 WDT 添加到 quickref

- esp32: 将 SDCard 添加到 quickref

- esp8266: 将 WDT 添加到 quickref

- 库:为 rp2 模块及其类添加初始 API 参考

- library/rp2.rst:修复错字覆盖->覆盖

- esp32:将 APA106 添加到 quickref

- esp32:在quickref的GPIO部分提到信号

- esp8266:在quickref的GPIO部分提到信号

- esp8266:在quickref和教程中添加SSD1306

-库:阐明heapq中实现的算法类型

- 库:添加一个空行以修复 ussl 文档的格式

- library/pyb.Pin.rst:更新 Pin.init() 的参数

- rp2: 为 rp2 端口添加骨架文档

- library/machine.RTC.rst:记录日期时间方法并修复前代码

- esp32:文档 WLAN“重新连接”配置选项

示例:没有特定于此组件/端口的更改

测试:

- 对于 OSError 异常,使用 .errno 而不是 .args[0]

- run-multitests.py:提供一些方便的串口设备快捷方式

- multi_bluetooth:为 gatt 字符写入添加性能测试

- 线程:使stress_create.py 在esp32 上测试运行

- 线程:在裸机端口上进行stress_aes.py 测试

- 线程:使 exc1,exit1,exit2,stacksize1,start1 测试在 rp2 上运行

- run-perfbench.py​​:修复本机功能检查

- run-multitests.py:为每一行跟踪输出刷新标准输出

- run-tests.py:默认并行化运行测试

- cpydiff:为 function.__module__ attr 添加测试和解决方法

- 使 float 和 framebuf 测试跳过或在 big-endian archs 上运行

- extmod/btree_gc.py:关闭数据库以避免内存泄漏

- 基础知识:拆分在 CPy 上引发 SyntaxWarning 的文字测试

- run-multitests.py:允许在目标上没有 sys.stdout 的情况下工作

- multi_bluetooth/ble_gap_advertise.py:允许无需设置即可工作

- unix:为整数类型添加 ffi 测试

- cpydiff:为具有溢出值的数组构造函数添加测试

- float:使字节/字节数组构造测试与 obj repr C 一起使用

工具:

- metrics.py:将 rp2 端口添加到可构建的端口表中

- upip.py: 对于 OSError 异常,使用 .errno 而不是 .args[0]

- pyboard.py:支持独占模式打开串口

- gen-cpydiff.py:修复新黑色文档字符串的格式

- makemanifest.py:如果有 FreezeError 则显示目录名称

- mpy_ld.py: 支持 x86-64 arch 的 R_X86_64_GOTPCREL reloc

- pydfu.py:删除默认 VID/PID 值

- ci.sh: 更新 zephyr docker 镜像到 v0.17.3

- ci.sh:在 esp32 构建中使用 FROZEN_MANIFEST 来测试功能

- mpy-tool.py:支持重定位ARMv6 arch

- tinytest-codegen.py:添加命令行选项以排除测试

- ci.sh:构建 Cortex-A9 sabrelite 板作为 qemu-arm CI 的一部分

- pyboard.py:通过 in_raw_repl 变量跟踪原始 REPL 状态

- pyboard.py:将“soft_reset”选项添加到 Pyboard.enter_raw_repl()

- mpremote:添加新的 CLI 实用程序以与远程设备交互

- ci.sh: 构建 mpy-cross 作为 ci_mimxrt_build 的一部分

- mpremote:使用可用端口而不是自动连接列表

- mpremote:在 Windows 上使用信号捕获和处理 ctrl-C

CI:

- 工作流:为 mimxrt 端口添加 CI 工作流

- 工作流:添加工作流以在 MIPS 上构建和运行 unix 端口

- 工作流:添加工作流以在 ARM 上构建和运行 unix 端口

端口

==========

裸臂端口:

- 切换到使用 MICROPY_ERROR_REPORTING_NONE 来减小大小

cc3200 端口:没有特定于此组件/端口的更改

esp8266 端口:

- modnetwork:使用 mp_handle_pending() 引发待处理异常

-boards/GENERIC_512K:添加没有 FS 模块的自定义清单

- 更新清单以指向 micropython-lib 中的新目录

-boards/GENERIC_512K:添加自定义最小_boot.py

esp32 端口:

- CMakeLists.txt:需要 CMake 3.12 版

- 使用新的 CMake 构建系统恢复 FROZEN_MANIFEST 支持

- esp32_rmt:在填写之前清除配置结构

- mpthreadport:不要在 TCB 清理中明确释放线程结构

- mpthreadport:使用二进制信号量代替互斥量

- 在适用的情况下扩展对 S2 系列和 S3 的支持

-板:将TINYPICO板重命名为UM_TINYPICO

-板:添加 UM_FEATHERS2 和 UM_TINYS2 板定义

- board/UM_TINYPICO:修复 sdkconfig 片段的包含

- machine_i2c:允许开发板使用新宏配置 I2C 引脚

- 板:设置 UM_xxx 板上的默认 I2C 和 SPI 引脚

- 板:修复 UM_xxx 板评论中的拼写错误

- 更新清单以指向 micropython-lib 中的新目录

-板:添加M5STACK_ATOM板定义

- espneopixel:添加对 GPIO32 和 GPIO33 的支持

- Makefile:修复 partition-table.bin 的错误目标

- makeimg.py:从分区表加载大小并验证数据是否合适

- partitions-2MiB.csv:更新表以便固件适合

- README:描述如何选择现有IDF的兼容版本

- network_lan:为 IDF v4.1 及更高版本添加以太网支持

- modnetwork:为WLAN STA接口添加“重新连接”选项

- machine_hw_spi:在初始化程序中允许无未使用的引脚

- machine_sdcard:在SPI模式下使用deinit_p去初始化SD总线

javascript 端口:没有特定于此组件/端口的更改

mimxrt 端口:

- 使用 GPT 改进滴答和睡眠功能

- 实现 machine.Pin 类

- 启用内置帮助

- 扩展了 SoftI2C 的 Pin 模块,支持 SoftSPI

- 添加自定义帮助文本并启用帮助(“模块”)

- 启用冻结模块

- 添加对 VFS 和 littlefs 文件系统的闪存支持

-boards/TEENSY40:部署后重新创建flash FS

- 将 Timer 类添加到机器模块中

- 从 MICROPY_EVENT_POLL_HOOK 中删除 __WFE()

- machine_timer:重用任何现有的计时器对象

- machine_timer:将Timer时钟源保留在IPG时钟

- machine_rtc:在machine模块中添加RTC类

- 添加浮点支持

- 启用许多 Python 和一些 extmod 功能

- machine_adc:将ADC类添加到machine模块

-板:为Teensy 4.1添加板配置文件

- machine_rtc:更改 RTC.datetime() 元组以匹配其他端口

- machine_rtc:保持微秒偏移

- machine_uart:将UART类添加到machine模块

- machine_pin:实现 pin.irq() 功能

- modutime:扩展时间模块

minimal 端口:没有特定于此组件/端口的更改

nrf 端口:

- 板/微比特:在适当的地方使用 mp_sched_exception()

- 添加machine.memXX,并允许板子自定义一些功能

- 板:添加对 evk_nina_b3 板的支持

- 向 Makefile 添加更多数学源,并启用 log2 实现

pic16bit 端口:

- Makefile:使 XC 编译器版本可由用户配置

powerpc 端口:没有特定于此组件/端口的更改

qemu-arm 端口:

- 通过 sabrelite 板添加对 Cortex-A9 的支持

rp2 端口:

- 板:为 SparkFun Thing Plus RP2040 添加板定义

- 板:为 SparkFun Pro Micro 板添加板定义

- tusb_port:将设备的唯一ID添加到USB ID

- 移动 manifest.py 到板目录

- mpthreadport:添加 mp_thread_deinit 以在软复位时复位 core1

- CMakeLists.txt:在 PICO_SDK_COMPONENTS 中包含 tinyusb_common

- machine_rtc:添加对 RTC 的初始支持

- machine_rtc: 检查 rtc_set_datetime 的返回值

samd 端口:没有特定于此组件/端口的更改

stm32 端口:

-boards/pllvalues.py:支持更广泛的 F413 PLL 值

- machine_timer:提高Timer构造函数和init的可用性

- mboot: 允许在没有密钥的情况下解包 dfu

- 更正项目自述文件中的拼写错误

- uart:修复H7 UART时钟源配置

- softtimer:添加对基于 C 的回调的支持

- softtimer:支持静态软定时器实例

- boardctrl:为重置模式值添加常量

- boardctrl:选择时在 LED 上显示第一个复位模式状态

- mboot:允许开发板将源文件添加到构建中

- adc:允许mboot使用基本的ADC功能

- mboot:修复 mp_hal_delay_us() 并添加 mp_hal_ticks_ms()

- mboot:允许开发板自定义链接器脚本

- mboot:允许mboot放置在flash中的任意位置

- sdcard: 允许配置用于 SD/MMC 卡的 SDMMC periph

- uart:为UART 1/5/7/8 启用硬件流控制

- sdio:添加重新/启用SDIO/SDIOIT的功能

-boards/PYBD_SF2:启用射频开关编译选项

- sdio:允许配置用于 SDIO 的 SDMMC periph

- 板:将 F4 MCU 的默认 LSI_VALUE 更改为 32000

- powerctrl: 添加MICROPY_HW_ENTER_BOOTLOADER_VIA_RESET 选项

- boardctrl:调整运行boot.py、main.py的逻辑

- mboot: 添加 MBOOT_LEAVE_BOOTLOADER_VIA_RESET 选项

- mboot:使 LED 和复位模式选择更具可配置性

-板:添加VCC_GND_F407VE板

-板:添加VCC_GND_F407ZG板

- sdio:修复SDIO DMA关闭mid transfer的情况

- uart:只在RX和CTS上配置上拉,TX和RTS不上拉

- mboot:从线程模式离开引导加载程序,而不是从 IRQ

-板/NUCLEO_L432KC:修复FS大小并启用LFS1文件系统

-boards/PYBD_SF2:禁用数组边界的 GCC 11 警告

- usb: 添加USB_VCP.irq方法,设置USB数据RX回调

- 板:在 VCC_GND 板上启用 MICROPY_HW_SPIFLASH_ENABLE_CACHE

- sdram:使用 GCC 11 防止数组边界警告

- eth:添加低功耗模式配置选项

- eth:修复 eth_link_status 函数以使用正确的 BSR 位

teensy 端口:

- 提供自己的 gc_collect 实现,不使用 stm32

- 更正项目自述文件中的拼写错误

Unix 端口:

- modffi:使用联合来传递/返回 FFI 值

- main: 增加 ARM 架构的堆栈限制

- modffi:修复 Python 整数和 ffi 类型之间的转换

- 修复由于整数转换而在 arm64-darwin 上的构建

windows 端口:

- mpconfigport.h:启用 unix 端口中也存在的功能

和风端口:

- 在 REPL 和 mp_hal_delay_ms 期间运行预定的回调

- modmachine:添加machine.idle()

- 板:为nucleo_wb55rg 板添加配置

- 更新 Zephyr v2.6.0 的磁盘访问配置

- 禁用 CONFIG_NET_SOCKETS_POSIX_NAMES

- 更新至 Zephyr v2.6.0

- 添加初始 ubluetooth 模块集成

- 板:在 nucleo_wb55rg 板上启用 ubluetooth

========

2021 年 4 月 19 日星期一 00:11:51 +1000

v1.15 esp32 移植到 CMake 并支持 S2,rp2 的新特性

此版本的 MicroPython 在核心中添加了对使用 CMake 作为构建系统的一般支持。rp2 端口被合并以使用新的 CMake 文件,并且 esp32 和 zephyr 端口已切换为构建为纯 CMake 项目。这三个端口具有围绕 CMake 构建的 SDK,此更改应该使它们更易于维护和使用。

作为这项工作的一部分,基于 CMake 的端口现在支持用户 C 模块。用户 C 模块的作者现在应该提供 .mk 和 .cmake 配置文件(遵循文档和示例)。

修复了多精度整数库中的错误,即长除法例程中的算术溢出。在此修复之前,某些整数除法会花费过多时间并产生不正确的结果。有关详细信息,请参阅提交 0a59938574502b19b3d685133084399c090d3c11。还有一个正则表达式的修复程序,用于在编译表达式时检查和报告字节溢出错误。参见提交 172fb5230a3943eeb6fbbb4de1dc56b16e2a7637。

在 uasyncio 库中,添加了一个新的 MicroPython 扩展 ThreadSafeFlag,它可以从 asyncio 事件循环之外设置,例如其他线程、IRQ 或调度程序上下文。它允许像 IRQ 这样的抢占式代码向 asyncio 任务发出信号,这些任务本质上是合作的(非抢占式的)。还添加了 asyncio.current_task(),其语义与 CPython 相同。

正如上面提到的,esp32端口已经转变为完全基于CMake的项目,和传统的化妆功能已被删除(虽然一个简单的辅助Makefile中仍然保持顶级构建/部署命令与其他一致端口)。由于迁移到 CMake,network.LAN 支持已被删除,将来会重新添加(如果需要 LAN,请使用之前的版本)。esp32 模块中添加了对非易失性存储的基本支持。还初步支持 ESP32S2 SoC 和 USB,定义了 GENERIC_S2 板。

在mimxrt 和samd 端口上,USB CDC TX 处理已得到修复,因此现在可以可靠地工作。

rp2 端口启用了更多核心 Python 功能,同时启用了 ubinascii.crc32()、uos.VfsFat 和 machine.Signal 类以及 uerrno 模块。添加了 uos.urandom() 并且 machine.freq() 现在可以更改 CPU 时钟频率。machine.UART 类现在支持 timeout/timeout_char、倒置的 TX/RX 线和带有可配置大小缓冲区的缓冲 TX/RX。对于 PIO,StateMachine 添加了 restart()、rx_fifo() 和 tx_fifo() 辅助函数,并支持 FIFO 加入。现在支持用户 C 模块(通过 CMake)和构建不同的板配置(默认仍然是 PICO 板)。USB 可靠性已得到改进。

对于stm32端口,现在有更多的板卡配置选项,例如USBD VID/PID和细粒度的模块选择。UART 类现在支持 L0、L4、H7 和 WB MCU 上的 LPUART。WB MCU 修复了访问 BLE ACL 空闲缓冲区列表的竞争条件,以及解决低级 BLE 错误的方法。

zephyr 端口已更新为使用 zephyr v2.5.0,现在将 MicroPython 构建为 CMake 目标。

下面是详细的更改列表,从 git 提交历史生成,并组织成部分。

主要成分

==============

全部:

- 将 BYTES_PER_WORD 重命名为 MP_BYTES_PER_OBJ_WORD

- 添加 .git-blame-ignore-revs 以修复 gitblame 输出

py 核心:

- gc: 不要在 gc.h 中包含 mpconfig.h 和 misc.h

- 删除 BITS_PER_WORD 定义

- 将 BITS_PER_BYTE 重命名为 MP_BITS_PER_BYTE

- 将 WORD_MSBIT_HIGH 重命名为 MP_OBJ_WORD_MSBIT_HIGH

- gc:将 stdint.h 的包含更改为 stddef.h

- mpz: 修复 mpn_div 中借位溢出

- 添加核心cmake规则文件

- 在核心 cmake 自定义命令中扩展列表

- mkrules.cmake:将 QSTR_DEFS 变量重命名为 QSTRDEFS

- mkrules.cmake:将MICROPY_QSTRDEFS_PORT 添加到qstr 构建过程

- nlr:为 AArch64 实现 NLR

- nlrx64:修复评论中的错字

- vm:用于跟踪使用 mp_printf,并在启用线程时打印状态

- 将剩余的对象类型重命名为 mp_type_xxx 形式

- py.cmake:将 qstr 辅助代码移动到 micropy_gather_target_properties

- py.cmake: 引入MICROPY_INC_CORE 作为一个包含核心包含的列表

- 配置文件:解决未设置 STATIC 的名称冲突

- 运行时:使 sys.modules 预分配到可配置的大小

extmod:

- vfs_posix_file:允许关闭已经关闭的文件

- btstack: 在 btstack_hci_uart 中添加 HCI 跟踪调试选项

- btstack:为密钥、l2cap 绑定添加存根函数

- btstack:默认开启SYNC_EVENTS、PAIRING_BONDING

- uasyncio: 添加 asyncio.current_task()

- 添加核心cmake规则文件

- 灵活:确保在读取错误时设置句柄

- moduselect:修复超时的无符号/有符号比较!=-1

- uasyncio:添加ThreadSafeFlag

- nimble/hal/hal_uart:修复 HCI_TRACE 格式说明符

- modbluetooth:允许 NimBLE 使用 Zephyr 静态地址

- modussl:修复非阻塞时 ussl 读/接收/发送/写错误

- btstack:使用 MICROPY_HW_BLE_UART_BAUDRATE 进行第一次 UART 初始化

- modbluetooth:将“客户端”与“中央”分开启用

- extmod.cmake: 将 modonewire.c 添加到 MICROPY_SOURCE_EXTMOD 列表

- modbluetooth:gatts 注册服务中的免费临时数组

- re1.5: 检查并报告_compilecode 中的字节溢出错误

- extmod.cmake:添加对使用 CMake 构建 btree 模块的支持

库:

- tinyusb:更新到 0.8.0 版

- mbedtls: 切换到 LTS 分支 v2.16 当前最新提交

- utils/gchelper_generic:实现 AArch64 支持

- pico-sdk:更新到最新版本 1.1.0

驱动程序:没有特定于此组件/端口的更改

mpy-cross:没有特定于此组件/端口的更改

支持组件

==================

文档:

- library/uasyncio.rst:为 ThreadSafeFlag 添加文档

- develop/cmodules.rst: 文档 C-modules 和 micropython.cmake

-开发:改进用户C模块以正确描述如何构建

例子:

- usercmodule:将 micropython.cmake 添加到 C 和 CPP 示例中

- usercmodules:简化用户 C 模块启用

- 嵌入:修复示例以便再次编译

测试:

- extmod/vfs_posix.py:为 VfsPosix 类添加更多测试

- extmod:为ThreadSafeFlag 添加测试

- multi_bluetooth:添加基本性能测试

- 将 run-tests 重命名为 run-tests.py 以保持一致性

- run-tests.py:用黑色重新格式化

- multi_bluetooth:不支持 BLE 功能时跳过测试

- extmod/vfs_fat_fileio2.py:在测试结束时关闭测试文件

- run-tests.py:如果通过 pyboard 运行的脚本崩溃,请提供更多信息

- feature_check:检查缺少通过结果而不是失败

- net_inet:在 exp 文件中添加“Strict-Transport-Security”

工具:

- 将文件系统操作示例添加到 pyboard.py 帮助

- ci.sh:更改 esp32 CI 以与 idf.py 和 IDF v4.0.2 一起使用

- makemanifest.py:允许将选项参数传递给 include()

- ci.sh: 更新 zephyr docker 镜像到 v0.11.13

- verifygitlog.py:在错误消息中显示所需格式的正则表达式

- pydfu.py:支持元素大小为零的 DFU 文件

- ci.sh:为 CMake USER_C_MODULE 支持添加 CI

- ci.sh: 为 esp32 构建用户 C 模块

- metrics.py:修复 esp32 输出文件名由于移动到 CMake

- ci.sh:使用 IDF v4.0.2 和 v4.3 构建 esp32

端口

==========

所有端口:

- 如果 MP_PLAT_PRINT_STRN 的 def 与默认值相同,则删除它

- 更新以使用新的 tinyusb 构建

裸臂端口:

- 清理代码,使其在 F405 上运行,并添加 README

cc3200 端口:没有特定于此组件/端口的更改

esp8266 端口:

- 模块:修复 fs_corrupted() 以使用 start_sec 而不是 START_SEC

esp32 端口:

- 添加对使用 IDF 和 cmake 进行构建的支持

- esp32_rmt:不要对小于零的无符号数进行不必要的检查

- 添加显式初始化器以消除编译器警告

- 删除传统的“制作”功能

- 板:删除旧的 IDF v3 sdkconfig 值

- 板:在所有板上启用 BLE

- README:更新基于新的 IDF v4 cmake 构建过程

- 添加对使用 ESP-IDF v4.1.1 构建的支持

- 添加对使用 ESP-IDF v4.2 构建的支持

- 删除包裹在 MICROPY_ESP_IDF_4 中的过时的 IDF v3 代码

- modsocket: 移除 unix socket 错误代码翻译

- 设置MICROPY_USE_INTERNAL_ERRNO=0 使用工具链的errno.h

- 板:为构建启用大小优化

- 添加对使用 ESP-IDF v4.3 预发布版构建的支持

- 在 esp32 模块中添加对 Non-Volatile-Storage 的基本支持

- 使 machine.soft_reset() 在 main.py 和 reset_cause() 中工作

- 定义 MICROPY_QSTRDEFS_PORT 以包含特殊的 qstr

- Makefile:在erase_flash 命令上指定端口和波特率

- machine_hw_spi:如果没有给出,则在制作 SPI 时使用默认引脚

- 使用新的 CMake 构建系统恢复 USER_C_MODULE 支持

- 使用 mp_hal_stdout_tx 函数修复多个定义错误

- 启用 btree 模块

- modsocket:正确处理未连接的 TCP 套接字的轮询/读取

- 添加对 ESP32S2 SoC 的初始支持

- 使用 CDC ACM 添加对 USB 的支持

-板:添加GENERIC_S2板定义

- machine_pin:使用 rtc_gpio_deinit 而不是 gpio_reset_pin

javascript 端口:没有特定于此组件/端口的更改

mimxrt 端口:

- 修复 USB CDC 处理,使其工作可靠

-板:在MIMXRT1060_EVK的基础上增加MIMXRT1050_EVK板

- 启用 CPYTHON_COMPAT、PY_ASYNC_AWAIT、PY_ATTRTUPLE 选项

最小端口:没有特定于此组件/端口的更改

nrf 端口:

-drivers/usb:添加调用tud_int_handler的USBD_IRQHandler

pic16bit 端口:没有特定于此组件/端口的更改

powerpc 端口:没有特定于此组件/端口的更改

qemu-arm 端口:没有特定于此组件/端口的更改

rp2 端口:

- machine_adc:仅在尚未启用的情况下初始化 ADC 外设

- micropy_rules.cmake:修复 makemoduledefs vpath 以使用 abs 路径

- 使用本地 tinyusb 而不是 pico-sdk 中的那个

- 启用MICROPY_PY_UBINASCII_CRC32 以获取ubinascii.crc32()

- 启用 VfsFat 类以支持 FAT 文件系统

- machine_uart:添加timeout/timeout_char读写

- machine_uart:添加对倒置 TX 和 RX 线的支持

- rp2_pio:允许超过 8 个连续引脚用于 PIO 输出/设置/侧集

- rp2_pio: 修复 sm.get(buf) 在获得最后一项后不等待

- modmachine:允许更改 CPU 时钟频率

- modmachine:在频率变化时为 REPL 重新初始化 UART

- rp2_flash: 防止 MICROPY_HW_FLASH_STORAGE_BASE 设置为负数

- 启用 uerrno 模块

- 启用更多核心 Python 功能

- modmachine:启用machine.Signal类

- 使用核心提供的 cmake 片段而不是自定义片段

- mpthreadport.h:将 core_state 转换为 _mp_state_thread_t

- 向 CMake 构建系统添加对 USER_C_MODULES 的支持

- 不要为 USB 串口做广告远程唤醒

- CMakeLists.txt:启用 USB 枚举修复

- 在 rp2 模块中导入 uarray 而不是数组

- rp2_pio:在构造函数中验证状态机频率

- moduos:实现uos.urandom()

- rp2_pio: 添加StateMachine restart,rx_fifo,tx_fifo 辅助函数

- machine_uart:使用 rxbuf/txbuf kwargs 添加缓冲数据传输

- 添加对构建不同电路板配置的支持

- rp2_pio: 为 PIO 添加 fifo_join 支持

samd 端口:

- mphalport:修复 USB CDC tx 处理以可靠工作

stm32 端口:

- uart:添加uart_set_baudrate函数

- mpbthciport:只初始化uart一次,然后使用uart_set_baudrate

- mboot: 在 mboot_pack_dfu.py 工具中添加 unpack-dfu 命令

- usb:允许板子配置USBD_VID和所有PID

- 使 pyb、uos、utime、machine 和 onewire 模块可配置

- 板卡:禁用小闪存板上的onewire 模块

- mpbthciport:修复初始波特率以使用提供的值

- mpbthciport:使用 mp_printf 而不是 printf 来获取错误消息

- mpbtstackport:允许设置芯片组和二级波特率

- mboot:sig 验证后,只写固件头,如果后者有效

- uart:在 L0、L4、H7 和 WB MCU 上添加对 LPUART1 的支持

-板/NUCLEO_WB55:在PA2/PA3上启用LPUART1

- 启用MICROPY_PY_UBINASCII_CRC32 以获取ubinascii.crc32()

- rfcore:允许板更改 BLE 设置

- 存储:防止尝试读/写无效块地址

- make-stmconst.py:解析源注释时允许使用“[]”字符

- main: 修复将 state.reset_mode 传递给 init_flash_fs

- powerctrl:配置待机时保存和恢复EWUP状态

- spi: 修正H7系列的波特率计算

- boardctrl:添加MICROPY_BOARD_STARTUP钩子

- Makefile:当工具链在路径中有空格时修复 C++ 链接器标志

- Makefile:允许扩展 QSTR_DEFS,QSTR_GLOBAL_DEPENDENCIES

- 在固件中包含 .ARM 部分用于 C++ 异常处理

- powerctrl:允许板子配置AHB和APB时钟分频器

- powerctrl:支持在STM32F413上使用PLLI2C作为USB时钟源

-boards/pllvalues.py:放宽 STM32F413 MCU 上的 PLLQ 约束

- mpconfigport.h:添加对板的支持以指定根指针

- boardctrl:让董事会控制 boot.py,main.py 的执行

- 板/NUCLEO_L476RG:添加 5 个剩余的 UART

- rfcore:修复 C2 访问空闲缓冲区列表的竞争条件

- rfcore:拦截地址解析 HCI cmd 以解决 BLE 错误

- 板:在引脚定义中将 UARTx_RTS_DE 拆分为 UARTx_RTS/UARTx_DE

- uart:使用 LL_USART_GetBaudRate 计算波特率

- sdram:制作MICROPY_HW_FMC_BA1、MICROPY_HW_FMC_A11可选引脚

teensy 端口:没有特定于此组件/端口的更改

Unix 端口:

- mpbtstackport_common:实现 mp_bluetooth_hci_active

- moduselect:不允许 posix 和非 posix 配置

- 改进命令行参数处理

- main: 生成可能被 longjmp 破坏的静态变量

Windows 端口:没有特定于此组件/端口的更改

和风端口:

- 更新至 zephyr v2.5.0

- 禁用冻结的源模块

- 删除未使用的构建文件

- 将 MicroPython 构建为 cmake 目标

-板:添加对nucleo_h743zi板的支持

- modusocket:修复调用 net_context_get_XXX() 中的参数

========

2021 年 2 月 3 日星期三 00:59:07 +1100

v1.14 新的 rp2 端口、BLE 配对、绑定和 l2cap API,以及内部文档

此版本的 MicroPython 为新的 Raspberry Pi RP2040 微控制器(具有可编程 IO 的双核 Cortex-M0+ MCU)添加了一个新的“rp2”端口。这个端口建立在 pico-sdk 上,MicroPython 非常接近裸机。@rp2.asm_pio 装饰器支持可编程 IO,它允许编写在 PIO 状态机上运行的内联汇编程序。

ubluetooth 模块已经有了显着的改进、修复和添加。BLE 事件现在在 unix 和 stm32 上是同步的,因此用户 Python 回调可以直接从 BLE 堆栈(来自 NimBLE)调用。这有助于新的配对和绑定 API。还有一个新的 l2cap API,用于在 BLE 设备之间更快地传输原始数据。

在现有的“开发和构建 MicroPython”一章中添加了许多新部分,以全面介绍 MicroPython 的内部结构,包括有关 MicroPython 编译器的详细信息,以及如何移植到新系统。此文档工作是作为 Google 2020 年文档季的一部分完成的。

原生发射器和内联汇编器现在完全支持 ARMv6M,适用于 Cortex-M0+ CPU。还添加了对 unix、stm32 和 esp32 上的 C++ 用户模块的支持。现在可以通过在 shell 构建环境中设置 SOURCE_DATE_EPOCH 来实现可重现的构建。Qstr 预处理现在并行完成以加快构建速度,并且有一个新的 tools/ci.sh 脚本具有运行持续集成测试的所有功能。

machine.I2C 和 machine.SPI 类已被修改,因此它们不再构建基于软件和硬件的外设实例。通过引入 machine.SoftI2C 和 machine.SoftSPI 类,这种构造现在被分为显式软类型和非软类型。请参阅下面的详细信息。

uasyncio 中的 wait_for 函数现在可以正确处理取消,VfsLfs 支持以只读模式挂载,并且 urandom 模块将在 stm32、esp8266、esp32 和 rp2 端口上的导入时随机化其种子。

REPL 中添加了新的原始粘贴模式,其中包括设备和主机之间的流量控制,以及设备在解析输入时从主机获取数据的机制。这使得粘贴代码更快、更可靠并使用更少的内存。所有具有原始 REPL 的端口都支持此功能,并且仍然支持以前的 REPL 行为。有关此原始粘贴模式的更多详细信息,请参阅文档。

stm32 端口改进了对 WB MCU 的 rfcore 支持,包括在 BLE 处于活动状态时写入的闪存锁定,以及用于自动更新 FUS/WS 固件的脚本。为板添加了新的钩子以在 stm32_main 中配置系统的顶级行为,并且现在在 H7 处理器上支持以太网。Mboot 现在允许签名和加密固件更新。

此版本中的重大更改是:

-“sys”模块重命名为“usys”。不启用模块弱链接的端口必须将“import sys”替换为“import ussys as sys”。见提交 40ad8f1666b265dafc7844d765f45cfae4b6299f

- machine.I2C 和 machine.SPI 构造函数在使用基于软件的 I2C 和 SPI 时发生更改。需要更改以下列方式构建 I2C/SPI 外设的代码(否则它们的使用将发出警告,最终将是错误):

machine.I2C(-1, ...) -> machine.SoftI2C(...) machine.I2C(scl=scl, sda=sda) -> machine.SoftI2C(scl=scl, sda=sda)

machine.SPI(-1, ...) -> machine.SoftSPI(...) machine.SPI(sck=sck, mosi=mosi, miso=miso) -> machine.SoftSPI( sck=sck,mosi=mosi,味噌=味噌)

使用machine.I2C 和machine.SPI 类访问硬件外设的代码不需要更改。参见提交 39d50d129ce428858332523548f0594503d0f45b 和 98182a97c5a9229938406beb722966eacceeb823

- 在 ubluetooth 中,BLE.irq() 方法现在只有位置参数。见提交 6a6a5f9e151473bdcc1d14725d680691ff665a82

- 在 ubluetooth 中,传递给 BLE.irq() 回调的参数以前是字节对象,现在是内存视图对象。见提交 81f2162ca0e926c9a4a1787a3863d94d86be0b36

下面是详细的更改列表,从 git 提交历史生成,并组织成部分。

主要成分

==============

全部:

- 将“sys”模块重命名为“usys”

- 重命名基于绝对时间的函数以包含“纪元”

py 核心:

- objfloat:修复负浮点数对 nan 幂的处理

- 修复某些 pow 实现中 NaN 的处理

- showbc:将 mp_print_t 结构传递给所有字节码打印函数

- 解析:将 mp_print_t 传入 mp_parse_node_print

- dynruntime.h: 添加 mp_import_* 和 mp_load/store_*

- objstr:使字节(bytes_obj)返回bytes_obj

- objarray.h: 添加 mp_obj_memoryview_init() 辅助函数

- makeversionhdr.py:只匹配看起来像版本的 git 标签

- 解析:将规则名称打印公开为 MICROPY_DEBUG_PARSE_RULE_NAME

- objdict:添加mp_const_empty_dict_obj,用于mp_const_empty_map

- objtype:当类型没有局部变量时处理 __dict__ 属性

- 范围:命名和使用 id_kind_type_t

- objexcept: 比较 mp_emergency_exception_buf_size 有符号

- 使用无符号字符比较

- 为默认值添加显式初始值设定项

- vmentrytable:忽略 GCC -Woverride-init

- 介绍和使用 MP_FALLTHROUGH 宏

- makeqstrdefs.py: 修复扫描非 C 预处理文件时的行为

- makeqstrdefs.py:也处理 C++ 文件

- mkrules.mk:添加编译C++文件的目标

- makeqstrdefs.py:支持预处理C++文件以生成QSTR

- 使用 C++ 编译器构建 misc.h 时的解决方法 clang 错误

- py.mk:支持用户 C 模块的 C++ 代码

- mpz:在 mpz_as_bytes 中为负值做符号扩展

- 二进制:修复 32 位架构上的符号扩展设置宽整数

- mpprint:当断言被禁用时防止案例失败

- mpprint:使用精度修饰符修复字符串的长度计算

- modmath:简化位置参数的处理以减少代码大小

- mkrules.mk:删除杂散的 vpath 和未使用的 -Itmp,为 $(AR) 添加 $(Q)

- objfun:支持 fun.__globals__ 属性

- asmthumb:在本机发射器中添加对 ARMv6M 的支持

- 发射:确保加载 prelude_offset 的编码不会改变 sz

- emitinlinethumb:禁用 ARMV7M 时使用 #if 排除代码

- 发射:支持 ARMv6M 上的二进制操作而不使用 ite instr

- qstr.h:删除 QSTR_FROM_STR_STATIC 宏

- gc:修复指针的调试打印

-persistentcode:引入MICROPY_PERSISTENT_CODE_SAVE_FILE选项

- makeversionhdr:尊重 SOURCE_DATE_EPOCH(如果存在)

extmod:

- modbluetooth:将日志宏重命名为 DEBUG_printf

- modbluetooth:重构堆栈/hci/驱动程序/端口绑定

- 灵活:在 64 位架构上正确设置结构对齐

- nimble:使 nimble_malloc 以分配的大小工作

- nimble: 实现 NimBLE 互斥锁

- modbluetooth:实现地址模式的配置

- modbluetooth:允许使用 mp_hal_get_mac 作为静态地址

- btstack:为 _IRQ_GATTS_READ_REQUEST 添加 btstack 支持

- btstack:检测 HCI UART 初始化失败

- 灵活:在启动时为 HCI 同步添加超时

- modussl_axtls:减少产生异常的代码大小

- modbluetooth:修复可选数据/uuid 参数的处理

- modbluetooth:仅使 BLE.irq() 方法定位

- modbluetooth:正确打印 UUID

- modbluetooth:实现MTU

- vfs:修复根目录中条目的查找,使其正确失败

- modbluetooth:将模块拥有的字节对象更改为内存视图

- modure:允许 \\ 在 re.sub 替换

- machine_i2c:将类型重命名为 SoftI2C 并添加自定义打印方法

- machine_i2c:删除 SoftI2C 构造函数中的“id”参数

- machine_spi:删除 SoftSPI 构造函数中的“id”参数

- utime_mphal:添加通用 utime.time_ns() 函数

- 为默认值添加显式初始值设定项

- 为 lfs2 禁用 -Wmissing-field-initializers

- 介绍和使用 MP_FALLTHROUGH 宏

- vfs_lfs:支持以只读模式挂载 LFS 文件系统

- modurandom: 支持 urandom.seed() 不带参数

- btstack/btstack.mk:添加-Wimplicit-fallthrough=0

- nimble/nimble.mk: 添加-Wno-old-style-declaration

- moductypes:修复存储到 32 位架构上的 (U)INT64 数组

- machine_mem:只允许machine.memX下标中的整数

- modbluetooth:使 UUID 类型在 modbluetooth.c 之外可访问

- modbluetooth:将 gattc-data-available 回调合二为一

- nimble: 直接轮询启动而不是使用 NimBLE sem

- modbluetooth:重新设置可选的 no-ringbuf modbluetooth

- nimble: 使 stm32 和 unix NimBLE 端口使用同步事件

- machine_i2c:为通用I2C绑定添加init协议方法

- modbluetooth:为L2CAP通道添加API

- nimble/modbluetooth_nimble:在 l2cap 不可用时修复构建

- uasyncio:延迟调用 Loop.call_exception_handler 1 个循环

- uasyncio:添加 Task.done() 方法

- uasyncio:修复wait_for 的取消处理

- 灵活:如果特征太大则读取失败

- modbluetooth: 添加 _IRQ_CONNECTION_UPDATE 事件

- modbluetooth:允许设置 char/desc enc/auth 选项

- modbluetooth:在读取请求 IRQ 中允许用户指定的原因

- modbluetooth:添加编译配置标志以启用配对/绑定

- modbluetooth:添加 _IRQ_ENCRYPTION_UPDATE 事件

- modbluetooth:允许配置配对/绑定参数

- modbluetooth:添加 gap_pair(conn_handle) 函数以启动配对

- modbluetooth:添加对绑定的支持(密钥持久性)

- modbluetooth:简化同步 invoke_irq_handler 签名

- modbluetooth:添加对密码验证的支持

- 灵活:生成并持久化一个独特的 IRK

- modubinascii:更新代码,hexlify 的文档现在 CPython 有 sep

- vfs:如果在没有文件系统的情况下挂载 bdev,则引发 OSError(ENODEV)

- nimble: 在 mp_bluetooth_init 中重置 NimBLE BSS

- 灵活:不要在 save-IRK 失败时断言

- modbluetooth: 添加ble.hci_cmd(ogf, ocf, req, resp) 函数

- vfs:在自动检测 littlefs 时检查块 0 和 1

- modframebuf:在格式方法 args 中将 int 更改为 unsigned int

- modonewire:使用 pin_od_high/pin_od_low 而不是 pin_write

- 灵活:改进l2cap recv 路径的流量控制

库:

- libm:减少静态 two_over_pi 数组的大小

- utils/mpirq:添加mp_irq_init func,并清理未使用的init 方法

- utils/pyexec:在执行代码之前/之后添加MICROPY_BOARD钩子

- utils/pyexec:在原始 REPL 上添加标准输入阅读器,带有流控制

- littlefs:将 littlefs2 更新至 v2.3.0

- littlefs:使用 LFS2_NO_ASSERT 保护 lfs2_mlist_isopen

- stm32lib: WB v1.10.0 更新库

- libhydrogen:添加新的 libhydrogen 子模块

- timeutils:当 Epoch 为 1970 时提供额外功能的简单实现

- pico-sdk:添加新的 pico-sdk 子模块,用于 rp2 端口

- utils/pyexec: 删除过时的 LCD 初始化

- pico-sdk:更新到最新版本 v1.0.1

司机:

-内存/spiflash:添加MICROPY_HW_SPIFLASH_ENABLE_CACHE选项

mpy-cross:

- 启用更多警告

支持组件

==================

文档:

- library/ubluetooth.rst: 文档 BLE 地址模式

- library/ubluetooth.rst:阐明位置/kw 参数

- library/ubluetooth.rst:澄清外围/中央与服务器/客户端

- library/ubluetooth.rst: 添加 MTU API 文档

- 开发:添加关于构建原生 .mpy 必备工具的注释

- reference/packages.rst:修复错字,删除重复的“端口”

- 更新 I2C 和 SPI 文档以添加对 SoftI2C 和 SoftSPI 的引用

- library/btree.rst:正确的方法拼写错误:__detitem__ 到 __delitem__

- library/machine.rst:更正小错误:超时到超时

- library/machine.Signal.rst:正确的错字:用例到用例

- library/machine.Timer.rst:添加对构造函数参数的提及

- reference/glossary.rst:修复小语法错误,An -> A

- 修复对 QSTR_GEN_CFLAGS Makefile 标志的引用

- develop/cmodules.rst:为用户 C 示例添加源代码链接

- library/ubluetooth.rst:为 L2CAP 通道添加文档

- reference/repl.rst:添加有关新原始粘贴模式的信息

- library/ubluetooth.rst: 添加 _IRQ_CONNECTION_UDPATE 文档

- library/ubluetooth.rst: 更新 char/desc 标志

- library/ubluetooth.rst:更新读取请求 IRQ 文档

- library/ubluetooth.rst:添加配对/绑定配置文档

- library/ubluetooth.rst: 添加 gap_pair() 文档

- library/ubluetooth.rst:添加绑定文档

- library/ubluetooth.rst:添加密钥文档

- 开发:添加 MicroPython Internals 章节

- 修复 RTC 文档中的小错别字,以及->an

- esp8266/quickref:添加关于 NeoPixel 时序的警告块

- develop/natmod: 修正一个小错字,con->can

- 更新版权年份范围以包括 2021

例子:

- 蓝牙:更新以使用仅位置参数到 irq()

- 为用户 C 模块添加示例代码,包括 C 和 C++

-蓝牙:添加绑定/密码演示

- rp2: 添加 pio_uart_rx.py 示例

测试:

- multi_bluetooth:更新到新的配置('mac')行为

- multi_bluetooth:使 ble_gap_connect 对事件计时具有鲁棒性

- multi_bluetooth:更新 .exp 文件中的 UUID 格式

- run-multitests.py:显示测试/真值差异

- multi_bluetooth/ble_mtu.py:为 BLE MTU 添加多重测试

- 基础知识:现在启用 == 和 != 特殊方法测试

- 基础知识:为 MICROPY_PY_ALL_INPLACE_SPECIAL_METHODS 操作添加测试

- run-tests: 在运行 CPython 时使用 -BS 标志

- thread/stress_schedule.py:在运行测试之前分配全局变量

- micropython/extreme_exc.py:取消链接链中较早的分配列表

- run-multitests.py:修复差异顺序,显示相对于事实的变化

- multi_bluetooth:提高事件等待的可靠性

- run-multitests.py:添加 -p 标志以运行实例排列

- multi_bluetooth:将 dict index-and-del 更改为 pop,以清除事件

- multi_bluetooth:增加WB55并发flash访问测试

- multi_bluetooth:添加L2CAP通道多测试

- extmod:为 uos.VfsPosix 类添加 vfs_posix.py 测试

- run-tests:为 GitHub Actions 更新 CI 上跳过的测试

- multi_bluetooth:为 BLE 配对和绑定添加多重测试

- misc/sys_settrace_features.py:忽略 CPython zipimport 跟踪

- extmod: 添加测试直接挂载块设备

- misc/sys_settrace:使测试输出独立于调用路径

- misc/sys_settrace_features.py:修复使用非 dflt 编码运行的问题

- extmod:添加对utime函数精度的测试

- 将本地测试从 pybnative 移动到 micropython

- extmod/utime_time_ns.py:放宽 time_ns 测量的界限

- run-tests:更改 Windows 上使用的默认 Python 命令

工具:

-mpy-tool.py:修复多个mpy文件合并到POP_TOP的问题

- 写入 msvc 兼容的冻结内容

- upip.py:支持主机显式端口号

- makeqstrdefs.py:并行运行qstr预处理

- ci.sh: 添加帮助脚本来运行 CI 任务

- pyboard.py:添加快速原始粘贴模式

- ci.sh:将 CI 路径的回显放在单独的函数中

- ci.sh: 使用 pip-install 获取最新版本的 esptool.py

- ci.sh:用于 stm32 构建的 pip install pyhy

- ci.sh:对于代码大小构建,仅获取 master 分支的历史记录

- ci.sh:对于ci_code_size_setup,更新apt以安装gcc-multilib

- mpy-tool.py:列出MICROPY_FROZEN_LIST_ITEM中的冻结模块

- verifygitlog.py:添加验证提交消息格式的脚本

- makemanifest.py:添加检查冻结路径是一个目录

- 删除过时的 upip 引导脚本

CI:

- 安装用于黑码格式化的设置工具

- 更新 zephyr 版本到 v2.4.0

- 停止使用 Travis 进行 CI

- 工作流:为所有 CI 任务、构建和测试添加工作流

- 工作流:当测试改变时运行 unix 和 qemu-arm 工作流

- 工作流:修复代码大小的 CI 工作流

-工作流:为rp2端口添加CI工作流

- 工作流:添加工作流以验证提交消息格式

- workflows/ports_unix.yml:为可重现的构建添加作业

端口

==========

所有端口:

- 添加 utime.gmtime() 函数

- 在适当的地方将 SoftI2C 和 SoftSPI 添加到机器模块

- 通过 id=-1 arg 支持传统软 I2C/SPI 构造

- 在 TUD_CDC_DESCRIPTOR 中使用正确的输入/输出端点大小

cc3200 端口:

- ftp:在 PWD 响应中添加引号并在登录前允许 FEAT

- 修复调试版本

esp8266 端口:

- 删除特定于发布的清单,默认禁用 osdebug

- mpconfigport.h:在导入时为 urandom 模块提供种子

- 从 inisetup.py 中的警告消息中删除“FAT”

- modules/neopixel.py:向 NeoPixel 构造函数添加计时参数

esp32 端口:

- 将 MicroPython 和 NimBLE 任务固定到核心 0

- mpconfigport.h:删除重复的 uhashlib 注册

-boards/sdkconfig.base:将默认 IDF 日志级别设置为 ERROR

- modnetwork:重新启用对 IDF-SDK 的 PPP 支持 >=v4

- 使用相对于 root 的路径作为 netutils/timeutils 头文件

- mpconfigport.h:启用MICROPY_PY_DELATTR_SETATTR

- mpconfigport.h:在导入时为 urandom 模块提供种子

- 支持构建 C++ 代码

- machine_pin:如果 init 设置模式,则重置 pin

- 从 inisetup.py 中的警告消息中删除“FAT”

- modnetwork:将 WiFi AUTH_xxx 常量与 IDF 值同步

javascript 端口:没有特定于此组件/端口的更改

mimxrt 端口:

-板:添加MIMXRT1064_EVK板

最小端口:没有特定于此组件/端口的更改

nrf 端口:

- main: 使 mp_builtin_open 签名与 py/builtin.h 中的签名匹配

- 删除 mpconfigport.h 及其头部保护的不必要的包含

- 自述文件:描述 nRF52840 的引脚编号方案

- 板:更新 memory.ld 以包含引导加载程序偏移量

- Makefile:添加引导加载程序特定部分

- Makefile:添加对使用 nrfutil 闪烁的支持

- 板:为 nrf52840 添加链接器脚本 Open Bootloader 1.2.0

- 更改选定的板以使用预闪存引导加载程序

- 自述文件:在替代构建段落中添加“制作子模块”的使用

pic16bit 端口:没有特定于此组件/端口的更改

powerpc 端口:没有特定于此组件/端口的更改

qemu-arm 端口:没有特定于此组件/端口的更改

rp2 端口:

- 为树莓派 RP2 微控制器添加新端口

- machine_pin:将 Pico-sdk 兼容的 N_GPIOS 更改为 NUM_BANK0_GPIOS

- memmap_mp.ld:更新最新的SDK

- rp2_pio: 为 PIO 添加 JMP PIN 支持

- modmachine:实现附加功能,包括 unique_id 和 idle

samd 端口:没有特定于此组件/端口的更改

stm32 端口:

- mpconfigport.h:启用MICROPY_PY_REVERSE_SPECIAL_METHODS

- uart:允许静态 IRQ 处理程序注册

- modbluetooth_hci:为 BT HCI UART IRQ 使用静态 mp_irq_obj_t

- mpbthciport:增加BT HCI UART的字符超时

- make-stmconst.py: 添加对 WB55 头文件的支持

- rfcore:更新 rfcore.c 以匹配 ST 示例的工作方式

-板/USBDONGLE_WB55:添加USE_MBOOT支持

- powerctrlboot:在SystemClock_Config期间获取STM32WB上的HSEM5

- rfcore:在 HCI 解析器中修复长度匹配

- rfcore:重构一些辅助函数,并删除一些幻数

- rfcore:在 BLE IPCC 通道上启用 RX IRQ 以获得更好的性能

-boards/NUCLEO_WB55:为 rfcore 添加 Python 帮助程序代码

- usb:如果MICROPY_HW_USB_HID 被禁用,不要取消pyb_hid_report_desc

- rtc.h: 包含 py/obj.h 使头文件自包含

- 伺服:修复角度和速度方法以再次使用 -ve args

-led:支持PWM输出,无TIM3

- rfcore:修复 ipcc_device_info_table_t 的 FUS 布局和大小

- Makefile:允许板扩展 SRC_C、SRC_O 和 OBJ 变量

- sdio:不要更改 H7 MCU 上的任何 DMA2 设置

- sdcard:修复使用 SDMMC2 时的 H7 构建

- rfcore:为基本的 rfcore 操作添加 Python API

- 板/NUCLEO_WB55:添加独立的 WB55 FUS/WS 固件更新程序

- rfcore:更新以支持 WS=1.9.0.0.4

-boards/NUCLEO_WB55/rfcore_firmware.py:修复闪存解锁

-boards/NUCLEO_WB55/rfcore_firmware.py:修复错误的变量名称

-boards/NUCLEO_WB55/rfcore_firmware.py:增加GET_STATE超时

- 修复禁用 FAT FS 多分区时损坏的构建

- usbd_cdc_interface:检查和处理CDC TX wrap-overflow

- machine_adc:修复ADC未启用时运行的ADC自动校准

- mpconfigport.h:在导入时为 urandom 模块提供种子

- rng:使用 SysTick+RTC+unique-id 为没有 RNG 的 MCU 播种 pRNG

- 板:分解出常见的数据/bss/堆/堆栈链接器部分

- 支持用 C++ 编写的 C++ 代码和用户 C 模块

- main:将 update_reset_mode 移到软复位循环之外

- 在stm32_main 的各个地方添加MICROPY_BOARD 调用

- boardctrl:与其他人一起定义MICROPY_BOARD_EARLY_INIT

- Makefile:使`firmware.bin`的生成显式

- Makefile:允许开发板扩展所有 SRC 变量

- rtc:在启动时验证 RTC 预分频器,如果不正确则更改

- rfcore:使 RX IRQ 调度 NimBLE 处理程序

- flash:实现WB55 flash锁定

- rfcore:当另一个待处理时不要发送 HCI ACL cmds

- rfcore:仅在启用 BLE 时依赖 NimBLE

- modmachine:将设备和修订 ID 添加到 machine.info()

- Makefile:在调试版本中禁用文本压缩

- powerctrl: 为 H747 定义 RCC_SR_SFRTRSTF 标志

- powerctrl:修复 H7 REV V 设备上的 STOP 模式电压缩放

- powerctrl:在 H7 上,从 STOP 退出时重新启用禁用的 OSC/PLL

- powerctrl:在更改标志之前禁用 RTC 写保护

- powerctrl: 设置 H7 RTC 唤醒标志

- powerctrl:确保在 H7 的 STOP 模式进入时禁用 SysTick

- i2c:因子 I2C 查找代码到 i2c_find_peripheral 函数

- 添加对电路板的支持以保留某些外围设备

- Makefile:将 -O0 更改为 -Og 以进行 DEBUG=1 构建

-boards/stm32h743.ld:启用 D2 RAM 并添加 eth-buffer 部分

- eth:添加对 H7 处理器的支持

- 板/NUCLEO_H743ZI:启用以太网外设

- mboot:为使用 littlefs 的 mboot 构建启用 LFS2_READONLY

- usb:在非多 OTG MCU 上为 CDC 数据输出 EP 分配 128 字节

- pyb_can:添加从波特率计算 CAN 位时序的能力

- system_stm32:在低功耗模式下为调试版本启用 DBGMCU

- sdram:增加SDRAM进入/离开自刷新模式功能

- adc:读取后取消选择VBAT以防止电池耗尽

- main: 在自动检测 littlefs 时调用扩展读取块

-boards/PYBD_SF2:为 mboot 构建禁用 SPIFLASH_ENABLE_CACHE

- mboot/gzstream:修复解压文件最后部分丢失的数据

- mboot:添加对签名和加密固件更新的支持

- 板/NUCLEO_WB55:启用带打包模式的 MBOOT

- Makefile:使用 MBOOT_PACK_KEYS_FILE 作为 .pack.dfu 的依赖

- main:在自动检测 littlefs 时检查块 0 和 1

- mboot: 不要自动检测 littlefs 块大小

- mboot:添加 ELEM_TYPE_STATUS 元素以便应用程序可以获取状态

- mboot: 引入 MBOOT_ERRNO_xxx 常量并使用它们

- mboot/fwupdate.py: 重构 update_mpy 支持 STATUS

- main: 引入MICROPY_HW_FLASH_MOUNT_AT_BOOT 配置选项

- rfcore:修复 IPCC RX IRQ 的流量控制

- 修复 RTC 文档中的小错别字,以及->an

- usbd_cdc_interface:如果挂起,则不要在 usbd_cdc_tx_always 中等待

- mboot:将调试编译器优化从 -O0 更改为 -Og

teensy 端口:

- 修复构建错误和警告并启用 -Werror

Unix 端口:

- Makefile:无论 DEBUG 设置如何,始终启用 -f*-sections

- 为 btstack/nimble 实现 BLE H4 HCI UART

- 使用 gettimeofday 实现 mp_hal_time_ns

- 变体:在覆盖构建上启用MICROPY_DEBUG_PARSE_RULE_NAME

- mpconfigport.h:启用MICROPY_PY_DELATTR_SETATTR

- 启用更多警告

- 支持构建 C++ 代码

- Makefile:将coverage.c 和coveragecpp.cpp 移动到coverage 变体

- 在 MICROPY_EVENT_POLL_HOOK 中处理挂起的事件/调度程序

- 使 mp_hal_delay_ms 运行 MICROPY_EVENT_POLL_HOOK

- modtime:在具有非双浮点数的 unix 端口上修复 time() 精度

windows 端口:

- msvc:支持冻结模块

- Makefile:支持冻结模块

- 在 Appveyor 构建中显示测试失败

- 更新自述文件中的构建说明

- 使用 gettimeofday 实现 mp_hal_time_ns

- msvc:使用与核心相同的默认 python 命令

和风端口:

- 用 C99 类型替换 zephyr 整数类型

- const-ify struct 设备实例指针

- 更新构建说明到 v2.4.0

- 用更通用的 shell_exec() 替换损坏的 shell_net_iface()

- 使用适当的 ifdef 配置保护 I2C 代码

- 为机器模块添加基本的 UART 功能

- machine_uart:修复machine_uart_ioctl 的arg 使其成为uintptr_t

========

2020 年 9 月 2 日星期三 12:01:26 +1000

v1.13 新的 uasyncio 模块,代码格式化,支持 unix 的 BTstack 绑定

此版本的 MicroPython 包括 uasyncio 模块的新实现,旨在与 CPython 的 asyncio 模块更加兼容。主要的变化是为每个协程使用一个 Task 对象,允许更灵活地在不同的地方排队任务,例如主运行循环、等待事件的任务、锁或其他任务。它不再需要为主运行循环预先分配固定的队列大小。配对堆用于对任务进行排队,核心可选用 C 实现。

此存储库中的大多数代码现在使用 uncrustify 自动格式化为 C 代码和黑色为 Python 代码。tools/codeformat.py 脚本用于应用此格式。选择 uncrustify 选项以尽可能匹配现有的 C 风格,但仍然进行了相当多的更改以使代码风格一致。

为 ubluetooth 模块添加了 BlueKitchen BTstack 绑定,作为 NimBLE 堆栈的可选替代方案。unix 端口现在可以使用这些绑定构建 BLE 支持,它与 USB 蓝牙适配器一起使用(默认情况下在 dev 和 coverage 变体上启用此功能)。

其他蓝牙添加包括:服务/特征/描述符发现的新事件完成;读取完成的新事件并指示确认;并支持 BLE.gap_scan() 中的主动扫描。另请参阅下文以了解对 ubluetooth BLE API 的重大更改。

PEP 526 已经实现,它为变量注释添加了新的语法,例如“x:int = 1”。PEP 572 也已实现,它为赋值表达式添加了“:=”运算符,例如“if x := 1:...”。

整个代码库现在支持使用“常用词”方案压缩错误消息(用作异常实例参数的那些字符串),该方案可用于减少代码大小。

其他新特性包括:支持非布尔结果的等式和不等式测试;添加了 micropython.heap_locked() 函数来测试堆的状态;本地发射器中 viper uint 操作数的二元运算;littlefs v2 文件系统上的 mtime 支持(如果需要,可以禁用)。

从 .mpy 文件导入 ARM 机器代码时,有一个重要的错误修复:系统现在可以正确跟踪分配给机器代码的可执行内存,因此垃圾收集器不会回收这些内存。

对于测试,添加了一个多实例测试运行器(请参阅 tests/run-multitests.py),它允许跨两个或多个 MicroPython 目标运行同步测试。这目前用于需要在多个设备之间进行通信的网络和 BLE 测试。

在 unix 端口中,不同的构建现在被组织成构建变体,类似于裸机上的板。并且已经实施了 PEP 475,它重试因 EINTR 失败的系统调用。

stm32 端口改进了对 STM32WB MCU 的支持,包括 ADC、SPI 和 DMA 支持,以及对这些 MCU 的 mboot 支持。Mboot 还添加了可选的 littlefs 支持。

esp8266 端口现在包括三个通用板定义:GENERIC_512K、GENERIC_1M 和 GENERIC,后者用于具有 2M 或更多闪存的模块。此端口还将默认文件系统更改为 littlefs,并且不再支持硬引脚 IRQ。有关更多详细信息,请参阅下面的重大更改。

esp32 端口现在在 IDF v3 和 v4 版本上启用蓝牙支持(通过 NimBLE)。它还将默认文件系统从 FAT 更改为 littlefs v2(但具有 FAT 文件系统的现有设备将继续工作而无需更改)。

还有一个针对 NXP i.MX RT 系列 CPU 的新 mimxrt 端口。

此版本中的重大更改是:

- async-for 不再等待 __aiter__ 的结果。__aiter__ 方法应该返回一个异步可迭代对象,但它本身不是可等待的。

见提交 37e1b5c891f9964bb6c95228bc2d718511507a69

- 在 ubluetooth 中,IRQ 事件常量的值都已更改(从位域到连续整数),并且应通过将常量定义替换为新定义来相应地更新 Python 代码,可以在以下位置找到https://docs.micropython.org/en/latest/library/ubluetooth.html#ubluetooth.BLE.irq 另见提交 e6881f08292d03f089185718c131f543d095089b

- 在 ubluetooth 中,_IRQ_SCAN_RESULT 事件的 IRQ 数据已将“connectable”条目更改为“adv_type”。现有的可连接值是一个布尔值,现在 True 变为 0x00,False 变为 0x02。请参阅提交 dd0bc26e65734b8a4fafa3769008e92e2ec6645d

- 对于 esp8266,默认文件系统已从 FAT 更改为 littlefs v2。固件和文件系统的闪存布局已经改变,为固件和冻结的字节码提供更多空间。升级现有的 esp8266 设备时,文件系统将被重新格式化,因此应首先备份文件。

见提交e0905e85a7ad2961aa9192f6130565860e531ad3

- 对于 esp8266,machine.Pin 不再支持使用“hard=True”配置 pin IRQ(因为中断处理代码已移至 iRAM)。使用 pin IRQ 的现有代码应该删除任何“hard=True”参数。

见提交 0bd58a56137bd9124756ed0f57b4213daccfc7d5

- 对于 unix 端口,二进制文件被重命名为 micropython-variant(不再是 micropython_variant)。

见提交 977b532c8fcd1a9e12844dd4f9cc2d70341013d7

下面是一个详细的更改列表,从 git 提交历史生成,并组织成部分。

主要成分

==============

全部:

- 使用 tools/codeformat.py 重新格式化 C 和 Python 源代码

- 将异常转换为在剩余位置使用 mp_raise_XXX 助手

- 删除嵌套括号和内部函数参数括号之间的空格

- 删除括号内和括号周围的空格

- 修复浮点/双精度的隐式转换和有符号比较

- 对所有错误消息使用 MP_ERROR_TEXT

- 清理错误字符串以使用小写并将不能更改为不能

- 修复隐式浮点提升

- 修复从 double 到 float 的隐式转换

- 修复隐式浮点到整数的转换

- 在适用的情况下启用额外的转换警告

- 删除注释掉的包含语句

- 格式化代码以在 C++ 风格的注释开始后添加空格

- 将 gchelper 代码分解到一处并将其用于 unix 和 ARM 端口

- 修复自动启用MICROPY_GCREGS_SETJMP 以选择GC 行为

- 更新 Python 代码以符合最新的黑色格式

py 核心:

- 从emitbc 和objlist 中删除注释掉的调试printf

- obj.h:删除有关其他 mp_buffer_info_t 条目的评论

- objobject: 添加 object.__setattr__ 函数

- objobject: 添加 object.__delattr__ 函数

- nlrx86:使有关未使用的 nlr 参数的可能警告静音

- asmx86:将堆栈修复为 16 字节对齐以供入口和子调用

- asmx86:删除未使用的第 5 个参数设施

- 运行时:不要为用户定义的类型分配 iter buf

- objsingleton:对单例对象使用 mp_generic_unary_op

- 为 ROM 引入 MP_ROM_NONE 宏来引用 None 对象

- 为 ROM 引入 MP_ROM_FALSE/MP_ROM_TRUE 以引用 bool 对象

- objstr: 不要使用内联的 GET_STR_DATA_LEN 对象-repr D

- obj.h:在 MP_OBJ_NEW_QSTR calc 中为 obj-repr D 使用 32 位移位

- 清理注释掉的代码和关于异常层次结构的注释

- objslice:在切片对象上添加对indices() 方法的支持

- objslice:在 str_subscr() 中内联获取切片参数

- 使 mp_obj_get_type() 返回一个 const ptr 到 mp_obj_type_t

- mkenv.mk:将 32 位标志的使用移动到 py.mk

- unicode: 添加 unichar_isalnum()

- 运行时:在 mp_init() 末尾附近移动 MICROPY_PORT_INIT_FUNC

- nativeglue:使用 mp_const_X 而不是 &mp_const_X_obj

- obj.h: 重新定义 qstr 对象编码以添加立即 obj 编码

- obj: 添加MICROPY_OBJ_IMMEDIATE_OBJS 选项以减少代码大小

- obj:使用repr A 和C 优化mp_obj_get_type 的直接对象

- mpconfig.h:仅当尚未定义时才定义 BITS_PER_BYTE

- objint:添加 mp_obj_int_get_uint_checked() 助手

-pairheap:添加配对堆数据结构的通用实现

- gc: 启用 GIL 时不要包含或初始化 gc_mutex

- qstr:启用 GIL 时不包含或初始化 qstr_mutex

- objgenerator:使用 mp_obj_new_exception_arg1 使 StopIteration

- objexcept: 优化 mp_obj_new_exception[_arg1/_args] 函数

- obj.h:添加和使用 mp_obj_is_bool() 助手

- 在读写器代码中的系统调用期间释放 GIL

- 发射:使用 NULL 处理未决异常(不是 None)

- 发射:找到一个展开目标后停止

- mpthread.h:为 mp_thread_set_state() 参数使用强类型

- objtype:公开 mp_obj_type_t.flags 常量,移至 obj.h

- 支持等式和不等式测试的非布尔结果

- 编译:允许在最小构建中“返回”外部函数

- 调度程序:将“raise_exc”参数添加到 mp_handle_pending

- 调度程序:将 mp_keyboard_interrupt 从 lib/utils 移动到 py 核心

- 调度程序:允许端口为 mp_keyboard_interrupt 指定属性

- 调度程序:将 kbd 回溯清除移动到 mp_keyboard_interrupt

- 将类型相等标志扩展为 3 个独立的标志,修复 bool/namedtuple

- 添加 mp_raise_type 辅助宏并在适当的地方使用它

- 添加 mp_raise_msg_varg 助手并在适当的地方使用它

- 将 mp_float_union_t 的定义分解到一个位置

- objexcept: 将 mp_obj_new_exception_msg_varg2 重命名为 ..._vlist

- objtuple:删除处理元组子类相等性测试的代码

- objtype:允许 mp_instance_cast_to_native_base 取原生 obj

- dynruntime.h: 添加 mp_obj_cast_to_native_base 的实现

- objarray:为内存视图打开 MP_TYPE_FLAG_EQ_CHECKS_OTHER_TYPE

- 去除悬空的“else”以提高代码格式的一致性

- bc0.h:将注释移至行首以提高格式一致性

- builtinimport:调整 find_file 中的 if-block 顺序以清理 #if

- malloc:对于具有选择性信号的函数,将 { 放在单独的行上

- un-nest 配置 #if/#endif 用于选择复杂代码

- 解析:在结构中计算的位宽周围添加括号

- builtinevex:支持将字节数组/缓冲区传递给 eval/exec

- objstr:删除错误字符串中重复的 %

- objstringio:在 StringIO 和 BytesIO 对象上公开 tell()

- modmicropython:添加 heap_locked 函数来测试堆的状态

-stream.h:包含 sys/types.h 以获取 POSIX API 的 size_t 和 off_t

- mpconfig.h:默认开启MICROPY_MODULE_GETATTR

- pairheap:在弹出和删除时正确取消链接节点

- pairheap:添加辅助函数来初始化一个新节点

- 使用预处理器检测错误报告级别(简洁/详细)

- dynruntime.mk:设置 MICROPY_ENABLE_DYNRUNTIME 而不是每个模块

- 为错误消息实现“常用词”压缩方案

- objexcept:允许压缩异常消息文本

- 解析:删除 ** 运算符的 const 折叠中不必要的检查

- objexcept: 删除可选的 TimeoutError 异常

- 调度程序:在检查调度程序挂起状态时修复竞争

-调度器:添加解锁时调度器被锁定的断言

- makecompresseddata.py:如果未压缩,则不要在 str 前加上标记

- 范围:添加断言以检查低编号的 qstr 是否适合 uint8_t

- 总是在 MICROPY_ROM_TEXT_COMPRESSION 禁用时给出 noop 定义

- objarray:修复比较中的符号不​​匹配

- objint: 不使用 fpclassify

- makecompresseddata.py:使压缩确定性

- objdict:修复有序字典的popitem

- 流:删除 mp_stream_errno 并使用系统 errno 代替

- modio:允许 uio.IOBase 流为读/写错误返回 errno

- 调度程序:添加选项以将 mp_sched_schedule 包装在任意属性中

- 解析:支持整数幂运算符的常量折叠

-调度程序:将 mp_sched_full 和 mp_sched_num_pending 转换为宏

- 解析:使 mp_parse_node_extract_list 返回 size_t 而不是 int

- nativeglue.h:将“setjmp”条目重命名为“setjmp_”以避免任何冲突

- py.mk:使用额外的 CFLAGS 来编译 string0.c

- modmath:解决 atan2、fmod 和 modf 中的 msvc 浮动错误

- ringbuf: 使用 msvc 修复编译

- modsys:对模块级常量对象使用一致的命名模式

- modbuiltins:修复 getattr 以处理引发 AttributeError 的类

- dynruntime.h:如果 arg 不是 str/bytes,则提高 mp_obj_str_get_str

- objtype:为类对象添加 __dict__ 属性

- objtype:使用 mp_obj_dict_copy() 创建 obj.__dict__ 属性

- obj.h:澄清关于 mp_map_t is_fixed 和 is_ordered 的注释

- 编译:将范围测试转换为 SCOPE_IS_COMP_LIKE 宏

- 编译:实现 PEP 572,使用 := 运算符的赋值表达式

-grammar.h:合并 :test 和 =test 的重复子规则

- 编译:实现 PEP 526,变量注释的语法

- misc.h:在 mp_float_union_t 中为 big-endian 添加缺少的分号

- obj.h: 添加公共 mp_obj_is_dict_or_ordereddict() 辅助宏

- objtype:支持将 OrderedDict 作为局部变量传入 type()

- asm:添加 funcs/macros 以发出逻辑右移的机器代码

- asm:为有符号比较添加条件代码

- 发射:为viper uint 操作数实现二进制操作

- objcomplex: 添加 mp_obj_get_complex_maybe 用于复杂的 bin-op

- obj.h:使现有的 MP_TYPE_FLAG_xxx 宏按顺序排列

- 返工 mp_convert_member_lookup 以正确处理内置函数

- obj.h:修复 mp_seq_replace_slice_no_grow 以使用 memmove 而不是 memcpy

- 编译:不要在 async-for 中等待 __aiter__ 特殊方法

- persistentcode:维护导入的原生 .mpy 代码的根 ptr 列表

- 运行时:在“单一”模式下修复内置 compile() 以便打印 exprs

- mphal.h:引入mp_hal_time_ns并在各个端口上实现

extmod:

- uzlib:将 ptr-diff-expr 显式转换为无符号

- 修复 modbluetooth 和 modwebrepl 以在 nanbox 模式下构建

- modbluetooth:修复func原型,空参数应该是(void)

- vfs_posix:在系统调用期间释放 GIL

- modbluetooth:为 BLE rxbuf 大小实现配置 getter

- modbluetooth.h:修复关于注册服务的评论中的错字

- modbluetooth_nimble:修复用于描述符标志的错误偏移量

- modframebuf:允许 blit 源是 FrameBuffer 的子类

- modbluetooth_nimble:移动灵活的具体代码,因素nimble.mk

- modbluetooth:从 nimble 中提取 gatts_db 功能

- btstack: 添加空的 modbluetooth 实现

- btstack:实现广告

- btstack:实现服务注册

- btstack:为 btstack 实现 gatts_db

- btstack:实现扫描和gatt客户端,连接和断开

- btstack:为 GATT 客户端实现通知/指示

- 灵活:在所有方法中阐明活动状态并检查活动状态

- modbluetooth:统一其余地方的错误处理

- modbluetooth:将扫描结果的“可连接”更改为“adv_type”

- 灵活:如果随机失败,则在获取 BLE MAC 时尝试公共地址

- vfs:从 stm32 中提取出 vfs mount-and-chdir helper

- modlwip:修复 UDP 套接字的轮询,使其不返回 HUP

- modlwip:正确处理 UDP 接收的非阻塞和超时

- vfs_posix_file:写入时锁定 GIL 并允许 stdio 刷新

- vfs_posix_file: 包含 unistd.h 以获得 STD{IN,OUT,ERR}_FILENO

- uasyncio:添加新的uasyncio模块实现

- uasyncio:在C中添加核心uasyncio的可选实现

- uasyncio:添加 manifest.py 以冻结 uasyncio Py 文件

- uasyncio:不要在 get_event_loop() 中创建 Loop 实例

- uasyncio:实现 Loop.stop() 来停止事件循环

- uasyncio:向 Lock.release 的 RuntimeError 添加错误信息

- uasyncio:添加 StreamReader/StreamWriter 作为 Stream cls 的别名

- uasyncio:添加全局异常处理方法

- modubinascii:使代码私有且模块自包含

- btstack:通过 SCAN_RSP 事件

- modbluetooth:为特征提供FLAG_WRITE_NO_RESPONSE

- uasyncio: 添加 Loop.new_event_loop 方法

- uasyncio:在错误信息中将不能更改为不能,并测试 exp

- nimble:更新以使用 NimBLE 1.3

- modbluetooth:在 mp_sched_schedule 期间不要保留原子部分

- btstack:实现更健壮的init/deinit排序

- modbluetooth:修复符号比较和未使用的变量警告

- modbtree:保留对底层流的引用,因此它不会被垃圾回收

- vfs_lfsx:修复 uos.stat() 中的路径处理以考虑当前目录

- vfs_lfsx:在 chdir 中规范化路径名

- vfs_lfsx:修复重命名以尊重新路径的当前目录

- modbluetooth:添加对更改 GAP 设备名称的支持

- 灵活:使错误代码映射默认为 MP_EIO

- vfs_lfsx:修复 import_stat 以便考虑当前目录

- vfs:如果 chdir 失败,保留以前的工作目录

- modbluetooth:使 modbluetooth 事件不是位域

- modbluetooth:为 svc/char/desc 添加发现完整事件

- modbluetooth:允许通过 uuid 发现 svc/char

- modbluetooth:实现读完成事件

- modbluetooth:确保 status=0 总是成功

- modbluetooth:支持更大的特征值

- ure: 使用单个函数进行匹配/搜索/子

- uasyncio: 添加 asyncio.wait_for_ms 函数

- modbluetooth: 注册默认 GATT 服务并修复 esp32 init

- moductypes:使用 mp_obj_is_dict_or_ordereddict 来简化代码

- vfs_lfs:修复 littlefs 绑定以在 nan-box 模式下构建

- 灵活:修复 ble_gatt_attr_read_cb 中的 attr NULL ptr 取消引用

- btstack:为 bg 完成安排通知/指示/写入操作

- modbluetooth:忽略ble_gatts_indicate中未使用的self_in

- modbluetooth:修复,使其在仅外设模式下构建

- modbluetooth:为“指示确认”添加事件

- modussl:改进异常错误信息

- modussl_mbedtls:整合更短的错误字符串

- uasyncio: 添加 StreamReader.readexactly(n) 方法

- vfs_reader:修复 mp_reader_new_file 以“rb”模式打开文件

- uasyncio:将负睡眠截断为 0

- vfs_lfs:为 littlefs 文件添加 mtime 支持

- btstack:实现GAP扫描duration_ms参数

- modbluetooth:修复 READ_REQUEST 和其他 IRQ 之间的竞争

-蓝牙:支持BLE.gap_scan()中的主动扫描

- machine_i2c:如果 'addrsize' 大于 32,则修复缓冲区溢出

- modlwip:修复未连接时 TCP recv 的错误返回

- vfs:在 VFS 统计时间字段中支持更大的整数范围

- vfs:添加选项以使用 1970 作为 Epoch

库:

- utils/pyexec: 引入MICROPY_REPL_INFO,在其中包装调试打印

- mp-readline: 添加一个 assert() 来捕捉缓冲区溢出

- mp-readline:添加基于单词的移动/删除 EMACS 键序列

- utils: 将 pyexec_mode_kind 的默认值更改为 0 以放入 bss

- utils/pyexec:禁用 kbd intrs 后处理挂起的异常

- 添加BlueKitchen BTstack 子模块

- tinyusb:更新到 a6b916ba 以支持 i.MX

- btstack:更新到最新的主 btstack 提交

- littlefs:将 littlefs2 更新至 v2.2.0

- mynewt-nimble:将子模块更新到 NimBLE 版本 1.3.0

- btstack:更新到 c8b9823 以修复 USB HCI 重置超时

- nrfx:升级到 nrfx v2.0.0

- utils:执行硬回调函数时锁定调度器

- utils/pyexec:当编译器禁用时添加缺少的 MP_ERROR_TEXT

- utils:使用MICROPY_ENABLE_SCHEDULER 保护所有mpirq.c

- libc:添加strncpy的实现

- mbedtls_errors:添加代码以修补 mbedtls 以缩短错误字符串

- stm32lib:H7 v1.6.0 和 WB v1.6.0 的更新库

- libm_dbl:添加round.c源代码

- libc:修复string0 的strncpy 实现

- timeutils:添加辅助函数来处理自 1970 年以来的纳秒

司机:

- cyw43:修复在 nanbox 模式下构建

- cyw43:在使用 printf 的文件中包含 stdio.h

- cyw43:如果 wifi_on 失败,则从 cyw43_wifi_set_up 提前返回

- nrf24l01:在测试中更改管道地址以匹配 Arduino 地址

- onewire:修复未定义的变量错误

- display/ssd1306.py:更改SET_COM_PIN_CFG设置

- 支持超过 16MB 的 SPI/QSPI 闪存芯片

mpy-cross:

- main: 修复 stderr_print_strn 参数类型

- main: 打印未捕获的 nlr 跳转到 stderr

支持组件

==================

文档:

- 更一致的大写和标题中文章的使用

- library/machine.I2C.rst:使用仅位置参数语法

- library/machine.UART.rst:读取方法的详细超时行为

- README:添加关于使用 readthedocs 的简短段落

- 库/机器:文档 machine.soft_reset() 函数

- 库:添加 / 以指示库文档中的仅位置参数

- library/uos.rst:改进块设备部分,以及ioctl ret vals

- esp8266:在TCP教程中,添加HTTP响应码和content-type

- unix:为 UNIX 端口添加一个新的快速引用页面

- 库:修复 framebuf 单色 1 位模式,交换 HLSB/HMSB

- 开发:详细说明如何将符号添加到本机 mod 的 mp_fun_table

- 库:为 uasyncio 模块添加初始文档

- 添加文档并测试 uasyncio 自定义 exc 处理程序方法

- 库:注意 uasyncio.wait_for() 可以引发异常

- 库:char_data/notify_data 也是引用的文档

- 库:注意可能不支持machine.Pin.irq 的hard arg

- 库:修复 machine.WDT 的文档以指定毫秒超时

- 开发:在本机示例的 Makefile 中修复模块/源名称

- 参考:在堆被锁定时添加关于多个异常的注释

- 库:为新事件更新 ubluetooth 并通过 uuid 发现

- 修复 Sphinx 3.x 警告,并在构建时启用警告作为错误

- esp8266:为 esp8266 上的 UART 添加 quickref 文档

- 库:阐明 esp.deepsleep 的 arg 以微秒为单位

- esp32:将有关 PWM 占空比范围的信息添加到 esp32 quickref

- 库:将 gatts_indicate() 文档添加到 ubluetooth.rst

- 库:对于 ubluetooth,为 _IRQ_GATTS_INDICATE_DONE 添加文档

- 库:esp32 的 RMT 更新文档

- 库:更新pyb.SPI init方法以添加关于“ti”arg的描述

- 库:更新 pyb.Timer 以添加缺少的 args 并默认为 init

- 库:更新 pyb.UART 以更正 pyboard UART 可用性

- esp32: 修复 machine.Timer quickref 以指定硬件定时器

- 将参数列表中的 `\*` 更改为 `*`

例子:

- accellog.py:将长评论移到自己的行

-蓝牙/ble_temperature_central.py:缩短评论

- natmod:添加 .gitignore 以忽略生成的示例 .mpy 文件

- 蓝牙:用“adv_type”替换“connectable”参数

-蓝牙:修复广告中BR/EDR标志的错误值

- 蓝牙:修复 ble_temperature_central.py 中的事件代码

-蓝牙:在ble_advertising.py中,如果没有设置则跳过外观

- 蓝牙:添加简单的带有中心和外设的UART演示

测试:

- run-tests:添加“--mpy-cross-flags”参数来指定mpy-cross标志

- extmod:将 VfsFat 终结器测试拆分为单独的测试文件

- micropython:在堆被锁定时添加对 yield-from 的测试

- run-tests:通过 float.py 功能测试处理 'CRASH' 返回

- cpydiff:添加 CPy diff-test 以使用 dict.keys() 作为一个集合

- unix:使unix时间测试在更多平台上通过

- unix:为新的 mp_obj_int_get_uint_checked func 添加覆盖测试

- 使运行测试帮助和自述文件更能描述行为

- extmod:添加基本machine.Timer测试

- unix:为pairheap 数据结构添加覆盖测试

- unix:为 mp_obj_new_exception_args 添加覆盖测试

- unix:为 mp_obj_is_type() 和变体添加覆盖测试

- 为固定回归添加布尔值作为整数格式测试

- 使用 exc 处理程序添加对生成器 throw 和 yield-from 的测试

- 基础:扩展子类相等的测试用例

- cmdline/repl_inspect:为 -i 选项添加新测试

- cmdline:添加对 MICROPYINSPECT 环境变量的测试

- cpydiff:添加操作系统模块环境差异

- 将 CPy 差异测试移至实际测试,因为子类相等性有效

- 基础:将“返回”外部函数的测试移动到自己的文件

- unix:为 kbd-intr 和调度程序添加覆盖测试

- 运行测试:自动跳过 extmod/ticks_diff、extmod/time_ms_us 测试

- 基础知识:为 bool 和 int/float/complex 之间的相等性添加测试

- 基础:添加测试元组和命名元组之间的相等性

- 基础:添加元组与从元组派生的类进行比较的测试

- basics/array1.py:为数组添加相等性测试

- run-multitests.py:为多个 Py 实例添加新的测试运行器

- multi_net:为网络添加初始多实例测试集

- multi_bluetooth:添加蓝牙BLE的初始测试

- run-tests:当使用emit=native时,将所有测试视为本地测试

- run-multitests.py:打印测试摘要并在失败时退出(1)

- extmod:添加 uasyncio 测试

- run-tests:如果没有异步,则跳过 uasyncio,并跳过本机上的一项测试

- 使默认的 MICROPYPATH 包含 extmod 以查找 uasyncio

- multi_net: 为 TCP 服务器和客户端添加 uasyncio 测试

- net_inet:添加 uasyncio 互联网测试

- basics/dict_pop.py: 在调用中删除多余的逗号并修复语法

- micropython/heapalloc_fail_set.py:删除多余的尾随逗号

- 用黑色格式化所有 Python 代码,除了 basics 子目录中的测试

- float:添加新的词法分析器测试来测试没有前缀的float的解析

- run-tests: 添加命令来打印和清理 *.exp,out 文件

- extmod:更新 littlefs 测试输出以匹配新的库版本

- 运行测试:使差异工具用户可配置

- 浮动:修复 cmath_fun_special 为 MICROPY_FLOAT_IMPL_FLOAT

- extmod:为 btree DB 库引发的错误添加 btree 测试

- run-multitests.py:允许从标准输出中过滤掉行

- multi_bluetooth/ble_gap_advertise:修复字节/字符串比较警告

- run-multitests.py:为本地Python实例添加快捷方式

- cpydiff:为导入包中使用的 __all__ 添加 cpydiff 测试

- thread/thread_stacksize1.py:增加 CPython 的堆栈大小

- multi_bluetooth: 修复打印错误的 IRQ 类型的错字

- run-multitests.py:添加 TRACE 横幅并将 TEST 输出移至结尾

- run-tests:通过 pyboard.py 运行时跳过 REPL 功能检查

- multi_bluetooth:更新以处理新的 BLE 事件

- run-multitests.py:允许将唯一的环境变量传递给每个实例

- 基础知识:为赋值运算符添加测试:=

- cpydiff:为赋值表达式行为添加 CPy diff 测试

- 基础:为变量注解添加测试

- 基础知识:将内存视图切片分配测试拆分为单独的文件

- 将 .mpy 导入测试从 import/ 移动到 micropython/ dir

- micropython:改进 .mpy 导入测试以在更多目标上运行

- extmod:为负时间的uasyncio.sleep 添加测试

- extmod:通过调整睡眠使uasyncio_fair 测试更可靠

- 运行测试:尽可能使用绝对路径

- run-tests:使测试输出目录可配置

- 拆分复杂的反向操作测试以分离测试文件

- extmod:添加用于验证 FAT 和 littlefs mtime 值的测试

工具:

- gen-cpydiff.py:将小节调整为句子大小写

- 添加metrics.py 脚本来构建和计算端口大小/指标

- pydfu.py:清理语法,更新注释和文档字符串

- pyboard.py: 添加选项 --no-follow 发送脚本后分离

- pyboard.py:对于 Py2 兼容使用切片 del 而不是 list.clear()

- pyboard.py:将shebang改为使用python3

- makemanifest.py:支持用空的mpy文件列表冻结

- codeformat.py:为 C 添加格式化程序,使用 uncrustify,为 Py 添加黑色

- makemanifest.py:通过将 .exe 添加到 mpy-cross 来修复 Windows 上的构建

- metrics.py:使用 check_call 而不是 run 来出错

- codeformat.py:消除对 sizeof 修正的需要

- pydfu.py:为 VID/PID 添加参数并以更清晰的错误处理退出

- pydfu.py:显示来自设备/mboot 的任何错误字符串

- codeformat.py: 以自动格式包含所有 msvc C 代码

- pyboard.py: 支持从 shell env vars 设置设备/波特率

- pyboard.py: 添加 -d 作为 --device 的别名

- metrics.py:如果增量高于阈值,则添加选项以区分错误

- metrics.py:如果任何端口都不需要,则不要构建 mpy-cross

- metrics.py:读取构建日志时使用 OrderedDict

- check_code_size.sh:删除未使用的脚本

- codeformat.py: 在 uncrustify 上使用 -q 选项使输出安静

- codeformat.py:添加详细选项以传递给 uncrustify 和 black

- uncrustify.cfg:删除不推荐使用的 sp_word_brace 选项

- codeformat.py: 删除 sizeof fixup

- uncrustify:更新 v0.71.0 的配置

- codeformat.py:在代码格式中包含 extmod/{btstack,nimble}

- uncrustify:启用更多选项以删除 func 和 '(' 之间的空格

- makemanifest.py:支持递归冻结子目录

- pydfu.py:尊重 DFU 设备/mboot 请求的更长超时

- makemanifest.py:使用 errno.EEXIST 而不是数字 17

- makemanifest.py:从mpy-cross 打印格式良好的错误

- pyboard.py:用替代方法替换接收数据的 eval()

- mpy-tool.py:修复行号信息的偏移量

- makemanifest.py: 使用 os.makedirs 为生成的文件创建路径

CI:

- 添加新作业以在 32 位模式下构建和测试 unix 覆盖率

- 在nanbox模式下添加stm32构建

- 更新 travis 以指定要构建的 unix 变体

- 将 OSX 构建添加到 CI

- 添加 CI 作业以检查代码格式

- 使用 BTstack 作为蓝牙堆栈构建 stm32 PYBD_SF6

- 运行 multi_net 测试作为覆盖作业的一部分

- 对于 unix 测试,使用 Makefile 目标而不是显式命令

- 打印 OSX 作业的错误

- 排除一些 OSX 上的 uasyncio 测试

- 使用自定义 PPA 来获得预先构建的 uncrustify

- 在 qemu-arm 输出上使用带有 --text 的 grep

- 为 stm32 作业构建 NUCLEO_L073RZ 而不是 B_L072Z_LRWAN1

- 在 osx 作业上构建完整的 unix 覆盖范围

- 构建 GENERIC_1M 板作为 esp8266 工作的一部分

- 通过不安装 pkgconfig 使 OSX 构建再次工作

- 拆分 esp32 ESP-IDF v3 和 v4 构建以分离作业

- 通过尽早启动 OSX 构建来减少构建持续时间

- 测试失败后尽早完成作业

- 使用 tools/metrics.py 计算最小端口的大小差异

- 计算大小差异检查时确保上游/主服务器存在

- 作为 nrf 工作的一部分构建更多板

- 运行一次 apt 命令,稍微加快 CI

- 设置构建名称,使其出现在 Web 界面中

- 对于 powerpc 工作,构建两个 UART 变体

- 更改 nrf pca10056 板以构建启用软设备

- 使用 MP_ENDIANNESS_BIG=1 构建 qemu-arm 以测试 bigendian 构建

- 在 stm32 作业中,为 NUCLEO_WB55 构建 mboot

- 为 PYBV10 构建 mboot,在 stm32 作业中启用 LFS2

- 为 nrf 作业安装更新的工具链

- 将 pca10090 构建添加到 nrf 作业

- 更改 nrf pca10056 板以使用 s140 SoftDevice 构建

- 将 zephyr 构建添加到 CI

- 添加 GitHub 操作以构建文档

端口

==========

所有端口:

- 允许在自定义生成文件中覆盖 CROSS_COMPILE

- 修改 mp_hal_pin_write 宏,使其可以用作函数

- 将 lib/libm/roundf.c 添加到裸机 Makefile 的

- 为各种端口启用错误文本压缩,但不是全部

- 在裸臂和最小端口中禁用MICROPY_PY_ASSIGN_EXPR

cc3200 端口:没有特定于此端口的更改

esp8266 端口:

- 模块:如果闪存未格式化,则修复 _boot.py 中的 AttributeError

- modules/ntptime.py: 添加配置NTP主机的注释

- 将 mp_keyboard_interrupt 放入 IRAM

- machine_pin:在硬 IRQ 处理程序期间禁用 ets_loop_iter

- modmachine:实现machine.soft_reset()

- README.md: 添加 docker build 说明

- modnetwork:添加对 wlan.ifconfig('dhcp') 的支持

- 启用和冻结 uasyncio

- 从 FAT 更改为 littlefs v2 作为默认文件系统

- makeimg.py:构建fw时打印出RAM段信息

- machine_pin:将 pin_intr_handler 移至 iRAM,取消支持硬 IRQ

- mpconfigport.h:为 BEGIN/END_ATOMIC_SECTION 添加定义

- 通过将所有代码移动到 machine_pin.c 来清理 Pin intr 处理程序

- 板:将 py/pairheap.c 代码从 iRAM 移动到 iROM

- esp_mphal:将 esp_mphal.c 中的大部分函数从 iRAM 移动到 iROM

- uart:将一些函数从 iRAM 移到 iROM

- 板:允许在构建时配置 btree/FAT/LFS2 支持

- esppwm: 修复在不同通道设置占空比时的 PWM 毛刺

esp32 端口:

- Makefile:将 $call 的结果分配给较旧的 make 的虚拟变量

- modmachine:添加machine.soft_reset()的实现

- 在所有版本(IDF 3.3 和 4.0)上启用 NimBLE 支持

- modnetwork: 将 max_clients kw-arg 添加到 WLAN.config 以进行 AP 设置

- Makefile:重新排序包括使用最新的工具链构建

- uart:使用内核提供的mp_keyboard_interrupt,放在IRAM中

- modsocket:从 lwip 返回值转换 EADDRINUSE 错误代码

- 移动到 IDF 4.0 发布版本

- 在软复位时取消初始化蓝牙

- README.md:更新新工具链的构建说明

- modsocket:处理关闭套接字的轮询

- 启用和冻结 uasyncio

- README.md:修复 venv 指令中的错字

- 从 FAT 更改为 littlefs v2 作为默认文件系统

- espneopixel:使用整数算法来计算时序值

- 更新至 ESP IDF v3.3.2

-modesp32: 将 idf_heap_info(capabilities) 添加到 esp32 模块

- 合并 check_esp_err 函数并添加 IDF 错误字符串

- 改进对 OTA 更新的支持

- 分区:更新文件中关于偏移量的注释

- modsocket:修复 getaddrinfo 以引发错误

- machine_sdcard:将“freq”关键字arg添加到SDCard构造函数

- modmachine:修复 machine.reset_cause 以使用 IDF 的 esp_reset_reason

- mpthreadport:修复线程堆栈大小的计算

- 更新 IDF v4.0 支持的哈希到 v4.0.1

- esp32_rmt:扩展 RMT 以支持运营商功能

- esp32_rmt:在 rmt_config 之前调用 rmt_driver_install

- esp32_rmt:正确修复 RMT 的循环行为

- network_lan:添加对IP101 PHY的支持

- mphalport:修复 mp_hal_time_ns 偏移

javascript 端口:没有特定于此端口的更改

mimxrt 端口:

- 为 NXP i.MX RT 系列 CPU 添加新的最小端口

- 添加 MIMXRT1010 板

- 添加 MIMXRT1060_EVK 板

- 添加machine.LED 类的初始实现,以及基本的引脚支持

- tusb_config.h:TinyUSB HS 端点溢出的初步修复

- 板:为 MIMXRT1060_EVK 板启用 LED 类

-板:集成对MIMXRT1020_EVK板的支持

- 板:在 MIMXRT1011.ld 中将 __heap_size__ 设置为 0

最小端口:

- 使构建更加灵活并作为 64 位构建工作

nrf 端口:

- main: 删除不必要的 repl_info(0) 调用

-boards/common.ld: 在链接脚本中添加 ENTRY(Reset_Handler)

- 驱动程序:在适当的地方使用 mp_raise_msg,并缩短 exc msgs

- 驱动程序/蓝牙:使用旧的 gcc 修复变量初始化错误

- 删除自定义“随机”模块并使用 extmod 版本代替

- 使用 MICROPY_HW_ENABLE_RNG 而不是 MICROPY_PY_RANDOM_HW_RNG

- Makefile:不要将 -fno-builtin 用于 Cortex-M0 构建

- mphalport:删除 mp_hal_delay_us 中“语法统一”的需要

- 更新以与 nrfx v2.0.0 配合使用,以匹配 TinyUSB

- 添加 openocd 作为支持的 flasher

- 蓝牙:对所有错误消息使用 MP_ERROR_TEXT

-蓝牙/ble_uart:修复函数的隐式声明

-蓝牙:处理数据长度更新请求

-蓝牙/ble_uart:添加mp_hal_stdio_poll函数

-蓝牙/ble_uart:修复随机广告名称

-蓝牙/ble_uart:交换熟字符串上的结束字符

- Makefile:在编译调试时禁用 ROM 文本压缩

- 使用 RTC1 添加对 time.ticks_xxx 函数的支持

- 默认情况下在所有板上启用 nrf 刻度支持

- 板:添加对 Actinius Icarus 的初始支持

- nrfx_config:为 nRF9160 目标禁用 RTC2

- 板:为nrf9160板启用RTCounter机器模块

- 为 nRF52840-MDK-USB-Dongle 添加板定义

- 将 mpconfigport.h 拆分成多个文件

- 为所有目标启用更多功能

- Makefile:改进用户 C 模块支持

pic16bit 端口:没有特定于此端口的更改

powerpc 端口:

- 修复链接时的 Makefile 规则

- 设置更好的默认编译器

- uart:选择在构建时使用哪个 UART,而不是运行时

qemu-arm 端口:

- 将默认板设置为 mps2-an385 以获得更多用于测试的闪存

- README:更新工具链链接

- 支持在 DEBUG=1 的调试模式下构建

- Makefile:将 CFLAGS_EXTRA 添加到 CFLAGS

samd 端口:

- 修复以使用最新的 tinyusb 构建

stm32 端口:

- mbedtls:将 mbedtls 输出缓冲区从 16 调整为 4 kiB

- 修复以 nanbox 模式构建

- 添加配置以在 nanbox 模式下构建

- 板/PYBD:将 RTC 异步 prediv 从 1 更改为 4

- softtimer:将线性链表改为配对堆

- powerctrl: 对于 F7,当设置 PLLSAI 为 48MHz 时允许 PLLM!=HSE

- Makefile:允许电路板的 .mk 文件向 CFLAGS 添加内容

-boards/STM32F769DISC:添加配置以使用外部 SPI 作为文件系统

- powerctrl:如果不需要,请禁用 HSI 以节省一点电量

- powerctrl:从停止模式唤醒时在 F7 上启用过载

-boards/stm32f746_af.csv:添加ADC alt功能以纠正引脚

- sdio:添加对 H7 MCU 的支持

- stm32_it:不要在 H7 MCU 上调用 __HAL_USB_HS_EXTI_CLEAR_FLAG

- powerctrl:改进对在 H7 MCU 上更改系统频率的支持

- powerctrl:从停止模式唤醒时重新启用 H7 MCU 上的 PLL3

- sdram:在stm32_main中暴露sdram启动测试的结果

- usbd_conf:允许板配置 USB HS ULPI NXT/DIR 引脚

- usbd_cdc_interface:删除“interrupt_char != -1”检查

- sdram:修复未使用的 sdram 启动测试标志的编译问题

- mpconfigport.h:添加选项以自定义帮助文本

- modnetwork:删除 lwip poll 中对 nimble_poll 的冗余调用

- 重构蓝牙堆栈/hci/驱动程序绑定

- 为 BTstack 实现添加绑定

- 板/PYBD:允许使用 BTstack 构建(通过 make 命令行)

- 重构蓝牙 HCI RX 使其独立于传输层

- main: 修复挂载第三个 SD 分区的错误

- mboot:允许覆盖板文件夹中的 led_init 和 led_state

- mboot:更新 dfu 状态/状态标志以更好地匹配标准

- mboot:防止无效地址闪存写入

- mboot:从 sysstick 处理程序更新 LED0 状态

- mboot: 删除 led_state 中 led 为 1 的不必要测试

- softtimer:在推送到堆之前初始化配对堆节点

- 启用和冻结 uasyncio

- mpconfigport.h:删除未使用的 BTstack 绑定的根指针

- mpconfigport.h:使大多数扩展模块可由板配置

- 板:在小闪存板上禁用 pend_throw、uheapq、utimeq

- Makefile:在生成的头文件上添加缺少的排序依赖

- storage: 固定第二个内部块设备的起始地址

- mboot/README:阐明 mboot 只能访问 FAT 格式的 FS

- mboot:在生成文件级别公开自定义 DFU USB VID/PID 值

- Makefile:将 SRC_LIB 重命名为 LIB_SRC_C 以匹配其他端口

- main: 在软复位时干净关闭 btstack

-板/PYBD_SF2:将BTstack库放在外部QSPI XIP闪存中

- README: 重新组织 DFU 闪烁说明,并添加了 PYBD

- 添加对 F412 MCU 的支持

- 开发板:添加 Nucleo-F412ZG 开发板的开发板配置

- machine_uart:初始化UART时保留attached-to-repl设置

- machine_uart:允许重新初始化静态UART对象

- modmachine:允许更改 STM32WB 上的 AHB 和 APB 总线频率

- adc:为 STM32WB MCU 添加对 pyb.ADC 的支持

- machine_adc:使STM32WB上ADC1_COMMON->CCR的设置更清晰

- dma:在STM32WB上添加对DMA的支持,提供SPI设置

-boards/xxx_WB55:在WB55板上启用pyb.ADC和硬件SPI

- Makefile:引用 libgcc 路径,所以空格不是问题

- 板/STM32F769DISC:使用宏而不是常量来确定闪存大小

- factoryreset:禁用FAT时提供空的create-FS功能

- usb:在 L0、L432 和 WB MCU 上添加对 2xVCP 的支持

- rfcore: 初始化 rfcore 时将 txpower 级别保留为默认值

- 板/NUCLEO_WB55:为 SW1/2/3 添加更多 CPU 引脚和别名

- irq:清理 irq.h 所以它不依赖于核心 uPy 定义

- powerctrlboot: 包含 irq.h 以获得 IRQ 优先级的定义

- flash:使flash C-API可重用,funcs返回错误码

- i2cslave:添加对 WB MCU 的支持

- flash:添加flash_is_valid_addr,扩展扇区为2MB F7

- mboot:使用来自主 stm32 代码的闪存例程而不是自定义

- mboot: SystemInit函数使用CMSIS系统源码

- mboot:添加对 WB MCU 使用 mboot 的支持

- 板:为 NUCLEO_WB55 添加构建时选项以使用 mboot

- mboot:在启动时设置 VTOR 以确保它具有正确的值

- mboot: 使用额外的 CFLAGS 来编译 string0.c

- mpconfigport.h:在启用任何 VFS 时启用 PY_IO_FILEIO

-定时器:支持WB MCU上的TIM1

- 板:在 PYBD_SF3 和 PYBD_SF6 上启用 LFS2

- mboot:不要在FS上搜索固件,尝试打开它

- mboot:解耦流、文件系统和顶级加载代码

- mboot: 添加对 littlefs 的支持

- mboot:更新 README 以描述 WB 和 littlefs 支持

- i2cslave:将 I2C 实例传递给回调以支持多个 I2C

- usbd_cdc_interface:删除对 tx ringbuf 的 full==size-1 限制

- 计时器:在 WB MCU 上正确初始化计时器死区时间/brk

- mboot:实现DFU批量擦除

- flash:更新 flash_get_sector_info 以在无效地址上返回 -1

- mboot:添加DFU逻辑来响应DFU_GETSTATE请求

- mboot: 去掉 DFU_GETSTATUS 中超时的使用

- mboot:默认禁用轮询模式并改用IRQ模式

- fdcan:使用正确的FIFO计算can_receive中的元素地址

- fdcan:使用 FDCAN_RXFxS_FxFL 而不是硬编码值

- fdcan:支持can_receive中HAL_MAX_DELAY的最大超时时间

- pyb_can:处理 pyb_can_send 中 FDCAN 的超时参数

- usbdev:修复了多个 LUN 时 SCSI LUN 大小的计算

- pin_defs_stm32:修复 pin 打印以正确显示 IN 模式

- powerctrl.h: 包含 stdbool.h 以获得 bool 的定义

teensy 端口:没有特定于此端口的更改

Unix 端口:

- modtime:添加utime.mktime函数,补充utime.localtime

- modos:添加 uos.rename 和 uos.rmdir

- 添加构建变体,类似于裸机上的电路板

- 添加启用了 settrace 的占位符 DEV 变体

- 将 unix 二进制文件重命名为 micropython-variant(不是 _variant)

- Makefile:保留 CFLAGS_EXTRA/LDFLAGS_EXTRA 供外部使用

- 在所有系统调用期间释放 GIL

- unix_mphal:为不兼容的 GIL+ASYNC_KBD_INTR 添加编译检查

- main:将用法和 NLR 错误打印到 stderr 而不是 stdout

- main: 添加对 MICROPYINSPECT 环境变量的支持

- main: 在 -v 选项用法和文档 -i/-m opts 周围添加 #if 保护

- main: 添加用于打印帮助文本的命令行 -h 选项

- modos:实现putenv和unsetenv来补充getenv

- main: 搜索路径时使用依赖于操作系统的路径分隔符

- Makefile:删除不再需要的旧变体目标

- 变体/标准:修复用于安装时 PREFIX 的作用

- Makefile:允许安装可执行文件的所有变体

- mpthreadport:使用 SIGRTMIN+5 而不是 SIGUSR1 进行线程垃圾回收

- mpthreadport:如果 SIGRTMIN 无效,则使用 SIGUSR1 修复 Mac 构建

- mphalport.h:在 MICROPY_USE_READLINE=0 时修复构建

- unix_mphal:调整 mp_hal_stdin_rx_chr 中的 #if 以改进格式

- 文件:不要在 sys.stdin/out/err.flush() 上引发 OSError(EINVAL)

- Makefile:在运行测试时检测并通过 mpy-cross 标志

- 删除自定义文件实现以使用 extmod 的 VFS POSIX 一

- 删除 MP_PLAT_PRINT_STRN 的自定义定义

- 覆盖:在使用之前初始化所有pairheap测试节点

- 在覆盖构建上启用 uasyncio C 帮助模块

- mpthreadport:修复线程堆栈大小 <= 8k 时崩溃

- 实施 PEP 475 以重试因 EINTR 失败的系统调用

- mpthreadport:确保有足够的线程堆栈来检测溢出

- 修复了 unix 变体的 COPT/NDEBUG 行为

- 实现MICROPY_BEGIN/END_ATOMIC_SECTION 保护宏

- Makefile:在非 GNU 系统上使用 install 修复回归

- modmachine:添加machine.idle(),使用sched_yield实现

- 使用 btstack 添加对 modbluetooth 和 BLE 的支持

- 在“dev”和“coverage”变体上启用 modbluetooth

- 将 btstack 添加到 unix 子模块列表中

- main: 在检查活动时输入 REPL,即使 stdin 重定向

- btstack_usb:允许通过环境变量选择适配器

- 使清单选择匹配其他端口

- 在开发变体上启用 uasyncio

- 变体:在开发变体上启用 VFS 和所有支持的文件系统

- 使 MICROPY_xxx_ATOMIC_SECTION 互斥量递归

- fatfs_port:实现get_fattime

- 变体:修复 fast 和 freedos 变体,以便它们再次构建

- modos:支持 uos.stat 字段中更大的整数范围

windows 端口:

- 支持 REPL 的基于单词的移动/删除键序列

- windows_mphal:在系统调用期间释放 GIL

- 改进默认搜索路径

- msvc:修复关于函数声明的警告

- 删除 MP_PLAT_PRINT_STRN 的自定义定义

- windows_mphal:修复缺少的分号

- 更新 genhdr.targets 以匹配 makeqstrdefs.py args

- 使 appveyor.yml 自包含

zephyr 端口:

- 更新包含 Zephyr v2.0 的路径

- 替换不推荐使用的时间转换宏

- 删除对 syscall_macros_h_target 的引用

-通过zephyr磁盘访问api实现块设备协议

- 启用虚拟文件系统和 uos 模块

- 启用fatfs

- 通过zephyr flash map api实现块设备协议

- 启用 littlefs

- 在初始化期间挂载文件系统

- 在 mimxrt1050_evk 上启用 USB 大容量存储类

- 如果存在则执行 main.py 文件

- 更新 machine.Pin 类以使用新的 zephyr gpio api

- 使用 zephyr 构建系统来合并配置

- 修复和重命名 zephyr 模块中的 stacks_analyze 函数

- 修复浮点配置

- 更新重构的 zephyr 设备结构

- 更新到新的 zephyr 超时 API

- 将 DT_FLASH_AREA 用法转换为新的 dts 宏

- 将最低要求的 cmake 版本增加到 3.13.1

- 使用 cmake find_package 定位 zephyr

- 实现 machine.Pin.irq() 以设置引脚更改时的回调

- make-minimal:禁用 FAT 和 LFS2 选项以使其构建

- 无条件包含 storage/flash_map.h

- README:更新所需的 Zephyr 版本并提及新功能

========

2019 年 12 月 20 日星期五 16:58:17 +1100

v1.12 PYBD 板、BLE 和 littlefs、动态原生模块、samd 和 powerpc

由于字节码前奏的压缩,此版本减少了整体字节码大小,大约 80% 的函数为每个函数节省了 7 个字节的字节码。字节码操作码值也被重新定义,以根据它们的参数大小和格式对它们进行分组。还添加了对矩阵乘法运算符“@”(PEP 465)的支持。

.mpy 文件格式移至第 5 版以支持新的字节码编码,并添加了对本地机器代码重定位的支持,以及单独的 Rodata 和 BSS 部分。这允许 MicroPython 系统导入动态本机模块,即从 C 代码生成的 .mpy 文件。此功能的示例在“examples/natmod/”和“docs/develop/natmod.rst”中的文档中提供。

实现了一些代码大小节省优化,从而减少了最小固件的大小:bare-arm 减少了 584 字节,最小 x86 减少了 5476 字节(部分是由于更改了编译器优化标志)和最小 ARM Thumb 2 x 1440 字节(均使用 gcc 9.2.0 测量)。

提供了一种将脚本冻结到固件中的新机制——冻结清单——其中要冻结的脚本列在 Python 文件(例如 manifest.py)中。所有端口均已更新以使用此新功能。

当启用弱模块链接时(通过MICROPY_MODULE_WEAK_LINKS),如果非u 变量失败,导入现在将自动搜索模块的内置u 变量(例如搜索“ufoo”,如果“foo”失败),因此端口不再提供这些的明确列表。unix 和 windows 端口现在启用此功能。

添加了性能基准测试套件,可用于比较优化功能时绝对性能的变化,以及跨不同端口的比较。请参阅“测试/运行-perfbench.py​​”。

Bluetooth(仅限 BLE)支持通过“ubluetooth”模块添加,并提供实现四个 BLE 角色的能力。使用的 BLE 堆栈是 Mynewt Nimble,它目前在 PYBD 板、STM32WB55 MCU 和 ESP32 板上运行。

littlefs 文件系统的支持是通过 MicroPython VFS 接口添加的,它适用于 unix、stm32、esp8266 和 esp32 端口。

在 stm32、esp8266、esp32 和 nrf 端口上定义并实现了一个新的“machine.ADC.read_u16()”方法,提供了一种一致的方式来读取返回范围为 0- 范围内的值的 ADC 65535。这种新方法应该优于现有的“ADC.read()”方法。

stm32 端口支持新的 PYBD 系列 pyboard,其中包括完全集成的 CYW43xx WiFi/BT 芯片。USB 得到增强,支持 VCP+MSC+HID 模式和多达 3 个同时的 VCP 接口。还增加了对包括 BLE 在内的 STM32WBxx MCU 的支持。有一个与其他端口兼容的新 machine.ADC 类,以及一个新的 machine.Timer 类,它实现了一个具有毫秒分辨率和仅受 RAM 限制的活动定时器数量的软件定时器。默认情况下通过 uos.VfsLfs2 支持 littlefs。有关使用 littlefs 的文档可在“docs/reference/filesystem.rst”中找到。

esp8266 端口已切换为使用每板配置和构建,以及新的冻结清单功能。它还具有可选的 littlefs 支持(需要单独构建)。

esp32 端口有以下新特性:原生代码生成、machine.SDCard、硬件I2C、mDNS查询和响应器、esp32.Partition、esp32.RMT、BLE(需要IDF v4),以及内置-支持 VfsLfs2。它已转为使用每板配置和构建,以及冻结清单。默认 SSL 输出缓冲区的大小从 16kiB 调整为 4kiB 以节省 RAM。

Microchip SAMDxx 微控制器和裸机 PowerPC 架构有新的最小端口。

CODEOFCONDUCT.md 中添加了基于 PSF 代码的行为准则。

添加了以下新的 Git 子模块:mbe​​dtls、asf4、tinyusb、mynewt-nimble。还有一个新的第三方库: littlefs。

更改的详细列表如下。

py 核心:

- nativeglue:使私有胶水全部静态化,删除注释代码

- nativeglue:在动态编译器模式下删除对 mp_fun_table 的依赖

- obj: 在 mp_obj_is_true 中优化 small-int 与 0 的比较

- nlrthumb:当 CPU 有 VFP 寄存器 s16-s21 时保存和恢复它们

- mkrules.mk:使用 $(CPP) 而不是 $(CC) -E 作为预处理器规则

- 将 EMIT_MACHINE_CODE 定义为 EMIT_NATIVE || EMIT_INLINE_ASM

-persistentcode:修复编译并启用加载和保存

-persistentcode: 确保 prelude_offset 总是被初始化

- asmarm:在 Linux/GCC 上创建新的 asm 代码时使用 __clear_cache

- nlrthumb:检查 __thumb2__ 而不是 __ARM_ARCH_6M__

- objgenerator:为 PY_GENERATOR_PEND_THROW 添加缺少的 #if 保护

- asmarm:使用 __builtin___clear_cache 而不是 __clear_cache

- makeqstrdata.py:如果端口需要,允许使用 \r\n 作为 qstr

- 调度程序:将 sched_stack 重命名为 sched_queue

- objstringio:使用 MICROPY_PY_IO_BYTESIO 保护 bytesio_stream_p 结构

- objdict:在 JSON 输出中用作键时引用非字符串类型

- builtinimport:在导入冻结或 mpy 文件时填充 __file__

- 运行时:允许使用 Python func 覆盖 builtins.__import__

- modio:调用mp_import_name进行资源流导入

- 允许将只读缓冲区传递给 viper 和 inline-asm funcs

- showbc:显示未知操作码地址时逐一修复

- 实现新的 sys.atexit 功能

- objarray:修复切片分配时数组中的可用空间量

- modmath:为非复数实现 math.isclose()

- 引入 MP_UNREACHABLE 宏来注释无法访问的代码

- nlr:在特定于 arch 的 nlr_jump funcs 末尾使用 MP_UNREACHABLE

- compile: 提高理解的行号精度

- emitbc:重写 load_const_tok 中的开关以减少代码大小

-emitbc:让所有的emit_write_bytecode_* funcs 接受一个stack_adj 参数

- objgenerator:将 mp_const_GeneratorExit_obj 的定义移动到这里

- vm:缩短未实现操作码的错误消息

- vm:不要为通过 finally 传播的 exc 添加回溯信息

- vm:不要为重新引发的异常添加回溯信息

- 添加全局 default_emit_opt 变量使发射种类持久化

- compile: 提高 lambdas 的行号精度

- bc:分解代码以将字节码行号信息放入新的函数中

- 配置文件:添加 sys.settrace 功能的初始实现

- 将 sys.settrace 功能集成到 VM 和运行时

- 配置文件:为 sys.settrace 功能添加调试

- objtuple:允许 mp_obj_tuple_get 中元组的兼容子类

- modstruct:修复 struct.unpack 与本机类型的未对齐偏移量

- modstruct:修复 struct.pack_into 与本机类型的未对齐偏移量

- 二进制:将 mp_uint_t 更改为 size_t 以获取索引、大小、对齐参数

- bc:修复 mp_opcode_format 中 UNWIND_JUMP 操作码的大小计算

- mkenv.mk: 添加 GDB 变量

- vm: 因子缓存映射查找代码到内联函数

- mkrules.mk:为 qstr auto-gen 添加 QSTR_GLOBAL_REQUIREMENTS 变量

- persistentcode:为 Windows 端口启用持久代码保存

- 词法分析器:重新排序运算符标记以匹配相应的二进制操作

- 解析:使用计算代替表格将token转换为运算符

- compile: 使用计算代替 switch 将 token 转换为 op

- 根据 PEP 465 添加对 matmul 运算符 @ 的支持

- bc0:根据操作码的大小和格式将操作码分组

- bc: 用简单的宏替换大操作码格式表

- 为多操作码大小引入和使用常量

- 将 RAISE_VARARGS 操作码拆分为 3 个独立的操作码

- nlr.h:将常量分解为特定的宏

- 发射:因子 sizeof/offsetof 计算到宏

- 将 MP_QSTR_NULL 重命名为 MP_QSTRnull 以避免内部冲突

- nativeglue:无论配置如何,都使 mp_fun_table 固定大小

-持久代码:将 .mpy 版本提高到 5

- ringbuf:为 put16/get16 添加助手

- bc: 将 mp_code_state_t.exc_sp 改为 exc_sp_idx

- 将 n_state 添加到 mp_code_state_t 结构

- 压缩字节码前奏的第一部分

- 返工和压缩字节码序曲的第二部分

- bc:不需要时不要包含 mp_decode_uint funcs

- 编译:禁止在模块级别之外的'import *'

- makeqstrdefs.py:删除未使用的黑名单

- vm: 修复 unwind 跳出 active finally 的处理

- 运行时:修复 PEP479 行为将 StopIteration 抛出到 yield from

- 发射:添加对带窗口寄存器的拱门的支持

- 发射器:添加对使用 setjmp 与本机发射器的支持

- 发射:添加对无法读取可执行数据的拱门的支持

- asmxtensa:添加对带窗口寄存器的 Xtensa 的支持

- 为原生发射器添加新的 Xtensa-Windowed arch

-persistentcode: 直接在 prelude 中使用 qstr 使 .mpy 更加紧凑

- objtype:添加 type.__bases__ 属性

- mkrules.mk:为无效的冻结配置添加警告/错误

- objstr:mp_obj_str_get_buffer 的大小优化失败路径

- 自动提供从“foo”到“ufoo”模块名称的弱链接

- modarray:将“array”模块重命名为“uarray”

- 运行时:重新排序一些二进制操作,以便它们不需要条件

- stream.h: 添加 MP_STREAM_POLL_NVAL 常量

- nativeglue:从 mp_fun_table 中删除未使用的 mp_obj_new_cell

- objgenerator:从 mp_obj_gen_instance_t 中删除全局变量

- objgenerator: 允许 pend_throw 到一个未启动的生成器

-persistentcode:将 .mpy 标头的声明从 .c 移动到 .h 文件

- modsys:在 sys.implementation 中报告 .mpy 版本

- 发射:修正错字,REG_PARENT_ARG_RET 应该是 REG_PARENT_RET

- emitnx86: 使 mp_f_n_args 表匹配 mp_fun_kind_t 的顺序

- objdict: 支持 OrderedDict 对象的 ujson.dump()

- ringbuf:添加peek16方法

- 编译:用于中断/继续外部循环的合并错误消息

- builtinimport:在空模块名称上引发异常

- qstr:如果 str 到实习生太长,则在 qstr_from_strn 中引发异常

- objstringio:针对代码大小稍微优化 stringio_copy_on_write

- objenumerate:检查枚举构造函数中的有效参数

-persistentcode:添加重新定位加载的本机代码的能力

- nativeglue:添加带有本地函数表typedef的新头文件

- nativeglue:为动态运行时将funcs/types添加到本机粘合表

-persistentcode:使ARM Thumb archs 支持多个sub-archs

- nativeglue:添加单双双浮动新/获取函数

- dynruntime:添加对浮动 API 的支持以生成/获取浮动

- dynruntime:实现 uint new/get、mp_obj_len 和 mp_obj_subscr

-persistentcode:将rodata/bss的加载移动到obj/raw-code之前

extmod:

- 向 cyw43 驱动程序添加网络级类绑定

- 将生成文件规则从 py.mk 分解为新的 extmod.mk 文件

- extmod.mk:集成 mbedTLS 所以它是从源代码构建的

- modussl_mbedtls:允许使用对象表示 D 构建

- extmod.mk:在 lwIP 构建中包含 mdns 应用程序源

- uos_dupterm:添加 mp_uos_dupterm_poll 以轮询所有 dupterm

- moduwebsocket:使 close_resp 静态数组 const 不使用 RAM

- modwebrepl:使提示/验证静态数组常量不使用 RAM

- modwebrepl:添加配置选项以将 filebuf[512] 放在 stack/bss

- modlwip:对于 TCP 发送,如果返回 ERR_MEM,则继续尝试 tcp_write

- modlwip:使用 mp_sched_schedule 来安排套接字回调

- modlwip:为 lwIP 实现原始套接字

- modure:使正则表达式转储代码调试功能可选

- moducryptolib:对内联函数使用“静态”而不是“静态”

- 给 vars/funcs 唯一的名字,所以 STATIC 可以设置为空

- modujson:支持将字节/字节数组传递给 json.loads

- 加密算法:将源添加到标题并填充版权

- vfs_posix:包括 stdio.h 用于函数“重命名”的声明

- nimble: 添加灵活绑定

- modbluetooth:添加低级 Python BLE API

- modbluetooth_nimble:使用 Nimble 实现 modbluetooth API

- modbluetooth_nimble:如果 public 不可用,则使用随机地址

- modbluetooth:在板配置中允许 MP_BLUETOOTH_MAX_ATTR_SIZE

- modbluetooth:允许设置扫描间隔/窗口

- modbluetooth:广告间隔使用us而不是ms

- modbluetooth:将最大连接数从 1 增加到 4

- modbluetooth:数据为空时清除gap_advertise有效载荷

- modbluetooth:修复 IRQ_GATTS_WRITE 事件的参数顺序

- modbluetooth:改进 ringbuf 处理

- modbluetooth:断开连接时使 gap_disconnect 不引发

- modbluetooth: 在 gap_advertise 中只接受 None 停止广告

- re1.5:支持在 RE 类中转义

- modbluetooth:使UUID支持缓冲协议

- modbluetooth:持续引用 NimBLE 服务实例

- modbluetooth_nimble:使用`data_alloc` 长度截断写入

- modbluetooth:将模块重命名为“ubluetooth”

- 分解块设备结构以使其独立于 fatfs

- vfs_blockdev: 析出块设备接口代码

- vfs_blockdev: 添加扩展读/写方法

- 添加 VFS littlefs 绑定

- vfs:将 BP_IOCTL_xxx 常量重命名为 MP_BLOCKDEV_IOCTL_xxx

- vfs:添加 MP_BLOCKDEV_IOCTL_BLOCK_ERASE 常量

- modbluetooth:添加 gatts_set_buffer

- vfs_lfs:允许分别在 VfsLfs1 和 VfsLfs2 中编​​译

- modlwip:轮询新套接字时无条件返回POLLHUP

- modlwip:如果文​​件错误,使套接字轮询返回 POLLNVAL

- modlwip:轮询时无条件返回POLLHUP/POLLERR

- modussl_mbedtls:修复 getpeercert 以在没有证书时返回 None

- modussl_mbedtls:检查无效的密钥/证书数据

- nimble:删除不需要的 nimble_sprintf 包装函数

- 灵活:分解出 stm32 特定的 HCI UART RX/TX 代码

- modbtree:使 FILEVTABLE const 放入 ROM

- 将 nlr_raise(mp_obj_new_exception_msg(x)) 转换为 mp_raise_msg(x)

- vfs:在挂载时添加 littlefs 文件系统的自动检测

- 跨所有端口将 FAT FS 配置整合到 MICROPY_VFS_FAT

- modbluetooth:优先考虑非扫描结果事件

- modbluetooth:从字节创建 UUID 并允许比较操作

- modbluetooth_nimble:如果没有扫描正在进行,则使 gap_scan_stop 无操作

- modbluetooh_nimble:修复 16 位和 32 位值的 UUID 转换

- modbluetooth:简化预分配事件数据的管理

- vfs_lfs:在为 lfs 初始化 bdev 时将标志传递给 ioctl

- vfs_lfs:修复无参数传递给构造函数和 mkfs 时的错误

- modbluetooth:简化 BLE IRQ 回调的调度方式

- modbluetooth:删除对来自 gattc 数据输入的数据的限制

- modbluetooth:将可选的第四个参数添加到 gattc_write 以用于写入模式

- modbluetooth:允许通过 BLE.config(rxbuf=) 设置 ringbuf 大小

- modbtree:使用 mp_printf 而不是 printf

- 将动态运行时保护添加到 btree/framebuf/uheapq/ure/uzlib

- webrepl:将 webrepl 脚本移动到公共位置并使用清单

库:

- cmsis:升级到 CMSIS 5.5.1

- netutils:添加DHCP服务器组件

- 为 mbedtls 添加新的子模块,目前在 v2.17.0

- utils/sys_stdio_mphal:添加对轮询 sys.stdin 和 sys.stdout 的支持

- 添加 asf4 作为子模块

- 添加 tinyusb 作为子模块

- stm32lib:更新 H7xx、新 L0xx、新 WBxx 的更新库

- lwip:将 lwIP 更新到 v2.1.2,标记 STABLE-2_1_2_RELEASE

- mynewt-nimble: 添加 Apache mynewt nimble 作为子模块

- littlefs:添加 littlefs v1.7.2 源码

- littlefs:添加littlefs v2.1.3 源码

- littlefs:添加描述来源以及如何生成 lfs1/lfs2 的 README

- libc/string0:添加 strspn 和 strcspn 的简单实现

司机:

- 为 CYW43xx WiFi SoC 添加驱动程序

- memory/spiflash:添加支持将 SPI flash 置于睡眠模式

- cyw43:添加低级 CYW43xx 蓝牙 HCI UART 驱动程序

- onewire/ds18x20.py: 添加对 DS1822 传感器的支持

- sdcard:在读入超时时引发异常

- wiznet5k:允许为 MACRAW 选择最大固定缓冲区大小

工具:

- mpy-tool.py:修复在本机代码和多个文件中链接 qstrs

- mpy-tool.py:修复原生 ARM Thumb 代码中 qstr 对象的链接

- 从 Microsoft/uf2 存储库添加 uf2conv.py

- pyboard.py: 向 ls/cat/cp/rm 远程文件添加文件系统命令

- mpy-tool.py:强制本机 func 对齐到 ARM 上的半字/字

- mpy-tool.py:添加对使用 settrace 冻结的初始支持

- mpy-tool.py: 使用 settrace 修复非字节码函数的冻结

- make-frozen.py:允许在不传入目录的情况下运行

- 添加机制以提供冻结文件的清单

- makemanifest.py:评估当前清单文件的相对路径

- mpy-tool.py:对原生 xtensa 代码使用“@progbits #”属性

- makemanifest.py:冻结链接目录时遵循符号链接

- makemanifest.py:跳过冻结不支持的文件并发出警告

- makemanifest.py:调用Python脚本时使用sys.executable

- mpy-tool.py:支持冻结Xtensa原生mpy时的qstr链接

- mpy-tool.py:添加将多个 .mpy 文件合并为一个的功能

- mpy_ld.py:添加新的 mpy_ld.py 工具和关联的构建文件

- mpy-tool.py:如果尝试冻结可重定位的 mpy,则引发异常

- pyboard.py:支持直接执行.mpy文件

- tinytest-codegen.py:添加额外的换行符和结果消息

测试:

- 将“bench”测试重命名为“internal_bench”并运行-internalbench.py

- 添加性能基准测试套件框架

- perf_bench:从 python-performance 添加一些基准

- perf_bench:添加一些杂项性能基准

- perf_bench:添加一些 viper 性能基准

-stress/recursive_iternext.py:将大深度增加到 5000

- run-perfbench.py​​:添加 --emit 选项以选择发射器进行测试

- 添加覆盖内置函数的测试。__import__

- misc/sys_atexit:为新的 sys.atexit 功能添加测试

- unix:使用新的 atexit func 更新 extra_coverage 预期输出

- extmod:将 json.loads 的字节/字节数组拆分为单独的测试

- 对优化级别和无行打印进行拆分测试

- 为 sys.settrace 功能添加测试

- 基础知识:为 matmul 运算符添加测试

- 更新测试以更改操作码排序

- micropython:为原生生成器添加测试

- 基础知识:添加测试以获取局部变量的 func 名称

- 基础知识:添加测试以正常返回抛出到 yield-from

- perf_bench: 添加 bm_fft 测试

- run-perfbench.py​​:真实检查失败时显示错误

- run-perfbench.py​​:如果目标未启用,则跳过复杂的测试

- cpydiff:修复 types_bytes_keywords.py 文档注释中的错字

- 将“array”模块重命名为“uarray”

- extmod:添加 littlefs 测试

- extmod:使用标准和扩展协议为blockdev添加测试

- 基础:使用 str.format 而不是 % 来格式化消息

- basics/builtin_dir.py: 在 dir(sys) 中查找“版本”

- 为字节数组添加功能检查并跳过相应的测试

- 基础知识:将特定的字节数组测试拆分为单独的文件

- 基础知识:检查用户缓冲区原型时使用字节而不是字节数组

- 添加切片的特征检查并跳过相应的测试

- 基础知识:将特定的切片测试拆分为单独的文件

- run-tests:添加使用切片的其他测试列表,跳过它们

- 基础:自动跳过使用 str/bytes 模格式的测试

- 为uio模块添加功能检查并跳过相应的测试

- 基础知识:将 sys.exit 测试拆分为单独的文件,以便可以跳过

- extmod:在传入密钥/证书参数时为 ussl 添加测试

-压力:添加对qstrs最大长度限制的测试

- 导入:添加测试以使用附加标志导入毒蛇代码

- 添加脚本以运行动态原生模块测试

- 为basics/parser 和import/import_override 添加.exp 文件

-stress/qstr_limit:调整参数以使用 stm32 端口运行

- basics/memoryview_itemsize: 可移植到 32 位和 64 位架构

- extmod/vfs_lfs_error: 在搜索错误测试中使用小整数

- pyb:重构 pyboard 测试以适用于 PYBv1、PYBLITEv1 和 PYBD

mpy-cross:

- 不自动构建mpy-cross,而是手动构建

- main: 如果本机启用,只接受完整的发出 cmdline 选项

- 使 mpconfigport.h 与 msvc 编译器兼容

- 添加 mpy-cross 的 msvc 构建

-基于native arch设置nlr_buf_t中的寄存器数量

- 启用 Xtensa-Windowed 本机发射器

- 支持 armv7em、armv7emsp、armv7emdp 架构

- README.md:添加关于 -march 和 -O 的注释

所有端口:

- 在需要时为 sys.stdio 轮询提供 mp_hal_stdio_poll

- 添加新的 make 目标“子模块”,用于初始化所需的模块

最小端口:

- 对 CROSS=1 Cortex-M4 目标使用软浮动

-frozentest:现在重新编译mpy 版本已经改变

- 设置 CSUPEROPT=-Os 以获得最小的固件大小

Unix 端口:

- mpconfigport.mk:更新关于 TLS 实现的评论

- unix_mphal:在可用时为 ticks_ms/us 使用 CLOCK_MONOTONIC

- 启用sys.atexit,主脚本结束后触发

- main: 如果本机启用,只接受完整的发出 cmd-line 选项

-coverage:为ringbuf添加覆盖测试

- 转换为使用 FROZEN_MANIFEST 指定冻结代码

- 启用模块弱链接

- 在覆盖构建上启用 uos.VfsLfs1、uos.VfsLfs2

- modtermios:修复 tcsetattr 中的输出速度设置器

windows 端口:

- mpconfigport.h:定义空的 MP_WEAK 符号

- mpconfigport.h:不要为C++定义restrict/inline/alignof

- msvc:将编译器警告视为错误

- Makefile:利用 CFLAGS_EXTRA、LDFLAGS_EXTRA 和 SRC_MOD

- msvc:删除不需要的 qstr 生成定义

- msvc:将构建选项从 .vcxproj 移动到 .props 文件

- msvc:启用构建中使用的覆盖目录

- msvc:改变源的列出方式

- 默认为文件的二进制模式

- 启用模块弱链接

qemu-arm 端口:

- 添加冻结原生模块的测试

- 转换为使用 FROZEN_MANIFEST 指定冻结代码

- 在最终的 firmware.elf 目标中添加 ldscript 依赖项

- 让 tinytest.o 由标准构建规则构建

- Makefile:允许从另一个 makefile 覆盖 CROSS_COMPILE

stm32 端口:

- usb:重构CDC VCP代码,启用N个CDC接口

- usb:USB设备外设最多支持3个VCP接口

-boards/make-pins.py:允许pins.csv跳过或隐藏board-pin名称

-boards/pllvalues.py:搜索 HSx_VALUE 定义的嵌套标头

-板:为PYBD-SF2、-SF3、-SF6添加板定义文件

- modpyb:添加pyb.country()函数设置国家

- extint:添加extint_set()函数用于内部C访问EXTI

- mphalport:添加对在 OTP 区域具有 MAC 的支持

- 为 cyw43 驱动程序添加低级 SDIO 接口

- 集成在 cyw43 驱动和 network.WLAN 类中

-boards/PYBD_SFx:启用CYW43 WLAN驱动

- modnetwork:用特定代码替换通用的 netif NIC 轮询

- 为 ussl 模块集成可选的 mbedTLS 组件

-boards/PYBD_SFx:使用 mbedTLS 启用 ussl 模块

- 支持可选的 lwIP mDNS 响应器

- lwip_inc:更新以启用 mDNS、TCP 侦听积压、更快的 DHCP

- usbd_msc:重写USBD MSC代码以支持多个逻辑单元

- usbd_msc:通过MSC接口提供自定义查询处理

- usbd_msc:在MSC接口提供Mode Sense响应数据

- usb:在pyb_usb_mode中使用ARG_xxx枚举访问kw args

- usb:在pyb.usb_mode中添加“msc”kw-arg以选择MSC逻辑单元

- usbd_msc:允许在启用 USB 和禁用 SD 卡时编译

- 在链接脚本中,定义栈开始与堆结束分开

- 板:通过 mbedtls 为具有网络的板启用 ussl 模块

- Makefile:打印有关使用 mboot/QSPI flash 的信息消息

- 通过系统复位进入引导加载程序

-boards/pllvalues.py: 支持没有 uint32_t 定义的 HSx_VALUE

- 板子:添加stm32??xx_hal_conf_base.h 文件和常用设置

- 板子:重做所有 stm32??xx_hal_conf.h 文件以使用通用代码

- usb:修复回归与自动 USB PID 值给出 PID=0xffff

-板:优化L4板的闪存和RAM分配

- mpu:添加配置MPU的辅助函数

- eth:使用 MPU 辅助函数配置 MPU 以供 ETH 使用

- sdram:使用 MPU 辅助函数来配置 MPU 以供 SDRAM 使用

- qspi: 使用 MPU 允许访问有效的内存映射 QSPI 区域

- qspi:初始化时强制重置QSPI外设

- qspi: 处理总线获取

- powerctrl:为板添加钩子以在睡眠/唤醒时执行操作

-板/PYBD_SFx:在睡眠模式下将SPI闪存置于睡眠状态

- mpconfigport.h:如果启用了 lwIP,则启用有用的网络模块

- usb:增加支持自动检测USB接口,FS或HS

- usb:在pyb.usb_mode中添加“port”关键字参数,选择FS/HS

- spi:分解代码以计算 SPI 源频率

- extint:简化不同MCU的bitband支持配置

- modmachine:使机器模块中的 RTC 类可用

-板/PYBD_SF2:将mbedtls库代码放在外部QSPI闪存中

- 更新组件以使用新的 H7xx HAL

- Makefile:删除 ll_usb HAL 文件的 Wno 属性

- Makefile:使用 stm32lib 中的 startup_stm32*.s 文件

- 板:删除 startup_stm32*.s 文件现在它们在 stm32lib 中

- mpu:启用ETH时包含MPU功能

- lwip_inc: 定义 LWIP_NO_CTYPE_H=1 使用 lwIP ctype funcs

- modmachine:在进入引导加载程序之前禁用 IRQ

- 板/PYBD_SFx:将 EN_3V3 引脚配置为启动时的输出

- sdcard:为板卡添加挂钩以启动 SD/MMC

-boards/PYBD_SFx:为SD/MMC供电时自动开启EN_3V3

- 添加对 STM32L0xx MCU 的初始支持

- 板卡:为STM32L072添加MCU支持文件

- mpconfigport.h:使“framebuf”模块可由板配置

-板/NUCLEO_L073RZ:为新板添加定义文件

- powerctrl: 将 L0 的 SystemClock_Config 移动到 powerctrlboot.c 文件

- powerctrl: 将 F0 的 SystemClock_Config 移动到 powerctrlboot.c

- 删除 SystemInit funcs,改用 stm32lib 版本

-板/NUCLEO_F446RE:启用DAC

- 添加对 STM32L452 MCU 的支持

-板/NUCLEO_L452RE:为新板添加定义文件

-boards/NUCLEO_F413ZH:删除STARTUP_FILE,它是全局定义的

- mboot: 使 _estack 成为一个数组以避免编译器警告

- mboot:由于 stm32lib 更新,删除了 H7 MCU 对 BSRRL/H 的使用

- mboot:使用 stm32lib 中的 STARTUP_FILE

- mboot: 更新依赖项以使用 -j 启用并行构建

-板/B_L072Z_LRWAN1:为新板添加定义文件

- gccollect: 总是使用 MP_STATE_THREAD(stack_top) 来获取栈顶

- usb:添加配置选项以禁用 USB MSC 和/或 HID

- usbd_cdc_interface:使 CDC TX/RX 缓冲区大小可配置

- 在 L0 MCU 上添加对 USB 的支持

- powerctrlboot:将 L0 MCU 的 SYSCLK 增加到 32MHz

- mphalport:修复 L0 MCU 的 GPIO 时钟使能

- Makefile:允许电路板禁用浮动支持

-板/B_L072Z_LRWAN1:启用USB VCP支持

-板/STM32F769DISC:固定FLASH_APP部分的长度

- make-stmconst.py: 允许括号和整数后缀 L 的更多变化

- 添加对 STM32WBxx MCU 的初始支持

- 板卡:为STM32WB55添加MCU支持文件

-板/NUCLEO_WB55:为新板添加定义文件

-boards/USBDONGLE_WB55:为新板添加定义文件

- flashbdev:支持STM32F722/23/32/33上的内部文件系统

-boards/stm32f722.ld:为内部FS提供内存区域

-板/NUCLEO_F722ZE:为新板添加定义文件

- dma:通过清除所有事件标志修复重新启动 DMA 流

- usbd_hid_interface:重写USB HID接口代码

-boards/xxx_WB55:启用 USB HID,因为它适用于 WB MCU

- usbd_hid_interface:包含额外的头文件以使用线程构建

- lwip_inc:启用原始套接字类型

- mpconfigport.h: 启用 lwIP 原始套接字

- sdcard:支持配置SD/MMC总线宽度为1位或4位

- modpyb:支持在 PY_PYB_LEGACY 打开和 HW_USB_HID 关闭的情况下构建

- usbd:引入MICROPY_HW_USB_IS_MULTI_OTG 以简化USB 配置

- usbd:在STM32L432 MCU上支持USB设备模式

- 板/NUCLEO_L432KC:添加配置以支持 USB VCP

- usbd:使 USB 设备 FIFO 大小可动态配置

- i2c:修复 F0/F7 上硬件 I2C 重启条件的生成

- mphalport:将 PYBD 特定的 MAC 代码放入板的特定文件中

- mboot/Makefile:在构建 mboot 时定义“BUILDING_MBOOT”

- board/PYBD_SF2:在构建 mboot 时排除某些东西

- extint:修复 H7 MCU 的 PVD ​​和 RTC 事件的 EXTI 映射

- stm32_it:为 L0 MCU 包含正确的 EXTI 中断处理程序

- dma:修复 L0 MCU 的 DMA 配置

- powerctrl:为 L0 MCU 修复 machine.bootloader()

- machine_adc:添加machine.ADC类

- machine_adc:改进 ADC 对 H7、L4 和 WB MCU 的操作

-boards/stm32wb55_af.csv:修复ADC管脚-通道功能映射

- mboot:支持只有两个 LED 的板子

- 板/NUCLEO_L073RZ:修复 MCU 名称中的拼写错误

- 板/MIKROE_CLICKER2_STM32:添加 MikroElektronika Clicker2 板

- 板/STM32F769DISC:固定 SDRAM 行位数

- board/NUCLEO_F746ZG:启用以太网外设、lwip 和 ussl

- usb:添加对 VCP+MSC+HID 模式的支持,包括 2xVCP 和 3xVCP

- usb:验证使用的端点数不超过最大值

- lwip_inc:启用 mDNS 时分配额外的 MEMP_SYS_TIMEOUT

- lwip_inc:为 mDNS 启用 LWIP_NETIF_EXT_STATUS_CALLBACK

- machine_adc:修复只有 ADC1 的 F4 和 L4 MCU 的构建

- modusocket:在接受()未绑定的套接字时修复 NULL deref

- machine_i2c:添加按名称指定 I2C(4) 的能力

- can:将 CAN 驱动程序分解为低级和 Python 绑定

- 添加对 FDCAN 外设的支持,暴露为 pyb.CAN

-boards/NUCLEO_H743ZI:在该板上启用FDCAN

- 使用 mp_printf 和 MICROPY_ERROR_PRINTER 来处理未捕获的异常

- can:通过MICROPY_HW_ENABLE_CAN保护头文件

- usbd_cdc_interface:为USB VCP添加CTS流控制选项

- 支持禁用编译器

- powerctrlboot:修复 F0 MCU 上 HSI48 的时钟和 PLL 选择

- powerctrlboot:在 F0 MCU 上添加对 8MHz HSI 的支持

- uart:为UART4添加RTS/CTS管脚配置支持

- 为 STM32 上的 Nimble 提供端口特定的实现

- mpconfigport.h: 添加 modbluetooth 模块到 stm32

- 板/PYBD:为 Pyboard D 启用 BLE

- system_stm32:支持 L4 MCU 上 HSE 和 LSI 的选择

-板:在L4板上启用MICROPY_HW_RTC_USE_LSE

- {adc,machine_adc}:更改 F0 MCU 的 ADC 时钟和采样时间

- usbdev: 如果MICROPY_HW_USB_CDC_NUM 设置为2,则修复编译错误

-boards/PYBD_SF2:将灵活库放在外部 QSPI XIP 闪存中

- 提取特定于端口的 Nimble 实现

- mboot:增加USB断开时自动复位的选项

- sdcard:支持无SD卡检测引脚的板卡

- 在 F7/H7 MCU 上使用硬件双 sqrt

- 板:添加新板 ADAFRUIT_F405_EXPRESS

- 转换为使用 FROZEN_MANIFEST 指定冻结代码

- adc:更新 ADC 驱动程序以使用新的 H7 HAL

- adc:去除未使用的宏和通道检查,并修复间距

- adc: 使用 IS_CHANNEL_INTERNAL 宏检查内部通道

- adc:修复 H7 MCU 上内部通道的采样

- mpu:配置MPU时保存和恢复IRQ状态

- accel:重命名 MMA I2C 宏常量以使其通用

-加速:添加对KXTJ3的支持

-板:添加NADHAT_PYB405板

- accel:修复 Accel.read() 方法,使其读取一个字节

- powerctrlboot:修复 F0/L0/WB MCU 上 sysstick IRQ 优先级的配置

- sdram:修复使用新的 mpu_config_start/mpu_config_end 签名

- Makefile:仅在支持它的部件上启用硬件 sqrt

- 计时器:修复 Timer.freq() calc 所以 mult 不会溢出 uint32_t

- 添加软定时器实现,使用 SysTick 1ms 分辨率

- 添加带有软定时器实现的 machine.Timer

- 在 WB55 MCU 上添加对 RF 协处理器的支持

-板:在WB55板上启用蓝牙支持

- mpthreadport: 包含 runtime.h 以获取 mp_raise_msg 的定义

-boards/stm32f405_af.csv:修复 PA1 上 ETH_RMII_REF_CLK 中的拼写错误

- nimble_hci_uart.c:防止在 CYW-BT 唤醒期间运行调度程序

- 泛化flash挂载代码,支持任意FS

-存储:使pyb.Flash可配置,并支持ext block proto

- main: 自动检测用于主文件系统的块设备

- moduos:将 VfsLfs1 和 VfsLfs2 添加到 uos 模块,如果启用

- 板:在 PYBv1.x 和 PYBD 板上启用 LFS2

- storage: 改变 storage_read/write_blocks 以返回 int 类型

- 存储:仅生成 pyb.Flash 关键字的 start/len 参数

- qstrdefsport.h:删除未使用的 qstrs 并使 USB 有条件

- 板/NUCLEO_L073RZ:跳过仅 CPU 引脚的板引脚名称

- main: 修复启动时 pyb.Flash 的自动创建,仅使用 kw 参数

- mpconfigport.h:使用IRQ_PRI_PENDSV保护蓝牙ringbuf

- uart:在 L0 MCU 上添加对 UART4/5 的支持

-boards/xxx_WB55:在WB55板上启用littlefs2

- main: 修复 SKIPSD 文件检测,默认挂载 SD 卡

- Makefile:与 lwIP 一起使用时,在 W5200 NIC 上启用最大缓冲区大小

- modusocket: 处理socket ioctl 中NULL NIC 的情况

-boards/PYBD_SF2:将 LED 配置为倒置,用于 LED.intensity()

- 板/NUCLEO_F767ZI:添加引脚和配置以使用 SD 卡

- 板/NUCLEO_F767ZI:更新引脚、外设和总闪存

- 板/NUCLEO_H743ZI:添加额外的引脚和外设定义

- 计时器:为 H7 MCU 添加缺少的 TIM 1/15/16/17 IRQ 处理程序

- 板/PYBD:在冻结清单中包含 webrepl 帮助程序脚本

esp8266 端口:

- uart:修复启用事件驱动 REPL 时无效的 ringbuf 名称

- 提供自定义 machine_time_pulse_us 来提供软 WDT

- mpconfigport.h: 启用 lwIP 原始套接字

- machine_uart:允许将 UART TX/RX 引脚从 1/3 重新映射到 15/13

- 在 iROM 中放置新的配置文件代码

- machine_adc:将pyb_adc_*重命名为machine_adc_*

- machine_adc:添加read_u16方法并重构

- 添加每板配置,跟随其他端口

- modules/ntptime.py:始终关闭套接字,并设置星期几

- 转换为使用 FROZEN_MANIFEST 指定冻结代码

- 允许在没有清单的情况下构建

- 板:添加 manifest_release.py 和发布文件

- modules/flashbdev.py:支持扩展块协议

- moduos:添加对 VfsLfs1 和 VfsLfs2 的可选支持

esp32 端口:

- machine_timer:重用定时器句柄,仅在软复位时解除分配

- 使用内置 HW SD/MMC 控制器添加 machine.SDCard 类

- 更新以使用 ESP IDF v3.3-beta3

- modnetwork:即使 AUTH_FAIL 仍然尝试重新连接到 WLAN

- Makefile:在构建中包含所有驱动程序/*.c 源文件

- network_ppp:在初始化 iface 时添加 ppp_set_usepeerdns(pcb, 1)

- 添加对硬件 I2C 的支持

- Makefile:修复 ESPIDF_DRIVER_O 的路径扩展

- Makefile:将 OBJ 和 LIB 规则添加到 gen_espidf_lib_rule

- Makefile:通过使用通配符简化 IDF 源的包含

- 将 MicroPython 任务固定到特定内核

- Makefile:在 CFLAGS 定义中包含 CFLAGS_EXTRA

- network_ppp:为PPP接口添加认证支持

- 添加对 mDNS 查询和响应程序的支持

- 模块:在初始设置时在根目录安装内部闪存

- 添加每板配置,跟随其他端口

- 添加 esp32.Partition 类以暴露分区和 OTA 功能

- 为network.LAN增加'config'功能,复用network.WLAN

- Makefile:修复 ESPIDF_BOOTLOADER_SUPPORT_O 中的 subst->patsubst

- machine_adc:添加ADC.read_u16()方法

- 更新以使用 ESP IDF v3.3

-boards/TINYPICO:SPI接口切换到QIO和80MHz

- 将 VFS FAT 分区添加到 partitions.csv 并将其挂载为 FS

- 添加对带有 2MiB 内部闪存的 ESP32-D2WD 的支持

- modules/inisetup.py: 使用 bdev.ioctl 而不是 bdev.SEC_SIZE

- Makefile:将 SDKCONFIG_H 添加到 QSTR_GLOBAL_REQUIREMENTS

- 支持使用 ESP IDF 4.0-beta1 构建

- 向 Makefile 添加检查以获取 pyparsing 版本

- 向 Makefile 添加检查工具链在 PATH 中

- main:同时使用 3.3 和 4.0 配置变量来启用 SPIRAM

- Makefile:修复支持的 git hash 的打印

- 启用本机发射器

- 使用来自 IDF 4.x 的 Nimble 实现 BLE

- 板:使用 IDF 4.x 构建时默认启用 BLE

- 添加 4.x 版本的 IDLE WDT 配置

- 在应用核心上运行 NimBLE

- 转换为使用 FROZEN_MANIFEST 指定冻结代码

- machine_uart:添加反转UART引脚的能力

-板:拆分CPU频率配置,默认160MHz

- machine_hw_spi:修复主机已在使用时的异常消息

- Makefile:为本机代码向 MPY_CROSS_FLAGS 添加正确的 arch

- 删除未使用的“esponewire.c”以支持 extmod/modonewire

- esp32_partition:支持扩展块协议

- moduos:为 littlefs 文件系统启用 uos.VfsLfs2

-boards/sdkconfig.base:将 SSL 输出缓冲区从 16 调整为 4kiB

- rtc: 通过 RTC.datetime() 设置时间时设置系统微秒

- machine_rtc:使 RTC.memory 大小和可用性可配置

- machine_rtc:减少用户内存功能的内存占用

- 板:在基础 sdk 配置中启用 ULP

- board/TINYPICO:添加 tinypico.py、dotstar.py 和自定义清单

- esp32_rmt:添加对 RMT 外设的初始支持

javascript 端口:

- 通过 FROZEN_MPY_DIR 启用对冻结字节码的支持

nrf 端口:

- led:调整板 LED 的定义方式

- 通过删除制表符、尾随空格、非 ASCII 字符来清理源代码

- machine/adc:添加ADC.read_u16()方法

- 添加ADC通道映射到alt函数表

- machine/adc:允许将 Pin 对象传递给 ADC 构造函数

- machine/adc:修复ADC通道到引脚的映射

-boards/make-pins.py:修复电路板引脚的生成以使用正确的索引

- Makefile:添加对使用 Black Magic Probe 闪烁的支持

- 板:添加粒子氙板配置(nRF52840)

- 板:为 uBlox Nina B1 系列 BLE 模块添加板定义

- i2c:添加对 TWIM (EasyDMA) 的支持

- temp:移动模块配置守卫

- uart:添加对UARTE(EasyDMA)的支持

- flash:更新闪存驱动程序以使用 nrfx_nvmc 驱动程序

- led:公开用于 LED 操作的公共 API

- main:更新启动时LED的使用方式

- 添加支持激活MICROPY_PY_SYS_STDFILES

- 设备:nrf52840 的正确 SPIM3 IRQ 处理程序条目

- 添加对 nrf52840 的 tinyusb 支持

- 板:添加对 pca10059 的支持

- 添加 nrf9160 基础支持

-板:添加nrf9160 pca10090板

- main:在没有文件系统的情况下执行boot.py/main.py冻结的模块

-boards/particle_xenon:在粒子氙气板上启用USB CDC

powerpc 端口:

- 将初始端口添加到裸机 PowerPC 架构

samd 端口:

- 向 Microchip SAMDxx 微控制器添加新端口

- 制作通用链接脚本,将 board.mk 重命名为 mpconfigboard.mk

-板:添加Adafruit Feather M0 Express板配置

-板:添加Mini SAM M4板配置

- 为 Atmel SAMD21-XPLAINED-PRO 板添加最低配置

和风端口:

- main: 使用 mp_stack API 而不是栈顶的本地指针

文档:

- 机器:为新机器添加初始文档。SDCard 类

- library/framebuf:在示例代码中添加缺少的模块引用

- library/sys: 为 sys.atexit 函数添加文档

- pyboard:更新已安装卷的名称以匹配代码

- pyboard:澄清 pyboard 上的初始文件并修复格式

- 库:sys.version_info 仅返回 3 元组的文档

- pyboard:强调制作US​​B鼠标的说明

- 参考/speed_python:更新接受只读缓冲区

- 参考/speed_python:将缺少的自我添加到 var 缓存示例

- library/pyb.DAC.rst:三角模式输出的正确频率

- 将 machine.ADC 文档重命名为 machine.ADCWiPy

- 库:指定新机器.ADC 类

- library/pyb.rst: 更新 pyb.usb_mode() 函数的文档

- library/pyb.rst: 更新 pyb.usb_mode() 以提及 VCP+MSC+HID

- library/pyb.USB_VCP.rst:添加关于id和flow参数的信息

- develop/qstr.rst:添加字符串实习的文档

- 库/蓝牙:添加初始 BLE 文档

- reference/glossary.rst:添加新术语并降低旧术语的复杂性

- library/bluetooth.rst:阐明 gap_advertise adv_data 行为

- library/bluetooth.rst:解释如何增加字符缓冲区大小

- library/bluetooth.rst:修复 HR/UART 服务示例中的错字

- esp8266/tutorial: 使 http_get 示例函数自包含

- 库:阐明机器和特定于端口的 mod 之间的关系

- esp8266:在 esp8266 quickref 中添加 ntptime 用法

- 修复文档各个部分的拼写

- wipy/tutorial: 将 Blynk 示例链接到官方库

- 库:将“array”模块重命名为“uarray”

- 图书馆/蓝牙:重命名为“ubluetooth”

- 在“MicroPython 特定库”下移动 ubluetooth

- 库:添加扩展块设备协议的文档

- library/ubluetooth:为 gatts_set_buffer 添加文档

- conf.py:修复 favicon.ico 的路径

- templates/topindex.html:替换已弃用的 defindex.html 的用法

- library/machine.SDCard.rst:修复各种错别字

- library/ubluetooth:修复名称并链接到 FLAG_xxx 常量

- 参考:添加描述 pyboard.py 使用的文档

- 库:为 pyb.Flash 类添加文档

- 添加 littlefs 文档和文件系统教程

- 参考/文件系统:修复块设备代码示例中的错字

- 参考/文件系统:添加有关使用文件系统的注释和示例

- library/ubluetooth:添加关于正在开发的 API 的注释

- library/uos:添加关于 littlefs 故障的注释和链接

- library/uos.rst:阐明扩展接口存在的原因

- esp8266/quickref:添加注意 machine.RTC 不完全支持

- 参考:添加描述 .mpy 文件使用的文档

- 开发:添加有关如何构建本机 .mpy 模块的文档

- esp32:为 esp32.RMT 类添加快速引用和完整文档

特拉维斯:

- 构建 PYBD_SF2 板作为 stm32 作业的一部分

- 仅在需要时有选择地获取 git 子模块

- 构建 esp8266 固件作为 Travis CI 的一部分

- 构建 esp32 固件作为 Travis CI 的一部分

- 在标准 unix 版本上启用性能基准测试

- 添加 samd 端口到 Travis 构建

- 为 PYBD_SF6 构建 stm32 mboot 作为 CI 的一部分

- 切换 unix stackless build 以使用 clang

- 构建一个启用线程的 stm32 板,以使用 CI 对其进行测试

- 添加新作业以在启用 sys.settrace 的情况下测试 unix 端口

- 添加带有 IDF v4 的 ESP32 构建

- 构建更多 stm32 板以涵盖所有支持的 MCU

- 使用 PYTHON=python2 构建 unix nanbox

- 将 BLE 子模块添加到 ESP32 IDF4 构建

- 将 esp8266 GENERIC_512K 构建添加到 CI

- 使用“make submodules”为每个端口初始化所需的模块

- 添加作业以构建和测试 unix 最小端口

- 添加用于构建和导入动态本机模块的测试

- 在覆盖作业中构建 urandom 本机模块

例子:

-蓝牙:添加基本的BLE外设示例

- 蓝牙:直接使用 UUID 将服务添加到 adv 负载

- bluetooth/ble_uart_peripheral.py:添加使用演示

- 嵌入:用真实文件替换 mpconfigport.h 的符号链接

- bluetooth/ble_uart_peripheral:对 RX 字符使用附加模式

- 嵌入:从构建中删除过时的 fatfs 文件

-蓝牙:添加解码广告有效载荷的助手

-蓝牙:添加读取温度传感器的示例

- natmod:添加btree示例

- natmod:添加 uheapq 示例

- natmod:添加 uzlib 示例

- natmod:添加framebuf示例

- natmod:添加示例

- natmod:添加 features1 和 features2 示例

- natmod:添加urandom原生模块示例

- 网络:将测试密钥/证书添加到 SSL HTTP 服务器示例

- natmod:添加非常简单的 features0 示例来计算阶乘

各种各样的:

- top:根据PSF行为准则添加CODEOFCONDUCT.md文件

- gitignore:将 build-*/ 模式放在顶级 gitignore 文件中

- gitattributes:将 *.a 文件标记为二进制文件

========

2019 年 5 月 29 日星期三 16:38:10 +1000

v1.11 改进了mpy 格式,支持本机代码和新的JavaScript 端口

在此版本中,mpy 文件格式已移至第 4 版并进行了一些重大改进:mpy 文件大小平均减少了约 35%,mpy 文件的加载时间减少了约 40%,他们现在支持保存本机、viper 和内联汇编代码(或从任何其他来源生成的机器代码)。通过添加 qstr 窗口以在编码时重用过去的 qstr、通过直接在字节码中打包 qstr 以及定义静态 qstr 集来实现 mpy 文件的大小减小。

一些 VM 操作码也进行了更改,以修复在 finally 块之外执行中断/继续时的错误,并进行一些简化。特别是 POP_BLOCK 和 POP_EXCEPT 操作码被替换为 POP_EXCEPT_JUMP。

大多数大写宏已转换为小写,以形成更一致的 C API,包括所有 MP_OBJ_IS_xxx 和 MP_xxx_SLOT_IS_FILLED 宏。

默认的 PYTHON makefile 变量现在从“python”更改为“python3”,但仍然通过“make PYTHON=python2”支持 Python 2。

mpy-cross 编译器支持新的 mpy 版本 4 并具有新的命令行选项:“-march=" 选择本机发射器,"--version" 打印 MicroPython 版本和 mpy 版本。此外,mpy-tool.py 支持冻结本机代码。

已经实现了用于外部用户 C 模块的模块系统,新的“文档/开发”部分提供了相关文档。

添加了一个新的“javascript”端口,它通过 Emscripten 将 JavaScript 作为机器。这允许在 node.js 中将 MicroPython 作为应用程序运行,并在浏览器中运行它(除其他外)。

所有裸机端口都有以下改进:machine.sleep() 现在是 machine.lightsleep(),lightsleep() 和 deepsleep() 现在都带有一个可选参数,即最大时间以毫秒为单位休眠。这些端口现在还允许使用通常的方法冻结 boot.py 和 main.py。并且添加了一个新的 I2C 方法 i2c.writevto(addr, vect) ,它可用于一次性将缓冲区的元组/列表写入 I2C 设备。

stm32 端口现在具有完全集成的以太网 MAC 驱动程序(请参阅 network.LAN 类),使用 lwIP 作为 TCP/IP 堆栈,并且套接字变得更加健壮。添加了对 F413 MCU 的支持。此端口还有一些面向用户的较小更改:

- machine.UART(和 pyb.UART)现在默认为 timeout=0(1000 毫秒),这使 UART 具有非阻塞行为。

- USB REPL 现在可以使用 uos.dupterm 进行配置,默认情况下 pyb.USB_VCP(0) 在 boot.py 执行之前放在 dupterm 插槽 1 上。要禁用默认 REPL,请使用:uos.dupterm(None, 1)。

- pyb.DAC(id) 现在只会在第一次调用时重置 DAC;要获得旧行为,请传递 bits 参数,例如:pyb.DAC(id, bits)。

- pyb.DAC.noise() 和 pyb.DAC.triangle() 现在全量程输出。

- 如果 boot.py 丢失,系统将不会重新创建(只有在文件系统损坏或恢复出厂设置时才会创建)。

对于 esp32 端口,构建过程已更新以更好地与 ESP IDF 保持一致,现在使用 sdkconfig 来配置功能。现在默认启用双核模式,SPIRAM 处于内存映射模式,因此所有这些都可用于 MicroPython 堆,支持更改 CPU 频率,并且 WDT 现在会在超时时发生恐慌并重置设备.

更改的详细列表如下。

py 核心:

- 当这些被禁用时删除对文件阅读器功能的调用

- 为内置 next() 的 2 参数版本添加可选支持

- compile: 在 "except as" 处理程序中交换 pop_block/pop_except 的顺序

- 警告:支持警告类别

- builtinhelp:如果启用外部导入,则仅打印 FS 模块的帮助

- 将所有 MP_OBJ_IS_xxx 宏小写以形成更一致的 C API

- 小写 MP_xxx_SLOT_IS_FILLED 内联函数

- mkenv.mk:将默认 PYTHON 变量从“python”更改为“python3”

- qstr:仅对 find_qstr 求值一次,然后传递给 Q_GET_HASH 宏

- obj.h:删除过时的 mp_obj_new_fun_viper() 声明

- objfun:将 mp_obj_new_fun_asm() 的 fun_data 参数设为常量指针

- 在禁用调试时消除有关未使用参数的警告

- 编译:修复了异步处理解除 BaseException 的问题

- 编译:添加优化以就地编译 OrderedDict

- objexcept:修复在 mp_obj_new_exception_msg 中创建的 exc str 的哈希值

- py.mk:更新 lwip 构建配置以使用最新的 lwip 版本

- 修复 VM 崩溃并从 finally 块中展开跳出

- vm: 删除currently_in_except_block 变量

- 用 POP_EXCEPT_JUMP 替换 POP_BLOCK 和 POP_EXCEPT 操作码

-persistentcode:添加qstr窗口,更高效地保存mpy文件

-persistentcode:直接在字节码中打包qstrs以减少mpy大小

-persistentcode:定义静态qstr集以减少mpy文件的大小

- 添加用于调试哨兵对象值的独立配置

- 发射:合并 HASCONSTS 设置为 load-const-obj 的地方

-发射:提供qstr发射的集中点

- 发射:调整const_table 的大小

-emitglue:删除 mp_raw_code_t 中的联合以结合字节码和本机

- 添加支持将原生、viper 和 asm 代码保存到 .mpy 文件

-持久代码:将 .mpy 版本提高到 4

- 允许在定义时注册模块

- 为外部用户 C 模块实现一个模块系统

- 更新和返工构建系统以包含外部 C 模块

- 将 mp_native_type_from_qstr() 从 emitnative.c 移动到 nativeglue.c

- nativeglue:重命名本机转换乐趣以匹配其他本机助手

- 编译:添加支持在运行时选择本机发射器

- compile: 支持多个内联 asm 发射器

- compile:在编译native、viper或asm时检查arch是否设置

- 运行时:删除长期过时的 MICROPY_FSUSERMOUNT 初始化代码

- 调度程序:将 micropythyon.schedule() 转换为循环缓冲区

- nlrthumb:添加对 C 函数为 _nlr_push_tail 的 iOS 的支持

- makedefs:处理源时使用 io.open 和 utf-8 编码

- 运行时:优化为不为 int 创建临时浮点数以提供负数

- 运行时:修复 mp_unpack_ex 使 seq 在使用过程中无法被 GC 回收

- mpprint:支持在 64 位架构上打印 %ld 和 %lu 格式

- asmthumb:支持在普通ARM处理器上运行的asm_thumb代码

- 原生:改进 viper 函数中对 bool 类型的支持

- 删除“if (0)”和“if (false)”分支

- objgenerator:修复 None 作为第二个参数传递给 throw() 的处理

- objgenerator:删除不需要的前向声明并清理空白

- misc.h:重命名 _MP_STRINGIFY 以不在 ident 中使用前导下划线

-持久代码:将 mp_obj_str_get_data 的“len”类型更改为 size_t

- objarray:添加对 memoryview.itemsize 属性的支持

- objarray:向字节数组添加解码方法

- 更新 makefile 以使用 $(CAT) 变量而不是硬编码的“cat”

- 更新 makefile 以使用 $(TOUCH) 而不是硬编码的“touch”

extmod:

- moduzlib:更新到 uzlib 2.9.2

- modlwip:添加对轮询 UDP 套接字的支持以提高可写性

- moduhashlib:仅在需要时才包含 sha256 的实现

- 将旧的大写宏名称转换为小写

- moduwebsocket:将`websocket`重构为`uwebsocket`

- modlwip:将#ifdef 更改为#if 以检查MICROPY_PY_LWIP

- modlwip:修复使用 backlog=1 轮询侦听套接字时的错误

- modlwip:添加并发保护宏

- modwebrepl:修复处理大小为 0 的文件的逻辑

- vfs_fat:更新新的oofatfs版本

- modlwip:修复错误时不释放并发锁的情况

- moduselect:调整 select_select 和 poll_register 以使用 size_t

- vfs_fat:如果标准 FAT16/SFD 格式失败,则回退到 FAT32

- modlwip:处理接受队列时连接关闭的情况

- modlwip:处理用空PCB调用的accept回调的情况

- modlwip: 使用 lwIP 并发锁保护 socket.accept

- modlwip:在 TCP 错误时释放任何存储的传入缓冲区/连接

- modlwip:在接受回调中使用正确的侦听套接字对象

- modlwip:中止一段时间内没有完全关闭的 TCP 连接

- modurandom:添加 init 方法以播种 Yasmarang 生成器

- machine_signal:修复没有参数传递给 Signal() 时的错误

- modussl_mbedtls:支持非阻塞握手

- modussl_axtls:添加非阻塞模式支持

- moducryptolib:添加可选的 AES-CTR 支持

- modujson:在指数中使用 + 处理浮点数的解析

- machine_i2c:更改 C 级 API 以允许拆分 I2C 事务

- machine_i2c:在 writemem() 调用中删除对临时内存的需求

- machine_i2c:添加可以写一个buf向量的i2c.writevto()

- modlwip:在关闭 PCB 之前释放任何传入的 buf/连接

- modlwip:在关闭PCB之前注册TCP关闭超时回调

库:

- utils/pyexec:使用事件驱动的 REPL 实现粘贴模式

- utils/printf: 排除 gcc 9 及更高版本的 __GI_vsnprintf 别名

- utils/gchelper_m3:添加许可证头并清理代码

- utils/gchelper_m3: 添加 gc_helper_get_sp() 函数

- utils/gchelper:为汇编函数添加gchelper.h 头文件

- netutils:添加打印以太网帧跟踪信息的功能

- oofatfs:更新oofatfs库到R0.13c工作分支

- oofatfs:为新的 oofatfs 版本更新 ffconf.h 配置

- oofatfs:更新 oofatfs 库以解决逻辑问题

- stm32lib:更新库以修复 F7 MMC 容量计算

- utils/pyexec: 添加 pyexec_file_if_exists() 辅助函数

- utils:使 pyexec_file_if_exists 运行冻结的脚本(如果存在)

- utils/interrupt_char: 启动时使中断字符无效

- stm32lib:更新库以修复 F4 MCU 上的 UART9/10 波特率

- nrfx:将 nrfx 升级到 v1.7.1 加上 UART 错误修复

司机:

- 内存/spiflash:返工wait_sr 以修复uninit'd 变量'sr'

- display/ssd1306.py:更改为使用新的 i2c.writevto() 方法

工具:

- mpy-tool.py:添加对冻结本机代码的支持

- upip.py:对于原生,使用“raise arg”而不是 no-arg raise 形式

- pyboard.py:从示例用法注释中添加缺失的行

- mpy-tool.py:调整 super() 的使用以使其适用于 Python 2

- mpy-tool.py: 修复 QStrWindow 的初始化,并删除未使用的变量

- pyboard.py:如果使用了 data_consumer,则不累积输出数据

- upip.py:添加对具有自定义默认值的多个索引 URL 的支持

测试:

- 基础:为 try-except-else 和 try-except-else-finally 添加测试

- run-tests:支持通过mpy运行本地测试

- 导入:添加导入 x64 本机代码的测试

- extmod:在非常大的块设备上添加对 FAT 文件系统的测试

- run-tests:结束repl测试时忽略进程终止中的异常

- micropython:为失败的堆分配添加一些测试

- 如果 (u)machine 不存在,则跳过需要机器模块的测试

- ussl_basic:禁用 setblocking() 调用

- basics/sys1.py:添加测试调用 sys.exit() 没有任何参数

- pyb:现在更新 UART 预期输出,默认超时为 0

- 基础知识:为内存视图属性添加覆盖测试

mpy-cross:

- 启用 x64 原生 .mpy 文件的构建

- 添加“-march=" 选择本机发射器的选项

- 支持编译时启用 MICROPY_PY___FILE__

- 在此类主机上运行时自动选择ARMV6 arch

- 添加 --version 命令行选项以打印版本信息

所有端口:

- 将 PYB 消息前缀更改为 MPY

- 将旧的大写宏名称转换为小写

- 更新以使用新的 oofatfs 版本

- {stm32,esp8266}:为冻结的本机代码设置 mpy-cross 本机拱门

- 转换为使用 pyexec_file_if_exists() 来执行 boot/main.py

unix 端口:

- mpthreadport:添加线程 deinit 代码以在退出时停止线程

- mpthreadport:线程退出时清理已用内存

- mpthreadport:删除线程垃圾收集中的忙等待循环

- modmachine:处理重复的 /dev/mem 打开错误

- modffi:禁用调试时消除未使用的参数警告

- Makefile:更新覆盖测试以匹配 Travis 中的测试

- mpthreadport:在 Mac OS X 上使用命名信号量

- gcollect:确保为 GC 正确捕获堆栈/regs

- 覆盖率:添加打印文字 % 字符的测试

- modusocket:修复在 usocket.settimeout impl 中使用setsockopt

- modusocket:当连接或接受超时时引发 ETIMEDOUT

windows 端口:

- 修复 REPL 上的换行行为

qemu-arm 端口:

- 返工以在带有 Cortex-M CPU 的板上运行裸机

- 使用 gchelper 代码获取寄存器进行 GC 扫描

stm32 端口:

- 实现 machine.lightsleep()

- rtc:在测试 RTC 是否已在启动时运行时检查 RTCEN=1

- usbdev: 添加 USB 配置选项为板自供电

- usbdev:添加 USB 配置选项以获取电路板的最大功率

- main: 使板定义的 UART REPL 使用静态对象和缓冲区

-boards/stm32f429_af.csv:修复 UART defs Tx->TX 和 Rx->RX 中的拼写错误

- mboot: 添加选项以自动检测 DFU 使用的 USB 端口

- sdcard:不要在 F7 MCU 上使用 SD 时钟旁路

- usb:为从主机接收的 USB VCP 数据添加流量控制选项

-boards/make-pins.py:添加对STM32H7 ADC外设的基本支持

-boards/stm32h743_af.csv:将ADC条目添加到引脚能力表

- adc:在 STM32H7 MCU 的引脚上添加对 ADC 的基本支持

- mboot:不管USB_HS_IN_FS,使用USB HS作为主USB设备

- mboot:添加对 STM32F769 MCU 的支持

- mboot:添加对 GPIO 端口 G、H、I 和 J 的支持

- mboot: 允许通过 deploy-stlink 进行部署

- usb:不管USB_HS_IN_FS,都使用USB HS作为主要的USB设备

- usbd_conf:完全支持带有外部PHY的USB HS

- modmachine:如果已启用,则使 bootloader() 进入自定义加载程序

-板/STM32F769DISC:支持USB HS与外部PHY的使用

- 板/STM32F769DISC:默认配置为与 mboot 一起使用

- systick:将 sys_tick_XXX 函数重命名为 systick_XXX

- systick:使用循环 func 表进行周期性 systick 回调

- pendsv:清理 pendsv IRQ 处理程序并消除重复代码

- pendsv:添加在 pendsv IRQ 级别安排回调的能力

- systick:提供更好的插槽编译时可配置性

- modnetwork:将 lwIP 轮询更改为基于后台 sysstick

- 将 gchelper 汇编代码移动到 lib/utils 以供其他端口使用

- gccollect:使用 gchelper.h 标头而不是显式声明

- pendsv:修复内联 asm 常量和前缀 # 字符

- mboot/Makefile: 支持为自定义板指定 BOARD_DIR

- 板/NUCLEO_L476RG:添加对 RNG、DAC 和 CAN1 的支持

-boards/make-pins.py:添加cmdline选项以支持mboot使用

- mboot/Makefile:从 board pins.csv 生成所有引脚头文件

- mboot/mphalport.h:包含 genhdr/pins.h 以访问引脚名称

- qspi: 使用静态 af 函数进行引脚配置

- mboot:添加对从文件系统加载 gzip 固件的支持

- mboot:将一些 BSS 变量移动到未清零的新部分

- mboot: 添加支持脚本,可以对 mboot 和应用程序进行编程

- modmachine:添加将用户数据传递给 mboot 的能力

- mboot:添加挂钩以在启动早期运行特定于板的代码

-boards/stm32f429.ld:将 F429 MCU 的 uPy 堆大小增加 64k

- extint:修复 ExtInt 以使用非 GPIO 引脚

- extint:修复 L4 的 RTC 警报/FS USB EXTI 常量

- make-stmconst.py:改进正则表达式以解析更多常量

- extint:为 F0 添加非 GPIO EXTI IRQ 源

- extint:删除未使用的(和不正确的)EXTI 定义

- stm32_it:修复 RTC IRQ 处理程序以处理 F0 MCU 上的所有 EXTI IRQ

- sdram:将 SDRAM 接口的 GPIO 速度提高到“非常高”

-boards/NUCLEO_F767ZI:修复关于 HCLK 计算的评论

- mphalport:添加 mp_hal_get_mac() 辅助函数

- eth:添加底层以太网MAC驱动

- network_lan:为ETH驱动添加高级network.LAN接口

- mpconfigport.h:开启lwIP并发保护机制

- modnetwork:如果为NULL则不调用NIC回调

-板/NUCLEO_F767ZI:启用lwIP和以太网外设

-板/STM32F7DISC:启用lwIP和以太网外设

-板/STM32F769DISC:启用lwIP和以太网外设

-板/NUCLEO_F429ZI:启用lwIP和以太网外设

- qspi:启用样本移位并禁用超时计数器

- Makefile:允许开发板为固件指定其链接器部分

-boards/STM32F769DISC:使用外部QSPI flash来存储一些代码

- 使用全局 lwip 构建配置并支持没有 lwip 的构建

- 板:更新以使用 lwip 组件的新构建配置

- 添加编译时选项以使用 HSI 作为时钟源

- mboot:更新以匹配最新的 oofatfs 版本

- 允许在禁用 GIL 的情况下使用线程构建

- qspi:将引脚速度设置为非常高并允许配置一些选项

- usb:允许在应用程序和 mboot 中覆盖 USB 字符串和 VID/PID

- stm32_it:通过检查 UART7 定义保护 UART7_IRQHandler

- mboot:在 Makefile 中默认设置 USE_MBOOT=1

- system_stm32:提供HSI校准的默认值

- mpconfigport.h: 删除 malloc/free/realloc helper 宏

-boards/STM32L476DISC:在STM32L476DISC板上启用伺服支持

- Makefile:允许使用包含的 Makefile 覆盖 CROSS_COMPILE

- 使默认 USB_VCP 流通过主 REPL 的 uos.dupterm

- 定时器:暴露定时器 1 和 8 的 PWM BRK 功能

- uart:正确处理 RXNE=0 和 ORE=1 的字符溢出情况

- 将 MICROPY_HW_HAS_SDCARD 重命名为 MICROPY_HW_ENABLE_SDCARD

- 添加对 MMC 驱动程序的支持,通过 pyb.MMCard 类公开

- moduos:允许在不启用 USB 的情况下再次编译

- network_wiznet5k:添加跟踪以太网 TX 和 RX 帧的能力

- network_wiznet5k:添加设置MAC地址的能力

- network_wiznet5k:如果设备没有MAC,则自动设置MAC

- i2cslave:添加对 H7 MCU 的支持

- usbd_conf:在 H7 MCU 上添加对 USB HS 外设的支持

- mboot:添加对 H7 MCU 的支持,采用 H743 闪存布局

-boards/NUCLEO_H743ZI:添加配置选项以支持 mboot

- 板/NUCLEO_L432KC:禁用复杂的编号和默认冻结的模组

- rtc:添加自动 LSE 绕过检测并回退到 LSE 然后是 LSI

- rtc:删除未使用的 LSE 检测代码

- rtc:从源代码注释中删除非 ASCII mu 字符

- 定时器:正确初始化 F7/H7/L4 上的扩展中断设置

- system_stm32f0:启动时使能 PWR 时钟

- system_stm32f0:添加对使用 HSE 和 PLL 作为 SYSCLK 的支持

- powerctrl:启用EIWUP以确保RTC从待机状态唤醒设备

- dac:重做 DAC 驱动程序以使用直接寄存器访问

- usbdev:在运行时创建 USB 设备描述符而不是静态

- usb: 为不带MSC的VCP+VCP添加USB设备模式

- powerctrl:在关闭 PLLSAI 之前取消选择 PLLSAI 作为 48MHz src

- usb:删除 mp_hal_set_interrupt_char 现在它在启动时重置

- main: 将默认的 UART REPL rx 缓冲区从 64 字节增加到 260 字节

- powerctrl:支持在HSI为时钟源时改变频率

- flash:修复L432页擦除计算页码的bug

- 添加对 F413 MCU 的支持

-板:添加NUCLEO_F413ZH板配置

- machine_uart:将默认UART超时更改为0,用于非阻塞

- 将恢复出厂设置的文件和代码移动到单独的源文件中

- usbd_cdc_interface:如果 USB 重新连接,则不要重新传输字符

- rtc:允许从 mpconfigboard 覆盖启动超时

- dma:为 H7 MCU 初始化 DMA 结构的所有成员

- dma:始终重置和配置 H7 DMA 外设

- spi: 使能SPI IRQ并为H7 MCU添加IRQHandlers

- irq:修复 IRQ_ENABLE_STATS 统计配置以在所有 MCU 上工作

-boards/NUCLEO_H743ZI:在该板上启用SPI3

- modmachine:创建专用的 asm 函数以分支到引导加载程序

- adc: 修复STM32F411的VBAT_DIV为4

- machine_i2c:更新以支持新的 C 级 I2C API

- i2c:使硬件 I2C 超时可配置

- machine_i2c:简化静态硬件 I2C 对象的 ROM 初始化

- i2c:支持通过关键字arg设置I2C TIMINGR值

- sdcard:添加开关中断以确保只运行正确的 SD/MMC IRQ

- sdram: 更新 MPU 设置以阻止无效区域,更改属性

- mboot/README:修复一些错别字,描述引导加载程序和 fwupdate.py

- modmachine:在 bootloader() 中,在重置外设之前禁用缓存

cc3200 端口:

- mods/modussl:修复 mod_ssl_wrap_socket 中的 ca_certs arg 验证

- modmachine:将 machine.sleep 重命名为 machine.lightsleep

- 使用来自 lib/utils 的通用 gchelper_m3.s 代码

- mpconfigport.h: 禁用 OrderedDict 的编译器优化

esp8266 端口:

- modmachine:将可选的 time_ms 参数实现到 machine.deepsleep

- modmachine:将 machine.sleep 重命名为 machine.lightsleep

- modmachine:实现简单的machine.lightsleep功能

- modmachine:在lightsleep中,只有wifi关闭时才等待

- modmachine:在machine.idle中waiti之后调用ets_event_poll

- modmachine:处理定时器溢出以获得更长的时间

- 修复 ticks_ms 以正确处理系统计数器的环绕

esp32 端口:

- 不要将 py/scheduler.o 放在 iRAM 中,不再需要它

- Makefile:将所有 IDF 组件放在 .a 库中以使用 IDF ld 脚本

- 使用 sdkconfig 和新的 ldgen 程序更新到最新的 ESP IDF

- machine_timer:在软复位时取消初始化所有活动定时器

- Makefile:确保 sdkconfig.h 目录存在

- 板:使用自动 xtal freq 配置而不是默认 40MHz

- modsocket:修复连接/绑定无法解析给定地址时崩溃

- modmachine:将 machine.sleep 重命名为 machine.lightsleep

- 在 mem-map 模式下使用 SPIRAM,因此所有这些都可以用于 uPy 堆

- modmachine:增加对改变CPU频率的支持

- modsocket:修复 usocket.send 以接受带有缓冲区原型的任何内容

- modsocket:将 socket.socket 改为 socket 类型而不是 fun

- network_lan: 将 arg 添加到构造函数以设置 ETH PHY 的时钟模式

- modnetwork:捕获并报告以太网事件

- network_lan: 将 power arg 设为构造函数可选

- modnetwork:修复wifi.isconnected断开连接后返回False

- modnetwork:通过 WLAN.status('rssi') 为 WiFi STA 实现 RSSI

- modnetwork: 删除多余的 esp_log include

- Makefile:向引导加载程序和应用程序添加一些缺少的 IDF 源文件

- mphalport:使用 ets_delay_us 为 mp_hal_delay_us_fast

- machine_pin:设置为 None 作为 pull 值禁用上拉/下拉

- machine_pin:添加新的PULL_HOLD引脚拉模式

- machine_pin:返工拉模式配置以修复 GPIO 保持功能

- mpthreadport:如果线程未初始化,则提前退出 vPortCleanUpTCB

-板:默认开启双核支持

-boards/sdkconfig: 禁用 CPU1 上空闲任务的 WDT 检查

- 自述文件:添加有关 pyparsing 和正确 Python 版本的信息

- machine_wdt:添加超时参数以选择间隔,使 WDT 恐慌

- modnetwork:将类型更改为 size_t 以使用 mp_obj_str_get_data

- machine_uart:实现UART.deinit()方法

- network_ppp:添加关闭PPP连接的超时时间

- machine_touchpad:使用 FSM 的硬件定时器来启用触摸唤醒

- modsocket:当在非阻塞模式下接受失败时引发 EAGAIN

javascript 端口:

- 通过 Emscripten 添加针对 JavaScript 的新端口

- 修复 Emscripten 异步加载,并使用现代 clang 进行编译

- 库:使用 Buffer.alloc() 因为不推荐使用 new Buffer()

- 从脚本中传递(错误)退出值以处理调用者

- Makefile:使用夹具修复无法表示的浮动错误

- 库:将数据作为原始字节打印到标准输出,以便 unicode 工作

nrf 端口:

- modmachine:将 machine.sleep 重命名为 machine.lightsleep

- uart:使用公式代替开关进行波特率计算

- uart:删除未使用的 machine.UART() 参数

- 收缩 ” 不存在”错误消息

- pin: 清理 Pin.__str__ 打印相关信息

- pin:在Pin.__str__中打印pull信息

- 股票代码:删除重复的 NRFX_IRQ_PRIORITY_SET

-定时器:修复使用软PWM时禁用定时器1

- 自述文件:更新 nrfjprog 下载链接

- 蓝牙:改善 nrf52 目标的广告行为

-蓝牙:解决ble_drv.c中的编译警告

- readme: 定义板子时更新 make flash 命令

- pwm:删除machine_hard_pwm_instances中多余的NULL

-蓝牙:添加对SoftDevice s132 6.1.1版的支持

- 板:将所有 nrf52832 目标迁移到新的 BLE 堆栈

- 蓝牙:弃用 SoftDevice s132 v6.0.0

-蓝牙:添加对SoftDevice s140 6.1.1版的支持

- 板:将 nrf52840 目标迁移到新的 BLE 堆栈

- 蓝牙:弃用 SoftDevice s140 v6.0.0

- 自述文件:添加关于 LTO 的部分

- Makefile:更新以匹配最新的 oofatfs 版本

- 板:添加对基于 BLYST Nano 模块的板的支持

- 将 mp_obj_str_get_data 的所有用途的类型更改为 size_t

- machine/i2c:更新以支持新的 C 级 I2C API

- nrfx_glue:适应 nrfx v.1.7.1

- uart:将 UART 驱动程序改为非阻塞并使用 IRQ

- mpconfigport.h:默认开启MICROPY_KBD_EXCEPTION

- uart:让UART打印输出一些东西,并添加write方法

- mphalport:在UART REPL等待时使用wfi来省电

和风端口:

- modzephyr:修改 stacks_analyze() 调用

- modzsensor:将“TEMP”传感器通道重命名为“DIE_TEMP”

- prj_minimal.conf:切换到 CONFIG_STDOUT_CONSOLE

- Makefile:来自 Zephyr 的代理 ram_report、rom_report 目标

- prj_frdm_k64f.conf: 添加 fxos8700 传感器

- prj_frdm_kw41z.conf:添加新的板卡配置

- i2c:添加对硬件 i2c 的支持

- CMakeLists.txt:设置AR指向Zephyr工具链exe

- machine_i2c:更新以支持新的 C 级 I2C API

- 切换回在特定于板的配置中启用 I2C

文档:

- 机器:将睡眠更改为lightsleep并添加超时参数

- 将 machine.sleep 的所有情况转换为 machine.lightsleep

- ure: 修复 match.group 签名以指示索引参数是必需的

- uos:记录传递给 dupterm 的流对象的额外要求

- pyboard:添加链接到pyboard v1.1 原理图和布局PDF

- pyboard:使 pyboard v1.1 引脚分配成为 quickref 中显示的默认值

- 开发:修复 example_add_ints 的 C 模块示例中的拼写错误

- library/machine.Pin:将 PULL_HOLD 常量添加到可能的引脚拉动

- esp32:添加一个关于使用 Pin.PULL_HOLD 的注释到 quickref

- esp32:添加引脚隔离结合 deepsleep 的示例

- develop:删除从其他文档中错误复制的段落

- cmodules:修复示例以全局定义 MODULE_EXAMPLE_ENABLED

- cmodules:注意可以设置 MODULE_EXAMPLE_ENABLED 的各种方式

- esp8266:添加 APA102 LED 教程

- esp32:使用非默认 IO 修正 ESP32 硬件 SPI 的 quickref

- machine.I2C:添加writevto方法写入字节bufs的向量

- pyboard/quickref:引用新机器.I2C 而不是旧的 pyb.I2C

特拉维斯:

- 更新以使用 Ubuntu 16.04 Xenial 进行 CI 构建

- 启用通过 mpy 运行本机代码的测试

========

2019 年 1 月 26 日星期六 00:56:48 +1100

v1.10 对原生发射器、新的 nrf 端口、统一文档的巨大改进

在此版本中,对核心和端口进行了广泛的改进和添加。在核心方面,主要改进是原生发射器对通用 Python 功能(例如生成器和复杂的异常处理)提供更全面的支持,并且生成的机器代码更小并保持其效率。在其他地方,模糊测试用于查找和消除一些极端情况的错误,用户类在不使用特殊访问器时进行了优化,现在支持数字文字中的下划线(PEP515),并且添加了 uio.IOBase 类以允许用户定义的流。

对于扩展模块,现在有一个 VfsPosix 文件系统组件,一个支持 AES 的新 ucryptolib 模块,添加了 ure.sub() 和 uhashlib.md5,并且 lwIP 套接字实现现在有工作 TCP 监听/接受积压。

与上一个版本相比,最小基线核心代码大小减少了约 2.2%,裸臂端口减少了大约 1500 字节,最小 x86 端口减少了 3500 字节。由于添加了新功能(例如 ucryptolib、ure.sub),大多数其他端口的大小都增加了。

stm32 端口引入了一个新的引导加载程序——mboot——它支持通过 USB FS、USB HS 以及自定义 I2C 协议上传 DFU,还支持对外部 SPI flash 进行编程。USB 设备驱动程序进行了重大重构,提高了 VCP 吞吐量,并在一个 USB 设备上支持 2x VCP 接口。已集成 lwIP,并添加了对 SDRAM 的支持。现在支持 Cortex-M0 CPU 和 STM32F0 MCU。

对于 esp8266 端口,堆增加了 2kbytes,如果没有 WLAN 接口处于活动状态,无线电会自动进入睡眠状态,现在可以将 UART 与 REPL 断开连接并配置其 RX 缓冲区长度。软复位时,插座现在被清理干净。

esp32 端口增加了对外部 SPI RAM、PPPoS 功能的支持,提高了使用线程时的性能和稳定性,以及其他一般错误修复。

Nordic MCU 有一个新的 nrf 端口,目前支持 nRF51x 和 nRF52x 芯片。

文档现已统一,因此只有一套文档涵盖所有端口。并添加了 esp32 端口的初始文档。

在 Python API 级别有两个变化,与以前的版本没有倒退:

- uos.dupterm 现在要求传递给它的流是从 uio.IOBase 派生的(或者是本机流对象)。

- esp32 neopixel 驱动的默认时序从 400kHz 更改为 800kHz;在 NeoPixel 构造函数中未明确指定“timing”参数的现有代码可能需要更新以将其指定为“timing=0”以获得 400kHz 计时。

更改的详细列表如下。

py 核心:

- mpconfig.h:在自动检测机器字节序时更严格

- mpstate.h:调整根指针部分的开始以排除非ptrs

- nlrx86:在 nlr_push 上为 gcc 8.0 及更高版本使用裸属性

- vm: 调整 gil_divisor 的 #if 逻辑,使大括号平衡

- objfun:修复 DECODE_CODESTATE_SIZE() 宏中的变量名称

- vm:在多操作码分派中使用枚举名称而不是幻数

- vm: 使用 switch stmt 时提高操作码调度的性能

- repl:修复不匹配括号和未完成引号的处理

- misc.h: 添加 MP_STATIC_ASSERT 宏来做静态断言

- 编译:将有关 ITER_BUF_NSLOTS 的注释更改为静态断言

-emitbc:避免未定义的行为调用 memset() 与 NULL 1st arg

- parsenum: 使用 int 而不是 mp_int_t 来解析浮点指数

- parsenum:避免未定义的行为解析具有大指数的浮点数

- objfloat:修复高质量浮点哈希中未定义的移位行为

- mpz:避免 mpz_hash 中整数溢出时的未定义行为

- objfloat:修复未定义的整数行为散列负零

- gc: 当达到 GC 阈值时不要不必要地收集两次

- parsenum:调整大括号使它们平衡

- modbuiltins:添加对舍入整数的支持

- objgenerator:将状态保存在 old_globals 而不是局部变量中

- objgenerator:防止重新进入生成器

-发射:将fast和deref合并为一个函数,用于加载/存储/删除

-emit:将yield value 和yield-from 的emit 函数合二为一

-发射:将构建元组/列表/映射发射功能合二为一

- 发射:将名称和全局组合成一个用于加载/存储/删除的函数

-发射:将加载/存储/删除订阅者合并为一个发射函数

-发射:将加载/存储/删除属性合并为一个发射函数

-发射:将break_loop和continue_loop合并为一个发射函数

- 发射:将导入 from/name/star 合并为一个发射函数

- 发射:将构建集/切片合并到现有的构建发射函数中

-emit:将setup 和/except/finally 组合成一个emit 函数

- objtype:通过检查类型修复 mp_obj_new_type 中的断言失败

- objtype:通过检查类型修复 super_attr 中的断言失败

- 流:将 mp_stream_p_t 的定义从 obj.h 移动到 stream.h

- 阅读器:允许 MICROPY_VFS_POSIX 与 MICROPY_READER_POSIX 一起使用

- mpconfig.h: 添加默认MICROPY_VFS_FAT 配置值

- obj.h:在 mp_obj_type_t 中引入“flags”条目

- objtype: 不要暴露 mp_obj_instance_attr()

- objtype:通过跳过特殊访问器来优化实例 get/set/del

- gc: 添加 gc_sweep_all() 函数来运行所有剩余的终结器

- 词法分析器:在数字文字中添加对下划线的支持

- modio:添加 uio.IOBase 类以允许定义用户流

- mkrules.mk:配置文件更改时重新生成所有 qstr

-stream:引入并使用高效的mp_get_stream来访问stream_p

- objarray:用新的 MP_OBJ_ARRAY_TYPECODE_FLAG_RW 宏替换 0x80

- 在 print() 和 sys.print_exception() 中添加对流对象的检查

- compile:结合break和continue编译功能

- 编译:将 subscript_2 和 subscript_3 合并为一个函数

- compile:结合全局和非局部语句编译函数

- compile: 结合 or_test 和 and_test 编译函数

- 编译:将 expr、xor_expr 和 and_expr 组合成一个函数

- 编译:在异步中正确处理返回/中断/继续

- objgenerator:消除对 mp_obj_gen_wrap 包装器实例的需要

- obj.h:修复禁用浮动时对象 repr C 的损坏构建

- 简化一些访问module和type dict的map的情况

- objdict:使 mp_obj_dict_get_map 成为内联函数

- objmodule:使 mp_obj_module_get_globals 成为内联函数

- obj.h:如果将 obj repr D 与 single-prec float 一起使用,则会出现编译错误

- malloc:如果在没有 GC 的情况下使用终结器,则发出编译警告

- objgenerator:使用普通的 fun attr 访问器代码实现 __name__

- 发射:优化非调试构建的迭代 asm 代码

- 运行时:当 return int 不小时使用 mp_obj_new_int_from_ll

- 流:引入 MP_STREAM_GET_FILENO ioctl 请求

- objstr: 在格式错误信息中,使用带有 %s 的公共字符串作为类型

- asmthumb:优化本机代码调用运行时粘合函数

- mpconfig.h:引入MICROPY_DEBUG_PRINTER 用于调试输出

- 修复启用调试的编译并更多地使用 DEBUG_printf

- emitnative: 原生跳转助手的因子通用代码

- 发射:通过比较全字修复 x86 原生零检查

- asmx86:使用通用的emit函数来简化cmp的emit函数

- 发射:修复本地本地堆栈以从正确位置开始

- 发射:简化对来自 nlr_buf_t 的异常对象的处理

- 发射:根据需要为本地堆栈信息分配空间

- 编译:对于动态编译器,加宽文字 1 以获得正确的移位

- py.mk:不要硬编码 libaxtls.a 的路径

- gc: 在 gc_alloc 中,在搜索空闲内存之前重置 n_free var

- objarray:当禁用字节数组时允许再次构建

- 流:调整 mp_stream_posix_XXX 取 void*,而不是 mp_obj_t

- 发射:使用小表来简化本地regs的处理

- asmxtensa:当堆栈使用大于 127 时处理函数进入/退出

- asm*:支持汇编代码跳转到寄存器,获得PC+off

-emitnative:优化和改进本机代码中的异常处理

- asmxtensa:修复 addi 编码中 regs 顺序的错误

- asmxtensa:优化加载本地地址并支持更大的偏移量

- 发射:修复了在 viper ARM 模式下存储 16 和 32 值的错误

- asmxtensa:使用窄版本的 add instr 来减少本机代码大小

- emitnx86:修复传递给 mp_setup_code_state 的参数数量,4 而不是 5

- vm:使用复杂的嵌套 finally 修复 finally-return 的处理

- 发射:一旦处理就取消捕获的异常以防止再次加注

- 发射:在 try 和 with 中添加对 return/break/continue 的支持

- compile: 编译异常处理程序开始/结束的因素代码

- py.mk:直接从其源文件构建 axtls 库

- 运行时:修复对 MICROPY_PORT_DEINIT_FUNC 的错误测试

- objarray: bytearray: 允许构造函数的第二/第三个参数

- 发射:在外部范围内修复 try-finally,所以 finally 被取消

- 修复本机函数,使其以正确的全局上下文运行

- 通过压缩有趣的签名优化对 mp_arg_check_num 的调用

- asmx64:修复使用 r13 和 0 偏移量创建 disp 时汇编程序中的错误

- {asmx86,asmx64}:扩展 test_r8_with_r8 以接受所有 8 个较低的 regs

-emit:将 MP_EMIT_OPT_xxx 枚举从 compile.h 移动到 emitglue.h

- 发射:删除需要调用 set_native_type 来设置原生/毒蛇模式

- 发射:移除需要调用 set_native_type 来设置 viper 返回类型

-emit:完全删除set_native_type,arg 类型在编译器中设置

- compile:合并viper注解和普通参数编译阶段

- compile:编译viper类型注解的因子代码

- 发射:在搜索演员时重用 mp_native_type_from_qstr

- 使 viper 函数具有与 native 相同的入口签名

- 发射:支持 viper 函数的任意数量的参数

- 发射:使用宏代替原始 offsetof 用于插槽位置

- 发射:使 viper funcs 以正确的全局上下文运行

- asmxtensa:使用 func 表进行间接调用,而不是原始指针

- asmthumb:使用 CMSIS 宏检测 I-cache 的存在

- objtype:澄清关于配置就地操作方法的评论

- 通过使用缩写和一些改写来缩短错误消息

- objstr:使 % (__mod__) 格式化操作符可配置

- modbuiltins:在 !MICROPY_PY_BUILTINS_STR_OP_MODULO 时使八进制/十六进制工作

- objgenerator:实现 PEP479,StopIteration 转换为 RuntimeError

- parsenum:避免 10 次幂的舍入错误

- modmath:添加 math.factorial、优化和非选择实现

- objstr: 格式:返回字节格式字符串的字节结果

- 使用 MP_OBJ_FUN_MAKE_SIG 宏修复 msvc C++ 编译器警告

- vm: 对 BUILD_SLICE 操作码进行小幅优化

- objfloat:修复 abs(-0.0) 所以它返回 0.0

- 发射:将本机代码的常量对象放在单独的常量表中

- asm*: 移除 ASM_MOV_REG_ALIGNED_IMM 发射宏,不再使用

- 发射:将 const_table 的类型从 uintptr_t 更改为 mp_uint_t

- vm: 修复将 GeneratorExit 类型抛出到 yield-from 的情况

- 运行时:在 mp_resume 中调用 __next__ 时删除 nlr 保护

- objtype:支持 get/set/delitem 特殊方法的完整对象模型

- vm:当 VM 引发异常时,将 exc obj 放在 func 状态的开头

- asmthumb:添加宽 ldr 以处理更大的偏移

- asmthumb:清理 asm_thumb_bl_ind 以使用新优化的 ldr 助手

- asmthumb:扩展 asm 入口/出口以处理大于 508 字节的堆栈

- asmx86:注释掉未使用的 asm_x86_nop 以防止编译器警告

- asmx64:扩展 asm_x64_mov_reg_pcrel 以接受高位寄存器

- asmxtensa:对常量表偏移量使用适当的计算

- 发射:在 C 堆栈上重新排序本机状态,因此 nlr_buf_t 是第一个

- 发射器:在本地发射器中实现 yield 和 yield-from

- 运行时:使用 mp_import_name 实现 mp_import_from 的尾部

- 运行时:删除 mp_import_name 中关于级别为 0 的注释

- obj.h:在 repr-D MP_OBJ_IS_x 宏中使用 uint64_t 而不是 mp_int_t

- 发射:清理未使用的宏并转发函数声明

- asmx64:更改堆栈管理以通过 rsp 而不是 rbp 引用本地变量

- asmx64:更改间接调用以从本机表加载 fun ptr

- asmx86:将堆栈管理更改为通过 esp 而不是 ebp 引用本地变量

- asmx86:更改间接调用以从本机表加载 fun ptr

- emitnative:从所有 archs 的 const 表中加载本机 fun 表 ptr

- asmarm:简化 asm_arm_bl_ind 以仅通过索引加载,而不是文字

- asmthumb:从 asm_thumb_bl_ind 函数中删除未使用的 fun_ptr 参数

- 发射:从 ASM_CALL_IND 宏中删除未使用的 ptr 参数

- 发射:将堆叠立即值的使用合并到一个函数中

-emitnative:简化emit_native_import_name 中的毒蛇模式处理

- 发射:在可能的情况下推送内部 None 而不是 const obj

- 发射:在全局原生常量表中放置 None/False/True

- objtype:删除关于从用户 __getattr__ 捕获 exc 的评论

- objstr:使 str.count() 方法可配置

- objmodule:为模块实现 PEP 562 的 __getattr__

- py.mk: 构建 axtls 时使用 -Wno-all 来防止所有警告

- 编译:修复本地到非本地急切隐式转换的情况

- 编译:从全局/非本地 stmt 助手中删除不需要的变量

- 范围:优化 scope_find_or_add_id 以不需要“添加”参数

- 运行时:在处理“import *”时修复 qstr 假设

- unicode:修复检查有效 utf8 对 contn 字符更严格的问题

- py.mk:修复损坏的 Gmane URL

- 添加选项以减少 GC 堆栈整数大小以节省 RAM

- objboundmeth:支持从方法加载通用属性

- obj: 添加对 __int__ 特殊方法的支持

- objexcept: 使用宏让emergency exc buf中的offset更清晰

- objexcept:确保 mp_obj_new_exception_msg 不复制/格式化 msg

- objdict:使 .fromkeys() 方法可配置

- bc:修复了地图缓存操作码的操作码大小计算

- qstr:为新的 qstr 池分配设置下限

- objarray:为对象的“free”字段引入“memview_offset”别名

- gc:调整 gc_alloc() 签名以能够接受多个标志

- mpconfig:将MICROPY_VERSION 宏移动到mpconfig.h 中的静态宏

- 运行时:在 mp_deinit 函数中解锁 GIL

- 获取可选的 VM 堆栈溢出检查,编译并再次工作

-修复无效操作码和注释中VM返回异常的位置

- modio:使 iobase_singleton 对象为 const 以便它进入 ROM

- obj.h:在 MP_OBJ_FUN_MAKE_SIG 中将 args 显式转换为 uint32_t

extmod:

- modlwip:更新以使用 lwIP v2.0

- modlwip:为新的套接字设置 POLLHUP 标志

- modlwip:允许编译时禁用MICROPY_PY_LWIP

- modussl_mbedtls:立即在 wrap_socket 中填充 sock 成员

- modussl_mbedtls:使用 mbedtls_entropy_func 作为 CTR-DRBG 熵

- vfs:在参数结构中正确使用 u_rom_obj

- vfs_fat:将 FileIO/TextIO 类型重命名为 mp_type_vfs_fat_XXX

- 添加 VfsPosix 文件系统组件

- vfs:添加用于声明 VfsPosix 文件系统的快速路径

- vfs:引入C级VFS协议,具有快速import_stat

- moduhashlib:在所有 Python 方法和对象前加上 uhashlib

- moduhashlib:重新排序函数,以便它们按哈希类型分组

- moduhashlib:允许禁用 sha256 类

- moduhashlib:允许使用 mbedTLS 的 sha256 实现

- moduhashlib:使函数对象静态

- uos_dupterm:在 dupterm 对象上使用本机 C 流方法

- modussl_axtls:修复 __del__ 指向 mp_stream_close_obj

- vfs_fat_diskio:因子磁盘ioctl代码以减少代码大小

- 更新以使用新的 mp_get_stream 助手

- moducryptolib:添加具有加密功能的 ucryptolib 模块

- moducryptolib:可选择将 MODE_* 常量导出到 Python

- moducryptolib:使用 axTLS 重构干净接口的函数

- moducryptolib:为此模块添加 mbedTLS 实现

- moducryptolib:在所有 Python 方法/对象前加上 ucryptolib

- moducryptolib:缩短异常消息以减少代码大小

- moducryptolib:不包括 arpa/inet.h,不需要

- modure:添加 match.groups() 方法和测试

- modure:添加 match.span()、start() 和 end() 方法和测试

- modure:添加ure.sub()函数和方法,以及测试

- vfs: 支持使用 VfsPosix 打开文件描述符 (int)

- 修复以支持使用对象表示 D 进行编译

- vfs_posix:支持没有(或空)参数的 ilistdir

- vfs_posix:如果可以转换 ilistdir 中的类型,请使用 DTTOIF

- modlwip:关闭套接字时取消注册所有 lwIP 回调

- modussl:支持通过 ioctl 在 ussl 对象中进行轮询

- modbtree:更新以使用新的 mp_stream_posix_XXX 签名

- modussl_axtls:对允许的 args 数组中的对象使用 MP_ROM_PTR

- moduhashlib:添加 md5 实现,使用 axTLS

- moduhashlib:为 mbedtls >=2.7.0 使用更新的消息摘要 API

- moduhashlib:使用 mbedtls 添加 md5 实现

- moductypes:从聚合类型枚举中删除 BITFIELD

- moductypes:接受 OrderedDict 作为结构描述

- modonewire:修复重置时间以匹配 1-wire 规格

- moductypes:使 sizeof() 接受“布局”参数

- modlwip:实现 TCP 监听/接受 backlog

- modlwip:用积压修复侦听套接字的读取轮询

- moductypes:为 PTR 实现 __int__

- moductypes:为原生 C 类型添加别名

库:

- lwip:将 lwIP 更新到 v2.0.3,标记 STABLE-2_0_3_RELEASE

- stm32lib:更新库以包含对 STM32F0 MCU 的支持

- utils/printf:使 DEBUG_printf 实现更易于访问

- utils:修复支持使用对象表示 D 进行编译

- utils:公开pyb_set_repl_info函数

- libm_dbl/tanh:使 tanh 更高效并处理大数

- libm/math:使 tanhf 更高效并处理大数

- libm/wf_tgamma: 修复 tgammaf 对 -inf 的处理,应该返回 nan

- libm_dbl:为 DEBUG 构建添加 copysign() 的实现

- stm32lib:更新库以解决填充 USB TX FIFO 的问题

- libm/math: 在 float union 中修复 int 类型,uint64_t 应该是 uint32_t

- libm/math:如果端口需要,添加__signbitf 的实现

- utils/pyexec:如果已锁定且 REPL 处于活动状态,则强制解锁堆

- utils:添加通用的 MicroPython IRQ 辅助函数

- stm32lib:更新库以获取 F413 BOR defs 并修复 gcc 8 警告

司机:

- wiznet5k:修复 MACRAW 套接字计算数据包大小的错误

- 内存/spiflash:将缓存缓冲区移动到用户提供的配置

- memory/spiflash:重命名函数以指示它们使用缓存

- memory/spiflash: 添加直接擦除/读/写功能

- sdcard:更改驱动程序以使用新的块设备协议

- sdcard: 修复计算 SD 卡扇区数的问题

- sdcard:读操作中间不释放CS

- cc3000:自定义 typedef 使用 cc3000_time_t 而不是 time_t

- display/lcd160cr.py:在fast_spi中,刷新前发送命令

- sdcard:在测试中使用 os.umount 和 machine 模块而不是 pyb

- sdcard:去掉ioctl方法中的调试打印语句

- dht:如果需要,允许开漏高调用特定于 DHT

工具:

- pydfu.py:将下载包大小增加到完整的 2048 字节

- pydfu.py:添加对多内存段的支持

- pydfu.py:对于较新的 pyusb,使用 getfullargspec 而不是 getargspec

- pydfu.py:使用 Python 3.6 在 Windows 上解决 stdio 刷新错误

- pydfu.py:改进DFU重置,自动检测USB传输大小

- mpy-tool.py: 支持冻结 obj 表示中的浮点数 D

- mpy-tool.py: 将冻结的 bignum 数字数据放在 ROM 中,而不是放在 RAM 中

- mpy-tool.py:使用冻结的 mods 设置合理的初始动态 qstr 池大小

- mpy-tool.py:使用地图缓存修复操作码的操作码大小计算

- mpy-tool.py:当冻结的mpy中没有qstrs时修复构建错误

- dfu.py:将图像数据填充为 8 字节对齐以支持 L476

- pyboard.py: run exec: command as a string

- pyboard.py: 将 PyboardError 的基类更改为 Exception

- pyboard.py: 在 TelnetToSerial.close 中用 if 替换 try/except

测试:

- basics/special_methods2:启用一些有效的附加测试

- 为 bigint hash、float hash 和 float 解析添加一些测试

- extmod:添加从用户 VFS 导入脚本的测试

- extmod:移除uos_vfs的条件导入,它不再存在

- pyb: 再次运行 i2c 和 pyb1 pyboard 测试

- io:添加简单的IOBase测试

- extmod:为 VFS 和用户定义的文件系统和文件添加测试

- unix/extra_coverage:不要用 NULL 写乐趣测试流 objs

- extmod/ujson_dump.py: 添加转储测试到非流对象

- extmod:为 ujson.dump 写入用户 IOBase 对象添加测试

- 导入:添加导入无效.mpy 文件的测试

- 在打印和 sys.print_exception 中使用“文件”参数添加测试

- extmod/ucryptolib*:为 ucryptolib 模块添加测试

- extmod/ucryptolib*:为 ucryptolib 添加和就地测试

- basics/namedtuple*:先导入ucollections

- 将非文件系统 io 测试移动到带有 io_ 前缀的基本目录

- 改进 VFS 的特征检测

- 运行测试:添加 nrf 目标

- run-tests:改进在远程目标上运行时的崩溃报告

- extmod/ujson_dump_iobase.py:返回写入的字节数

- 使测试在没有浮动支持的目标上工作

- micropython/viper_cond:将大整数的测试添加为 bool

- run-tests: 使用本机发射器启用 bool1.py 测试

- micropython:在 native/viper 下为 try 和 with 块添加测试

- basics/set_pop.py: 打印前对设置进行排序以获得一致的输出

- basics/int_big_error.py: 使用 bytearray 测试 int 溢出

- 修改打印带有 1 arg 的异常的 repr 的测试

- 基础知识:为 PEP479 失败的生成器测试提供 .exp 文件

- run-tests:为展开跳转启用本机测试

- 基础知识:在 try-finally 中添加更多返回测试

- 基础知识:在进入/退出时为上下文管理器添加测试用例

- float/cmath_fun.py:修复复数小实部的截断

- float: test -inf 和一些特殊数学函数的较大值

- 删除 pyboard.py 符号链接并从 ../tools 导入

- extmod/uhashlib_md5:为MD5算法添加覆盖测试

- float/float_parse.py:添加小数精度测试

- cpydiff:为 bytes.format() 的行为差异添加案例

- micropython:在本机和 viper funcs 中测试加载 const objs

- 基础:从 yield-from-throw 测试中分离出 gen throw 测试

- run-tests: 启用了现在通过的本地测试,yield 有效

- unix/ffi_float:如果 strtof() 不可用则跳过

- uselect_poll_basic:为 uselect.poll 不变量添加基本测试

- uctypes_sizeof_od:测试使用 OrderedDict 作为结构描述符

- basics/class_getattr:删除 __getattribute__ 的无效测试

- 使 bytes/str.count() 测试可跳过

- extmod/uctypes_sizeof_layout:测试不同布局的sizeof

- 导入:为 module_getattr.py 添加 .exp 文件以不需要 Py 3.7

- cmdline/cmd_showbc.py:修复测试以显式声明非本地

- extmod:当 CPython 没有 poll() 时跳过 uselect 测试

- import_long_dyn:测试长动态名称的“import *”

- io:更新测试以使用 uos.remove() 而不是 uos.unlink()

- basics/special_methods:为 __int__ 添加测试用例

- extmod/uctypes_ptr_le: 在指针字段上测试 int() 操作

- extmod/uctypes_error:为不支持的一元操作添加测试

- run-tests:通过以 dir 为前缀使 .exp 和 .out 文件名唯一

mpy-cross:

- 使构建独立于 extmod 目录

- Makefile:也取消定义 MICROPY_FORCE_32BIT 和 CROSS_COMPILE

最小端口:

- main: 允许在不启用 GC 的情况下进行编译

Unix 端口:

- 支持 MICROPY_VFS_POSIX 并在覆盖构建中启用它

- moduos_vfs:添加传统uos模块中缺失的uos函数

- mpconfigport.h:启用MICROPY_PY_UCRYPTOLIB

- mpconfigport_coverage:启用ure组,span,start,end和sub

- modos:将 dir-type 转换为 ilistdir 中文件类型的 stat-type

- 使用 MP_STREAM_GET_FILENO 允许 uselect 轮询一般对象

- Makefile:覆盖范围:也显式构建“axtls”

- Makefile:使用 nanbox 构建启用 ussl 模块

- Makefile:删除不再需要的 libaxtls.a 的构建

- Makefile:在 $BUILD 中构建 libffi

- mpconfigport_coverage.h:启用 uhashlib.md5

- modos:包括用于 MP_S_IFDIR 等的 extmod/vfs.h

- modjni:更新 .getiter 签名以包含 mp_obj_iter_buf_t*

- modjni:在覆盖范围内构建和 nanbox 构建

- mpconfigport.h:为uhashlib.md5启用MICROPY_PY_UHASHLIB_MD5

- moduselect:如果要修改的对象不在轮询器中,则引发 OSError(ENOENT)

- modusocket:socket.settimeout() 的初始实现

- modusocket:完成socket.settimeout() 实现

- modffi:添加对“q”/“Q”规范的支持(int64_t/uint64_t)

- Makefile:允许覆盖/省略 pthread lib 名称

- modos: 重命名 unlink 删除以与其他端口一致

- 启用MICROPY_PY_BUILTINS_ROUND_INT

- 启用 uio.IOBase

- 在进行软复位时调用 gc_sweep_all()

windows 端口:

- 开箱即用地打印调试信息

- msvc:支持自定义编译器生成头文件

- msvc:实现文件/目录类型查询

- 删除旧的 GNU readline 支持的残留痕迹

stm32 端口:

- usbd_conf.h:删除未使用的宏并清理头文件

- usbd_conf:将文件更改为 unix 行尾并应用样式

- usbdev: 将文件转换为 unix 行尾

- usbdev:删除未使用的 RxState 变量和未使用的结构体

- usbdev: 诚实对待数据没有写入 HID 端点

- usbd_hid_interface:解决可能的竞争条件与中断

- i2c:为 F4 MCU 添加新的硬件 I2C 驱动程序

- machine_i2c:为machine.I2C 类使用新的F4 硬件I2C 驱动程序

- accel:切换 pyb.Accel 以使用新的 C 级 I2C API

- modpyb:为pyb mod 引入MICROPY_PY_PYB_LEGACY 配置选项

- pyb_i2c:将 pyb.I2C 置于 MICROPY_PY_PYB_LEGACY 设置下

- modpyb:删除未使用的包含并清理注释

- usb:在USB_VCP类中直接使用usbd_cdc_itf_t指针

- usb:将CDC下层和接口状态合二为一

- usb:将HID下层和接口状态合二为一

- usb:使 CDC 端点定义对核心 usbdev 驱动程序私有

- usb: 改变 CDC tx/rx funcs 为 CDC 状态,而不是 usbdev 状态

- usb:将 HID 报告函数更改为 HID 状态,而不是 usbdev 状态

- usb:增加在一个 USB 设备上具有 2 个 VCP 接口的能力

- usb:初始化cdc变量以防止编译器警告

- 在具有这些外设的 F4 系列上启用 UART7/8

- 添加对 STM32L496 MCU 的支持

-boards:为STM32L496 MCU添加board ld和af.csv文件

- 板:为新板 STM32L496GDISC 添加配置文件

- rtc:不要尝试在 RTC 上设置 SubSeconds 值

- 将 lwIP 集成为 usocket 模块的实现

- rng:如果 MCU 没有 HW RNG,则使用 Yasmarang 进行 rng_get()

- 从 usbdev 和 usbhost 目录中删除不需要的 HTML 发行说明

- 添加底层硬件I2C从驱动

- 添加新组件,mboot 引导加载程序

- 如果没有块设备,则允许没有存储支持

- 添加对 Cortex-M0 CPU 的支持

- timer:通过使用regs使timer_get_source_freq更高效

- 允许板禁用MICROPY_VFS_FAT

-板:为STM32F0 MCU添加startup_stm32f0.s

- 添加对 STM32F0 MCU 的支持

-板:为STM32F091添加alt-func CSV列表和链接器脚本

-板:添加NUCLEO_F091RC板配置文件

- README:更新以在支持的 MCU 列表中包含 STM32F0

- 板:拆分组合 alt-func 标签并修复一些其他错误

- 板:确保 NUCLEO_F767ZI 的 USB OTG 电源关闭

- flash:将H7 flash大小增加到完整的2MiB

- modnetwork:当网络被取消时不要关闭netif

- modnetwork:将 NIC 对象的 base 条目从 type 更改为 base

- modnetwork:提供ifconfig方法的通用实现

- 使用 MACRAW 模式和 lwIP 为 Wiznet5k 添加网络驱动程序

- modnetwork:修复通用 ifconfig 方法中的 arg 索引

- mpconfigport.h:启用 DELATTR_SETATTR 和 BUILTINS_NOTIMPLEMENTED

- mboot:将 USB rx_buf 和 DFU buf 大小增加到完整的 2048 字节

- Makefile:当任何板配置更改时重建所有 qstrs

- 板/STM32L476DISC:更新 SPI 闪存配置以更改缓存

- 定时器:在 F0 MCU 上支持 TIM1

- i2c:修复 i2c_write 中 F0 和 F7 MCU 的 num_acks 计算

- i2cslave:修复从属 IRQ 处理程序中事件回调的顺序

- mboot:调整用户重置模式超时,使其以模式=1 结束

-boards/stm32f091_af.csv:分割多个功能的标签

- 板/NUCLEO_F091RC:添加 Arduino 命名的引脚并重命名 CPU 引脚

- 可以:在适当的地方使用 MP_OBJ_ARRAY_TYPECODE_FLAG_RW

- spi: 修复 SPI 驱动程序,使其可以发送/接收超过 65535 字节的数据

- mboot:定义复位模式循环和超时的常量

- 板/NUCLEO_F091RC:修复 TICK_INT_PRIORITY 使其成为最高优先级

- qspi:不要求数据读写为4的倍数

- mboot:增加对外部SPI flash的擦除/读/写支持

-板:为STM32F722添加.ld和af.csv文件

- modnetwork: 修复 ifconfig() 中 DNS IP 地址的查询

- mboot: 修复 USB 状态内存访问无效的问题

- mboot:只为正在使用的 USB 外设编译代码

- mboot:始终使用 1WS 的闪存延迟来匹配 48MHz HCLK

- 直接访问字典映射而不是使用辅助函数

- 支持用对象表示 D 编译

- fatfs_port:修复未启用MICROPY_HW_ENABLE_RTC时的错误

- 定时器:使用枚举索引pyb_timer_init_helper 中的关键字arg

- timer: 将tick_hz arg 添加到Timer 构造函数和init 方法中

- mphalport:使 mp_hal_stdin_rx_chr/stdout_tx_strn 弱链接

- flashbdev:修复 L4 块缓存的错误,取消引用块大小

- 添加静态配置引脚复用功能的方法

- sdcard: 使用 mp_hal_pin_config_alt_static 配置 SD 卡引脚

- sdram: 从 OpenMV 项目添加 SDRAM 驱动程序

- sdram:将 SDRAM 驱动程序集成到其余代码中

- sdram:在 F7 MCU 上启用外部 SDRAM 上的 MPU

-板/STM32F429DISC:启用板载SDRAM

- sdcard:获取与 F4、F7、H7 MCU 一起使用的 SDMMC alt func 宏名称

- Makefile:对 ll_usb.c HAL 源文件使用 -Wno-attributes

- rtc:让 rtc.wakeup 在 F0 MCU 上工作

- modmachine:让 machine.sleep 在 F0 MCU 上工作

- extint.h:为 RTC 中断使用正确的 EXTI 线

- modmachine:让 machine.sleep 在 L4 MCU 上工作

- adc:在读通道辅助函数中禁用VBAT

- adc:修复 F0 MCU 上的 ADC 读数以仅采样单个通道

- spi:向上舍入预分频器 calc 以从不超过请求的波特率

- sdram:允许板子进行额外配置,并调整 MPU 设置

- 板/STM32F429DISC:将突发长度和自动刷新添加到 SDRAM cfg

-板/STM32F7DISC:启用板载SDRAM

- spi: 将pyb.SPI 和machine.SPI 绑定拆分到自己的文件中

- spi: 添加底层SPI协议的实现

- mboot/main: 使用正确的DFU下载地址公式

- Makefile:允许指定外部 BOARD_DIR 目录

- 板/STM32L476DISC:启用外部 RTC xtal 以使 RTC 工作

- 对于具有 PLLSAI 的 MCU,允许以 2MHz 的增量设置 SYSCLK

- dma:将 DMA 方向作为参数传递给 dma_init 不在 cfg 结构中

- dma:如果通道上的方向发生变化,则重新初始化 DMA

- sdcard:仅对 SDIO TX/RX 使用单个 DMA 流

- sdcard:将临时 DMA 状态从 BSS 移动到堆栈

- spi: 确保在 SPI proto init 中设置所有 SPI 配置值

- 将闪存 IRQ 优先级从 2 更改为 6 以防止抢占

- flashbdev:保护闪存写入免受缓存刷新和 USB MSC

- sdcard:在调用 HAL DMA 函数之前完全重置 SDMMC periph

- dma:让 DMA 在 F0 MCU 上工作

- sdram:在 MPU cfg 中添加对 32 位宽数据总线和 256MB 的支持

-板/STM32F769DISC:添加可选支持外部SDRAM

- 添加对 STM32F765xx MCU 的支持

- Makefile:在双精度浮点构建中包含 copysign.c

- adc: 修复 L4 MCU 的 ADC 校准比例,它们使用 3.0V

- adc:增加 L4 MCU 上内部传感器的采样时间

- dcmi:为DCMI periph 添加F4/F7/H7 hal 文件和dma 定义

- uart:在 F0 MCU 上添加对 USART3-8 的支持

- 板/NUCLEO_F091RC:使用默认引脚启用 USART3-8

- modmachine:从停止模式唤醒后重新启用 PLLSAI[1]

- powerctrl:移动函数以将 SYSCLK 设置为新的 powerctrl 文件

- powerctrl:修复AHB也设置时配置APB1/APB2频率

- powerctrl: 设置RCC PLL并在启动时使用的因子代码

- powerctrl:在 F7 MCU 上配置 PLLSAI 的因子代码

- powerctrl:优化将默认值传递给 set_sysclk

- powerctrl:如果已经达到所需频率,则不要配置时钟

- usbd_conf:在USB HS TX FIFO中为CDC数据包分配足够的空间

- mpconfigport.h:启用math.factorial,优化版本

- main: 为board添加配置宏以设置堆开始/结束

- usbd_cdc_interface: 处理断开 IRQ 设置 VCP 断开

- usbd_cdc_interface:重构 USB CDC tx 代码以不使用 SOF IRQ

- spi:修复H7 MCU上SPI时钟源的计算

-boards/stm32h743.ld:修复总闪存大小,应为 2048k

- system_stm32:介绍 PLL3 设置的配置定义

- adc:为 L4 MCU 添加 ADC 自动校准

- flashbdev:为 irq.h 添加缺少的包含

- 伺服:仅在需要时才初始化 TIM5,以节省电量

- usb:在停用时完全取消初始化 USB periph

- powerctrl:将(深度)睡眠功能从 modmachine.c 移动到 powerctrl.c

- powerctrl:在停止模式期间禁用 IRQ 以允许在唤醒时重新配置

- 板/STM32F429DISC:启用 UART 作为辅助 REPL

- uart:打印UART对象时始终显示流量设置

- mboot: 提供 led_state_all 函数来减少代码大小

- mboot:添加对第 4 板 LED 的支持

- 板子:添加将 mboot 放在 PYBv1.x 上的配置

- mboot:添加在 PYBv1.x 上使用 mboot 的文档

- powerctrl:在 L4 MCU 上添加对待机模式的支持

- uart:在UART构造函数和init方法中添加rxbuf关键字arg

-板卡:添加STM32L432KC芯片配置文件

- 添加对 STM32L432 的外设支持

-板:添加NUCLEO_L432KC板配置文件

- 将 UART Python 绑定从 uart.c 拆分到 machine_uart.c

- uart:从 machine_uart.c 中提取计算波特率的代码

- uart:返工 uart_get_baudrate 所以它不需要 UART 句柄

- uart:分解代码以将 RX 缓冲区设置为函数 uart_set_rxbuf

- uart:从 UART 对象结构中删除 HAL 的 UART_HandleTypeDef

- uart:简化UART的deinit,无需调用HAL

- uart:对于UART init,直接传入参数,而不是通过HAL struct

- uart: 将 char_width/char_mask 的配置移动到 uart.c

- uart:添加具有静态内置 UART 对象的能力

- extint:在 H7 MCU 上为 RTC 事件使用正确的 EXTI 通道

- adc:使用 16 位刻度修复 H7 上的校准电压/温度读数

- adc:增加 H7 MCU 内部源的 ADC 采样时间

- adc:支持 H7 MCU 上的 16 位 ADC 配置

-板:允许OpenOCD stm_flash程序接受单个FW img

-boards/NUCLEO_L432KC:为此MCU指定L4 OpenOCD配置文件

- main: 添加板配置选项以启用/禁用挂载 SD 卡

- 实现 UART.irq() 方法,初始支持 RX 空闲 IRQ

- uart: 修复 uart_rx_any 在没有缓冲区的情况下返回 0 或 1

- uart:始终在初始化时启用全局 UART IRQ 处理程序

- uart:读取RX数据寄存器后清除溢出错误标志

- uart:确保即使使用键盘输入也能处理用户 IRQ

- modmachine:修复 reset_cause 以在 L4 MCU 上正确提供 DEEPSLEEP

- sdcard:在 H7 MCU 上使用 SDMMC2 时正确重置 SD periph

- wdt:将单例 WDT 对象设为 const,以便它进入 ROM

- main: 使线程和 FS 状态静态并在不需要时排除

- 使用 MICROPY_GC_STACK_ENTRY_TYPE 来节省一些 RAM

- .gitattributes: 删除 stm32 usbdev 文件的特殊文本处理

- 启用MICROPY_PY_BUILTINS_ROUND_INT

- 启用描述符

- 启用 uio.IOBase

- 启用 ure.sub()

- 在进行软复位时调用 gc_sweep_all()

cc3200 端口:

- mods: 包含 stream.h 以获取 mp_stream_p_t 的定义

- mods:直接访问字典映射而不是使用辅助函数

- 使用 MICROPY_GC_STACK_ENTRY_TYPE 来节省一些 RAM

esp8266 端口:

- mpconfigport.h:添加一些常用Python模块的弱链接

- modnetwork:如果 STA 处于非活动状态,则为主机名返回空 str

- modnetwork:获取无效的 WLAN id 时引发 ValueError

- modmachine:允许在构建之外配置 I2C 和 SPI

- 更改 UART(0) 以通过 uos.dupterm 接口附加到 REPL

- modules/ntptime.py:删除新设置时间的打印

- mpconfigport.h:为标准构建启用 ucryptolib 模块

- esp8266_common.ld:将 mp_keyboard_interrupt 放入 iRAM

-modesp:在执行闪存擦除/写入之前/之后运行 ets_loop_iter

- 如果 obj 没有被送入,让 machine.WDT 触发软件 WDT

- Makefile:删除 libaxtls.a 的构建并添加回调的配置

- main: 将堆增加 2kb,现在 axtls Rodata 在 ROM 中

- 移除本地代码块中 GC 指针的扫描

- ets_alt_task:如果没有其他事件发生,处理空闲回调

- modnetwork:如果没有接口活动,则自动进行无线电睡眠

- modnetwork:在强制power mgmt之前等待iface掉线

- machine_uart:将 rxbuf 关键字 arg 添加到 UART 构造函数/init

- main:在 boot.py 运行之前在 dupterm 上为 REPL 激活 UART(0)

- esp_mphal:提供 mp_hal_pin_od_high_dht 以便 DHT 可靠运行

- 使用新的 tick_hz 参数实现高分辨率计时器

- 使用 MICROPY_GC_STACK_ENTRY_TYPE 来节省一些 RAM

- 启用MICROPY_PY_BUILTINS_ROUND_INT

- 启用描述符

- 启用 uio.IOBase

- 启用 ure.sub()

- 在进行软复位时调用 gc_sweep_all(),清理套接字

esp32 端口:

- 更新到最新的 ESP IDF 版本

- modnetwork:修复新 IDF API 的 STA/AP 激活/停用

- Makefile:更新到最新的 ESP IDF 版本

- esp32.custom_common.ld: 将 soc 代码放入 iram0

- 在原始 REPL 模式下使 ESP-IDF 日志消息静音

- Makefile:提取通用 C 和 C++ 标志以进行一致编译

- 添加对使用外部 SPI RAM 构建的支持

- modnetwork:在使用静态 IP 配置时修复 isconnected()

- 移除特定端口的 uhashlib 实现并使用通用的

- fatfs_port:实现 get_fattime 使 FAT 文件有时间戳

- 更新到最新的 ESP IDF

- 模块:在冻结模块中包含 umqtt 库

- mpconfigport.h: 启用 ucryptolib 模块

- 允许在禁用 uPy 浮动的情况下构建

- 减少处理预定 Python 回调的延迟

- modnetwork:在 WLAN.connect() 中添加对 bssid 参数的支持

- 实现 WLAN.status() 返回码

-modesp32:将原始温度读数添加到 esp32 模块

-modesp32:在 const locals dict 中使用 MP_ROM_QSTR 和 MP_ROM_PTR

- modnetwork: 添加 network.(W)LAN.ifconfig('dhcp') 支持

- 更新到最新的 ESP IDF

- 修复 machine.sleep/deepsleep 函数中的 int 溢出

- machine_rtc:修复本地字典条目,init qstr 指向 init meth

-modesp32: 添加hall_sensor() 函数

- network_ppp:添加PPPoS功能

- mpthreadport:删除所有线程时防止死锁

- 从系统堆而不是 uPy 堆分配任务 TCB 和堆栈

- machine_uart:将 txbuf/rxbuf 关键字参数添加到 UART 构造/初始化

- machine_uart:实现UART.sendbreak()方法

- machine_pwm:通过自动缩放定时器 res 支持更高的 PWM 频率

- machine_pwm:在 deinit 上停止将 PWM 信号路由到引脚

- modmachine:启用 machine.sleep() 现在 IDF 支持它

- mphalport:当发送到 REPL 时,如果发送了很多字符,则仅释放 GIL

- modsocket:对于套接字只读,如果套接字会阻塞,则释放 GIL

- machine_pin:添加 Pin.off() 和 Pin.on() 方法

- Makefile:使用系统提供的数学库而不是 uPy 一个

- modules/neopixel.py:将 NeoPixel 更改为不同的默认时间

- machine_hw_spi:为 HSPI 和 VSPI 使用单独的 DMA 通道

- machine_hw_spi:使硬件SPI对象静态分配

- 使用新的 tick_hz 参数实现高分辨率计时器

- 启用MICROPY_PY_BUILTINS_ROUND_INT

- 启用描述符

- 启用 uio.IOBase

- 启用 ure.sub()

- 在进行软复位时调用 gc_sweep_all()

nrf 端口:

- 向 Nordic nRF5x MCU 添加新端口

- 对齐 help.c 内置帮助文本以使用正确的类型

- 添加WT51822-S4AT板

- 使用 --gc-sections 来减少代码大小

- 添加编译开关以禁用 VFS

- 启用链接时优化 (LTO)

-boards/arduino_primo:添加随机 mod 使用的缺失 hal_rng 配置

- 实现NVMC HAL

- 默认禁用 FAT/VFS

- hal/nvmc:删除在 nvmc.h 中抛出的预编译器错误,如果在 nrf52 上

- hal/hal_nvmc: 修复非 SD 代码

- 板:更新链接器脚本

- 添加 micro:bit 文件系统

-drivers/bluetooth/ble_drv:不处理非事件

- modules/uos/microbitfs: 将 OSError 设为数字

- main: 在启动时运行 boot.py 和 main.py

- 使用micropython libm 保存flash

- main: 添加ampy支持

- 驱动程序/蓝牙:断开连接后开始广告

- 通过删除最后一个参数来更新 mp_obj_new_str 的用法

- 删除默认 FROZEN_MPY_DIR

- 在 NUS 控制台中启用 Ctrl-C 的选项

- board/microbit:添加microbit显示和图像文件的副本

- board/microbit:从 microbit-dal 添加 microbit 字体类型的副本

- board/microbit:将显示/图像文件从 .cpp 重命名为 .c ext

- board/microbit:将开发板模块从 C++ 更新为 C 代码

- board/microbit:添加框架更新以构建 micro:bit 模块

- board/microbit:尝试在没有 FP 的情况下获得工作显示/图像

-boards/microbit: 添加 modmicrobit.h 暴露模块初始化函数

- board/microbit:在 board_modules.h 中包含 modmicrobit.h

-drivers/softpwm:将init函数重命名为softpwm_init0

- 驱动程序/自动收报机:用于微比特显示/音乐的返工自动收报机功能

- 板/微比特:更新以使用新的股票代码

- 模块/音乐:在音乐模块加载时删除 softpwm/ticker 的初始化

- 更新 main.c 以初始化相关的板卡驱动程序(如果已启用)

- 板/微位:将微位目标移动到自定义链接器脚本

-boards/microbit/modules:修复 modmicrobit.c 中的制表符

- board/microbit: 将温度加回 microbit 模块

- 板/微比特:更新顶级滴答低 pri 回调的文档

- 将板模块头从 board_modules.h 更改为 boardmodules.h

- 在 main 中包含 nrf_sdm.h 周围添加 if-def

- board/microbit:启用音乐、显示、图像、microbit 模块

- 驱动程序/蓝牙:每次迭代将 evt_len 重置为静态缓冲区的大小

- 添加对 s132 v5.0.0 蓝牙堆栈的支持 (#139)

- 将 PYB 前缀更改为 MPY

- 如果设置了 FROZEN_MPY_DIR,则仅搜索冻结的文件

- mpconfigport:减少 nrf51 的 GC 堆栈大小

- modules/machine/pin:默认禁用引脚调试

-boards/common.ld:避免溢出 .text 区域

-drivers/ble_drv:修复 SD s132 v.2.0.1 的 sd_ble_enable 错误

- 使 machine.UART 可选

- 修复 ld 脚本中的堆栈大小并启用 MICROPY_STACK_CHECK

- 改进 boardmodules.mk 的包含

- 通过 Makefile 标志使 LTO 可配置

- board/microbit/modules: 在 microbit_sleep 中初始化变量

- 用 nrfx-HAL 替换 custom-HAL

- 使用 boot.py 或 main.py 时修复 NUS 控制台

- Makefile:修复 .PHONY 目标

- 默认启用 -g 标志

- 使链接脚本更加模块化

- 从 Pin 对象中删除端口成员

- modules/machine/pin:在 Pin 上添加对 IRQ 的支持

- modules/machine/spi: nrf52x 的 sPIM (EasyDMA) 后端

-drivers/bluetooth/ble_drv:增加正在进行的最大传输

- gccollect:使用 SP 寄存器代替 MSP

- 板:从板配置头中删除未使用的定义

-boards/wt51822_s4at:nrfx 和 Pin IRQ 引入后的修复

- 模块/随机:重命名 RNG 的端口配置

- 模块:对齐方法来解析 pin 对象

- adc:允许外部使用new和value read函数

- spi:允许外部使用new和transfer函数

- 如果给出 0us,则立即从 mp_hal_delay_us 返回

- modules/machine/adc:修复使 adc.c 为 nrf51 目标编译

- 蓝牙:修复了 s132 v5 BLE 堆栈

- Makefile:使用“标准”GCC -fshort-enums 而不是 --short-enums

- Makefile: 删除 -fstack-usage

- Makefile:使用 C11 而不是 Gnu99

- Makefile:细化死代码消除参数

- modules/machine/adc:不要将 -1 与无符号数进行比较

- modules/uos/microbitfs: 修复 errno 定义

- modules/uos/microbitfs: 删除未使用的uos_mbfs_mount

- 默认开启 micro:bit FS

- board/feather52:将虚假目标移动到主 Makefile

- modules/machine/spi: 移动 enable-guard 以防止错误包含

- nrfx_config:移回 nrf52832 以使用非 EasyDMA SPI

- 将 pyb 模块移动到板模块

- 添加对读取输出引脚状态的支持

- 概括feather52目标

- 蓝牙:添加对 s132/s140 v6 的支持,移除 s132 v2/3/5

- 板:使用断言检查堆栈/堆大小

- 快速修复对象元组中具有开放数组维度的常量对象

- 蓝牙:替换 BLE REPL (WebBluetooth) URL

- 为 oofatfs 添加显式 make 标志

- 使用 -fno-lto 标志编译 nlr 对象

- 升级到 nrfx 1.1.0

- 驱动程序:将许可证文本添加到ticker.h 和softpwm.h

- 使用 mp_raise_ValueError 而不是 nlr_raise(...)

- 在构建中包含 $(SRC_MOD)

- Makefile:确保pins_gen.c 的依赖关系是正确的

- 在函数定义中正确使用 (void) 而不是 ()

-boards/microbit:使用MICROPY_PY_BUILTINS_FLOAT 检测FP 支持

- 更新 nrfjprog 链接以允许下载任何版本

- 驱动程序/闪存:修复不正确的页面对齐检查

- uos:添加 mbfs __enter__ 和 __exit__ 处理程序

- 为 nrf52840 启用所有 PWM、RTC 和定时器实例

- ADC/PWM/RTCounter 实例的正确索引检查

- 为每个 PWM 实例使用单独的配置

- uart:删除未使用的 UART.char_width 字段

- uart:修复 UART.writechar() 只写 1 个字节

- 蓝牙:将 GAP_ADV_MAX_SIZE 设置为 31 (s132/s140)

-蓝牙:更新BLE堆栈下载脚本

pic16bit 端口:

- 更新以使用最新的 xc16 v1.35 编译器进行编译

teensy 端口:

- 添加自己的 uart.h 以不依赖 stm32 的文件版本

和风端口:

- README: 关于 qemu_x86_nommu 存在的提示

- main: 内置测试套件后,降到 REPL

- mpconfigport.h:启用 uhashlib 和 ubinascii 模块

- modzsensor:zephyr 传感器子系统绑定

- prj_base.conf:启用 DHCP 并将静态 IP 分组在一起

- 添加带有传感器驱动程序的 prj_disco_l475_iot1.conf

- Makefile:将 kobj_types_h_target 添加到 Z_EXPORTS

- prj_base.conf:删除过时的 CONFIG_NET_NBUF_RX_COUNT 选项

- prj_qemu_x86.conf:删除过时的 CONFIG_RAM_SIZE

- 将 CONFIG_CONSOLE_PULL 重命名为 CONFIG_CONSOLE_SUBSYS

- prj_base.conf:更新 net_config 子系统重构

- CMakeLists:更新最新的 Zephyr CMake 使用重构

文档:

- 库:为 ucollections.deque 添加文档

- ucryptolib:为新的 ucryptolib 模块添加文档

- usocket: getaddrinfo: 描述 af/type/proto 可选参数

- usocket:对 getaddrinfo 语法的小修正

- uos:明确块设备block_num 参数是一个索引

- ure:文档 sub()、groups()、span()、start() 和 end()

- ure:记录一些更多支持的正则表达式运算符

- pyboard:对于 Latex 构建,使用较小的 quickref jpg,并且没有 gif

- 库:从所有 pyb 模块文档中删除“only”指令

- library/machine.UART:删除wipy端口的条件文档

- 库/机器:删除wake_reason 函数的条件文档

- 库/机器:删除 rng 函数的条件文档

- 库/索引:从库索引中删除所有条件

- 库/索引:添加有关使用 help('modules') 进行发现的提示

- 参考/索引:删除内联 asm 文档的条件

- 库/机器:删除机器类索引中的条件

- 将 WiPy 特定的 Timer 类移动到单独的 doc 文件

- library/machine.I2C.rst:阐明原始 I2C 操作的可用性

- library/machine.UART.rst:指定可选的 txbuf 和 rxbuf 参数

- library/pyb: 为 mount 和 old block proto 添加弃用警告

- pyboard:修复内部/外部链接使用 Sphinx 样式的问题

- library/machine.SPI:添加关于波特率不精确的注释

- 库/网络:将特定的网络类移动到它们自己的文件中

- 库/网络:使 AbstractNIC 方法布局正确

- 将所有端口统一为一套文档

- 删除sphinx_selective_exclude,不再使用

- wipy:修复 network.Server 的链接,以及 boot.py 的标记

- uselect:描述 poll.register/modify 行为的更多方面

- machine.Pin:添加有关 irq 处理程序参数的注释

- machine.Pin:记录 Pin.irq 方法的“硬”参数

- uio:文档 StringIO/BytesIO(alloc_size) 构造函数

- library/uctypes:添加示例并进行常规更新

- conf.py:使用 https 链接到 docs.python.org

- ure:完整描述支持的语法子集,添加示例

- 差异:澄清差异是针对 Python 3.4

- 为 esp32 端口添加初始文档,包括快速参考和通用

- 库:为 esp32 模块添加文档

特拉维斯:

- 为工作服安装显式版本的 urllib3

- 在 Travis CI 下使用构建阶段和并行作业

- 将 nrf 端口添加到 Travis CI 构建

例子:

- 嵌入:在 README.md 中添加代码标记并修复拼写错误

- 嵌入:修复对已释放内存、词法分析器 src 名称的引用

- 嵌入:修复硬编码 MP_QSTR_ 值

- unix/ffi_example:清理和更新ffi示例

自述文件:

- 更新端口列表以包含 esp32 和 nrf

- 删除对“make axtls”的引用,不再需要

- 删除文档中关于选择不同端口的文本

========

2018 年 5 月 11 日星期五 16:39:59 +1000

v1.9.4 解析器大小减小,新的 Python 堆栈,stm32 改进,新的 esp32 端口

此版本显着减少了解析器的大小,并删除了未使用的代码和额外的测试,以提高核心的覆盖率。为作用域分配引入了一个新的可选的内部 Python 堆栈,可用于代替 alloca 以提供更高效和灵活的临时内存;见MICROPY_ENABLE_PYSTACK。stm32 端口有很多改进和内部代码重构,并且乐鑫 ESP32 SoC 的端口已从其开发存储库中合并。

与上一个版本相比,代码大小的变化是(以字节为单位,使用 gcc 7.3):

裸臂:-1832

最小 x86:-2608

Unix x64:-5129

unix nanbox:+1024

stm32:+2120

cc3200:-928

esp8266:+336

减少主要是由于解析器的大小减小,其中规则指针表被压缩为偏移量表。stm32 和 esp8266 端口的增加是由于附加功能,例如 framebuf 模块中的更多颜色格式以及添加 ujson.dump()。

代码覆盖率(由 gcov 衡量)自上一个版本(左侧为 v1.9.3,右侧为 v1.9.4)以来有所改进:

py: 15202/15447 = 98.4% -> 15391/15513 = 99.2%

extmod: 2227/ 2363 = 94.2% -> 2291/ 2430 = 94.3%

Python 用户看到的更改和添加包括: 改进 dir() 和制表符完成以列出对象的所有可用属性;添加具有固定大小的高效 ucollections.deque 类型;更好地处理和轮询进入错误状态的套接字;在 ussl.wrap_socket (for axtls) 中实现 key 和 cert 关键字参数;uos.ilistdir 现在返回文件大小位于第四位的 4 元组。

C 级别的更改包括:从 mp_obj_new_str 中删除“make_qstr_if_not_already”参数;将 mp_exc_recursion_depth 重命名为 mp_raise_recursion_depth;删除 mp_const_MemoryError_obj;流关闭操作从方法切换到 ioctl;重构如何使用每个架构的文件编译本机发射器代码。

stm32 端口已经看到了很多改进和添加,以及一些重要的内部重构,以更好地支持配置自定义板。STM32F7 支持得到改进,F723 和 F733 支持 USB HS,CAN 类改进了处理总线错误,当 REPL 超过 UART 时,ctrl-C 现在可以中断运行代码,ADC 类添加了 read_timed_multi 静态方法。电路板配置发生了一些内部变化,特别是在 mpconfigboard.mk(以前是 LD_FILE、FLASH_ADDR、TEXT_ADDR)中设置 LD_FILES、TEXT0_ADDR 和 TEXT1_ADDR。pin_X 和 pyb_pin_X 标识符已更改为指向对象而不是对象的指针,并且 main 重命名为 stm32_main。

更改的详细列表如下。

py 核心:

- compile: 编译导入名称时使用 alloca 而不是 qstr_build

- mpconfig:引入可复用的 MP_HTOBE32() 等宏

- objtype: mp_obj_new_type: 命名基类型相关变量更清楚

- objnamedtuple:如果支持 OrderedDict,则添加 _asdict 函数

- 发射:清理 asm 宏名称,以便它们将 dest 作为第一个参数

- mkenv.mk:在调用 Python 工具时始终使用 $(PYTHON)

- objstr:从 mp_obj_new_str 中删除“make_qstr_if_not_already”参数

- objstr:使 mp_obj_new_str_of_type 检查现有的实习 qstr

- objstr:当从字节构造 str 时,检查现有的 qstr

- 添加配置选项以禁用多重继承

- objnamedtuple:允许重用命名元组的基本功能

- objfloat:允许 float() 使用缓冲协议解析任何内容

- modbuiltins:稍微简化了内置 round() 中的代码

- 运行时:简化包含二元运算符的处理

- opmethods:包括二进制操作枚举的正确标头

- 运行时:添加 MP_BINARY_OP_CONTAINS 作为 MP_BINARY_OP_IN 的反向

- parsenum:改进浮点数的解析

- objdict:重用字典视图键迭代器作为标准字典迭代器

- 使用 NORETURN 注释 func defs,当它们的 corresp 声明有它时

- qstr:重写 find_qstr 以表明它返回一个有效的 ptr

- gc:在 gc_realloc 中,将指针健全性检查转换为断言

- objgenerator:删除 STOP_ITERATION 情况下无法访问的代码

- misc.h: 添加 m_new_obj_var_with_finaliser()

- mp_call_function_*_protected():如果可能,传递返回值

- modbuiltins:使用标准的参数解析帮助函数进行内置打印

- mpprint:使“%p”格式在 64 位系统上正常工作

- mpprint:在 64 位系统上支持“%lx”格式

- malloc: 如果 !MICROPY_MALLOC_USES_ALLOCATED_SIZE 允许使用调试日志

- gc:添加 CLEAR_ON_SWEEP 选项以调试错误跟踪的对象

- emitbc、asmbase:仅在调试模式下将发射标签清除为 -1

- asmbase:恢复清除本机发射的标签偏移量

- objint_longlong:检查零除法/模数

- 运行时:跟踪一元/二元操作时,输出操作(方法)名称

- gc:分解出一个宏来跟踪 GC 标记操作

- gc:在sweep debug输出中,将指针打印为指针

- objfun:分解出用于解码代码状态大小的宏

- objfun, vm: 在无堆栈模式下添加代码状态分配的注释

- objfun:分解用于初始化代码状态的宏

- mkrules.mk:添加“clean-frozen”目标来清理冻结的脚本/模块目录

- 运行时:将 mp_exc_recursion_depth 移动到运行时并重命名以提高

- 为作用域分配引入 Python 堆栈

- 将 alloca() 的所有使用转换为使用新的范围分配 API

- 运行时:在构建 *arg 和 **kwarg 状态时使用 Python 堆栈

- objexcept: 打印 errno 值时使用 INT_FMT

- 扩展 nan-boxing 配置以具有 47 位小整数

- objtype:更好地支持覆盖原生的 __init__

- objtype:重构对象对 __new__ 的处理以不创建 2 个对象

- builtinimport:为通过弱链接导入的模块调用 __init__

- objgenerator:允许为下一次执行挂起异常

- 地图:不需要时不包含有序字典变异代码

- mpz:修复 pow3 函数,以便处理第三个参数为 1 的情况

- modio:使用正确的配置宏来启用资源流功能

- malloc:删除不需要的代码检查 m_malloc 返回值

- nlrthumb:修复裸函数的使用,必须只包含基本的汇编代码

- nlr:清理NLR实现的选择和配置

- nlr:将常见的 NLR 代码分解为 nlr.c 中的宏和通用函数

- 解析:将规则结构中的规则名称拆分为单独的数组

- 解析:将规则数据分成单独的行为和参数数组

- 解析:将 rule_id 传递给 push_result_rule,而不是传递 rule_t*

- 解析:将 rule_id 传递给 push_result_token,而不是传递 rule_t*

- 解析:删除 rule_t 结构,因为不再需要它

- 解析:将规则指针表压缩为偏移量表

- 解析:更新调试代码以在 64 位架构上编译

- 解析:通过避免空的 __VA_ARGS__ 来修复宏评估

- mpz:简化mpn_div中借用和借用调整的处理

- mpz:在 mpz_as_str_inpl 中,将 always-false 检查转换为断言

- nlr:修复在 Windows 上使用 gcc 构建的 64 位端口的 nlr 函数

- 编译:结合 2 和 3 元组到元组分配的编译器选择

- objtype:检查并防止在固定的本地地图上删除/存储

- modbuiltins:对于builtin_chr,数组使用uint8_t而不是char

- vm:简化用于展开返回和跳转的堆栈哨兵值

- parsenum:修复接近次正常的浮点数的解析

- objfloat:修复将 0 提高到 -infinity 的情况

- unicode:清理 utf8 函数并提供非 utf8 内联版本

- modbuiltins:在内置ord中简化从char到byte ptr的转换

- objrange:实现范围对象之间的(不)相等比较

- objexcept: 删除过时的 mp_const_MemoryError_obj

- nlrthumb:不要将 nlr_push 标记为不返回任何内容

- pystack:使用“pystack耗尽”作为pystack内存不足的错误消息

- objdict:不允许对固定的dicts 进行可能的修改

- gc:通过专门的 VERIFY_MARK_AND_PUSH 宏来减少代码大小

- gc:将 gc_drain_stack 重命名为 gc_mark_subtree 并将其传递给第一个块

- gc: 使GC栈指针成为局部变量

- qstr:添加 QSTR_TOTAL() 宏以获取 qstr 的数量

- modbuiltins:通过探测 qstrs 来简化和概括 dir()

- repl: 概括 REPL 自动完成以使用 qstr 探测

- objstr:防止创建带有 n 个负数的字节(n)

- objmodule: 在内置模块上调用 __init__ 的因子通用代码

- builtinimport:添加编译时选项以禁用外部导入

- modmicropython:允许在没有 mem_info() 的情况下使用 stack_use() func

- objstr:删除对正拆分变量的不必要检查

- objint:使用 MP_OBJ_IS_STR_OR_BYTES 宏而不是 2 个单独的宏

- objdeque:实现固定大小的 ucollections.deque 类型

- objdeque:防止 deque 构造函数中的负 maxlen

- objdeque:在分配项目时使用 m_new0 以避免需要清除

- py.mk:将 uPy 源列表拆分为 core 和 extmod 文件

- py.mk:从 extmod 文件列表中删除 .. 路径组件

- 始终使用“GEN”来描述构建中生成的文件

- 编译:调整 c_assign_atom_expr() 以使用 return 而不是 goto

- asm*.c: 在 asm 入口函数中删除对 num_locals<0 的不必要检查

- mpz:在 mpz_clone 中,删除未使用的 NULL dig 检查

- mpstate.h:为MICROPY_REPL_EVENT_DRIVEN 添加repl_line 状态

- vm:修复在 yield from 内处理引发的 StopIteration 的情况

- vm:简化处理特殊情况 STOP_ITERATION 的 yield from

- formatfloat:使用边缘情况下的 FP 值修复 %f 格式的舍入

- formatfloat:修复浮动可以使用“:”字符呈现的情况

- formatfloat:修复浮点数可能呈现负数的情况

- objint: 在格式 func 中删除无法访问的 int 类型代码检查

- misc.h:删除未使用的 count_lead_ones() 内联函数

- obj.h:通过删除宏的注释掉的内联版本进行清理

- obj.h:将 mp_obj_list_init 的声明移动到 objlist.h

- makeqstrdefs.py:通过使用编译的 re 进行优化,使其运行速度更快

- objexcept: 将 MP_DEFINE_EXCEPTION 设为公开以便端口可以定义 excs

- 运行时:检查作为 ** args 传递的字典中的键是否是字符串

- 运行时:确保未被拦截的抛出对象是异常

- vm: 不要对 ip 和 sp 变量做不必要的更新

- vm:在启用 pystack 时优化无堆栈模式的处理

- modsys:如果功能被禁用,则不编译 getsizeof 函数

- 如果编译器被禁用,则不包括 mp_optimise_value 或 opt_level()

- objint:简化 int binary op 函数中的 LHS arg 类型检查

- objstr: 在 find/rfind 中,end < start 时不会崩溃

-流:将流关闭操作从方法切换到ioctl

- objgenerator:在恢复生成器之前检查堆栈

- 重构本地发射器代码是如何使用每个架构的文件编译的

- nlrthumb:修复 Clang 支持使用“return 0”

- mperrno:将 MP_EWOULDBLOCK 定义为 EWOULDBLOCK,而不是 EAGAIN

- 流:使用 uPy errno 而不是 system's 进行非阻塞检查

- obj.h:修复 math.e 常量以用于 nan-boxing 构建

- modbuiltins,repl:从空qstr之后开始qstr探测

- 运行时:添加捕获异常的 mp_load_method_protected helper

- modbuiltins:使内置 hasattr 为用户类型正常工作

- repl: 使用 mp_load_method_protected 防止异常泄露

- modbuiltins:在内置目录中使用 mp_load_method_protected

- modbuiltins:使内置目录支持 __dir__ 特殊方法

- objdeque:修复计算 deque 对象 len 时的符号扩展错误

extmod:

- modussl_axtls: socket_read: 处理EAGAIN

- moduhashlib:在使用“mbedtls”库时启用 SHA1 散列

- vfs_fat:在创建时挂载 FatFS,以便可以使用 VFS 方法

- modussl_axtls:将密钥和证书 kw 参数实现到 wrap_socket

- modlwip:如果缓冲区已满,则将 TCP 输出数据提交到较低层

- machine_signal:更改 VLA 以使用新的范围分配 API

- modure:转换 alloca() 以使用新的范围分配 API

- modussl_mbedtls:在安装过程中出错时清理 mbedtls 状态

- modframebuf:添加2位颜色格式(GS2_HMSB)

- modframebuf:添加8位灰度格式(GS8)

- vfs_fat_file:为非零偏移量实现 SEEK_CUR

- modujson:实现 ujson.dump() 函数

- vfs_fat:将 ilistdir 实现从 misc 移动到主文件

- vfs_fat:将剩余的 vfs_fat_misc.c 代码合并到 vfs_fat.c

- vfs_fat:公开 fat_vfs_open_obj 包装器,而不是它的功能

- vfs_fat:删除 mp_builtin_open_obj 的声明

- vfs_fat_diskio:为块 buf 使用 C 堆栈分配的字节数组

- machine_spi:公开SPI协议结构

- vfs_fat:将文件大小添加为 uos.ilistdir 元组的第 4 个元素

- re1.5: 修复IAR工具链compilecode.c编译问题

- modlwip:检查是否支持 getaddrinfo() 约束

- vfs:将 import_stat 委托给 vfs.stat 以允许通用 FS 导入

- uzlib:使用 uzlib_get_byte 调用修复 C 语言排序错误

- modlwip:在 ioctl 句柄情况下,socket 处于错误状态

库:

- tinytest:从工具/tinytest 移动

- upytesthelper:在 tinytest 之上添加 MicroPython 测试助手层

- tinytest:在存在 stdout 输出的情况下清理测试报告

- utils/pyexec.h: 包含 py/obj.h 因为需要它的声明

- utils/pyexec:更新以使用新的 MICROPY_HW_ENABLE_USB 选项

- stm32lib:更新库以包含对 STM32H7 MCU 的支持

- stm32lib:更新库以修复 H7 SPI 严格别名错误

- axtls:更新,暴露AES函数以实现ECB密码模式

司机:

- nrf24l01:在pyboard、ESP8266、ESP32上制作驱动并测试运行

- display/ssd1306:使 SSD1306 类继承自 FrameBuffer

- sdcard: 支持旧的 SD 卡 (<=2GB)

- sdcard:避免在堆上分配

- sdcard:更新 ESP8266 的文档以使用正确的 SPI 编号

- cc3200:更新以使用新的 stm32 SPI API

- sdcard:更新ESP8266的SD挂载示例代码

- 总线:添加带有软件 QSPI 实现的 QSPI 抽象类型

-内存/spiflash:添加对QSPI接口的支持

- 总线:将软件 SPI 实现拉出到专用驱动程序

- memory/spiflash: 改为使用低级 SPI 对象而不是 uPy one

工具:

- mpy-tool.py:实现 Ellipsis const 对象的冻结

- gen-cpydiff.py:更新可执行路径以指向新的端口目录

- tinytest-codegen.py:为upytesthelper生成代码

- tinytest-codegen:将 exclude_tests 换行

- tinytest-codegen:启用预期输出匹配后更多排除

- tinytest-codegen:采用 --target= 选项进行测试集选择

- pydfu.py:在新的 USB 设备对象上调用 set_configuration()

- tinytest-codegen:添加 --stdin 开关而不是最近添加的 --target

- tinytest-codegen:忽略系统区域设置,以 UTF-8 格式写入输出

- upip:将upip升级到1.2.4

测试:

- net_hosted:为套接字连接()和轮询()行为添加测试

- 基础:添加测试以包含本机类型的子类

- basics/builtin_range:为范围切片的极端情况添加测试

- basics/builtin_locals:在类主体中添加使用 locals() 的测试

- cpydiff:为内置 next() 的第二个参数添加差异测试

- cpydiff:修复使用“`”(外部参照)代替“``”(代码)的标记

- heapalloc_*:重构一些测试以在严格的无堆栈模式下工作

- heapalloc, heapalloc_super: 在严格无栈模式下跳过

- 基础:添加测试以覆盖本地基类的 init 方法

- extmod:添加子类framebuf.FrameBuffer的测试

- cpydiff:更新子类化异常情况并提供解决方法

- 使用 qemu-arm 的 tinytest 修复一些正确“跳过”检测的测试

- run-tests: 添加 --list-tests 开关

- 添加测试以提高 py/objtype.c 的覆盖率

- run-tests:修复--list-tests 跳过测试的处理

- 运行测试:添加可组合的 --include 和 --exclude 选项

- 运行测试:不要使用“pyb is None”测试 --target=unix

- run-tests: 跳过 --list-tests/--write-exp 的运行功能检查

- 基础:添加更多集合测试以提高 py/objset.c 的覆盖率

- extmod/uhashlib_sha256:添加散列 56 字节数据的测试

- float/builtin_float_hash:添加测试以提高 objfloat.c 覆盖率

- unix: 添加 %lx 格式的 printf 测试

- basics/generator_pend_throw:为刚刚启动的生成器添加测试

- basics/builtin_pow3:为 pow3 的边缘情况添加测试

- 添加更多测试以提高 py/parse.c 的覆盖率

- extmod:添加一些 uctypes 测试以提高该模块的覆盖率

- 基础知识/内存错误:使用 realloc 添加内存不足测试

- 基础知识:重命名用于内置<-in 函数的剩余测试

- unix:为调用 mp_obj_new_bytearray 添加覆盖测试

- 自动跳过需要 eval、exec 或frozenset 的测试

- 重写一些测试,以便它们可以在不需要 eval/exec 的情况下运行

- run-tests:从崩溃的 uPy 执行中捕获任何输出

- basics/deque*:ucollections.deque 的测试

- 基础:添加测试以提高 py/objdeque.c 的覆盖率

- basics: 添加调用原生类的子类的测试

- 压力:添加测试以创建超出“最大”重新哈希大小的字典

- unix:为 mpz_set_from_float、mpz_mul_inpl 添加覆盖测试

- extmod/vfs_fat_fileio1:使用终结器添加测试失败的分配

- extmod/uzlib_decompress:添加 uzlib 测试以提高覆盖率

- float:调整浮点解析测试以仅通过一个小错误

- unix:为VM执行无效字节码添加覆盖测试

- basics/gc1:添加触发GC阈值的测试

- extmod/vfs_fat_fileio1: 添加调用文件 obj finaliser 的测试

- unix:为各种 GC 调用添加覆盖测试

- 将 heap-realloc-while-locked 测试从 C 移动到 Python

- unix:从冻结的 str 添加对 uio.resource_stream 的覆盖测试

- extmod/time_ms_us:添加调用ticks_cpu()的测试

- extmod/time_ms_us:修复滴答测试,ticks_diff 参数被反转

- basics/builtin_enumerate:为许多要枚举的 pos 参数添加测试

- cpydiff:缩进解决方法代码片段,以便正确格式化

- pyb: 更新 CAN 测试以期望打印 auto_restart

- pyb/can: 更新以测试pyb.CAN 重启、状态、信息、就地接收

- basics/iter1.py:添加更多测试以执行用户定义的迭代

- 基础:在 try-except 中添加使用 return 的测试

- basics/int_big1.py: 添加带有非打印字符的测试转换 str

- 基础:修改 int-big 测试以防止常量折叠

- 压力:添加测试以验证 GC 可以跟踪嵌套对象

- basics/int_big1.py:在 mp_obj_get_int_maybe 中添加对 big int 的测试

- 基础知识:为可迭代本机类型的子类化添加测试

- basics: 为 nan-box 的 47-bit small int 的边缘情况添加测试

- basics/class_super.py:添加存储/删除超级属性的测试

- basics/string_compare.py: 添加哈希为 0 的字符串的测试

- micropython:为提高 exc 的极端情况添加一组测试

-stress/recursive_gen:使用 iter 添加对递归 gen 的测试

- 将递归测试移动到 tests/stress/ 子目录

- pyb/adc.py:修复测试,使其真正测试 ADC 值

- pyb: 为 pyb.ADCAll 类添加测试

- io/bytesio_ext2:删除对特定 EINVAL 值的依赖

- run-tests:支持 esp32 作为运行测试套件的目标

- cpydiff: 移除 core_function_unpacking 现在它成功了

- cpydiff:现在成功删除 types_str_decodeerror

- cpydiff:从 types_float_rounding 中删除工作案例

- cpydiff:删除 types_int_tobytesfloat 现在它没有失败

- float/float_parse: 允许测试在 32 位架构上运行

最小端口:

- README:更新文本以更好地描述“make run”的作用

- Makefile:在构建中明确包含 lib/utils/printf.c

- Makefile:仅使用核心源文件构建

Unix 端口:

- moduselect:添加 .dump() 方法进行调试

- mpconfigport: 禁用 uio.resource_stream()

- 添加对使用 Python 堆栈的支持

- Makefile:覆盖范围:允许用户通过 CFLAGS_EXTRA

- mpconfigport.h:允许从命令行覆盖无堆栈选项

- mpconfigport_coverage.h:启用MICROPY_PY_IO_RESOURCE_STREAM

- mpconfigport_coverage:启用范围(不)相等比较

- 覆盖:允许覆盖测试在禁用调试的情况下通过

windows 端口:

- mpconfigport:为MSVC端口提供off_t定义

- mpconfigport:启用一些功能,包括 Python 堆栈

- 为 windows mingw 端口添加 Appveyor CI 构建

qemu-arm 端口:

- 使用 upytesthelper 返工“测试”目标

- test_main:清理 tinytest_main() 的调用

- test_main: 包含 setjmp.h 因为它被 gc_collect 使用

stm32 端口:

- 板/NUCLEO_F429ZI:将 CPU 频率增加到 168MHz 以使 USB 工作

- 板:添加对 NUCLEO-F746ZG 评估板的支持

-boards/stm32f767_af.csv:根据数据表更新AF表

-boards/*_af.csv:一致使用JTMS、JTCK、SWDIO、SWCLK

- 添加对使用 Python 堆栈的支持

- usbdev: 为 SCSI PreventAllowMediumRemoval 传递正确的 val

- 使用更正大写的 HAL_SD_CardStateTypedef

- 允许在没有定义任何硬件 I2C 端口的情况下构建板

- uart:添加对 7 位模式的支持:7N1 和 7N2

- uart: 支持 UART6 上的 CTS/RTS 板配置

- i2c:修复 I2C4 初始化错误

- i2c:支持更多F746的I2C波特率,更多F7 MCU

- spi:如果未定义 MICROPY_HW_SPIn_MISO,则不要在 init 上声明 pin

- modmachine:处理没有MICROPY_PY_MACHINE_I2C的情况

- 添加对 DHT11/DHT22 传感器的支持

- spi:通过使用 WFI 使 SPI DMA 等待例程更加节能

- sdcard:通过使用 WFI 使 SD 等待程序更加节能

- usbdev:减少对py头文件的依赖

- usbdev:将所有 str 描述符访问器 func 合并为一个 func

- can:支持没有 CAN2 外设的 MCU

- 改进对 STM32F722、F723、F732、F733 MCU 的支持

- modmachine:在freq()中,根据freq选择flash延迟值

- sdcard:仅在使用 SDMMC1 外设时定义 IRQ 处理程序

- sdcard:在 F7 MCU 上使用最大速度 SDMMC 时钟

- usbdev: 添加对 MSC-only USB 设备类的支持

- usb:允许板子选择哪个USBD作为主要的USBD

- usbdev:添加对高速USB设备模式的支持

- i2c:对于 I2C 速度等级使用宏而不是幻数

- spi:添加对命名 SPI 外设 4、5 和 6 的电路板的支持

- rng:通过访问原始外设regs来简化RNG实现

- spi:允许 SPI 外设状态在软复位期间保持不变

- i2c:允许 I2C 外设状态在软复位期间保持不变

- spi:在SPI驱动程序和uPy objs之间提供更好的分离

- 更新 LCD 和网络驱动程序以使用新的 SPI API

- spi: 在 spi_from_mp_obj() 函数中接受 machine.SPI 对象

- rtc:修复 LSE 失败并回退到 LSI 时的 rtc_info 标志

- rtc:修复 RTC init 以使用 LSI,如果 LSI 在启动时已被选择

- rtc:添加编译时选项以将 RTC 源设置为 LSE 旁路

- main:重新排序一些 init 调用以将它们放在软重置循环之前

- main: 删除对 first_soft_reset 变量的需要

- 添加具有通用/默认板设置的 mpconfigboard_common.h

- 板:删除所有设置为默认值的配置选项

- usbdev:修复 USBD 设置请求处理程序以使用正确的接收者

- 更新 HAL 宏和常量名称以使用较新版本

- 定时器:支持没有 TIM4 和/或 TIM5 的 MCU

- 引入MICROPY_HW_ENABLE_USB 并清理USB 配置

- 板:更新所有板以使用新的 USB 配置

- 将闪存和 SPI 块设备代码分解为单独的文件

- 更改标头包括从 STMHAL 到 STM32 的保护以匹配目录

- 添加板配置选项以启用/禁用 ADC

- 使用“GEN”来描述构建中生成的文件

- flash:使用 FLASH_TYPEPROGRAM_WORD 来支持较新的 HAL

- 将 MCU 特定的配置文件从 mphalport.h 移动到 mpconfigboard_common.h

- spibdev:更新以使用新的 spiflash 驱动程序

- spibdev:添加选项以配置 SPI 块 dev 以使用 QSPI flash

- storage: 为 bdev 添加选项以提供 readblock/writeblocks

- spibdev:转换为使用多块读/写接口

- qspi: 添加硬件QSPI驱动,具有内存映射能力

- i2c:在 F4 MCU 上报告实际 I2C SCL 频率

-boards/stm32f767_af.csv:将ADC列添加到引脚能力列表

- 板/NUCLEO_F767ZI:更新引脚列表以包含 3 个额外的引脚

-板:添加描述H7 GPIO alt funcs的stm32h743_af.csv文件

- 板:添加 stm32h743.ld 链接器脚本

-板:添加新的NUCLEO_H743ZI板配置文件

- Makefile:添加设置以支持 H7 MCU

- flash:添加对 H7 MCU 的 flash 支持

- system_stm32:添加H7 MCU系统初始化

- mphalport:为 H7 MCU 使用 GPIO BSRRL/BSRRH 寄存器

- wdt:为 H7 MCU 添加 WDT 支持

- uart:添加对 H7 MCU 的 UART 支持

- 定时器:为 H7 MCU 添加定时器支持

- modmachine:支持H7 MCU基本功能

- usbd_conf:添加对 H7 MCU 的 USB 支持

- stm32_it:添加对 H7 MCU 的支持

- dma:添加对 H7 MCU 的 DMA 支持

- rtc:添加对 H7 MCU 的 RTC 支持

- extint:添加对 H7 MCU 的 EXTI 支持

- mpconfigboard_common:添加STM32H7常用配置

- main: 在 H7 MCU 上启用 D2 SRAM1/2/3 时钟

-板:为H7系列特定启动添加startup_stm32h7.s

-板:为F7系列特定启动添加startup_stm32f7.s

-板:为F4系列特定启动添加startup_stm32f4.s

-板:为L4系列特定启动添加startup_stm32l4.s

- Makefile:为每个 MCU 系列使用单独的启动文件

-删除startup_stm32.S,现在在板中/为每个MCU提供

- usbd_conf.h:添加 stdint.h 的包含以修复编译问题

- system_stm32:修复 CONFIG_RCC_CR_2ND 值以使用按位或

- 存储:将所有杂项块开发函数合并为一个 ioctl 函数

- storage: 使 spi_bdev 接口以一个数据指针作为第一个参数

- 存储:删除所有 SPI-flash bdev cfg,每块板提供

-存储:引入MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE cfg

-boards/STM32L476DISC:提供SPI-flash bdev config

-存储:提供对第二块设备的支持

- qspi:进行显式读取而不是使用内存映射模式

-板/STM32L476DISC:启用CAN外设

- can:改进 can.recv() 以便检查事件,例如 ctrl-C

- 可以:为了清晰起见,使用枚举来索引关键字参数

- 可以:在构造函数和 init() 方法中添加“auto_restart”选项

- can: 添加 CAN.restart() 方法使控制器可以离开总线

- can:添加CAN.state()方法获取控制器的状态

- can: 添加 CAN.info() 方法来检索错误和 tx/rx buf 信息

- 使用 STM32xx 宏而不是 MCU_SERIES_xx 来选择 MCU 类型

- can:将“list”参数添加到 CAN.recv() 以就地接收数据

- dma:启用H7 DMA描述符

- i2c:添加H7 I2C时序配置

-板/NUCLEO_H743ZI:启用硬件I2C支持

-板/NUCLEO_H743ZI:禁用uSD收发器

- Makefile:重新启用 ST HAL 文件的严格别名优化

- 将 genhdr/pins.h 的包含合并到 pin.h 中的单个位置

- qspi: 不取管脚配置标识符的地址

- *bdev.c: 消除对 sys_tick_has_passed 的依赖

- 板子:允许板子更好地控制链接描述文件

- Makefile:将 FLASH_ADDR/TEXT_ADDR 重命名为 TEXT0_ADDR/TEXT1_ADDR

- Makefile:允许开发板配置 1 或 2 个固件部分

-板:添加 common_basic.ld 使板具有单个部分

- 板:为需要引导加载程序的板添加 common_bl.ld

- system_stm32:从 TEXT0_ADDR 设置 VTOR 指针

-boards/stm32f767.ld:添加FLASH_APP定义

-boards/stm32h743.ld:删除common.ld的包含

- 板/NUCLEO_H743ZI:更新以使用新的链接器管理进行构建

- dma: 移除 H7 SDMMC DMA 描述符

- sdcard:添加H7 SD卡支持

-板/NUCLEO_H743ZI:启用SD卡支持

- 将 pin_X 和 pyb_pin_X 标识符更改为指向对象的指针

-boards/STM32L476DISC:更新为不取pin objs的地址

- 添加自定义的、优化的 Reset_Handler 代码

- main: 将 main 重命名为 stm32_main 并通过第一个参数

- main:仅在电路板不使用引导加载程序时更新 reset_mode

- mphalport:使用 MCU regs 检测循环计数器是否启动

- dac:添加对 H7 MCU 的支持

-板/NUCLEO_H743ZI:启用DAC外设

- i2c:更新 HAL 宏以使用新的 __HAL_RCC 前缀

- i2c:全面支持外设I2C4

- main: 通过相关#if 保护默认 boot.py 中的 usb_mode 行

- adc:修复 F411 MCU ADC 通道 16 的验证

- adc:添加 read_timed_multi() 静态方法,带有文档和测试

- adc:通过缓存缓冲区指针优化 read_timed_multi()

- dac:向构造函数和 init() 方法添加缓冲参数

- adc:优化adc_read_channel和adc_read的因子代码

- adc:修复EOC选择和ADC外围的Ext-Trig配置

- adc:将常见的 ADC 初始化代码分解为 adcx_init_periph()

- pin:在pin AF对象中,移除periph ptr类型的并集

- can:允许每块板配置 CAN 引脚

- stm32_it:为 I2C4 添加 IRQ 处理程序

- 允许单板在旁路模式下配置HSE

- main:允许单板配置flash FS的标签

- sdcard:实现 BP_IOCTL_SEC_COUNT 获取 SD 卡的大小

- rng:设置STM32H7的RNG时钟源

-boards/NUCLEO_H743ZI:为该板启用RNG

- uart:当 REPL 超过 UART 时,允许 ctrl-C 发出键盘输入

- uart:允许 ctrl-C 与通过 os.dupterm 置于 REPL 上的 UART 一起工作

- 引入MICROPY_PY_STM 配置以包含或不包含stm 模块

- dac:支持没有 TIM4/5 的 MCU 并使用新的 HAL 宏

- 将 i2c.c 重命名为 pyb_i2c.c

- 重命名遗留的 pyb.I2C 辅助函数以 pyb_i2c_ 开头

- i2c:为 F7 MCU 添加低级 I2C 驱动程序

- machine_i2c:为F7 MCU上的machine.I2C提供硬件I2C

- system_stm32:重新配置 L4 MCU 的 SysTick IRQ 优先级

-boards/NUCLEO_H743ZI:对 SysTick IRQ 使用优先级 0

- adc:增加对H7 MCU系列的支持

-boards/NUCLEO_H743ZI:使能ADC外设

- mphalport:添加mp_hal_pin_config_speed()选择GPIO速度

- usbd_conf:使用 mp_hal_pin_config() 而不是 HAL_GPIO_Init

- dac:使用 mp_hal_pin_config() 而不是 HAL_GPIO_Init()

- 板:更新 pin.csv 以在需要的地方包含 USB 引脚

- mphalport:支持 L4 MCU 引脚上的 ADC 模式

- adc:使用 mp_hal_pin_config() 而不是 HAL_GPIO_Init()

- dac:使 deinit 禁用 H7 和 L4 MCU 上的输出缓冲区

- dac:实现一个DAC对象的打印

- mphalport:优化GPIO时钟开启方式

- flash:从 flash_erase() 中删除未使用的 src 参数

- dma:始终在 L4 MCU 上取消初始化/重新初始化 DMA 通道

- irq:直接将 IRQ 优先级定义为编码的硬件值

- main:清理优化MCU的初始启动代码

- dma: 修复结构重复的 typedef,它在 dma.h 中被 typedef

- 不要使用 %lu 或 %lx 进行格式化,只使用 %u 或 %x

- Makefile:使用-O2优化lib/libc/string0.c的编译

- i2c: 确保收到 addr nack 后发送停止条件

- usb:修复损坏的 pyb.have_cdc() 使其再次工作

- usb:为 USB HID 对象使用正确的类型

- README:更新以反映当前的 MCU 支持

teensy 端口:

- 更新 GPIO 速度常量以与 stm32 端口的变化保持一致

esp8266 端口:

- etshal.h:使函数原型与 ESP SDK 2.1.0+ 兼容

- README:强调需要修改默认WiFi密码

- README: 添加关于使用 upip 的部分

- esp8266_common.ld:将更多库的 .text 放入 .irom0.text

- modules/webrepl_setup: 修复首次启用 WebREPL

- modnetwork:确保将实习字符串传递给 .config("param")

- machine_hspi:SPI写后等待最后一个字节传输

- modules:将dht.py驱动移动到drivers/dht目录

- esppwm:将负关税数字剪裁为 0

- README.md:更新构建指令以反映新的端口目录

- uart:允许使用事件驱动的 REPL 进行编译

- modnetwork:为STA接口实现WLAN.status('rssi')

- esppwm:始终启动计时器以避免从满到不满的故障

- esp_mphal.h:通过使用 od_high 的输入模式修复 I2C 故障

- modnetwork:允许获取STA连接的AP的ESSID

- 为 512k 构建禁用 DEBUG_PRINTERS

esp32:

- 为乐鑫 ESP32 SoC 添加新端口

- modnetwork:为 AP 超时和未找到提供更好的错误消息

- modsocket:实现setsockopt(IP_ADD_MEMBERSHIP)

- mpconfigport.h:添加缺少的 uhashlib

- mphalport.h: 制作 mp_hal_pin_ 选择pad上的gpio

- 在 sha1 和 sha256 上调用初始化函数

- 实现 machine.WDT() 类

- README:更新端口的一般描述以添加可用功能

- modutime.c: 添加localtime和mktime函数

- machine_pwm:始终在PWM对象中设置通道

- 更新到最新的 ESP IDF

- 模块:来自 esp8266/modules 的 ntptime.py 中的符号链接

- modnetwork.c:修复使用 network.WLAN.ifconfig() 设置 DNS

- mpconfigport.h:启用ussl终结器

- 通过 network.LAN() 实现有线以太网

- mpconfigport.h: 启用 websocket 模块

-modesp:添加 osdebug() 函数以禁用或更改 IDF 日志记录

- Makefile:支持使用 IDF_PATH 作为 IDF 源的 env var

- 添加具有 uPy 特定大小的自定义 partitions.csv 文件

- machine_hw_spi:通过拆分它们来修复大型硬件 SPI 传输

- README:更新工具链设置

- machine_uart:修复对 UART id 的检查,因此它只允许有效的 UART

- machine_rtc:将 RTC 类添加到带有 sleep impl 的机器模块

-modesp32:添加新模块“esp32”以支持额外的唤醒功能

- machine_rtc:将导出声明从 .c 移至通用 .h 文件

- modnetwork:为 WLAN.config() 实现 dhcp_hostname

- 更新到最新的 ESP IDF

- main: 通过 malloc 而不是在 bss 上分配 uPy 堆

- modsocket:允许 getaddrinfo() 最多占用 6 个参数

- modnetwork:实现 status('stations') 列出 AP 模式下的 STA

- machine_uart:如果没有数据可用,则从 UART 读取返回 None

- machine_uart:移除UART事件队列对象

- README.md:修复错字自述文件

- mphalport:使用 esp_timer_get_time 而不是 gettimeofday

- mphalport:改进 mp_hal_delay_us 以便处理未决事件

- mphalport:改进mp_hal_stdout_tx_XXX 功能

- 添加支持并启用 uos.dupterm()

- modsocket:添加对注册套接字事件回调的支持

- mpconfigport:启用 webrepl 模块和套接字事件

- 模块:为 WebREPL 添加支持脚本

- 添加对 esp32 的 ULP 的支持

- modnetwork:允许获取STA连接的AP的ESSID

- 自述文件:在子模块更新命令中添加 --init

- modsocket:正确处理对等关闭套接字的读取

- 将 mp_rom_map_elem_t 和 MP_ROM_xxx 宏用于 const dicts

- modsocket:在阻塞套接字调用期间检查未决事件

zephyr 端口:

- README: "make qemu" 被替换为 "make run"

- Makefile: clean: 删除生成的 prj_*_merged.conf

- prj_base.conf: 强制 zephyr.bin 构建输出

- Makefile:转换为新的基于 CMake 的 Zephyr 构建系统

- Makefile:再次使 prj_$(BOARD).conf 可选

- Makefile: syscall_macros.h 生成从 CMake 移到 make

- CMakeLists.txt:更新最新的 Zephyr buildsys 更改

- CMakeLists.txt:正确分离从 CMake 获得的 CFLAGS 部分

- main: 将 var 声明移到文件顶部

- 使用内置测试套件添加对二进制文件的支持

- prj_base.conf:增加 MAIN_STACK_SIZE 以让内置测试套件运行

- Makefile:干净:也清洁 libmicropython.a

- main: 删除未使用的 do_str() 函数

@docs:

- esp8266/general: TLS 限制:还提到“ussl”模块限制

- ure:在ure.compile()中添加标志arg,提到ure.DEBUG是可选的

- ure:更多强调不支持的功能

- _thread:为 _thread 模块添加占位符文档

- 库/网络:增强 AbstractNIC.status 以获取参数

- 对绑定方法引用引起的堆分配添加注释

- uselect: poll:明确指定no-timeout值为-1

- uctypes:调整描述符引用,希望更容易理解

- uselect:更详细地描述POLLHUP/POLLERR语义

- 库/utime:使用 ticks_diff 参数顺序修复不正确的示例

- uselect: ipoll: 修复一次性标志描述的语法/措辞

- 词汇表:描述被调用者拥有的元组概念

- uerrno:修复外部参照与代码标记

- 词汇表:描述“流”术语

- 词汇表:描述字符串实习

- 库:将外部参照添加到许多模块的“流”字典条目

- 词汇表:阐明“裸机”的措辞

- 参考/包:添加分发包和部署章节

- 包:添加快速“创建分发包”部分

- 包:创建资源不再需要mpy_bin2res

- conf:参考 CPython 3.5 文档

- 包:在示例中使用“install_dir/”

- 包:明确推荐使用 setuptools 而不是 distutils

- library/index: 详细的 uPy 库介绍

- library/pyb.rst:添加有关 USB MSC-only 模式可用性的说明

- esp8266:更新关于裁剪最小值/最大值的 PWM 文档

- esp8266:添加关于 GPIO16 pull 功能的注释

- library/ujson:文档转储()和加载()函数

- library/usocket: 使外部参照到 uerrno 明确成为模块引用

- library/micropython:描述 opt_level() 的优化级别

- library/uos:为不同的部分和文档 uname 创建部分

- library/uos:文件挂载、卸载、VfsFat 和块设备

- reference/repl.rst:修复 REPL 教程中的一些小错误

- library/pyb.ADC:记录 ADCAll 的新功能

- library/pyb.ADC:删除过时的ADCAll代码示例

- 库:将 ussl 模块添加到 unix 端口的库索引

特拉维斯:

- 通过 -j4 来加速编译

- qemu-arm 的测试更新移至 Makefile.test

- 构建和测试严格的无堆栈构建

- 通过标准输入为脚本添加 Unix 覆盖测试

========

2017 年 11 月 1 日星期三 11:19:56 +1100

v1.9.3 介绍ports子目录,所有端口都移动到

这个版本的主要变化是在存储库的顶层引入了一个“ports/”子目录,所有的端口都移到了这里。在此过程中,“stmhal”端口被重命名为“stm32”,以更好地反映它所针对的 MCU。此外,STM32 CMSIS 和 HAL 源被移动到一个名为“stm32lib”的新子模块。

与之前的版本相比,此版本中的字节码发生了变化,因此 .mpy 版本号已增加到版本 3。这意味着必须重新编译使用之前的 mpy-cross 编译的脚本使用这个新版本。

也有一些不同的改进和优化技术,如:检查有效UTF-8创建海峡对象,像__radd__,数学模块在全域的检查,支持地面反向特殊二进制运算的支持时, viper 发射器中的除法和取模,以及在执行正则表达式时添加堆栈溢出检查。

stm32 端口改进了对 F7 MCU 的支持,添加了基于 STM32L475 的新板 B_L475E_IOT01A,并支持 Wiznet W5500 芯片组以及改进的插座行为。

更改的详细列表如下。

py 核心:

- objstr:startswith,endswith:检查 arg 是否为字符串

- nlrx86,x64:用可移植宏用法替换定义的#define()

- objtype:处理从二进制特殊方法返回的 NotImplemented

- objtype: mp_obj_class_lookup: 改进调试日志

- 地图:删除未使用的新/免费功能

- 使 m_malloc_fail() 具有 void 返回类型,因为它不返回

- modstruct:在struct.pack中,如果没有剩余参数,则停止转换

- modstruct:检查并防止结构体解包中的缓冲区读取溢出

- modstruct:检查并防止结构体包装中的缓冲区写入溢出

- nlrthumb:在标准 Thumb arch 上再次工作(即不是 Thumb2)

- objfloat:修复具有不兼容对象的二进制操作

- obj:修复浮点数/复数 NaN 与自身的比较

- objtype:实现实例的回退,就地特殊方法

- objtuple:正确实现与不兼容类型的比较

- objstr:在从字节生成 str 时添加对有效 UTF-8 的检查

- objlist:正确实现与不兼容类型的比较

- runtime0.h:将关系操作移到 mp_binary_op_t 的开头

- runtime0.h:将 MP_BINARY_OP_DIVMOD 移动到 mp_binary_op_t 的末尾

- objtype:再次确保 mp_binary_op_method_name 为全尺寸

- runtime0.h:在正常操作之前放置就地算术操作

- builtinhelp:通过提取对象类型稍微简化代码

- 运行时:为“反向操作”特殊方法实现调度

- nlrx86:修复 Android/x86 的构建

- builtinhelp:将帮助文本 var 的签名从指针更改为数组

- runtime.h:更改空的 mp_warning 宏,使 var-args 非空

- modbuiltins:通过调度到 MP_UNARY_OP_ABS 来实现 abs()

- {objfloat,objcomplex}:通过重用变量优化 MP_UNARY_OP_ABS

- mpconfig.h:添加注意在VM中使用计算的goto不是C99

- objstr: strip: 默认不去掉 "\0"

- objexcept:在分配异常时防止无限递归

- 流:从 vstr_add_len 中删除对 NULL 返回的不必要检查

- vstr:如果固定的 vstr 缓冲区溢出,则引发 RuntimeError

- vm:在异常消息的开头使用小写字母

-persistentcode:为任何 unix 目标定义 mp_raw_code_save_file()

- 添加配置选项以将警告/错误打印到 stderr

- objfloat:支持将负数提高到分数幂

- objset:通过分离本地字典来简化集合和冻结集

- objset:检查二进制操作的 RHS 是否为集合/冻结集

- objset:将失败的键包含在从 set.remove 引发的 KeyError 中

- objtype:将 enum-to-qstr 表的类型更改为 uint16_t 以节省空间

- objstr:使空字节对象具有空终止字节

- mpprint:仅在未定义 NDEBUG 时检查空字符串打印

- objtype:清理一元和二元操作 enum-to-qstr 映射表

-持久代码:将 .mpy 版本号提升到版本 3

- bc: 更新 opcode_format_table 以匹配字节码

- modmath:添加对数学域错误的完整检查

- modmath:将 log2 宏转换为函数

- formatfloat:不打印 NaN 值的负号

- formatfloat: 使用标准的 isinf, isnan funcs 而不是自定义的

- modbuiltins:在内置 ord func 中使用现有的 utf8_get_char 助手

- 发射器:为蝰蛇发射器实现楼层划分和取模

- objtype:使用与 CPython 兼容的方法名称作为 sizeof

- objtype: 适合字节类型特殊方法的 qstrs

- objtype:如果需要,定义所有特殊方法

- objtype:引入MICROPY_PY_ALL_INPLACE_SPECIAL_METHODS

extmod:

- modubinascii:仅在真正需要时才包含 uzlib/tinf.h

- modussl_mbedtls:允许在禁用 MBEDTLS_DEBUG_C 的情况下进行编译

- machine_pinbase:将 PinBase 单例放入 ROM

- re1.5:升级到 v0.8.2,增加了堆栈溢出检查的钩子

- modure:在执行正则表达式时添加堆栈溢出检查

- uos_dupterm: 更新 uos.dupterm() 和辅助函数以获得索引

- uos_dupterm:吞下 dupterm 关闭流的任何错误

- vfs:用小的、静态大小的数组替换代理函数中的 VLA

- modussl:添加对 ussl 对象的终结器支持

- modussl_mbedtls:允许使用unix覆盖构建进行编译

库:

- 添加新的子模块,stm32lib 包含 STM32 CMSIS 和 HAL 源

- embed/abort_: 使用 mp_raise_msg 辅助函数

- libm:修复 tanhf 以便正确处理 +/- 无穷大参数

- libm:删除 log2f 的实现,改用 MP_NEED_LOG2

- axtls: 更新,支持 SSL_EAGAIN 返回码

- berkeley-db-1.xx:更新,允许覆盖 MINCACHE、DEFPSIZE

司机:

- memory/spiflash:从硬编码的软 SPI 变为通用 SPI

- display/ssd1306.py:提高图形方法的性能

- nrf24l01:使 nRF24L01 测试脚本更便携

- display/ssd1306:实现SSD1306_I2C开机方式

- display/ssd1306:使 poweron() 与 SSD1306_SPI 工作相同

- wiznet5k:通过线程提高套接字操作的性能

- wiznet5k:让低级 W5500 驱动程序工作

工具:

- upip:升级到 1.2.2

- pyboard:在错误消息中引用数据时使用 repr()

- pyboard:更新文档字符串以获得额外的设备支持

测试:

- object_new:更好的消息,检查用户 __new__() 方法

- class_new:添加对 __init__ 调用的检查和其他改进

- class_new:为 __new__/__init__ 交互添加另一个测试用例

- class_inplace_op:测试就地操作回退到正常的操作

- run-bench-tests:更新可执行文件的位置,现在在ports/

- class_reverse_op:测试逆向算术运算特殊方法

- 运行测试:跳过 class_inplace_op 以获得最小配置文件

- 运行测试:修复 var 名称中的复制粘贴错误

- cpydiff:为 locals() 差异添加案例

- extmod:添加测试正则表达式导致无限递归

- extmod:在正则表达式的字符类中添加'-'的测试

- run-tests:使用“finally”关闭被测设备

- net_inet:更新 tls 测试以使用 CPython 并包含新站点

Unix 端口:

- 将 modsocket.c 重命名为 modusocket.c

- modusocket:删除#if MICROPY_SOCKET_EXTRA 代码块

- 启用MICROPY_PY_REVERSE_SPECIAL_METHODS

stm32 端口:

- modmachine:在启用 MPU 时使 machine.bootloader() 工作

- modmachine:改进对 F7 MCU 上的 sleep/deepsleep 的支持

- 在构建期间而不是在运行时计算 PLL 频率表

- modmachine:对于F7 MCU,通过降低内部电压调节来节省功率

-boards/pllvalues.py:使脚本同时适用于 Python 2 和 3

- Makefile:使用 lib/stm32lib 代替本地 cmsis 和 hal 文件

- 删除 cmsis 和 hal 文件,它们现在是一个子模块

- Makefile:如果需要,自动获取 stm32lib 子模块

- 更新到新的 STM Cube HAL 库

- 修复 L4 MCU 的时钟初始化

- 将 stmhal 端口目录重命名为 stm32

- 删除未使用的 usbd_msc.c 文件

- 板:将剩余的 stm32f4xx_hal_conf.h 更改为 unix 行结尾

- 板:更改链接器脚本以使用“K”而不是十六进制字节大小

- 板:修复 NUCLEO_F401RE/F411RE 板上的 I2C1 引脚映射

- i2c:当扫描 I2C 设备时,每个地址只做 1 个探测

- modnwwiznet5k:发布阻止网络操作的 GIL

- 板卡:基于STM32L475添加新板B_L475E_IOT01A

- make-stmconst.py: 确保 mpz const 数据存在于 ROM 中

- 定时器:使 pyb.Timer() 实例持久化

- mpconfigport.h:为 L4 系列上的最大外设添加配置

- usbdev:使 USBD 回调结构 const 以便它可以进入 ROM

- usbdev:将静态函数变量更改为非静态

- usbdev: 将所有 CDC 状态放在一个结构体中

- usbdev:将所有 HID 状态放入一个结构体中

- usbdev:简化CDC tx/rx 缓冲区传递

- usbdev:简化 HID tx/rx 缓冲区传递

- usbdev/core:为所有回调函数添加状态参数

- usbdev:将 USB 设备驱动程序的所有状态放在一个结构体中

- usbdev:简化指向 MSC 状态的指针并阻止 dev 操作

- usbdev:将所有全局 USB 设备状态合并为一个结构体

- usbdev:使设备描述符回调采用状态指针

- usbdev:将所有 USB 设备描述符状态移动到其结构中

- timer:开启ARPE,可以平滑的改变timer freq

- modnwwiznet5k:获取已建立套接字的IP地址

- 板:修复 stm32f767_af.csv 表中的拼写错误

- usbd_cdc_interface: 不要在初始化时重置 CDC 输出 buf

- modnwwiznet5k:实现 WIZNET5K.isconnected() 方法

- modusocket:在传递 IP 地址时使 getaddrinfo() 工作

- modusocket:如果 getaddrinfo 失败,则返回 OSError(-2)

- mpconfigport.h: 添加MICROPY_THREAD_YIELD() 宏

- modnwwiznet5k:添加对W5500以太网芯片的支持

- modnwwiznet5k:将SPI总线速度提高到42MHz

- modnwwiznet5k:为 Wiznet 驱动程序实现流 ioctl

- mphalport:提高mp_hal_stdout_tx_strn_cooked的效率

- 使用 extmod 版本使 uos.dupterm() 符合规范

cc3200 端口:

- 启用 micropython.kbd_intr() 方法

- 使用键盘中断的标准实现

esp8266 端口:

- 将 axtls_helpers.c 重命名为 posix_helpers.c

- posix_helpers:在内存分配失败时设置 ENOMEM

- 为“btree”模块设置 DEFPSIZE=1024,MINCACHE=3

- esp_mphal:将数据分块发送到 mp_uos_dupterm_tx_strn

- modnetwork:在 WLAN.connect() 方法中添加“bssid”关键字参数

- modules/webrepl_setup:添加有关允许密码长度的信息

zephyr 端口:

- Makefile:在端口移动到端口后修改“测试”目标/

- 使用 CONFIG_NET_APP_SETTINGS 设置初始网络地址

- 切换到中断驱动的拉式控制台

pic16bit 端口:

- 将 SEEK_SET 的定义添加到 unistd.h

文档:

- pyboard/tutorial:在传递示例中将“timeout=0”添加到 UART

- 词汇表中“MicroPython 端口”的更多外部参照

- 库/网络:修复对“socket”模块的引用(应该是“usocket”)

- machine.Signal:改进样式/语法并添加用法示例

- 库:向 uos.dupterm() 添加“index”参数的描述

- library/micropython:修复 RST 格式中的错字

- library/framebuf.rst:将构造函数推广到所有颜色格式

- btree:描述底层实现的页面缓存策略

- esp8266/tutorial:以使用 4 bbp 的示例更新 neopixel

- 库/网络:阐明 connect() 方法中“bssid”参数的用法

- pyboard/quickref:添加 Switch、RTC、CAN、Accel 类的信息

- pyboard/tutorial:现在更新黄色 LED 也支持 PWM

- esp8266/quickref:为RTC类添加quickref信息

- 库:为 pyb 模块中的类添加缺少的交叉引用链接

- 库/网络:更新文档以声明支持 W5500

- uselect:文档一次性轮询模式

- usocket:详细说明

- usocket: 文档 inet_ntop(), inet_pton()

- 库/网络:添加 dhcp_hostname 参数

- 参考/isr_rules:小错字更正

- ussl:修复模块名称引用并使用“MicroPython 端口”术语

- esp8266/general: 添加关于 TLS 限制的部分

- usocket:所有端口都不支持 settimeout() 的文档

- ure: 添加“|” (替代)支持的运营商列表

- reference/isr_rules.rst: 添加 micropython.schedule() 使用教程

特拉维斯:

- 在 pip 安装 cpp-coveralls 时使用 --upgrade

- 现在 stm32 Wiznet 配置已更改,更新构建命令

例子:

- hwconfig_console: 添加 .on()/.off() 方法

全部:

- 在适当的情况下将 mp_uint_t 转换为 mp_unary_op_t/mp_binary_op_t

- 将剩余的“mp_uint_t n_args”转换为“size_t n_args”

- 创建新的端口/子目录并将所有端口移动到那里

- 更新 Makefile 和其他文件以使用新的端口/目录布局进行构建

- 删除包含内部 py 头文件

- 调用 mp_raise 异常助手时使用 NULL 而不是 ""

自述文件:

- 更新“依赖项”部分

- 添加明确的贡献部分

- 将 gcc 和 arm-none-eabi-newlib 添加到所需组件列表中

.git 属性:

- 删除 stmhal/hal、stmhal/cmsis 的过时条目

- 为将移动到端口/目录的文件添加条目

========

2017 年 8 月 23 日星期三 11:46:35 +1000

v1.9.2 双精度数学库和pyboard支持,改进ussl

此版本为核心和各种端口带来了一般改进和错误修复,以及文档添加、清理和更好的一致性。并且已经努力清理源代码,使其在核心和所有端口之间更加一致。

有一个新工具“mpy_bin2res.py”,可以将任意(二进制)文件转换为 Python 资源以包含在源代码中(冻结或其他方式)。

ussl 模块进行了改进,包括实现 server_hostname(用于 axtls)和 server_side 模式(用于 mbedtls)。

现在有一个双精度浮点数学库,stmhal 支持使用软件或硬件双精度构建固件。

更改的详细列表如下。

py 核心:

- formatfloat:修复四舍五入时的位数和指数符号

- modthread:如果未获取锁,则在 release() 中引发 RuntimeError

- 编译:如果在 */** 之后给出位置参数,则引发 SyntaxError

- objint:在 int.to_bytes() 中支持“大”字节顺序

- objint:在 to_bytes() 中,允许长度 arg 为任何整数并检查符号

- 编译:在优化的范围内修复带有中断/继续的错误

- 编译:优化发射器标签索引以节省堆的一个字

- builtinimport:删除相对导入无法访问的代码

- objnamedtuple:简化和移除alloca 构建namedtuple 的使用

- mpprint:删除对 mp_format_float 的否定返回的不可达检查

- 二进制:添加缺少的“break”语句

- 运行时:将 m_malloc_fail() 标记为 NORETURN

- objstr:删除格式化代码中不必要的“符号”变量

- vm: 使“if”控制流在 YIELD_FROM 操作码中更加明显

- modmath:用 2 个参数检查日志中的零除法

- makeversionhdr.py:更新以解析 docs/conf.py 中的新发布行

- objdict:分解 dict 访问器助手以减少代码大小

- 在内置代码中将 mp_uint_t 更改为 size_t

- repl:在 repl 助手中将 mp_uint_t 更改为 size_t

- 编译:将算术和位移操作合并为 1 个编译例程

- compile: 使用 switch-case 来匹配 token 和 operator

- objgenerator:允许散列生成器和生成器实例

- gc:在 gc_free 函数中重构断言

- vm: 使 n_state 变量局部于 VM 的设置部分

- asmx64:支持将 64 位立即数移动到前 8 个寄存器之一

- modmicropython:转换 stack_limit 值以便正确打印

- builtinevex:将全局/本地参数的类型检查添加到 eval/exec

- py.mk:使 berkeley-db C-defs 仅适用于相关的源文件

- mperrno: 允许 mperrno.h 在其他 hdrs 之前被正确包含

- mpz:使 mpz_is_zero() 成为内联函数

- 实现将 big-int 提升为负幂

- mkrules.mk:显示冻结模块的大小和可执行文件的大小

- objtuple:允许在元组上使用原地乘法运算符

- objstr:在 str 二进制操作的 RHS 上引发错误类型的异常

- modsys:sys.getsizeof() 的初始实现

- binary.c:修复打包 big-endian 'Q' 值时的错误

- 添加详细调试编译时标志 MICROPY_DEBUG_VERBOSE

- 二进制:将内部字节数组类型代码从 0 更改为 1

- objstringio:防止 io.BytesIO 对象的偏移量环绕

- objstringio:通过处理 SEEK_SET 修复回归

- 流:寻求:一致地处理 SEEK_SET 的负偏移量

- mkrules.mk:搜索冻结的 obj 文件时使用“find -path”

- compile: 编译func params时删除未使用的pn_colon代码

- objcomplex:删除不必要的变量赋值

- formatfloat:不要对不会再次使用的变量进行后置增量

- 对应该内联的函数使用“静态内联”

- asmthumb:使用现有宏正确清除D-cache

extmod:

- modussl_axtls:更新 axTLS 2.1.3

- modussl_axtls:实现 server_hostname arg 到 wrap_socket()

- 将 modonewire.c 从 esp8266 移动到 extmod 目录

- modure:如果输入字符串是字节,也返回字节结果

- modubinascii:添加对传递给 hexlify 的空缓冲区的检查

- modussl_axtls:允许多次关闭ssl流

- modussl_mbedtls:支持server_side模式

- modussl_mbedtls:当读取和peer想要关闭时,返回0

- modframebuf:修复 GS4_HMSB fmt 中奇数宽度的无效步幅

- modussl_mbedtls:使 socket.close() 释放所有 TLS 资源

- modframebuf:始终使用“col”作为颜色变量的名称

- modussl_mbedtls:实现非阻塞 SSL 套接字

- machine_signal:修复当 Pin 为第一个 arg 时反转 arg 的解析

- modframebuf:为 .locals_dict 使用正确的初始化

- modlwip:实现setsockopt(IP_ADD_MEMBERSHIP)

- modussl_mbedtls.c: 添加 ussl.getpeercert() 方法

- modubinascii:重写 mod_binascii_a2b_base64

- modubinascii:不要对不会被使用的变量进行后增

- modonewire:将公共模块重命名为 mp_module_onewire

- 对于 uos.stat 将 st_size 成员解释为无符号整数

- 对应该内联的函数使用“静态内联”

库:

- axtls:升级到 axTLS 2.1.3 + MicroPython 补丁集

- libm/math:删除浮点转换函数的实现

- 添加 libm_dbl,一个双精度数学库,来自 musl-1.1.16

司机:

- onewire:将 onewire.py、ds18x20.py 从 esp8266 移动到驱动程序

- onewire:在初始化 1-wire 引脚时启用上拉

工具:

- gen-cpydiff:用例描述作为三级标题

- pyboard:添加许可证标题

- mpy_bin2res:将二进制资源转换为 Python 模块的工具

- mpy-tool.py:如果为空则不生成const_table

- mpy-tool.py:修复 dump() 函数中缺少的参数

测试:

- net_inet/test_tls_sites.py:SSL 连接的集成测试

- net_inet:为非阻塞模式下的接受和连接添加测试

- 基础:为 for-else 语句添加测试

- net_inet:将不需要完整 Internet 的测试移至 net_hosted

- connect_nonblock:重构为真正的 net_hosted 测试

- 自动检测目标的浮点能力

- import:为内置的 __import__ 函数添加测试

- 导入:更新注释,因为 uPy 引发了正确的异常

- basics/namedtuple1:添加使用 pos 和 kw args 创建的测试

- unix/extra_coverage:为 mp_vprintf 添加测试,fmt 规范不好

- 基础:添加算术运算符优先级测试

- cpydiff/modules_deque:详细的解决方法

- cpydiff/core_class_mro:移动到类下,添加解决方法

- cpydiff/core_arguments:移至函数小节下

- cpydiff/core_class_supermultiple:与 core_class_mro 相同的原因

- cpydiff:改进措辞,添加更多变通方法

- cpydiff:为 str.ljust/rjust 添加大小写

- 将 exec1.py 重命名为 builtin_exec.py

- basics/builtin_exec:测试各种全局/本地参数到 exec()

最小端口:

- Makefile:启用 gc-sections 以删除未使用的代码

- 从 Makefile 中删除未使用的 stmhal 包含

- 使用 size_t 作为 mp_builtin_open 参数

Unix 端口:

- modtime:用 localtime() 替换 strftime()

- mpconfigport.mk:更新 readline 和 TLS 选项的描述

- Makefile:禁用标准 unix 可执行文件中的断言

- modjni: 转换为 mp_rom_map_elem_t

- 对于 uos.stat 将 st_size 成员解释为无符号整数

stmhal 端口:

- mpconfigport.h: 删除 PY_THREAD_GIL 的配置以使用默认值

- 使错误消息在外设之间更加一致

- 添加 Pin.irq() 方法的初始实现

- 将 .value() 方法添加到 Switch 对象,以镜像 Pin 和 Signal

- 将 pybstdio.c 移动到 lib/utils/sys_stdio_mphal.c 以供通用

- 添加“安静计时”进入/退出功能

- 使 _onewire 模块可用,用于低级总线控制

- 模块:提供到 onewire.py 驱动程序的符号链接

-boards/stm32f405.ld: 增加 FLASH_TEXT 到 1MiB flash 的末尾

- sdcard:允许开发板自定义 SDIO 引脚

- 添加使用双精度浮点构建的可能性

- 板卡:在 F76x 板上启用 double-prec FP

- Makefile:对支持它的 MCU 使用硬件 double-prec FP

- Makefile:将 FLOAT_IMPL 重命名为 MICROPY_FLOAT_IMPL 以匹配 C 名称

- Makefile:将 CFLAGS_EXTRA 添加到 CFLAGS 以便 cmdline 可以添加选项

- mpconfigport.h:允许覆盖MICROPY_PY_THREAD

-板:添加NUCLEO_F429ZI的配置文件

- 板/NUCLEO_F429ZI:将 USB 配置从 HS 更改为 FS 外设

- 减小 ESPRUINO_PICO 构建的大小,使其适合闪存

- 伺服:使 pyb.Servo(n) 映射到所有 MCU 上的 Pin('Xn')

- 伺服:未启用时不要编译伺服代码

- 对应该内联的函数使用“静态内联”

cc3200 端口:

- modusocket:简化socket.makefile()函数

- 使非零套接字超时与连接/接受/发送一起工作

- modusocket:在非阻塞或超时模式下修复 connect()

- 在代码中一致使用名称 MicroPython

esp8266 端口:

- Makefile:将 axTLS TLS 记录缓冲区大小提高到 5K

- Makefile:允许覆盖 FROZEN_DIR,FROZEN_MPY_DIR

- Makefile:将 LIB_SRC_C 变量添加到 qstr 自动提取列表中

- 制作onewire 模块并支持其他端口可用的代码

- modonewire:将低级 1-wire 总线代码移动到 modonewire.c

- modonewire:使计时静态并删除 onewire.timings func

- 通过符号链接到驱动程序/onewire/ 来恢复 1-wire 脚本

- 将 mp_hal_pin_open_drain 从 esp_mphal.c 移动到 machine_pin.c

- 启用MICROPY_ENABLE_FINALISER

- 自述文件:使“文档”成为顶级部分

- machine_rtc:使用正确的算法来对齐 RTC mem len

- mpconfigport_512​​k:使用简洁的错误消息来获得 512k 以适合

- mpconfigport.h:使套接字成为弱链接

-modesp:删除未使用的常量:STA_MODE 等

- 一般:添加已知的 WiFi RX 缓冲区溢出问题

- 使用 size_t 作为 mp_builtin_open 参数

- 修复 UART 停止位常量

和风端口:

- Makefile:返工依赖项和“清理”目标

- Makefile:将prj.conf构建规则恢复到之前的状态

- 删除长期过时的 machine_ptr_t typedef

- Makefile:明确定义默认目标为“all”

- modusocket:允许在上游使用套接字化的 net_context

- modusocket:套接字,关闭:切换到本机 Zephyr 套接字调用

- modusocket:绑定、连接、监听、接受:切换到本地套接字

- modusocket:发送:切换到本地套接字

- modusocket:recv:切换到本地套接字

- modusocket:完全切换到原生 Zephyr 套接字

- modzephyr:添加 current_tid() 和 stacks_analyze() 函数

- prj_base.conf:启用 CONFIG_INIT_STACKS

- modusocket: 更新 struct sockaddr 系列字段名称

- prj_96b_carbon.conf:在 Carbon 上重新启用网络

- modzephyr:添加shell_net_iface() 函数

文档:

- btree: 添加打开db文件需要刷新db的提示

- select:重命名为uselect,匹配实际模块名

- 许可:更新版权年份

- esp8266/tutorial/intro: 不鼓励使用 512kb 固件

- esp8266/tutorial/intro:Sphinx 要求文字块周围有空行

- conf.py: 在 latexpdf 输出中包含 3 个级别的 ToC

- gc: 将 mem_alloc()/mem_free() 标记为 uPy-specific

- gc: 文档 gc.threshold() 函数

- 内置:列出内置异常

- conf.py: 设置 default_role = 'any'

- lcd160cr:将相关的常量组合在一起并使用完整的句子

- ref/speed_python:更新并使硬件中立

- library/gc: 修复语法并提高 gc.threshold() 的可读性

- 将所有端口文档移动到单个 ToC

- topindex.html:删除wipy.io的链接,它不再可用

- conf.py:将 .venv 目录添加到 exclude_patterns

- 将 topindex.html 移动到模板/子目录

-差异/索引模板:使用一致的标题大小写

- 内置:添加 AssertionError、SyntaxError、ZeroDivisionError

- 添加词汇表

- conf.py:切换到intersphinx_mapping的“新”格式

- conf.py:为全局替换定义添加文件

- 库:将 CPython 文档外部参照添加到每个相关模块

-replace.inc:添加 |see_cpython|,到 CPython 的外部参照单个符号

- conf.py:将“version”和“release”设置为相同的值

- *_index: 删除“索引和表”伪节

- pyboard:将硬件信息移到一般信息章节

- uerrno:文档“uerrno”模块

- esp8266/general.rst:修复NTP模块名称

- pyboard:将有关使用 Windows 的信息从 topindex 移到一般

- uzlib: 更新 decompress() 的描述并提及 DecompIO

- pyboard/tutorial/amp_skin:添加播放大型 WAV 文件的示例

- library/ubinascii:更新 base64 文档

- library/usocket: 将 socket.error 移动到它自己的部分

- library/usocket:描述地址格式的完整信息

- 词汇表:详细说明可能的 MicroPython 端口差异

- 词汇表:修复 micropython-lib 段落中的拼写错误

- 索引:重写介绍段落以避免混淆

- 在文档中始终使用 MicroPython 名称

- 始终链接到词汇表中的 micropython-lib

全部:

-更多地使用 mp_raise_{msg,TypeError,ValueError} 助手

- 统一头部保护使用

- 根据编码约定删除尾随空格

- 不需要时不要包含系统 errno.h

- 在注释中始终使用名称 MicroPython

- 在 Makefile 中使用 $(TOP) 变量,而不是“..”

- 通过 mp_raise_XXX 引发异常

- 使静态字典使用 mp_rom_map_elem_t 类型和 MP_ROM_xxx 宏

自述文件:

- 提及对字节码和冻结字节码的支持

- 改进预编译字节码的描述;提到mpy-cross

CODECONVENTIONS:

- 阐明 MicroPython 更改签收流程

- 开始描述文档约定

- 描述文档对 None/True/False 标记的使用

特拉维斯:

-构建STM32F769DISC板代替F7DISC来测试dbl-prec FP

- 在 0.3.12 固定 cpp-coveralls

========

周日,2017 年 6 月 11 日 23:04:00 +1000

v1.9.1 修复了 stmhal USB 大容量存储、lwIP 绑定和 VFS 回归

此版本通过实施 SCSI SYNCHRONIZE_CACHE 命令(某些操作系统现在需要该命令)为 stmhal 端口中的 USB 大容量存储设备提供了重要修复。还修复了 lwIP 绑定以改进非阻塞套接字和错误代码。VFS 修复了一些回归问题,包括对根进行 statvfs 的能力。

下面列出了所有更改。

py 核心:

- modbuiltins:添加 input() 函数的核心版本

- objstr:将负“maxsplit”arg 的情况捕获到 str.rsplit()

-persistentcode:允许在禁用复数的情况下编译

- objstr: 允许使用 obj-repr D 编译,并禁用 unicode

- modsys:允许在 obj-repr D 和 PY_ATTRTUPLE 禁用的情况下进行编译

- 提供 mp_decode_uint_skip() 以帮助减少堆栈使用

- makeqstrdefs.py:使脚本在 Python 2.6 中正确运行

- objstringio:如果从不可变对象创建,则遵循写入时复制策略

extmod:

- modlwip: connect: 对于非阻塞模式,返回 EINPROGRESS

- modlwip:修复重复调用connect()的错误代码

- modlwip:接受:修复非阻塞模式的错误代码

- vfs:允许对根目录进行statvfs

- vfs:允许“缓冲”和“编码”参数到 VFS 的 open()

- modframebuf:修复有符号/无符号比较挂起警告

库:

- libm: 使用 isfinite 代替finitef,以实现 C99 兼容性

- utils/interrupt_char: 移除对 KBD_EXCEPTION 的支持禁用

测试:

- basics/string_rsplit:为负“maxsplit”参数添加测试

- float:将“sys.exit()”转换为“raise SystemExit”

- float/builtin_float_minmax:PEP8 修复

- 基础:将“sys.exit()”转换为“raise SystemExit”

- 将剩余的“sys.exit()”转换为“raise SystemExit”

Unix 端口:

- 转换为使用内核提供的内置 import() 版本

- Makefile:用 $(MAKE) 替换对 make 的引用

windows 端口:

- 转换为使用内核提供的内置 import() 版本

qemu-arm 端口:

- Makefile:调整目标文件列表以获得正确的依赖关系

- 启用 micropython.mem_*() 函数以允许更多测试

stmhal 端口:

- 板:为 NUCLEO_F767ZI 板启用 DAC

- 添加对 NUCLEO_F446RE 板的支持

- 将 USB 处理程序作为参数传递以允许多个 USB 处理程序

- usb:在帧起始处理程序中使用本地 USB 处理程序变量

- usb: 将 USB 设备的状态私有给顶级 USB 驱动程序

- usbdev:为MSC执行SCSI SYNCHRONIZE_CACHE命令

- 从使用 stmhal 的 input() 转换为核心提供的版本

cc3200 端口:

- 从使用 stmhal 的 input() 转换为核心提供的版本

teensy 端口:

- 从使用 stmhal 的 input() 转换为核心提供的版本

esp8266 端口:

- Makefile:用 $(MAKE) 替换对 make 的引用

- Makefile:添加干净模块目标

- 从使用 stmhal 的 input() 转换为核心提供的版本

和风端口:

- modusocket:getaddrinfo:修复 mp_obj_len() 用法

- 定义MICROPY_PY_SYS_PLATFORM(到“zephyr”)

- machine_pin:使用本机 Zephyr 类型进行 Zephyr API 调用

文档:

- machine.Pin: 移除 out_value() 方法

- machine.Pin:添加 on() 和 off() 方法

- esp8266:始终用 .on/off 替换 Pin.high/low 方法

- esp8266/quickref:波兰 Pin.on()/off() 示例

- 网络:将名称混乱的 cc3200 服务器类移至其引用

- uos:取消条件化,删除特定于端口的次要细节

- uos:将 cc3200 端口旧版 VFS 挂载功能移至其参考文档

- machine:按逻辑顺序排序机器类,而不是按字母顺序

-网络:第一步描述标准网络类接口

例子:

- 嵌入:使用核心提供的KeyboardInterrupt 对象

========

2017 年 5 月 26 日星期五 19:07:37 +1000

v1.9 新的VFS子系统和调度框架,对堆的需求更少

此版本添加了一些基本的新组件,允许在不使用堆的情况下进行更多 Python 操作,并减少了代码大小和堆栈使用量。

变化迭代器的处理方式允许进行迭代,而不在堆上分配用于所述类型:元组,列表,STR,字节,字节组,阵列,字典,集,frozenset。它还允许在不为迭代器参数分配堆内存的情况下调用内置函数 all、any、min max 和 sum。对 super() 处理的改进意味着 super().foo() 方法调用现在是无堆的。

添加了一个新的通用 VFS 子系统,它允许在根目录或根目录中的挂载点挂载任意文件系统(甚至用 Python 编写)。FatFS 驱动程序已被面向对象的版本 (oofatfs) 取代,该版本允许完全可定制的文件系统布局。

在核心中实现了一个调度框架,它提供了“尽快”调度回调的能力。这允许端口实现“软 IRQ”,允许程序员在中断处理程序期间分配内存,但代价是与处理程序的响应时间相关的一些性能。新的 micropython.schedule() 函数可以访问调度程序。

核心的其他改进包括: consts 现在可以是大数,例如“X = const(1 << 100)”;添加“help('modules')”以列出可用模块;在 ARM Cortex-M 架构上,Python 调用的堆栈使用量减少了 8 个字节;添加了 micropython.kbd_intr() 函数以禁用 Ctrl-C 捕获;添加 uio.resource_stream(); 如果需要,mpy-cross 会自动构建;添加了一个辅助工具 mpy_cross_all.py 以在整个项目上运行 mpy-cross。

此版本中的字节码已更改,因此需要重新编译现有的 .mpy 文件。C API 也有一些变化,最显着的是在许多地方将 mp_uint_t 更改为 size_t。

在扩展模块中进行了以下主要更改: 添加 machine.Signal 类以允许在 Pin 上反转;framebuf 具有 MONO_xxx 形式的新格式;添加 uselect.ipoll() 用于无分配轮询;添加 uos.ilistdir() 以有效迭代目录列表;machine.Pin high/low 方法在 esp8266 和 zephyr 中重命名为 on/off(这是一个向后不兼容的更改);machine.time_pulse_us() 函数不再抛出异常,而是返回负值。

对于 stmhal,添加了 pyb.fault_debug() 函数,并且硬故障的默认行为现在是立即重置。对 F7 MCU 有更好的支持,尤其是对 DMA 和 SD 卡的支持。修复了 USB VCP(USB 串行)的一个错误,该错误在极少数情况下(通常在主机 PC 负载不足时)会丢失字符。Pyboard 现在会自动挂载 SD 卡上的所有可用分区。多线程已经实现并且可以通过 _thread 模块使用,但是这个特性默认是禁用的,必须在编译时使用 MICROPY_THREAD 和 MICROPY_THREAD_GIL 选项启用。现在可以通过在闪存上创建一个名为“SKIPSD”的空文件来跳过从 SD 卡启动的功能。

cc3200 端口有一些向后不兼容的变化,特别是 I2C、Pin、UART 和 uos。请参阅新行为的文档。

esp8266 端口的固件大小发生了变化,以适应附加功能。因此,此版本的文件系统与 v1.8.7 不兼容,设备需要在刷新此版本之前进行备份和擦除。现在为 Pin 和 Timer 回调实现了软 IRQ,以及上述一般改进。

在文档中,现在有一节描述了 MicroPython 和 CPython 之间的区别。py/ 和 extmod/ 的代码覆盖率高达 98%。

v1.8.7 和此版本之间代码大小(以字节为单位)的变化是:

裸臂:-1104

最小:-1324

Unix x64:-1115

unix nanbox:-11106

stmhal:+18116

cc3200:+1032

esp8266:+3060

注意stmhal因为加入了frozen

bytecode 和 LCD160CR 驱动程序。

更改的详细列表如下。

py 核心:

- builtinimport:根据 CPython 为错误的相对导入引发 ValueError

- builtinimport:删除无法访问的代码并更改 obj-import 注释

- 运行时:重构 assert(0) 以提高覆盖率

- 运行时:修复恢复生成器时 throw() 的处理

- objgenerator: 抛出对象时,不做 exc 实例

- objgenerator:如果 GeneratorExit 被忽略,则不要引发 RuntimeError

- 解析:重构代码以删除断言(0)的

- 发射:删除断言(0)或替换为 mp_not_implemented

- objexcept: 用简单的断言替换 if-cond 和 assert(0)

- 运行时:重构 switch 的默认情况以删除 assert(0)

- 二进制:mp_binary_get_size:在不支持的类型代码上引发错误

- formatfloat:删除无法访问的代码

- objint_mpz:重构 switch 语句以删除无法访问的默认值

- mpz:实现 mpz_set_from_bytes() 作为 int.from_bytes() 的基础

- objint: from_bytes(): 实现“byteorder”参数和任意精度

- objint_longlong:为 mp_obj_int_from_bytes_impl() 添加存根

- 向核心添加内置帮助功能,默认帮助信息

- 将弱链接映射移动到 objmodule.c,并将模块映射公开为公共

- builtinhelp:实现 help('modules') 以列出可用模块

- objint:修复检查大整数时的左移溢出

- objmodule:将模块初始化/取消初始化代码移动到运行时函数中

- objstr: 用空字符串优化字符串连接

- showbc:确保在打印字节码之前设置const_table

- py.mk:添加 CFLAGS_MOD 标志以设置 FatFs 的配置文件

- objstringio:允许通过传递数字参数来指定初始容量

- objset:使就地二元运算符实际修改集合

- objfloat:将 ZeroDivisionError 的 0 提升为负幂

- objcomplex:正确处理 0j 到某事物的幂的情况

- objset:修复就地二进制操作,因此不会修改冻结集

- 添加了对 builtin.pow() 3 参数调用的优化支持

- objstr:在将 dict 传递给 %-formatting 时给出正确的行为

- mpconfig.h:将 PY_BUILTINS_POW3 配置选项移动到文件的差异部分

- objstr:将 mp_uint_t 的一些实例转换为 size_t

- objcomplex:修复三元表达式中的错字

- asmxtensa.h:将 args 显式转换为 32 位,因此左移是合法的

- 地图:在适当的地方将 mp_uint_t 更改为 size_t

- nlr:修复 ARM 的 execstack 构建

- objtype:添加由MICROPY_PY_DELATTR_SETATTR配置的__delattr__/__setattr__

- emitbc:为大字节码块生成正确的行号信息

- objtype:用 ASCII 版本替换非 ASCII 单引号字符

- modthread:将系统提供的互斥锁用于_thread 锁

- vm: 添加MICROPY_PY_THREAD_GIL_VM_DIVISOR 选项

- 运行时:在适当的地方将 mp_uint_t 转换为 size_t

- mpz:在适当的地方将 mp_uint_t 转换为 size_t

- mpz:删除过时的 mpz_as_str_size 声明

- mpz:将“基本”参数的类型从 mp_uint_t 更改为 unsigned int

-persistentcode:在适当的地方用 size_t 替换 mp_uint_t

- objtuple:在适当的地方将 mp_uint_t 转换为 size_t

- objlist:在适当的地方将 mp_uint_t 转换为 size_t

- objdict:在适当的地方将 mp_uint_t 转换为 size_t

- objset:在适当的地方将 mp_uint_t 转换为 size_t

- objstr:在适当的地方将 mp_uint_t 转换为 size_t(并使用 int)

- objarray:在适当的地方将 mp_uint_t 转换为 size_t

- objfun:在适当的地方将 mp_uint_t 转换为 size_t

- objclosure:在适当的地方将 mp_uint_t 转换为 size_t

- objexcept:在适当的地方将 mp_uint_t 转换为 size_t

- objint:在适当的地方将 mp_uint_t 转换为 size_t

- vm:在适当的地方将 mp_uint_t 转换为 size_t

- 将 iter_buf 添加到 getiter 类型方法

- 允许字节码/本机将 iter_buf 放在堆栈上以进行简单的 for 循环

- 完成后使 FOR_ITER 操作码从堆栈中弹出 1+4 个槽

- 优化迭代器的存储,因此它在 Py 堆栈上只需要 4 个插槽

- 从 for_iter_end 发射函数中删除未使用的“use_stack”参数

- 运行时:优化身份迭代器的情况,使其不分配 RAM

- compile: 优化 list/dict/set comprehensions 以使用 stack iter

- 去优化 mp_getiter 的一些使用,所以他们不使用 C 堆栈

- 语法:将非编译语法规则组合在一起以缩小表

- 词法分析器:不为句点或省略号生成字符串表示

-persistentcode:由于字节码的变化而导致 .mpy 版本的变化

- 词法分析器:简化第一个标记的缩进处理

- 词法分析器:将关键字检查移动到名称标记块

- lexer:使用strcmp让关键字搜索更高效

- 词法分析器:简化行继续错误的处理

- 在词法分析器中进行相邻的 str/bytes 文字连接,而不是编译器

-词法分析器:在适当的地方将 mp_uint_t 转换为 size_t

- 语法:删除未使用的规则

- objlist:对于列表切片赋值,允许RHS为元组或列表

- moduerrno:使 uerrno.errorcode dict 可配置

- moduerrno:使错误代码列表可配置

- 解析:允许解析器/编译器常量为大数

- 在解析器中创建 str/bytes 对象,而不是在编译器中

- 解析:通过直接引发错误来简化错误处理

- 运行时:mp_raise_msg():接受消息的 NULL 参数

- objarray:禁止对只读内存视图进行切片赋值

- 地图:修复从 OrderedDict 中删除元素的错误

- 将本地/全局字典移动到线程特定的状态

- nlr.h:将 nlr_jump_fail 标记为 NORETURN

- nlrxtensa:使用内联汇编将汇编程序转换为 C 文件

- nlrx64:使用内联汇编将汇编程序转换为 C 文件

- nlrx86:使用内联汇编将汇编程序转换为 C 文件

- py.mk: 强制使用 -Os 编译 nlr 文件

- modsys:在 LONGINT_IMPL_NONE 的情况下,将 MP_SMALL_INT_MAX 用于 sys.maxsize

- runtime.c: 删除'*a,=b'的优化,它导致了一个错误

- 使用 mp_obj_get_array 其中序列可以是元组或列表

- nlrx86:为 Zephyr 添加解决方法

- nlrx64:修复以支持 Mac OS

- objint_longlong:实现 mp_obj_int_from_bytes_impl()

- 允许词法分析器在构造过程中引发异常

- objint:允许在不使用堆的情况下打印长整数

- 发射:正确使用断言和 mp_not_implemented

- 发射:删除过时的注释掉的代码

- mpprint:修复 int 格式,以便为 0 值整数打印“+”

- mkrules.mk:删除 qstr 自动生成中对“-B”的特殊检查

- objstr:修复 str/bytes 加法的急切优化

- 减小 mp_code_state_t 结构的大小

- 提供 mp_decode_uint_value 以帮助优化堆栈使用

- objstr:在错误的隐式 str/bytes 转换异常中使用更好的 msg

- 添加 micropython.schedule() 函数和相关的运行时代码

- vm: 如果调度器被锁定,则不要释放 GIL

- bc:为意外的关键字参数提供更好的错误消息

- 使用 size_t 作为 len 参数并返回 mp_get_index 的类型

- 序列:在适当的地方将 mp_uint_t 转换为 size_t

- 定义并使用 MP_OBJ_ITER_BUF_NSLOTS 来获取堆栈 iter buf 的大小

- 词法分析器:删除过时的注释,因为词法分析器现在可以引发异常

- modmath:如果需要,允许 trunc/ceil/floor 返回一个大整数

- objint:在将 fp 分类为 int 时处理 -0 的特殊情况

- modbuiltins:对于 round() 内置使用 nearint 而不是 round

- modbuiltins:如果需要,允许 round() 返回一个大整数

- objtype:在适当的地方使用 size_t,而不是 mp_uint_t 或 uint

- objnamedtuple:在适当的地方使用 size_t,而不是 mp_uint_t

- 使用 mp_locals/mp_globals 访问函数代替 MP_STATE_CTX

- 删除 MP_STATE_CTX,使用 MP_STATE_THREAD 代替(这是一个别名)

- objarray:使用 mp_obj_str_get_str 而不是 mp_obj_str_get_data

- nlrx86:更好地检查 Zephyr(需要 1.7)

- obj:将 mp_uint_t 更改为 size_t 以获取 mp_obj_get_array_fixed_n len arg

- vm:修复 VM 操作码跟踪以打印正确的堆栈指针

- compile:编译super()时,处理封闭的self变量

- objmap:将 mp_uint_t 转换为 size_t

- 尽可能使用 mp_raise_TypeError/mp_raise_ValueError 助手

- 词法分析器:简化和减少运算符标记化的代码大小

- compile: 简化非法赋值的语法错误信息

- 缩短一些错误信息

- 编译:为无效的 dict/set 文字提供简洁的错误消息

- 将元组/列表访问器的 mp_uint_t 转换为 size_t

- 将 mp_uint_t 更改为 size_t 以获取 mp_obj_str_get_data len arg

- objzip:将 mp_uint_t 转换为 size_t

- obj.h:使序列增长更有效率并支持重叠

- objstr: 构造字节时使用MICROPY_FULL_CHECKS 进行范围检查

- 为浮点数和复数添加非常简单但正确的散列

- objint:将 mp_obj_new_int_from_float 合并为一个实现

- 如果 range() 步长为零,则引发 ValueError

- objtuple:添加对就地添加的支持(与普通添加相同)

- 确保静态 emg-exc-buffer 与 mp_obj_t 的大小对齐

- 运行时:当初始化 kbd intr exc 时,使用元组 ptr 而不是对象

- objint:因为类型已知,直接提取小的int值

- objint:格式化整数时使用无符号算术

- obj:清理并添加描述 mp_obj_type_t 结构的注释

- 针对类型具有单个父类型的常见情况优化类型

- objfloat:添加高质量浮点哈希的实现

- nlrsetjmp:添加检查失败的 NLR 跳转

- gc:在受保护的环境中执行终结器代码

- modmicropython: 添加 micropython.kbd_intr() 函数

- 当浮点数为 30 位时,降低浮点数的 str/repr 精度

- objtype: mp_obj_new_super 不需要公开,所以内联它

- 编译:如果解析节点是结构,不要做不必要的检查

- compile: 在 func 开始提取解析节点种类以提高效率

- 编译:添加 COMP_RETURN_IF_EXPR 选项以启用 return-if-else 选项

- compile: 不要做不必要的检查 iter 解析节点是否是一个结构体

- compile: 重构处理特殊的 super() 调用

- 添加 LOAD_SUPER_METHOD 字节码以允许无堆超级 meth 调用

- mpz:从字节设置时从 mpz 值中去除尾随零

- mpz:在 mpn_sub 中,使用现有函数去除尾随零

- 清理使用全局 DEBUG 预处理器定义

- modio:实现uio.resource_stream(package, resource_path)

- objint:在 int.from_bytes 中,只有在真正需要时才创建 big-int

- modio:resource_stream:实现“包”参数处理

- 二进制:处理将大整数存储到所有数组类型

- 词法分析器:通过使用虚拟字节和 next_char() 简化词法分析器的启动

- mkrules.mk: 在 mpy-cross 上添加 .mpy 文件的依赖

- 词法分析器:提前处理 CR 以允许对 chr1 进行换行检查

- modsys:更新代码引用 sys.stdout 的条件

- objstringio:修复 EOF 或 EOF 之外的 StringIO 读取

- 序列:修复负步切片时的边界错误

- objrange:修复切片步长为负时范围的切片

- mkenv.mk: 使用 $(TOP) 而不是 ".." 来引用工具,mpy-cross

- vm:修复无堆栈模式和异常展开的错误

- vm:修复了从 for 循环中弹出迭代器的 unwind jump 的错误

- emitbc:修复 BC 发射器计算 Python 堆栈大小的错误

- mkrules.mk:修复使用“make -B”时自动生成qstr

- objstringio:在 write() 中捕获流位置的 mp_uint_t 溢出

- 将 BYTES_PER_WORD 定义从端口移动到 py/mpconfig.h

extmod:

- modframebuf:优化fill_rect子程序调用

- modframebuf:裁剪线法绘制的像素

- modframebuf:添加GS4_HMSB格式

- vfs_fat:返工,以便它可以选择使用 FatFS 的 OO 版本

- 将 vfs_fat_file.h 重命名为 vfs_fat.h

- 添加通用 VFS 子系统

- vfs_fat:返工以支持新的通用 VFS 子系统

- vfs:添加 VFS 子系统使用 VfsFat 导入的能力

- modlwip: 添加 socket.readinto() 方法

- vfs: 暴露 mp_vfs_mount_t 类型

- vfs_fat: 使用 SECSIZE 宏来确定 FatFs 扇区大小

- machine_signal:为机器模块实现“信号”抽象

- vfs_fat:更新为使用 FF_DIR 而不是 DIR

- vfs:将lookup_path_raw 暴露为mp_vfs_lookup_path

- vfs_fat:删除MICROPY_READER_FATFS 组件

- vfs_fat:删除MICROPY_FSUSERMOUNT_ADHOC 配置选项

- 删除MICROPY_FSUSERMOUNT 和相关文件

- vfs_fat:删除MICROPY_FATFS_OO 配置选项

- 将旧的 fsusermount.h 头文件合并到 vfs.h 和 vfs_fat.h

- vfs_fat:删除未使用的 fatfs_builtin_open 函数

- vfs_fat:删除未使用的函数 fat_vfs_listdir

- vfs_reader:通过弹出上下文修复 NLR 的使用

- vfs_fat.c:为 timeutils.h 使用显式包含路径

- machine_pulse:使 time_pulse_us() 不抛出异常

- machine_spi:从软SPI传输函数中删除EVENT_POLL_HOOK

- machine_signal:实现 Signal .on() 和 .off() 方法

- vfs:允许挂载一个块设备,而不仅仅是一个 VFS 对象

- vfs:在尝试 mkdir 挂载点时引发 OSError(EEXIST)

- vfs:允许统计根目录

- modlwip: 添加我的版权

- modurandom:使用 mp_raise_ValueError()

- modutimeq:使调度公平(循环)

- modutimeq:添加 peektime() 函数(临时)

- vfs_fat:删除过时和未使用的 str/len 成员

- vfs_fat:允许编译时禁用MICROPY_VFS_FAT

- vfs:重写路径查找算法以支持来自根的相对路径

- modframebuf:添加对单色水平格式的支持

- utime_mphal:不要在通用睡眠函数中退出/进入 GIL

- modlwip:使用 mp_obj_str_get_str 而不是 mp_obj_str_get_data

- vfs_fat:修复statvfs中总块的计算

- moduselect:更新以使用 size_t 作为数组访问器

- 更新 mp_obj_str_get_data

- modframebuf:使单色位图格式以 MONO_ 开头

- machine_signal:支持构造函数的所有Pin的参数

- machine_signal:将“inverted”参数重命名为“invert”,它更短

- moductypes:修复 32 位端口的 bigint 处理

- 加密算法/sha256:删除非标准 memory.h 标头

- moduselect:转换为 MP_ROM_QSTR 和朋友

- moduselect:重构引入 poll.ipoll()

- moduselect:实现无分配轮询的 ipoll() 方法

- modlwip: getaddrinfo: 允许接受所有 6 个标准参数

- modlwip:ioctl POLL:修复对等关闭套接字的处理

- vfs:允许在根目录挂载 VFS

- vfs:实现 mp_vfs_ilistdir()

- vfs_fat:用 ilistdir() 的实现替换 listdir()

- vfs:使用 MP_S_IFDIR、MP_S_IFREG 常量而不是幻数

- vfs_fat_misc:删除点目录过滤器,因为 FatFS 已经这样做了

库:

- utils:删除旧的 pyhelp 助手,替换为 py/builtinhelp.c

- utils/pyexec:仅在启用帮助功能时打印帮助提示

- oofatfs:添加面向对象的 FatFS 库

- fatfs:删除旧的fatfs库组件,替换为oofatfs

- oofatfs/ffconf.h: 允许配置 FS_EXFAT 选项

- oofatfs/ffconf.h: 添加MICROPY_FATFS_NORTC 选项

- utils/pyexec: 允许在禁用 uPy 编译器时进行编译

- utils/pyexec:重构以将词法分析器构造函数全部放在一处

- memzip:找不到文件时使词法分析器构造函数引发异常

- utils/pyexec:修复 pyexec_file 未为源设置标志的错误

- libm:从 musl-1.1.16 添加 nearintf 的实现

- netutils:更新 mp_obj_str_get_data

- utils/pyexec:更新事件驱动的 REPL 以匹配非事件 REPL

司机:

- 修正一些小的拼写错误

-显示:为uPy LCD160CR显示添加驱动和测试

-内存:添加SPI flash驱动,C语言编写

- display/lcd160cr: 在 set_power() 中使用正确的变量

- display/lcd160cr: 使用 lcd.get_pixel() 修复错误

- display/lcd160cr: 使用 save_to_flash 方法修复错误

- display/lcd160cr:添加检查JPEG大小小于65536

- nrf24l01:更新以在较新的端口上工作,使用机器,utime

- display/lcd160cr:修复 get_line 方法并增强 screen_dump

- display/lcd160cr_test: 允许测试采用方向参数

- 用 .__call__(1/0) 替换已弃用的 Pin.high()/low() 方法

工具:

- tinytest-codegen.py: qemu-arm 的 heapalloc_str.py 黑名单测试

- upip:更新到 1.1.5。更好、更友好的错误处理

- 添加 gen-cpydiff.py 以生成文档差异

- gen-cpydiff.py:设置Python导入路径查找测试模块

- gen-cpydiff.py:可配置的 CPython 和 micropython 可执行文件

- tinytest-codegen:更新最近的测试重命名(“intbig”后缀)

- pyboard:在错误时收紧 Pyboard 对象闭包

- pyboard:添加“exec”和“execpty”伪设备支持

- pyboard: execpty: 使用 shell=False 来解决一些 curdir 问题

- pyboard:processPtyToTerminal:添加 PySerial 错误的解决方法

- pyboard:在未收到预期回复时提供更多详细信息

- mpy-tool:如果从另一个目录运行,则使其工作

- upip:升级到1.1.6,支持requirements.txt中的注释行

- upip:升级到 1.2

- mpy-tool.py:使用 MP_ROM_xxx 宏来支持 nanbox 构建

- mpy_cross_all.py:在整个项目上运行mpy-cross的辅助工具

- mpy-tool.py:在 obj repr C 中修复带有冻结浮点数的回归

测试:

- 为“const”关键字添加功能检查并跳过相关测试

- 更新测试套件以兼容 CPython 3.6

- 提高 stream.c 测试覆盖率

- 导入:提高 builtinimport.c 测试覆盖率

- 提高冻结导入测试覆盖率

- 更新测试,并添加新测试,用于最近的生成器调整

- io:提高io.BufferedWriter的测试覆盖率

- 基础:提高runtime.c 测试覆盖率

- extmod:提高ure模块的测试覆盖率

- float: 添加复数属性赋值测试

- extmod/framebuf1: 为 no-op fill_rect 添加测试

- micropython/opt_level:为 opt_level 3 添加测试

- misc/non_compatible:添加无法分配 func attrs 的测试

- 基础:添加测试以将属性分配给绑定方法

- 为任意精度整数添加 int.from_bytes() 测试

- heapalloc_int_from_bytes:测试 int.from_bytes() 可以在没有 alloc 的情况下工作

- 为内置帮助功能添加测试

- basics/builtin_help:添加帮助测试('modules')

- 确保也可以跳过特殊测试

- extmod/framebuf4:为 GS4_HMSB framebuf 格式添加测试

- extmod/framebuf1:修复 framebuf 无效构造函数的测试

- extmod:在编译正则表达式时添加调试打印测试

- heapalloc_str: 测试 alloc-free 字符串操作

- extmod:为新的 OO FatFs 库更新 vfs_fat 测试

- extmod/vfs_fat:更新测试以使用新的 VFS 子系统

- extmod/vfs_fat_ramdisk:让它在pyboard上工作

- run-tests:如果设置文字语法不可用,则跳过冻结集测试

- basics/zip: 使可跳过

- 线程:使 thread_exc2 可在裸机上运行

- 线程:修复堆栈大小测试,以便测试在裸机上可靠运行

- heapalloc_bytesio:使用预分配空间测试 BytesIO

- basics/set_binop:为就地集合操作添加测试

- float:添加零到负幂的测试

- 2- 和 3-arg pow() 的拆分测试

- basics/string_format_modulo:为dict格式添加更多测试

- pyb:调整测试,使其可以在 PYB 和 PYBLITE 上运行

- 杂项:使用大字节码块添加行号打印测试

- 添加选项以在运行测试时不清除 MICROPYPATH

- run-tests:允许使用 async/await 关键字跳过测试

- comprehension1,包含:将测试集拆分为单独的文件

-builtin_dir:sys中最期待的就是exit,测试一下

- basic/[af]*: 使可跳过

- dict_fromkeys: 恢复使用 reversed() 在原生代码生成模式下运行

- extmod:使测试可跳过

- 线程:用睡眠循环替换繁忙的等待循环

- 线程:添加压力测试以创建多个线程

- gen_yield_from_close:使用 range() 而不是 reversed()

- basic/: 使各种测试可跳过

- cmdline:更新测试以通过字节码的最新更改

- cmdline/cmd_showbc:更新以处理最近的更改

- micropython:添加测试以在堆锁定的情况下进行迭代

- micropython/heapalloc_iter:为包含和解包添加测试

- cmdline:更新 cmd_parsetree 测试以了解语法顺序的变化

- cmdline/cmd_parsetree:更新以处理语法更改

- basics/string_join:为字符串连接添加更多测试

- heapalloc_exc_raise.py: 用于提升/捕获 exc 的堆分配测试

- cpydiff:为 uPy-CPython 差异添加初始测试集

- cpydiff:添加测试以将可迭代存储到列表切片

- micropython:为大数常量添加测试

- extmod:为machine.Signal 类添加测试

- 基础知识:为 OrderedDict 添加更多测试

- run-tests:检查 big int 可用性并跳过相关测试

- 基本:将测试拆分为使用小整数而不工作

- float/complex1:拆分出 intbig 测试

- float2int*:后缀为_intbig,不要在任何其他int类型上运行

- string_format_modulo2:拆分 intbig 测试

- basics/string_join.py:添加参数不可迭代的测试用例

- basics/unpack1.py: 测试 *a, = b 当 b 是列表时是否复制 b

- micropython/: 拆分 intbig 测试

- uctypes_array_assign_native_le:拆分 intbig 部分

- 基本:使各种测试可跳过

- float:使各种测试可跳过

- extmod:为ussl 模块添加非常基本的功能测试

- extmod:添加 websocket 测试

- dict_fromkeys:拆分出可跳过的部分

- micropython:使使用 uio 的测试可跳过

- micropython/heapalloc_traceback:在重构后修复回溯行#

- micropython/opt_level:阐明 opt_level == 3 的预期输出

- feature_check/int_big:返工“big int”检测

- basics/fun_error: 拆分可跳过的测试

- extmod: 将 websocket 测试重命名为 websocket_basic

- misc/:使一些测试可跳过

- extmod:为核心 VFS 功能添加测试,无任何文件系统

- extmod/vfs_basic:为基本 VFS 功能添加更多测试

- extmod:提高re1.5/recursiveloop.c 测试覆盖率

- 提高 binary.c 测试覆盖率

- basics/struct_micropython:在 ustruct 中添加对“S”类型代码的测试

- 运行测试:在 pyboard 上重新设置跳过 doubleprec 测试

- extmod/vfs_basic:在进行测试之前卸载所有现有设备

- extmod:提高 tinfgzip.c 测试覆盖率

- micropython/viper_error:添加更多测试以提高覆盖率

- basics/string_format2:现在测试成功调整注释

- 基础知识:使用 int 参数为字符串模块格式添加测试

- 基础:将字符串模格式 int 测试移动到专用文件

- basics/bytes_add:添加优化字节添加测试

- micropython:为 micropython.schedule() 添加测试

- heapalloc_str:测试 str.replace() 的无替换情况

- float:为返回整数的数学函数添加测试

- float:为inf、nan和大数的round()添加测试

- 基础:在 self 关闭时为 super() 添加测试

- 基础知识:为列表和字节数组增长使用它们自己添加测试

- run-tests:确保在完成时关闭 Pyboard 对象

- vfs_fat_fileio.py 太大,无法在 16K 堆中解析,分成 2 个

- extmod/vfs_fat_fileio*:提高可跳过性

- float/byte*_construct:跳过缺少的数组模块

- micropython/heapalloc_iter:提高可跳过性

- 运行测试:引入通用的“最小”目标

- 浮点数:添加散列浮点数和复数的测试

- run-tests:更新可能需要跳过的测试名称

- 基础知识:添加测试以在 range() 获得 0 步时引发 ValueError

- 基础知识:为元组添加测试就地添加

- extmod/utimeq1:提高utimeq模块的覆盖率

- 运行测试:搜索功能检查到主脚本位置

- run-tests:不要以任何方式对 CRASH 结果进行后处理

- micropython:为 micropython.kbd_intr() 添加测试

- 添加调用super和直接加载方法的测试

- 基础知识:当 src 有尾随零时为 int.from_bytes 添加测试

- cpydiff/core_arguments:填写原因/解决方法

- cpydiff/core_function_userattr:澄清,填写原因和解决方法

- cpydiff/core_import_prereg:填写原因和解决方法

- io/resource_stream:为 uio.resource_stream() 添加测试

- cpydiff/core_import_path:测试显示包中的差异。__path__

- cpydiff/core_import_split_ns_pkgs:测试拆分命名空间包

- cpydiff/core_function_unpacking:填写解决方法

- extmod:为 VFS FAT 添加更多测试

- extmod:添加更多 VFS 测试

- micropython:为具有许多零字节的 int.from_bytes 添加测试

- 将超级本地测试从 cpydiff 移动到基本测试

- 基础知识:使用 lL 类型代码更新 big-int 的数组测试

- 基础知识:为大整数添加 memoryview 测试

- 基础知识/词法分析器:为以换行符开头的输入添加词法分析器测试

- extmod:在运行之前进行一些 vfs 测试完全卸载 FS

- extmod/vfs:更新测试以反映新的 ilistdir() 方法

- 基础知识/词法分析器:为词法分析器添加行继续测试

- extmod/vfs_fat:为不存在的目录的 ilistdir 添加测试

- extmod/vfs_fat_more: 使可跳过是 uos 不可用

- io/bytesio_ext:在经过 BytesIO 对象末尾的 seek() 之后测试 read()

- basics/list_slice_3arg:为负切片添加更多测试

- basics/builtin_range:为范围的负切片添加测试

- 基础知识:为 try-finally 中的 unwind 跳转添加更多测试

mpy-cross:

- main:将词法分析器构造函数移动到 NLR 处理程序块内

- 修复编译器检测以包含 windows/fmode.c

- Makefile:覆盖取消定义任何继承的变量

- Makefile:通过对 make 功能的测试保护“覆盖未定义”

裸臂端口:

- main:将词法分析器构造函数移动到 NLR 处理程序块内

- Makefile:将 C 标准从 gnu99 更改为 c99

最小端口:

- 更新新的 .mpy 版本的frozentest.mpy 文件

- 添加无需编译器即可构建的能力和描述

- main:将词法分析器构造函数移动到 NLR 处理程序块内

- Makefile:将 C 标准从 gnu99 更改为 c99

- main:使Cortex-M向量表保持不变

unix 端口:

-coverage: 移动coverage #if guard 回到文件顶部

- 在覆盖构建中启用内置帮助功能

- 在覆盖构建中启用MICROPY_PY_BUILTINS_HELP_MODULES

- 切换到面向对象的 FatFS 库

- 再次获得最小版本编译

- 更改为在覆盖构建中使用新的通用 VFS 子系统

- fatfs_port:包含新的 oofatfs 标头

- mpconfigport.h:删除过时的 MICROPY_FATFS_VOLUMES 配置

- modos:从uos模块中删除VfsFat,它现在在uos_vfs模块中

- 使堆栈不可执行

- 修复 freedos 端口构建问题

- main: 正确处理以':'开头的MICROPYPATH

- moduselect:使用无分配策略实现 ipoll() 方法

- modmachine:将信号类添加到机器模块

- 删除剩余的、过时的 GNU readline 支持痕迹

- moduselect:正确实现 ipoll 对象迭代

- main:重构以将词法分析器构造函数全部放在一处

- 在 time.sleep() 中使用 mp_handle_pending()

- 覆盖:启用调度程序并为其添加测试

- 使用 mp_obj_str_get_str 而不是 mp_obj_str_get_data

- 将 mp_uint_t 转换为 size_t 以使用 mp_obj_list_get

- 在 alloc.c 中将 mp_uint_t 转换为 size_t

- 在覆盖构建中启用高质量的浮点哈希

- 删除过时的 MICROPY_FATFS 宏

- main: 忽略 SIGPIPE 信号,而是让 EPIPE 到达

- main: 不允许指定太小的堆大小

- main: 为包实现 -m 选项

- Makefile:启用冻结字节码模块目录

- 将 upip 移动到冻结的字节码目录

- Makefile:不要将冻结的字节码添加到最小构建中

- 在 uos 模块中添加 ilistdir

- 使用核心提供的KeyboardInterrupt 异常对象

windows 端口:

- .gitignore: 忽略来自 VS2015 的 VC.db 和 VC.opendb 文件

- 使 msvc 项目文件支持从 VS2013 到 VS2017 的任何版本

- 使用 unix 端口更新 mpconfigport.h

- 自述文件:转换为 Markdown

- README:修复一些错别字和语法

- README:添加关于 msvc 堆栈使用的注释

- 使用核心提供的KeyboardInterrupt 异常对象

- msvc:添加机器/引脚相关的源来构建

- msvc:清理时删除包含生成文件的目录

- msvc:不要为调试版本定义 DEBUG

- msvc: 修改 mpconfig 标头时重建所有 qstr

- msvc:旧 MSBuild 版本中的解决方法解析器错误

qemu-arm 端口:

- 不要在“REPL”模式下编译测试

- mpconfigport.h:启用MICROPY_PY_BUILTINS_POW3 选项

- 启用机器模块和相关测试

- 添加具有通用 VFS 功能的基本 uos 模块

- 将词法分析器构造函数移动到 NLR 处理程序块内

stmhal 端口:

- 支持 STM32L476 和 STM32L486 上的 PortG

- 修复 gcc -print-libgcc-file-name 的错误用法

-修复USB HID接收未收到第一个数据包

- 为USB HID读取实现ioctl

- 实现USB HID接收的SNAK/CNAK机制

- 转换为使用内置帮助功能

- 启用帮助('模块')功能

- 添加默认冻结字节码目录并链接lcd160cr驱动

- 修复 openocd 配置中的示例以包含地址

- 添加将文件系统存储在外部 SPI 闪存上的能力

-板/STM32L476DISC:使用外部SPI闪存作为文件系统

- mpconfigport.h:将配置选项重新组织成组

- usbd_msc_storage:使用存储功能而不是磁盘功能

- 转换为使用 VFS 子系统和新的 ooFatFs 组件

- 修复自动创建的boot.py 的名称

- moduos:删除重复的chdir

- 从 PYBv4 开始使用 LED 常量

- 初始化VFS对象时设置FatFs分区号

- 修复 F411 和 F429 板的堆栈指针初始化

- README:添加关于构建mpy-cross的段落

- 在启动时,挂载 SD 卡的所有可用分区

- main: 将 /sd 目录放在 sys.path 中的 /flash 之前

- pin:添加C级pin ioctl方法

- modmachine:添加machine.Signal类型

- main: 使用 MICROPY_HW_HAS_SDCARD 保护 init_sdcard_fs

- pendsv:填写关于堆栈包含的内容的注释

- 多线程的初始实现,当前禁用

- main: 使用 _estack 值来初始化堆栈范围

- 修复禁用 MICROPY_PY_THREAD 时的构建问题

- mpconfigport.h:启用MICROPY_PY_BUILTINS_POW3 选项

- 在 HardFault 上,打印堆栈指针并进行堆栈转储

- 添加 pyb.fault_debug() 函数,控制硬故障行为

- 在适当的地方使用 MICROPY_EVENT_POLL_HOOK 而不是 __WFI

- 添加通过 /flash/SKIPSD 文件跳过从 SD 卡启动的功能

- Makefile:放弃使用-mabi=aapcs-linux;默认链接 libgcc

-板:对于STM32F411DISC,根据datasheet更改I2C引脚

- 实现一个合适的线程调度器

- 使用通用中断字符代码

- main: 删除不必要的头文件

- 使用 mp_hal_delay_ms 而不是 HAL_Delay

- 将 sys_tick 滴答/延迟函数重命名为 corresp。mp_hal 的

- modpyb:使用 utime ticks ms/us 函数而不是自定义函数

- modnwcc3k:为 mp_hal_delay_ms 添加包含

- mphalport:让 ticks_cpu() 在 F7 MCU 上工作

- main:在堆上分配flash的VFS结构来跟踪根ptr

- 启用 micropython.schedule()

- pendsv:在线程切换期间禁用中断

- irq:将 TIM 和 EXTINT 的 IRQ 优先级转移到 PENDSV 以上

- pybthread:允许在互斥锁锁定/解锁期间中断工作

- systick:使 mp_hal_delay_ms 在睡眠时释放 GIL

-板:修复STM32F767 PA5的alt-func配置

- 板:修复现有并为 NUCLEO_F767ZI 添加更多引脚定义

- spi:在 SPI DMA 传输之前清除和/或使 D-cache 无效

- hal:对于 F7 MCU,公开 DMA_CalcBaseAndBitshift 函数

- dma:修复 F7 MCU 上 DMA 的重新初始化,在 F4 之后

- 更新以将 size_t 用于元组/列表访问器

- 更新 mp_obj_str_get_data

- spi:增加SPI传输超时时间,与num字节成正比

- 支持引脚生成中的 SDMMC 交替功能

- sdcard:在 F7 MCU 上添加对 SDMMC2 的支持

- 板卡:更新 F76x 备用功能表以添加 SDMMC2

- 板/STM32F769DISC:使用 SDMMC2 使 SD 卡工作

- 板/STM32F769DISC:修复用户开关引脚,并记录stlink

-板:删除F769 alt功能表,与F767相同

- dma:如果 SDMMC2 不可用,则不包含 SDMMC2 结构

- 将 L4/F7 I2C 时序常量从 mpconfigboard.h 移动到 i2c.c

- i2c:清理缓存,以便 I2C DMA 在 F7 MCU 上工作

- usbd_cdc_interface:将端点超时增加到 500 毫秒

- usbd_cdc_interface:改变CDC RX使用循环缓冲区

- 启用 machine.Signal 解析所有 Pin 构造函数参数

- 定时器:设置回调前清除中断标志

- 将所有模块和方法表转换为使用 MP_ROM 宏

- modmachine:添加machine.UART类,链接到pyb.UART

- modmachine:删除现在实现的 TODO 注释

- 添加 machine.Pin 开/关方法

- 在 uos 模块中添加 ilistdir

cc3200 端口:

- 转换为使用内置帮助功能

- 添加 mp_import_stat 和 builtin_open 的实现

- modusocket:删除不推荐使用的 socket.error

- 转换为使用新的 VFS 子系统和新的 ooFatFs 库

- 重构“ticks”函数以使用常见的 extmod 实现

- 将 stoupper 移动到 ftp.c 并根据 unichar_toupper 定义

- 使用 simplelink API 而不是模拟 BSD API

- 删除 util/std.h,可以使用 stdio.h 代替

- mods/modwlan:删除未使用的头文件;简化他人

- mods/modwlan:使多线程成为适当的编译时选项

- mods/modwlan:允许天线分集完全编译出来

- mods/modwlan:添加 int 强制转换以消除编译器警告

- 删除对 std.h 的剩余引用

- 将 wlan 套接字粘合函数从 modwlan 移动到 modusocket

- 转换为使用 uPy 内部错误号

- 引发 OSError 时使用 MP_Exxx 作为 arg 而不是字符串

- 使用简短的自定义错误代码列表启用 uerrno 模块

- mods/modusocket:将变量初始化为 0 以消除编译器警告

- 移除 socket.timeout 类,改用 OSError(ETIMEDOUT)

- moduos:删除uos.sep,因为它是严格可选的

- mptask:在堆上分配闪存 VFS 结构以跟踪根 ptr

- mods/modutime:使用通用 sleep_ms 和 sleep_us 实现

- 更新以将 size_t 用于元组/列表访问器

- 更新 mp_obj_str_get_data

- mods/pybi2c:如果 readfrom_mem 无法写入 addr,则引发 OSError

- modmachine:直接返回频率值,和其他端口一样

- pybuart:使奇偶校验规范与 HW API 一致

- mods/pybi2c: 使 machine.I2C 构造函数/init 符合硬件 API

- mods/pybi2c:使 readfnom_mem_into/writeto_mem 返回 None

- mods/pybpin:删除切换()方法

teensy 端口:

- 转换为使用内置帮助功能

- main: 删除不必要的头文件

- lexerfrozen:使 mp_lexer_new_from_file 引发异常

esp8266 端口:

- 转换为使用内置帮助功能

- 将公共链接器代码分解为 esp8266_common.ld

- 切换到使用面向对象的 FatFs 库

- 更改为使用新的通用 VFS 子系统

- fatfs_port:包含新的 oofatfs 标头

- machine_pin:实现pin ioctl协议

- modmachine:添加信号类

- mpconfigport.h:删除过时的 MICROPY_FATFS_VOLUMES 配置

- uart:添加对轮询uart设备的支持

- moduos:填充 uname 的 release 字段,以防它被垃圾回收

- mpconfigport.h: 启用 help('modules') 功能

- 更新词法分析器构造函数,以便它们可以引发异常

- 只有在友好的 REPL 模式下才执行 main.py

- 启用 micropython.schedule() 并锁定 pin 回调

- 将 machine.Timer 回调更改为软回调

- machine_pin:在pin.irq中添加“hard”参数,默认为soft

- machine_pin:使 pin.irq 参数定位

- machine_pin:修复用于 pin_irq_is_hard 归零的 memset 大小

- machine_pin:修复 pin.irq() 当所有参数都是关键字时工作

-modesp:使用 mp_obj_str_get_str 而不是 mp_obj_str_get_data

-modesp:删除长期过时和未使用的 espconn 绑定

- 更新以将 size_t 用于元组/列表访问器

- 更新 mp_obj_str_get_data

- 删除端口根指针中未使用的条目

- README:将 alpha 状态的引用替换为 beta 状态

- README:添加关于512K版本的通知

- 更改默认设置以在根目录安装闪存

- esp8266.ld、esp8266_ota.ld:将主固件大小增加 32KB

-modesp:flash_user_start:使用链接描述文件中的值

- modules/flashbdev:保留一个扇区用于本地代码存储

- 脚本:将驱动程序/模块移动到模块/(冻结字节码)

- 脚本:将 initsetup 和 port_diag 工具移动到模块/

- ets_alt_task.c:防止ticks_ms()的虚假大增量

- modnetwork:在连接中,修复潜在的缓冲区溢出

- machine_uart:添加uart.any()方法

- 模块:第一次创建时在根目录挂载文件系统

- mpconfigport.h: 删除 lwip 模块的重复链接

- 重命名 machine.Pin 高/低方法打开/关闭

- 在 uos 模块中添加 ilistdir

zephyr 端口:

- 帮助:将 n_args 参数类型更新为 size_t

- 删除不推荐使用的 .mdef 文件

- 为“最小”构建添加单独的 Zephyr 配置

- 为默认构建启用 SLIP 网络

- 转换为使用内置帮助功能

- 确保正确的 Zephyr 配置用于“最小”构建

- 允许有每个板的 Zephyr 配置片段

- prj_frdm_k64f.conf:添加,启用以太网支持

- Makefile.zephyr:支持并默认为网络(SLIP)QEMU

- README:描述网络构建的许多问题

- 除 IPv4 外还启用 IPv6 网络

- 添加 qemu_cortex_m3 配置片段

- main: 不要无条件地转储每次 GC 的统计信息

- 自述文件:frdm_k64f 的网络启动问题已解决

- modzephyr:为 Zephyr 特定的东西添加一个模块

- modzephyr:修复标识符中的错字

- 确保生成的 prj.conf 仅在内容更改时更新

- 将“最小”配置构建移动到单独的包装器脚本

- main: nlr_jump_fail: 修复 noreturn 警告

- main: 删除未使用的 __fatal_error()

- main:将词法分析器构造函数移动到 NLR 处理程序块内

- zephyr_getchar:使用原生 k_sem 而不是传统的 nano_sem

- prj_base.conf:禁用旧内核兼容性

- prj_base.conf:启用 TCP(和 UDP 明确)

- Makefile:重新使用现代官方构建集成

- Makefile:为 DTS 目标的损坏构建添加解决方法(修复?)

- 在最小构建中修复 NLR 段错误

- modusocket:Zephyr usocket 模块的初始版本

- 将 modusocket 集成到构建中

- modusocket:实现 bind() 和 connect()

- modusocket:实现 send()

- modusocket:为 UDP 套接字实现 recv()

- modusocket:为 TCP 套接字实现 recv()

- prj_base.conf:为 net_buf 日志添加配置

- modusocket:一定要使用 MP_OBJ_FROM_PTR

- modusocket:分解 socket_new() 函数

- zephyr_getchar:在字符可用性上显式让步给其他线程

- Makefile:添加“test”目标,在 QEMU 中运行测试套件

- modusocket:考虑“扩展的 k_fifo API”

- modusocket:实现listen()

- modusocket: socket_bind: 不要在 STREAM 套接字上设置 recv 回调

- modusocket:实现accept()

- mpconfigport.h:如果 usocket 模块被禁用,则修复构建

- modmachine:添加信号类

- machine_pin:为machine.Signal支持实现pin协议

- modusocket:如果 DEBUG > 1,则在 recv 回调中调用 net_nbuf_print_frags()

- modusocket:在接收回调中去掉数据包头

- modmachine:实现machine.reset()

- main: 配置 IPv4 网络掩码和网关以允许 Internet 访问

- 添加96b_carbon配置

- modusocket:将 send() 重构为流 write() 方法

- modusocket:启用流 write() 方法

- modusocket:将 recv() 重构为流 read() 方法

- modusocket:添加 read/readline/readinto 流方法

- modusocket: sock_read: 仅在数据包开始时检查套接字状态

- modusocket:添加虚拟 makefile() 实现

- Makefile:添加调试服务器 Zephyr 目标

- mpconfigport.h:为脚本启用行号信息

- main: 删除多余的包含

- modusocket:添加虚拟setsockopt() 实现

- modusocket:添加 SOL_SOCKET 和 SO_REUSEADDR 常量

- prj_qemu_x86.conf:将 RAM 大小提高到 320K

- 自述文件:更新为需要 Zephyr 1.8

- modusocket:包装 pkt_get_info() 调用

- modusocket:更新 net_pkt 重构

- modusocket:切换到 net_pkt_append() 返回长度

- modusocket:如果recv_q中没有数据包,取消waiter

- modusocket:实现getaddrinfo()

- modusocket:切换到替代FIFO处理的第一步

- modusocket:去掉 cur_pkt 对象成员

- main: 在对其应用操作之前检查默认 netif

- modusocket: getaddrinfo: 使用 RAISE_ERRNO 进行正确的错误解码

- modusocket: getaddrinfo: 在解析超时等时引发 OSError

- modusocket:像其他模块一样使用 DEBUG_PRINT 宏名称

- 重命名 machine.Pin 高/低方法打开/关闭

- 不要发送超过 MTU 允许的数量

- modusocket:当 EOF 被发信号时处理 recv_q 为空的情况

pic16bit 端口:

- main: 使 nlr_jump_fail 永不返回

- main: 使 mp_lexer_new_from_file 引发异常

自述文件:

- 明确提及“await”支持和关键字格式

- 添加指向 docs.micropython.org 的链接

- 描述extmod/目录

- 将 Travis & Coveralls 徽章更改为不使用链接引用

特拉维斯:

- 无条件运行工作服分析,即使其他人失败

- 更改 stmhal 规则以构建 PYBV11 而不是默认的 PYBV10

git 属性:

- 将 .mpy 文件添加到二进制文件列表

- 删除过时的行

@docs:

- 修正一些小的拼写错误

- 为 lcd160cr 模块添加文档

- pyboard/tutorial:添加LCD160CR教程

- library/lcd160cr: 修复 set_brightness 范围,应该是 0..31

- machine.Timer:将 WiPy 临时部件移至其文档

- 机器:在机器模块级别和范围上添加明确的注释

- usocket:阐明使用的异常

- usocket:详细说明“常量”部分

- usocket:阐明各种方法的描述

- usocket: dedent 方法部分

- uio:描述 uPy 和 CPy 流层次结构之间的差异

- conf.py:将我自己添加为文档的版权所有者

- uio:拼写错误修复/词法改进

- pyboard/tutorial/lcd160cr_skin:修复错字,get_touched->get_touch

- LCD160CR驱动和教程,添加定位图片链接

- esp8266/tutorial: 在 picocom 示例命令中指定波特率

- 添加 M-logo 作为收藏夹

- library/pyb.Pin: 小错误修正,B6 应该是 A0

- 库/机器:为 WiPy 和非 WiPy 制作单独的 TOC

- uos:删除uos.sep

- library/lcd160cr:提及 set_power() 方法的有效值

- 修改Makefile和索引生成cPy-differences页面

- uhashlib:提供端口中立的描述

- Makefile:定义并使用 PYTHON 作为 CPYDIFF 的解释器

- 机器:修复常量部分的格式

- library/lcd160cr:添加关于支持的 JPEG 格式/编码的注释

-库:添加framebuf文档

- library/lcd160cr: 添加到framebuf页面的链接

- esp8266/tutorial:更新自 esptool 1.3 添加了 Python 3 支持

- library/framebuf:修复 MVLSB 描述的位宽错字

- library/machine.I2C:修复 scan() 文档以匹配实现

- library/btree: 添加 btree 模块文档

- utime:去条件化 sleep_ms() 和朋友的描述

- uos: 去条件化 statvfs() 描述

- machine.SPI:删除过时的wipy块

- machine.Pin:将特定于 wipy 的详细信息移至其自己的文档

- machine.Pin:将特定于 wipy 的方法移至其文档

- esp8266/general:开始明确的“已知问题”,提到 RTC 不准确

- library/builtins: int: 在 to/from_bytes 的 byteorder 参数上添加通知

- library/machine.UART:删除一些条件

- utime: 去条件化 sleep() 的描述

- usocket:去条件化

- uhashlib:去条件化

- esp8266/tutorial/intro:关于闪存大小要求的改写部分

- library/micropython:去条件化

- library/uos: urandom: 概括描述

- library/ussl:取消条件化,将擦除笔记移至其文档

- machine.UART:取消条件化正常方法

- 机器:将 machine.main() 误称移至 wipy 的已知问题

- 库/机器:machine_callbacks 部分中的错字修复

- library/machine.UART:删除特定于pyboard的部分

- wipy/quickref:更新参考以更改 I2C API

- wipy/general:添加关于 I2C 实现细节的部分

- library/machine.I2C:取消条件化所有方法

- library/machine.*: 为单个类添加交叉引用标签

- esp8266/quickref:添加从 quickref 页面到机器类的链接

- library/machine.I2C:删除特定于 WiPy 的返回值

- library/machine.SPI:修复项目符号列表的格式以停止警告

- library/uos:添加uos.ilistdir()函数说明

- machine.Pin:MicroPython 硬件 API 中没有 toggle() 方法

- machine.Signal:添加Signal类的初稿描述

- 库/索引:添加介绍部分的重要摘要作为警告

- 将单个出现的“Micropython”更改为“MicroPython”

- library/micropython:记录较新的 micropython 函数

- library/machine.UART:更新和改进 uart.any() 文档

- library/machine.Pin:删除 .id() 方法和 .board 类属性

例子:

- hwapi:使用信号用于 ESP-12 上的倒置 LED

- hwapi:始终使用 Signal 类来定义 LED

- button_reaction:更新 time_pulse_us() 不再引发 exc

- hwapi:为pyboard添加hwconfig_pyboard.py

- hwapi:使用时一定要导入Signal

- hwapi/soft_pwm:使用 Signal on()/off() 方法

- 嵌入/自述文件:转换为降价、语法和清晰度修复

- 嵌入:将词法分析器构造函数放在 NLR 处理程序块中

- hwapi: 为 96Boards Carbon 的 Zephyr 端口添加配置

- hwapi/hwconfig*:尽可能使用内联 Signal() 参数

- hwapi/soft_pwm2_uasyncio:更新 call_later_ms()

========

周日,2017 年 1 月 8 日 23:53:08 +1100

v1.8.7 支持 Xtensa 发射器和汇编器,升级 F4 和 F7 STM HAL

此版本增加了对 Xtensa 架构的支持,作为本机发射器的目标,以及 Xtensa 内联汇编器。int.from_bytes 和 int.to_bytes 方法现在需要每个 CPython 的第二个参数(字节顺序)(此时仅支持“little”)。“readall”方法已从使用它的所有流类中删除;应改用不带参数的“读取”。现在支持从已编译的 .mpy 文件中导入包。测试覆盖率增加到 96%。

通用 I2C 驱动程序有改进:可配置时钟延长超时、“stop”参数添加到 readfrom/writeto 方法、“nack”参数添加到 readinto 和 write[to] 现在返回收到的 ACK 数量。framebuf 模块现在处理 16 位深度(通用颜色格式)并具有 hline、vline、rect、line 方法。添加了一个新的 utimeq 模块,用于由模时间定义的高效队列排序(与 time.ticks_xxx 函数兼容)。pyboard.py 脚本已被修改,以便在单个命令行上给出的脚本或命令之间不会重置目标板。

对于stmhal 端口,STM Cube HAL 已升级:Cube F4 HAL 到 v1.13.1(CMSIS 2.5.1,HAL v1.5.2)和 Cube F7 HAL 到 v1.1.2。有一个更强大的 pyb.I2C 实现(DMA 现在默认禁用,可以通过一个选项启用),还有一个 machine.I2C 实现,在 F4 MCU 上具有强大的错误处理和硬件加速。现在推荐使用 machine.I2C 而不是 pyb.I2C。UART 类现在更加健壮,可以更好地处理错误/超时。ADC 还有更准确的 VBAT 和 VREFINT 测量。支持的新板包括:NUCLEO_F767ZI、STM32F769DISC 和 NUCLEO_L476RG。

对于使用 uselect 模块的套接字现在支持 esp8266 端口选择/轮询。支持本机和毒蛇发射器,以及内联汇编器(具有用于存储本机功能的有限 iRAM,或将代码存储到闪存的选项)。有改进的软件 I2C,API 稍有变化:只有当“-1”作为第一个参数传递以指示使用软件 I2C 时,才能将 scl/sda 引脚指定为位置。建议对 scl/sda 使用关键字参数。使用 yaota8266 项目很早就支持无线 (OTA) 更新。

更改的详细列表如下。

py 核心:

- 发射器:在毒蛇模式下修复本机导入发射器

- 删除 readall() 方法,相当于 read() w/o args

- objexcept: 允许使用 'exc.__traceback__ = None' 清除回溯

- 运行时:mp_resume:在 Python __next__() 中处理异常

- mkrules.mk:重做 find 命令,使其适用于 OSX

- *.mk:用 $(SED) 替换 'sed' 的使用

- 解析:移动函数以检查要解析的常量解析节点。[ch]

- 解析:使 mp_parse_node_new_leaf 成为内联函数

- 解析:添加代码以折叠或/和/非操作中的逻辑常量

- 将持久代码加载/保存到持久代码中的因素。[ch]

- 将持久代码阅读器分解为单独的文件

- 词法分析器:根据 mp_reader_mem 重写 mp_lexer_new_from_str_len

- lexer:提供基于 mp_reader 的通用 mp_lexer_new_from_file

- 词法分析器:根据 mp_reader 重写 mp_lexer_new_from_fd

- 词法分析器:使词法分析器使用 mp_reader 作为其来源

- objtype:为没有堆分配的实例实现 __call__ 处理

- 将汇编器中的通用代码分解为 asmbase。[ch]

- 流:将临时 ioctl 常量移动到 stream.h 并重命名它们

- 编译:简化原生发射器的配置

- emit.h:删除 cpython 发射器的过时声明

- 将特定于 arch 的汇编宏从发射器移动到 asmXXX.h

- asmbase:添加 MP_PLAT_COMMIT_EXEC 选项以处理 exec 代码

- asmxtensa:添加低级 Xtensa 汇编程序

- 将 Xtensa 汇编器集成到本机发射器中

- 允许内联汇编发射器是通用的

- 添加内联 Xtensa 汇编程序

- emitinline:嵌入整个 asm 结构而不是指向它的指针

- emitinline:将 inline-asm align 和 data 方法移动到编译器

- emitinline:将最终传递结束的通用代码移动到编译器

- asm:在执行初始汇编程序时删除对 dummy_data 的需要

- objint:from_bytes,to_bytes:需要字节顺序参数,需要“小”

- 二进制:存储大于字大小的值时做零扩展

- builtinimport:支持从编译后的 .mpy 文件中导入包

- mpz:删除 mpn_or_neg 函数中无法访问的代码

- 运行时:将 mp_init 中的 fs_user_mount 数组清零

- mpconfig.h:默认开启MICROPY_PY_SYS_EXIT

- 添加 MICROPY_KBD_EXCEPTION 配置选项以提供 mp_kbd_exception

- compile: 为 Xtensa 内联汇编器添加额外的pass

- modbuiltins:删除无法访问的代码

- objint:将 mp_obj_int_as_float 重命名为 mp_obj_int_as_float_impl

-发射胶:重构删除断言(0),以提高覆盖率

- 词法分析器:删除字符串标记器中无法访问的代码

- 词法分析器:在词法分析器的 next_char 函数中删除不必要的 EOF 检查

- 词法分析器:永久禁用 mp_lexer_show_token 功能

- parsenum:简化和概括数字值的解码

- mpz:修复 mpz_set_from_str 中检查 base 值的断言

- mpprint:为有效基值添加断言和注释

- objint:简化 mp_int_format_size 并删除无法访问的代码

- unicode:注释掉未使用的函数 unichar_isprint

- 持续更新 .make_new 和 .call 方法的签名

- mkrules.mk:添加 MPY_CROSS_FLAGS 选项以将标志传递给 mpy-cross

- builtinimport:修复从冻结包中导入名称时的错误

extmod:

- machine_i2c:使时钟延长超时可配置

- machine_i2c:时钟延长超时时引发错误

- machine_i2c:在总线错误时释放 SDA

- machine_i2c:添加C级I2C协议,重构软I2C

- machine_i2c:向C funcs添加参数以控制停止生成

- machine_i2c:按照C级协议重写i2c.scan

- machine_i2c:根据C级协议重写mem xfer funcs

- machine_i2c:删除不需要的 i2c_write_mem/i2c_read_mem funcs

- machine_i2c:使 C 级函数在 I2C 错误时返回 -errno

- machine_i2c:向 i2c.readinto 添加“nack”参数

- machine_i2c:使 i2c.write[to] 方法返回 ACK 数 recvd

- machine_i2c:向 i2c readfrom/writeto 方法添加“停止”参数

- machine_i2c:删除琐碎的函数包装器

- machine_i2c:公开软 I2C obj 和 readfrom/writeto funcs

- machine_i2c:向构造函数添加钩子以调用特定于端口的代码

- modurandom:允许在禁用浮动的情况下构建

- modframebuf:使FrameBuffer处理16位深度

- modframebuf:添加回旧的FrameBuffer1“类”

- modframebuf:优化fill和fill_rect方法

- vfs_fat:实现重命名的POSIX行为,允许覆盖

- moduselect:使用流辅助函数而不是临时代码

- moduselect:使用可配置的 EVENT_POLL_HOOK 而不是 WFI

- modlwip:给socket添加ioctl方法,带poll实现

- vfs_fat_file:允许文件obj响应ioctl刷新请求

- modbtree:添加同步数据库的方法

- modbtree:将“sync”方法重命名为“flush”以保持一致性

- modframebuf: 添加 hline, vline, rect 和 line 方法

- machine_spi:提供可复用的软件SPI类

- modframebuf:使framebuf实现缓冲协议

- modframebuf:存储底层缓冲区对象,防止GC free

- modutimeq:当前 moduheapq 的副本,timeq 支持重构

- modutimeq:重构为优化类

- modutimeq:使 time_less_than 实际上是“小于”,而不是小于/eq

lib:

- utils/interrupt_char:如果启用,则使用内核提供的 mp_kbd_exception

司机:

- display/ssd1306.py:更新为使用 FrameBuffer 而不是 FrameBuffer1

- onewire:启用数据引脚上拉

- onewire/ds18x20:修复 DS18B20 的负温度计算

工具:

- tinytest-codegen: 最近添加的黑名单 uheapq_timeq 测试 (qemu-arm)

- pyboard.py: 重构以便在脚本/cmd 之间不重置目标

- mpy-tool.py:添加对 OPT_CACHE_MAP_LOOKUP_IN_BYTECODE 的支持

测试:

- micropython:添加从 viper 函数中导入的测试

- 使用 read() 而不是 readall()

- 基础:添加逻辑常量折叠测试

- micropython:添加无需分配即可创建回溯的测试

- micropython:移动 alloc-less 回溯测试到单独的测试文件

- extmod:提高 ujson 覆盖率

-基础:提高用户类别覆盖率

- 基础:为 dict.fromkeys 添加测试,其中 arg 是生成器

- 基础知识:为 if 表达式添加测试

- 基础知识:更改 dict_fromkeys 测试,使其不使用生成器

- 基础知识:使用第三个参数启用列表切片测试

- extmod/vfs_fat_fileio:为 FileIO 类型的构造函数添加测试

- extmod/btree1: 练习 btree.flush()

- extmod/framebuf1:添加hline、vline、rect、line的基础测试

- 更新 int.from_bytes()/to_bytes() 所需的字节顺序参数

- extmod:提高 moductypes 测试覆盖率

- extmod:提高 modframebuf 测试覆盖率

- micropython:在裸机上运行 heapalloc_traceback 测试

- struct*: 使可跳过

- 基础:提高 mpz 测试覆盖率

- float/builtin_float_round:使用第二个参数测试 round()

- basics/builtin_dir: 为某个类型的 dir() 添加测试

- 基础知识:为内置 locals() 添加测试

- basics/set_pop:提高集合函数的覆盖率

- run-tests:对于 REPL 测试,确保 REPL 在最后退出

- 基础知识:提高生成器的测试覆盖率

- import:在 from-import 语句中添加一个使用 ... 的测试

- 添加测试以提高 runtime.c 的覆盖率

- 添加测试以提高 objarray.c 的覆盖率

- extmod: 为 utimeq 模块添加测试

- 基础知识/词法分析器:为字符串中的换行符添加测试

- 添加用于打印解析树的覆盖测试

- utimeq_stable:测试utimeq排队的部分稳定性

- heapalloc_inst_call:测试简单对象调用的无分配

- 基础知识:添加用于解析基数为 36 的整数的测试

- 基础知识:添加测试以提高 binary.c 的覆盖率

- micropython:为 micropython.stack_use() 函数添加测试

- extmod:提高ubinascii.c 测试覆盖率

- 线程:提高 modthread.c 测试覆盖率

- cmdline:提高 repl.c 自动完成测试覆盖率

- unix:提高runtime_utils.c 测试覆盖率

- pyb/uart:更新测试以匹配最近对 UART timeout_char 的更改

- run-tests:允许跳过设置测试

- 提高warning.c 测试覆盖率

- float:使用 Python 提高 formatfloat.c 测试覆盖率

- unix:使用 C 提高 formatfloat.c 测试覆盖率

- unix/extra_coverage:添加基本测试以导入冻结的 str 和 mpy

- types1:将集合类型测试拆分为集合类型

- 数组:如果“数组”不可用,则允许跳过测试

- unix/extra_coverage:添加导入冻结包的测试

unix 端口:

- 将 unix moduselect 的定义重命名为 MICROPY_PY_USELECT_POSIX

- Makefile:更新 freedos 目标以更改 USELECT 配置名称

- 启用 utimeq 模块

- main: 允许在覆盖构建中打印解析树

- Makefile:制作“coverage_test”目标镜像 Travis 测试动作

- moduselect:如果文件对象传递给 .register(),则在 .poll() 中返回它

- Makefile:为覆盖目标拆分长行,更容易修改

- 在覆盖构建中启用并添加基本的冻结 str 和冻结 mpy

- Makefile:允许使用冻结字节码进行缓存映射查找优化

windows 端口:

- 启用 READER_POSIX 以访问 lexer_new_from_file

stmhal 端口:

- dma:在初始化之前正确地取消初始化 DMA 外设

- i2c:向 I2C 添加选项以启用/禁用 DMA 传输

- i2c:如果总线上出现错误,则重置 I2C 外设

- 将 mp_hal_pin_set_af 重命名为 _config_alt,以简化 alt 配置

- 升级到 STM32CubeF4 v1.13.0 - CMSIS/设备 2.5.1

- 升级到 STM32CubeF4 v1.13.0 - HAL v1.5.1

-申请STM32CubeF4 v1.13.1补丁-升级HAL驱动到v1.5.2

- hal/i2c:为 f4 重新应用 HAL 提交 ea040a4

- hal/sd:为 f4 重新应用 HAL 提交 1d7fb82

- hal:为 f4 重新应用 HAL 提交 9db719b

- hal/rcc:为 f4 重新应用 HAL commit c568a2b

- hal/sd:为 f4 重新应用 HAL commit 09de030

- 板:配置所有 F4 板以使用新的 HAL

- make-stmconst.py:修复正则表达式以使用当前的 CMSIS

- i2c:处理 I2C IRQ

- dma:在句柄初始化时预先计算寄存器基数和位移位

- dma:即使跳过 HAL_DMA_Init,也将 DMA 状态标记为 READY

- 可以:清除 IRQ 处理程序中的 FIFO 标志

- i2c:提供自定义 IRQ 处理程序

- hal:不包括 在 HAL 标头中

- mphalport.h:使用单个 GPIOx->BSRR 寄存器

- make-stmconst.py:添加对无效 utf8 字节文件的支持

- 由于更改为 hal 更新 HALCOMMITS

- make-stmconst.py:恢复Python 2兼容性

- 由于更改为 hal 更新 HALCOMMITS

- moduselect:移至 extmod/ 以供其他端口重用

- i2c:对 F7 和 L4 MCU 使用 HAL 的 I2C IRQ 处理程序

- 更新以使用最新的 ST HAL 编译 F411 MCU

- i2c:删除旧版 I2C_NOSTRETCH_DISABLED 选项的使用

- 添加端口特定机器的开头。I2C 实现

- i2c:在 F7 MCU 上添加对 I2C4 硬件块的支持

- i2c:公开pyb_i2c_obj_t 结构体和一些相关函数

- machine_i2c:为F4提供I2C外设的硬件实现

- 在 STM32F415 上添加对闪存的支持

- 将 GPIO_BSRRL 和 GPIO_BSRRH 常量添加回 stm 模块

-为STM32L4添加OpenOCD配置

- 添加地址参数到 openocd 配置文件

- adc: 将“掩码”选择参数添加到 pyb.ADCAll 构造函数

- adc:提供更准确的 VBAT 和 VREFINT 测量

- adc: 使ADCAll.read_core_temp 返回准确的浮点值

- adc:添加ADCAll.read_vref方法,返回“3.3v”值

- adc:添加对 F767 MCU 的支持

- adc:使通道“16”始终映射到温度传感器

- sdcard:在使用 SD 卡进行 DMA 传输之前清除/无效缓存

- moduos:实现重命名的POSIX行为,允许覆盖

- adc:使用来自新 HAL 版本的常量

- 重构 UART 配置以使用 pin 对象

- uart:在 F7 MCU 上添加对 UART7 和 UART8 的支持

- uart:添加检查 UART id 对给定板是否有效

- cmsis:更新STM32F7 CMSIS设备包含文件到V1.1.2

- hal:更新ST32CubeF7 HAL文件到V1.1.2

- f4 hal 的端口提交 c568a2b 到更新的 f7 hal

- f4 hal 的端口提交 09de030 到更新的 f7 hal

- f4 hal 的端口提交 1d7fb82 到更新的 f7 hal

- 声明和初始化 F7 MCU 的 PrescTables

-板/STM32F7DISC:定义LSE_STARTUP_TIMEOUT

- hal:由于 f7 hal 文件的变化而更新 HALCOMMITS

- 重构使用软件SPI类的extmod实现

- cmsis:添加CMSIS文件stm32f767xx.h,V1.1.2

- 添加 NUCLEO_F767ZI 板,带有 stm32f7 的 openocd 配置

- cmsis:添加CMSIS文件stm32f769xx.h,V1.1.2

- 添加STM32F769DISC板文件

- 将 PY_SYS_PLATFORM 配置从板移动到通用配置文件

- mpconfigport:为 io、集合、随机添加弱模块链接

- 将 mp_const_vcp_interrupt 重命名为 mp_kbd_exception

- usb:始终使用 mp_kbd_exception 对象进行 VCP 中断

- 使用核心提供的键盘异常对象

- led:在使用之前将定时器句柄正确初始化为零

- mphalport.h:显式使用 HAL 的 GPIO 常量进行拉模式

- usrsw:使用 mp_hal_pin_config 函数代替 HAL_GPIO_Init

- led:使用 mp_hal_pin_config 函数代替 HAL_GPIO_Init

- sdcard:使用 mp_hal_pin_config 函数代替 HAL_GPIO_Init

- 添加对 STM32 Nucleo64 L476RG 的支持

- uart:提供自定义函数通过 UART 传输

- uart:将字符间超时增加 1ms

- 启用 utimeq 模块

cc3200 端口:

- tools/smoke.py:将 readall() 更改为 read()

- pybspi: 删除最新硬件 API 的静态模式=SPI.MASTER 参数

- mods/pybspi: 删除 SPI.MASTER 常量,不再需要

- moduselect 的更新移至 extmod/

- 重新添加对 UART REPL 的支持(MICROPY_STDIO_UART 设置)

-默认开启UART REPL

- README:(重新)添加有关在串行上访问 REPL 的信息

- make:将“deploy”目标重命名为“deploy-ota”

- 添加擦除闪存的目标,使用 cc3200tool 部署固件

- README:重新组织并更新到当前状态

- modwlan:添加network.WLAN.print_ver() 诊断函数

esp8266 端口:

- 启用 uselect 模块

- 将 websocket_helper.py 从脚本移动到用于冻结 BC 的模块

- 重构使用软件SPI类的extmod实现

- mpconfigport_512​​k:为 512k 构建禁用 framebuf 模块

- 为 Xtensa arch 启用本地发射器

- 启用内联 Xtensa 汇编程序

- 添加“ota”目标以生成用于 yaota8266 的固件二进制文件

- 使用核心提供的键盘异常对象

- 添加“擦除”目标到 Makefile,擦除整个闪存

- 在做 GC 时一定要跟踪保存本机代码的内存

-modesp:flash_user_start():支持yaota8266配置

- 如果在正常后构建,则强制重新链接 OTA 固件映像

- 脚本/inisetup:在错误时转储 FS 起始扇区/大小

- Makefile:生成OTA固件为firmware-ota.bin

-modesp:使 check_fw() 与 OTA 固件一起工作

- 启用 utimeq 模块

- Makefile:将firmware-ota.bin 放在build/ 中,以保持一致性

- modules/flashbdev: 在文件系统前添加 RESERVED_SECS

- modules/flashbdev:删除代码以修补引导加载程序闪存大小

- modules/flashbdev:删除现在未使用的函数 set_bl_flash_size

- modules/flashbdev:将 RESERVED_SECS 更改为 0

和风端口:

- 添加 .gitignore 以忽略 Zephyr 的“outdir”目录

- zephyr_getchar:更新至 Zephyr 1.6 统一内核 API

- 切换到 Zephyr 1.6 统一内核 API

- 支持原始 REPL

- 实现软复位功能

- main: 初始化 sys.path 和 sys.argv

- 使用核心提供的键盘异常对象

- uart_core:直接访问控制台 UART 而不是 printk() hack

- 启用切片订阅

文档:

- 删除对 readall() 的引用并更新流 read() 文档

- library/index: 详述 u-modules

- library/machine.I2C:细化 I2C 方法的定义

- library/pyb.Accel:添加有关加速使用的引脚的硬件注释

- library/pyb.UART:添加了关于超时的说明

- library/pyb.UART:将 writechar 文档移动到与其他写入一起

- esp8266/tutorial:更新介绍以添加获取固件部分

- library/machine.I2C:修复 I2C 构造函数文档以匹配 impl

- esp8266/tutorial: 阅读页面内容后关闭socket

- esp8266/general: 添加“运行时资源稀缺性”部分

- library/esp: 文档 esp.set_native_code_location() 函数

- library/esp: 删除 para 并添加关于 flash 的进一步警告

- usocket:阐明套接字超时引发 OSError 异常

特拉维斯:

- 在 Travis CI 下构建 STM32 F7 和 L4 板

- 在覆盖测试中包含带有浮点数的持久字节码

例子:

- hwapi: button_led: 添加GPIO引脚读取示例

- hwapi:添加转换为uasyncio的soft_pwm示例

- http_client:使用 read() 而不是 readall()

- hwapi:添加 uasyncio 并行淡入 2 个 LED 的示例

- hwapi:为 machine.time_pulse_us() 添加示例

- hwapi:添加 hwconfig 用于 LED 操作的控制台跟踪

- accellog.py: 将 1: 改为 /sd/,并更新关于 FS 的注释

- hwapi/hwconfig_console: 不要在 value() 中分配内存

========

2016 年 11 月 10 日星期四 21:24:53 +1100

v1.8.6 ESP8266 端口使用 SDK 2.0,有更多堆,支持 512k 设备

此版本为核心带来了一些代码大小的减少以及更多的测试和改进的覆盖率,现在为 94.3%。

time.ticks_diff(a, b) 函数已更改:参数的顺序已交换,因此它的行为类似于“a - b”,如果“a " 出现在 "b" 之前(以滴答函数的周期为模)。

ESP8266 端口 Espressif SDK 更新到 2.0.0,堆从 28k 增加到 36k,通过 make 512k 支持 512k 设备。默认情况下,upip 作为冻结字节码包含在内。网络模块现在允许在没有 WiFi 凭据的情况下重新连接接入点,并公开站 DHCP 主机名的配置。DS18B20 驱动器现在可处理负温度,而 NeoPixel 和 APA102 驱动器可处理每像素 4 字节的 LED。

对于 CC3200 端口,现在支持加载预编译的 .mpy 文件,并且线程现在可以在中断时正常工作。

更改的详细列表如下。

py 核心:

- py.mk:如果定义了 FROZEN_DIR,则自动将frozen.c 添加到源列表

- 使用 MP_DECLARE_CONST_FUN_OBJ 宏更具体

- 专门使用内置函数来为固定的 arg 计数使用单独的类型

- {modbuiltins,obj}:尽可能使用 MP_PYTHON_PRINTER

- modbuiltins:添加内置“切片”,指向现有切片类型

- 添加 "delattr" 内置,以 MICROPY_CPYTHON_COMPAT 为条件

- 序列:修复列表的反向切片

- 修复 mpz.c 中的空指针取消引用,修复warning.c 中缺少的 va_end

- 删除在emitbc.c 中始终为真的断言

- 修正错误假设 m_renew 如果收缩就不会移动

- 更改配置默认值,因此如果未启用 GC,则 m_malloc0 使用 memset

- 添加MICROPY_FLOAT_CONST 宏用于定义浮点常量

- 将冻结的字节码 Makefile 规则从端口移动到常见的 mk 文件

- 从冻结的mpy 文件中去除前导目录,因此可以使用任何路径

extmod:

- vfs_fat_file:检查fatfs f_sync() 和f_close() 返回的错误

- vfs_fat_file:如果文件已经关闭,则使 file.close() 无操作

- utime_mphal:ticks_diff():切换参数顺序,返回有符号值

- utime_mphal:为睡眠功能添加 MP_THREAD_GIL_EXIT/ENTER 扭曲器

- utime_mphal:实现ticks_add(),添加到所有维护的端口

- utime_mphal:允许通过端口配置滴答函数周期

lib:

- utils/pyhelp.c: 使用 mp_printf() 而不是 printf()

- utils/pyexec: 添加 mp_hal_set_interrupt_char() 原型

- libm:将 Thumb 特定的 sqrtf 函数移动到单独的文件驱动程序:

- 使用const时添加“from micropython import const”

工具:

- 将 upip 升级到 1.1.4:修复安装到不存在的绝对路径时 unix 上的错误

- pip-micropython:删除不推荐使用的包装工具

- check_code_size.sh:CI 的代码大小验证脚本

- 用源文件替换 upip tarball,使其包含为

多个端口中的冻结模块少了魔法

测试:

- extmod/vfs_fat:提高 VFS 测试覆盖率

- basics/builtin_slice:为“切片”内置名称添加测试

- 基础知识:为内置“delattr”添加测试

- extmod/vfs_fat_fsusermount:提高 fsusermount 测试覆盖率

- extmod/vfs_fat_oldproto:测试旧的块设备协议

- basics/gc1:垃圾收集器阈值()覆盖率

- extmod/uhashlib_sha1:SHA1 算法的覆盖范围

- extmod/uhashlib_sha256:重命名 sha256.py 测试

- btree1:修复在 esp8266 上运行的内存不足错误

- extmod/ticks_diff: 测试 ticks_diff() 的新语义

- extmod/framebuf1:测试framebuffer像素清除,以及文本功能

最小端口:

- Makefile:firmware.bin 生成的拆分规则

unix 端口:

- Makefile:删除对已弃用的 pip-micropython 的引用

- modtime:使用 extmod/utime_mphal.c 中的 ticks_diff() 实现

- mphalport.h:添加 mp_hal_delay_ms() 实现的警告

- modtime:将 ticks/sleep_ms/us() 切换到 utime_mphal

- 修复 x86 Mac 的符号引用

- 仅用源文件替换 upip tarball

windows 端口:

- 在unix下启用utime_mphal,定义mp_hal_ticks_*

- 修复 msvc 的 utime_mphal 编译

- 根据 QueryPerformanceCounter 实现 mp_hal_ticks_cpu

qemu-arm 端口:

- 排除 qemu-arm 端口的 ticks_diff 测试

- 排除 extmod/vfs_fat_fileio.py 测试

- 排除新的 vfs_fat 测试

- 启用软件浮点支持和浮点测试

stmhal 端口:

- modutime:重构使用extmod的ticks_cpu版本

- 重构引脚使用以使用 mp_hal_pin API

- led: 重构 LED 以使用 mp_hal_pin_output() init 函数

- Makefile:使用标准规则生成冻结模块

- modutime:始终转换为 MP_ROM_QSTR/MP_ROM_PTR

- 启用 SD 省电(在空闲时禁用 CLK)

cc3200 端口:

- 使用 mp_raise_XXX 辅助函数来减少代码大小

- mods/pybspi: 允许读取/读取的“写入”参数是定位的

- 启用预编译的 .mpy 文件的加载

- 修复线程互斥锁,以便线程处理中断

teensy 端口:

- 更新以在 stmhal 之后提供新的 mp_hal_pin_XXX 函数

esp8266 端口:

- Makefile:使用最新的 esptool.py flash 大小自动检测

- esp_init_data:使用供应商 SDK 2.0.0 自动初始化系统参数

- esp8266.ld:将 help.o 移至 iROM

- esp8266.ld:将 modmachine.o 移动到 iROM

- esp8266.ld:将 main.o 移至 iROM

- 添加 MP_FASTCODE 修饰符以将函数放入 iRAM

- main: 将 nlr_jump_fail() 标记为 MP_FASTCODE

- modules/webrepl:仅强制执行一个并发 WebREPL 连接

- etshal.h:添加更多 ESP8266 供应商库原型

-modesp: 添加 flash_user_start() 函数

- 添加对构建 512K 模块固件版本的支持

- 脚本:使用通用代码使 neopixel/apa102 处理 4bpp LED

- modutime:始终转换为 MP_ROM_QSTR/MP_ROM_PTR

- modnetwork: config(): 修复设置“mac”中的复制粘贴错误

- scripts/port_diag:添加esf_buf类型的描述

- modnetwork.c:允许 AP 在没有 WiFi 凭据的情况下重新连接

- main:将堆大小提高到 36K

- etshal.h:为 SPIRead/SPIWrite/SPIEraseSector 添加原型

- etshal.h:调整MD5_CTX结构的大小

- 模块:修复 ds18x20 驱动程序中的负温度

- 重命名“机器”模块实现以使用当代命名

- 返工 webrepl_setup 以运行有线 REPL

- espneopixel.c:在 80MHz 时使用 CPU 解决 LED 故障问题

- 包括 upip 作为标准的冻结字节码模块

- esptool 1.2.1/SDK 2.0 更新文档 (--flash_size=detect)

- modnetwork.c: 暴露站 DHCP 主机名的配置

zephyr 端口:

- 实现 utime 模块

- 基于 Zephyr 配置为启动横幅使用板/SoC 值

- machine.Pin 的初始实现

- zephyr_getchar: 控制台钩子最近 Zephyr 重构的更新

- 支持时间-> utime 模块“弱链接”

- README:更新当前功能集,添加更多信息

- mpconfigport.h:将不太重要的参数移到底部

- Makefile:允许从 make 命令行调整堆大小

- Makefile:更新对当前事务状态的评论

- Makefile:允许从 make 命令行覆盖 Zephyr 配置

- Makefile:添加最小端口

- Makefile:添加-fomit-frame-pointer 以减少代码大小

- mphalport.h:更新新的“统一”内核 API(睡眠功能)

文档:

- machine.SPI:更新硬件 API,使供应商中立

- machine.SPI:改进xfer方法的描述

- library/builtins:为 delattr 和 slice 添加文档

- 图书馆/网络:改写介绍段落

- 库/网络:拼写错误修复,首字母缩略词大写一致

- 库/索引:更新 TOC 以便在模块之前排序的内置

- utime:更详细的文档 ticks_cpu()

- utime:描述 ticks_diff() 的新语义(有符号环算术)

- utime:为 ticks_add() 添加文档,对其他 ticks_*() 的改进

- esp8266:更新新的 WebREPL 安装程序

- */quickref.rst: 使用 ticks_diff() 的新语义

- library/machine.Pin:更新 Pin 文档以与新的硬件 API 保持一致

travis:

- 集成工具/check_code_size.sh

- 最小:使用 CROSS=1,用于二进制大小检查

例子:

- http_server_simplistic:添加“不适合实际使用”的注释

- hwapi:示例展示了应用程序中硬件 API 使用的最佳实践

- hwapi: 为 DragonBoard 410c 添加 hwconfig

========

2016 年 10 月 17 日星期一 15:32:43 +1100

v1.8.5 Zephyr 的新端口,upip 在裸机上运行,​​并减少代码大小

此版本添加了一个新的 MicroPython 端口,可在 Zephyr 实时操作系统之上运行。作为其中的一部分,现在基本支持使用 mbedTLS 作为 ussl 模块。该版本还为通过 Python 模块接口在具有低堆内存(例如 esp8266)的裸机系统上运行包管理器 upip 提供了初步支持。

@@一般有关· 清理核心、删除冗余和/或无法访问的代码以及分解现有重复代码模式等方面工作。这使裸臂端口的代码大小减少了 828 字节,最小端口的代码大小减少了 1368 字节。通过为极端情况添加新测试,也提高了覆盖率。

“micropython”模块添加了“const”标识函数,在想要在编译阶段使用MicroPython常量优化的脚本中,该函数应该用作“from micropython import const”。还添加了“opt_level”函数以在运行时更改解析器/编译器优化级别。

裸机上“sys.exit”(和“raise SystemExit”)的行为现在已更改:此功能不再对电路板进行软重置,而只是停止正在运行的脚本并丢弃到 REPL。为了进行实际的软复位,添加了“machine.soft_reset”功能(目前仅适用于 stmhal 端口)。

Following CPython,用于字典查找的 KeyError 异常现在将失败的键存储为异常实例的参数,可作为 exc.args[0] 访问。还添加了“ujson.load”函数,用于从任意流加载 JSON 数据。

machine 模块中的 I2C 支持现在具有时钟延展,在内存传输方法中添加了“addrsize”参数,并且 I2C 扫描现在使用虚拟写入而不是虚拟读取,使扫描更加可靠。

CMSIS 库已升级到 v4.30,stmhal 端口的 board 部分已重构为使用 common.ld 脚本。stmhal 端口现在具有 machine.SPI 类的完整实现,支持硬件 SPI 外设和快速软件 SPI。stmhal 中的 USB HID 驱动程序添加了从主机接收 USB HID 消息的支持。

py 核心:

- asmthumb:在STM32F7上刷新D-cache,并使I-cache失效

- makeqstrdefs.py:使用 python 2.6 语法创建集合

- objnone:删除不必要的 MP_UNARY_OP_BOOL 处理

- 从 esp8266 端口移动冻结模块规则以便跨端口重用

- 将 3 个理解输出函数 (list/dict/set) 组合成 1 个

- 将 3 个理解操作码 (list/dict/set) 合并为 1 个

- vstr:删除 vstr.had_error 标志并内联基本 vstr 函数

- objnone:使用 mp_generic_unary_op 而不是自定义的

- showbc:让 printf 进入平台打印流

- 从 mp_obj_module_t 结构中删除“名称”成员

- builtinimport: 修改后修复 nanbox 构建以更好地处理 -m 模块

- 流:从 vstr_extend 删除不必要的 NULL 返回检查

- py.mk:在构建 berkeley-db 时禁止一些编译器警告

- 通过使用减小大小的整数成员来缩小 mp_arg_t 结构

- 更新操作码格式表,因为删除了 3 个操作码,添加了 1 个

- 解析:仅替换作为独立标识符的常量

- py.mk:添加对构建 modussl_mbedtls 的支持

- 仅将异常实例存储在字节码 try 块中的 Py 堆栈中

- vm: 使用 MP_OBJ_FROM_PTR 将类型转换为对象

- modmicropython:添加micropython.const,身份函数的别名

- objstr:删除仅用于简洁错误消息的无法访问的函数

- emitbc:删除/重构无法访问的代码,以提高覆盖率

- objfun:使用 5 个或更多 args 删除对毒蛇乐趣的不必要检查

- objfun:使用 if 代替 switch 来检查 VM 执行的返回值

- objset:使用 mp_check_self() 检查 set/frozenset 方法的参数

- objset:确保使用frozenset.update 引发异常

- 编译:修复 async-for/async-with 以在堆栈上使用更简单的 exc

- 范围:使用查找表来确定范围的简单名称

- 范围:将 scope_t 结构缩小 1 个机器字

- 范围:因子公共代码以查找本地人并关闭他们

- 编译:在检查解析节点种类时修复错字

- argcheck:简化if-chain,最后一个是默认值

- objbool:将 bool 的一元运算实现推迟到 small int

- objbool: 对 bool 构造函数稍作简化

- modstruct: 删除无法访问的代码,并添加关于 CPy diff 的注释

- 添加 mp_raise_OSError(errno) 辅助函数

- objstringio: 添加 readinto() 方法

- modmicropython: 添加 micropython.opt_level([value]) 函数

- 编译:删除无法访问的代码

- mpz:在 divmod 中,将检查 rhs!=0 替换为 assert

- mpz:使用assert来验证mpz没有固定的数字缓冲区

- 因子复制函数来计算格式化整数的大小

- objint:使用 size_t 作为测量字节/大小的参数

- compile: 删除编译器调度的调试代码

- 词法分析器:删除不必要的代码和无法访问的代码

- vstr:将 vstr_new_size 与 vstr_new 结合使用,因为它们很少使用

- objdict:修复了在 fromkeys 中分配结果的优化

- objdict:实际提供在 KeyError 异常中失败的密钥

- 在适当的地方使用 mp_raise_msg 辅助函数

- 将 -m 指定的模块添加到 sys.modules 为 '__main__'

extmod:

- modussl_mbedtls:mbedTLS ussl 模块的初始实现

- uctypes:允许完整的 32 位地址范围

- modubinascii:修复 32 位平台上的 crc32() 函数

- modussl_mbedtls:实现 key= 和 cert= args 到 wrap_socket()

- modussl_mbedtls:使用 2 组件包含路径

- machine_i2c:添加时钟拉伸支持

- modussl_mbedtls:为 wrap_socket() 添加 server_hostname 参数

- uzlib:从上游添加 tinfgzip.c(gzip 头解析)

- moduzlib:DecompIO:添加对 gzip 格式流的支持

- uzlib/: 更新 uzlib 到 v2.0.3

- vfs_fat:添加fat_vfs_statvfs(),从stmhal重用

- machine_i2c:在 mem xfers 中添加对 addrsize 参数的支持

- machine_spi:简化SPI xfer函数,只占用一个buf len

- machine_spi:将软件 SPI 代码从 esp8266 分解为 extmod

- machine_spi:使用delay_half,而不是波特率,用于内部计时

- machine_spi:添加对快速软件SPI的可选支持

- vfs_fat: 使用 mp_raise_OSError 辅助函数

- modlwip: 使用 mp_raise_OSError 辅助函数

- 使用 mp_raise_OSError 辅助函数

- vfs_fat_file: 使用 MP_Exxx errno 常量

- uzlib:更新到上游 v2.1

- machine_i2c:在 i2c.scan() 中使用写入而不是读取

- vfs_fat:为remove和rmdir添加文件和目录检查

- modujson:实现 ujson.load() 从流中加载 JSON

- modujson:修复 nanbox 构建

- utime_mphal:根据 mp_hal_* 分解实现以供重用

- utime_mphal: sleep_us/ms(): 不要等待否定参数

- modussl_mbedtls:添加虚拟 setblocking() 方法

库:

-interrupt_char:从 esp8266 端口中排除典型的 Ctrl+C 处理

- cmsis:将 CMSIS 头文件移动到 lib/

- cmsis: 删除 CMSIS-DSP 头,它们没有被使用

- cmsis:将CMSIS-CORE升级到V4.30

- utils/pyexec:不要将 SystemExit 视为“强制退出”

- utils/pyexec: 允许 SystemExit 的行为是可配置的

司机:

- dht: 使用 mp_raise_OSError 辅助函数

工具:

- 更新 upip 至 0.8,修复 IPv6 支持

- 将 upip 升级到 1.0,完全自托管版本(无回退),并使用流 gzip 解压缩(逐步支持有限堆裸机系统)

- 升级 upip 到 1.1.3,初步支持在裸机上运行,

低堆系统(如 esp8266),使用 Python 模块接口

测试:

- pyb:在禁用时执行 swint 时添加对 ExtInt 的测试

- pyb:为之前更新的extint测试更新exp文件

- extmod/urandom: 为错误情况添加 urandom 测试

- basics: 添加errno1测试,检查uerrno模块的基础

- extmod:为 machine.time_pulse_us() 添加测试

- struct1:测试“l”说明符以提高覆盖率

- array1:为“l”、“L”数组类型添加测试以提高覆盖率

- 再次运行 cmdline 详细测试

- run-tests:添加 --via-mpy 选项以从预编译代码运行测试

- uzlib_decompio_gz:使用 gzip 比特流测试 DecompIO

- 基础知识:在 try-finally 中添加溢出 Py 堆栈的测试用例

- micropython:为解析器中替换的常量名称添加测试

- cmdline/cmd_showbc:修复测试,现在堆栈上存储了 1 个值

- extmod/vfs_fat_ramdisk:为 VFS.statvfs() 添加测试

- float:添加从空字符串解析浮点数的测试

- 基础:为 set.difference_update 添加测试,参数为自身

- 基础知识:为非本地范围和闭包添加进一步的测试

- import:添加编译“import ab as c”的测试

- 基础知识:添加从非平凡表达式构造集合的测试

- 基础知识:添加测试以在 errno 未知时打印 OSError

- run-tests: 在 Windows 上禁用 cmdline/cmd_showbc 测试

- extmod/btree1:检查放置、序列、字符串打印和不支持的二进制操作

- 修复详细 cmdline 测试的预期输出

- extmod/uzlib:测试自适应哈夫曼树的 tinflate 覆盖率

- 通过测试不合规行为提高结构的覆盖率

- io/write_ext:添加描述注释

- io/bytesio_ext:为 readinto() 添加测试

- micropython:为 micropython.opt_level() 函数添加测试

- 提高 py/compile.c 的测试覆盖率

- extmod/vfs_fat:remove() 和 rmdir() 的测试覆盖率

- extmod:为 ujson.load() 添加测试

- extmod/vfs_fat:用打印和预期输出替换断言

- micropython:为 heap_lock 和紧急异常添加测试

- cmdline:改进打印字节码的覆盖测试

- 提高对数组、范围、字典、切片、exc、unicode 的覆盖

- 添加测试以从失败的字典查找中打印完整的 KeyError exc

- run-tests:在pyboard上启用extmod/machine1.py

unix 端口:

- 修复 MICROPY_PY_SOCKET=0 时的构建

- modjni:实现对象数组的订阅

- modjni:添加 array() 顶级函数来创建 Java 数组

- modjni: array():支持创建对象数组

- 启用 btree 模块进行覆盖构建

- 使用 mp_raise_OSError 辅助函数

- 使用 mphalport.h 中的常见 RAISE_ERRNO 宏

windows 端口:

- 启用MICROPY_PY_UERRNO

qemu-arm 端口:

- 启用大量 extmods 并为它们启用测试

stmhal 端口:

- lcd:完成SPI传输后取消置位片选

- {accel,lcd}:使用GPIO_{set,clear}_pin

- extint:在 swint() 上强制从 0 到 1 转换

- 板:添加 pllvalues.py 脚本来计算 sysclk 的 PLL 值

-板:对于OLIMEX_E407,启用UART1并修复I2C1映射

- 使用属性避免内联

- 将链接器文件中的通用定义放入 common.ld

- 删除 STM32CubeF2 HAL 文件,它们未使用/不受支持

- modmachine:修复重置原因标志的清除

- 为STM32L476DISC添加虚拟com端口支持

- 删除 CMSIS STM32F2xx 文件,它们未使用/不受支持

- spi:简化spi_transfer函数,只取一个buf len arg

- mphalport:实现 mp_hal_pin_{input,output,write}

- spi: 使machine.SPI类符合正确的API

- mphalport:修复 mp_hal_pin_write 以使用正确的 pin_mask

- spi:如果没有给出periph id,则使用软件SPI,即使给出了pins

- spi:启用快速软件SPI

-修复STM32L476芯片的链接器映射

- usbdev:将 OUT 端点添加到 HID 接口

- usb:添加支持从主机接收 USB HID 消息

- usb:使用正确的 ClassData 结构进行 HID 接收

- usb:在 HID 接收中使用实际数据包大小(不是最大值)

- 通过添加具有正确闪存大小的 ld 脚本来修复 ESPRUINO_PICO

- mphalport:将 pin obj 类型更改为 const 指针,以避免强制转换

- moduos:在statvfs中实现块总数字段

- 禁用 ESPRUINO_PICO 的网络和 usocket

- 启用 machine.time_pulse_us() 函数

- 使用 mp_raise_OSError 辅助函数

- pybstdio:使用 size_t 而不是 mp_uint_t

- modutime:重构使用 extmod/utime_mphal.c

- 实现 machine.soft_reset()

- 启用 str.center()、str.[r]partition() 和内置 compile()

cc3200 端口:

- 将 ssl_version 参数添加到 ssl.wrap_socket()

esp8266 端口:

- Makefile:将 SCRIPTDIR 重命名为 FROZEN_DIR 以与 FROZEN_MPY_DIR 保持一致

- ets_alt_task:ets_post:成功时应返回 0,!0 - 失败

- esp_mphal:向 mp_hal_stdin_rx_chr() 添加临时更改以等待 IRQ

- 将系统微秒计数器扩展到 64 位;在 ticks_ms 中使用

- 添加 uos.statvfs() 以获取文件系统状态

- moduos:将 stat/statvfs 函数移动到 #if VFS 守卫内

- modmachine: idle(): 返回空闲花费的 CPU 周期数

- main: 在 sys.path 中将 /lib 放在 / 之前

- modpybrtc.c:实现machine.RTC.alarm_left()

- 使 PY_UHASHLIB_SHA1 配置依赖于 PY_USSL 和 SSL_AXTLS

- 为 make 部署目标添加 FLASH_MODE,FLASH_SIZE 选项

- 使用 mp_raise_OSError 辅助函数

- 使neopixel 支持可配置

- mpconfigport:启用MICROPY_PY_BUILTINS_SLICE_ATTRS

- 为原始串行访问启用 sys.{stdin,stdout,stderr}.buffer

- 允许导入预编译的 .mpy 文件

- 启用 micropython.alloc_emergency_exception_buf()

和风端口:

- 初始 Zephyr RTOS 端口,MicroPython 部分

- 初始 Zephyr RTOS 端口,Zephyr 部分

- 添加 zephyr_getchar 模块来处理控制台输入

- 切换到微内核,网络后台工作需要

- 自动导出ARCH

- 支持额外的 make 目标

- Makefile:自动导出特定于目标的 CFLAGS

- 使用最近添加的“make outputexports”Zephyr 目标

- 添加自述文件

- 启用堆栈检查和 micropython.mem_info()

- 启用冻结模块支持

- main:在启动时执行 main.py 冻结模块,如果可用

- zephyr_getchar:添加对 Ctrl+C 处理的支持

- 添加 Ctrl+C 处理

- 实现 help() 函数

- 添加版权简介

自述文件:

- 移除 issue-stats 徽章,该服务不再可用

- 提及所选端口中的 _thread 模块可用性

文档:

- library/pyb.SPI: init(): 描述“位”参数

- 库/机器:更新禁用/启用 IRQ 函数的描述

- uos:添加uos.statvfs() 文档

- wipy:正确的深度睡眠电流数字

- wipy:小文档修复

- 参考:添加 constrained.rst doc

特拉维斯:

- 放弃 mingw32 支持 mingw-w64

- 为预编译的mpy 文件运行功能和覆盖测试

例子:

- network/http_client*: 在请求中使用 \r\n 行尾

========

2016 年 9 月 9 日星期五 14:07:09 +1000

v1.8.4 支持 uzlib 流解压,更多 ESP8266 特性

此版本包括一些错误修复、代码清理、文档更新、更多测试和各种功能添加。uzlib 模块现在支持 uzlib.DecompIO 类形式的高效流解压缩。字节码冻结现在支持 ESP8266 端口的浮点数,以及所有端口的复数。stmhal 端口具有在 L4 微控制器上工作的 ADC、DAC 的固定初始化以及添加 machine.WDT 类和 machine.reset_cause 函数。

对于 ESP8266 端口,引脚 (16) 现在用作输入引脚,硬件 SPI 外设公开为 machine.SPI(1)。实现了os.umount功能,端口支持挂载外接SD卡。添加machine.WDT类,wlan.scan()固定返回所有接入点,支持DS18S20设备。

py 核心:

- 运行时:排除异常引发助手

- 运行时:定义 mp_check_self(pred) 辅助宏

- objdict:去掉断言(用 mp_check_self() 删除/替换)

- 在方法参数检查函数中去掉 assert()

- objtuple:在 tuple_cmp_helper 中,使用 mp_check_self 而不是 raise

- objstr: 使用 mp_raise_{Type,Value}Error 而不是 mp_raise_msg

- obj.h:对于 obj reprs A、B、C,对 mp_obj_t typedef 显式使用 void*

- mpconfigport.h:去掉machine_ptr_t的typedef,不再需要

- 序列:允许使用 bignums 作为切片对象中的索引

-stream.c:在 mp_get_stream_raise 中使用 mp_obj_get_type

- gc:添加 MICROPY_GC_CONSERVATIVE_CLEAR 选项以始终为零内存

- 编译:启用优化时不编译断言语句

- modstruct:使用更紧凑的 mp_raise_ValueError 函数

-emitglue:使用更紧凑的 mp_raise_ValueError 函数

- 将 struct mp_code_state 重命名为 mp_code_state_t

- mkrules.mk:允许覆盖 libmicropython.a 的名称

- mpprint:使用不支持的格式说明符使断言失败

- makeqstrdata.py:从字节而不是字符计算 qstr 哈希

- 如果 str/bytes 哈希值为 0,则显式计算它

-emitglue.c:为任何unix架构提供mp_raw_code_load_file

- 添加MICROPY_USE_INTERNAL_PRINTF 选项,默认启用

extmod:

- modwebrepl: set_password(): 密码过长引发异常

- uzlib/:更新uzlib到v2.0:支持流解压的新API

- moduzlib:重构为新的流兼容 uzlib 2.0 API

- uzlib/:将 uzlib 更新到 v2.0.1:修复了迂腐的编译器警告

- uzlib/:将 uzlib 更新到 v2.0.2:始终使用 stdint 类型

- modbtree:在 __bt_seq() 之后做 CHECK_ERROR

- modubinascii:实现 binascii.crc32

- modubinascii:使 crc32() 支持可配置

- modframebuf:修复像素访问器以返回 1 位结果

- 使用通用 SPI C 协议和辅助方法添加 machine_spi

- modframebuf:修复高度不能被 8 整除时的填充和滚动

- moduzlib:实现zlib流解压器类,DecompIO

- moduzlib:使用 mperrno.h 作为错误常量

- modframebuf:显式包含 stmhal 目录中的字体

- moduzlib: 支持 wbits arg 到 DecompIO

- framebuf:将 xstep!=0 情况添加到 scroll() 方法

库:

- utils/stdout_helpers:修复函数签名以匹配 py/mphal.h

- berkeley-db-1.xx:更新上游,修复 MacOSX 构建

- utils/pyexec: qstr_pool_info() 需要 size_t* 参数

司机:

- sdcard:将 SDCard 驱动程序移植到新机器 API,向后兼容 pyboard

工具:

- mpy-tool.py:支持使用 obj-repr C 冻结浮点文字

- mpy-tool.py:将 qstr 配置值存储在全局配置对象中

- mpy-tool.py:计算 str/bytes 对象的哈希值

- mpy-tool.py:支持复数冻结

测试:

- 重命名 zlibd_decompress.py -> uzlib_decompress.py

- 基础:添加更多元组测试以提高覆盖率测试

- 基础:添加更多列表测试以提高覆盖率测试

- misc/non_compatible:添加测试以提高覆盖率测试

- 基础知识:在 for 循环中的 try 中添加中断测试

- 基础知识:添加测试文件以覆盖特殊方法

- basics/special_methods:为额外的特殊方法启用测试

- uzlib_decompress:实际测试原始 DEFLATE 流

- 运行测试:在 Travis 上禁用线程/thread_lock4.py

- run-tests:在 Travis 上运行时禁用线程/stress_heap.py

- cmdline:添加测试 -O 选项以检查优化值

- extmod/vfs_fat_ramdisk:为 VFS.umount() 添加测试

- 运行测试:在 Travis 上禁用 thread_gc1.py 测试

- unix/extra_coverage:添加对具有无效哈希值的 str/bytes 的测试

- extmod:为 uzlib.DecompIO 添加测试

- extmod:为framebuf模块添加一个测试,通过coverage build进行测试

- extmod/uzlib_decompio:添加 zlib 比特流测试用例

- extmod/framebuf1:添加x方向滚动测试

- 运行测试:在 Travis 上禁用线程/stress_recurse.py 测试

unix 端口:

- mpconfigport.h:在 MacOS 上不包括 stdio.h

- 查找冻结文件时不要使用额外的斜杠,请遵循符号链接

qemu-arm 端口:

- 启用MICROPY_PY_ALL_SPECIAL_METHODS

stmhal 端口:

- 板:更新 STM32L476 引脚定义以包括 ADC 通道

- adc.c:让 ADC 在 STM32L4 MCU 上工作

- 修复 TIM1 和 TIM8 的定时器捕获/比较中断处理

- 删除用于特殊处理 TIM3 irq 设置的过时代码

- 使 ADC 通道 16 在 L4 MCU 上可用

- 更新引脚打印以打印新常量

- modusocket:套接字关闭后将 self->nic 设置为 MP_OBJ_NULL

- 更新 boot.py 文件以使用 VCP 而不是 CDC

- spi: 将 SPI 传输代码分解为单个函数

- spi: 支持旧 SPI 对象中的新机器 SPI 方法

- 添加 machine.WDT 类

- 将 STM32F7DISC CPU 频率设置为 216 MHz

- dac:通过重置 DMA 修复 DAC(重新)初始化

- wdt: 为 WDT 构造函数实现关键字参数

- modmachine:实现machine.reset_cause() 函数和consts

- machine.POWER_ON 重命名为 machine.PWRON_RESET

- 查找冻结文件时不要使用额外的斜杠,请遵循符号链接

cc3200 端口:

- 添加 machine.PWRON_RESET 常量(machine.POWER_ON 现在已弃用)

teensy 端口:

- 修复执行冻结的 boot.py 和 main.py

esp8266 端口:

- 修复 GPIO16 引脚对象的读取;Pin(16) 现在用作输入

- Pin(16) 不支持 PULL_UP,因此在这种情况下引发异常

- 启用对所有特殊方法的支持

- modpybhspi:为硬件SPI支持添加一个HSPI模块

- modmachinespi:为SoftSPI/HSPI添加工厂方法

- esp_mphal:不再在启动时禁用看门狗

- modpybrtc:计算闹钟到期时使用64位算法

- hspi:使能硬件SPI的双工操作

- modous:添加 os.umount 方法来卸载文件系统

- modmachinewdt:实现machine.WDT类

- 模块:将onewire.py拆分为OneWire和DS18X20驱动

- 模块/onewire:将 onewire.read() 更改为 onewire.readinto()

- modules/ds18x20.py: 添加对 DS18S20 设备的支持

- modpybspi:使用通用的SPI辅助方法来实现SPI

- modpybhspi:通过为 xfers 使用 1 个函数来简化 HSPI 驱动程序

- modmachinewdt:添加 .deinit() 方法

- modmachine:添加 WDT_RESET 和 SOFT_RESET 常量

- modmachine:不要暴露内部的 SoftSPI 和 HSPI 类

- modmachine:简化SPI类实现复用

- espneopixel:在 eps.neopixel_write 期间禁用 IRQ

- modnetwork:修复 wlan.scan() 方法,使其返回所有网络

- modmachine:将 PWR_ON_RESET 映射到供应商的 REASON_DEFAULT_RST

- machine.PWR_ON_RESET 重命名为 machine.PWRON_RESET

- 查找冻结文件时不要使用额外的斜杠,请遵循符号链接

文档:

- esp8266/tutorial/pins:修复引脚输入模式命令中的错字

- esp8266/intro: 添加命令通过pip安装esptool.py 1.0.1

- library/machine.WDT:添加注意 WDT 仅在 WiPy 上可用

- esp8266/quickref:修复和更新 SPI 文档

- esp8266:更新 OneWire/DS18X20 驱动的快速参考和教程

- pyboard:更新USB鼠标教程以使用VCP代替CDC

- pyboard:更新USB鼠标教程使用pyb.USB_HID()

- 库:为 pyb.usb_mode 和 pyb.USB_HID 添加引用

- pyboard/quickref:添加指向其他 pyboard 变体的引脚分配的链接

- pyboard/quickref:为 utime mod 添加有关“延迟和计时”的部分

- esp8266/quickref:为某些模块添加到文档的内部链接

- esp8266/quickref:更新SPI类信息

- esp8266/quickref:SPI 小节的进一步改进

- library/machine.WDT:添加 WDT 在 pyboard 上可用

- reference/isr_rules.rst:对使用 ISR 的文档的两个小补充

@misc:

- 将 *.pyc 添加到 .gitignore,因为 Python 2 不使用 __pycache__

- 构建 mpy-cross 作为 Travis 进程的一部分

========

2016 年 8 月 9 日星期二 23:49:25 +1000

v1.8.3 许多小的改进和补充,ESP8266 端口支持 btree

此版本为核心、扩展模块和 ESP8266 端口带来了各种改进和补充,以及对文档的增强。现在在 gc 模块中有一个“阈值”功能,用户可以将垃圾收集器配置为比平时更早运行,以帮助减少堆碎片。btree 模块现在在 ESP8266 端口中可用,并且改进了 WebREPL 文件传输:获取文件现在是非阻塞的(此更改需要更新客户端软件)。

py 核心:

- nlrx64.S:在 Mac 上用下划线前缀 mp_thread_get_state

- 流:实现 2- 和 3-arg write() 方法作为 CPython 的扩展

- gc:按分配阈值实现GC运行,用户可配置

- 在定义 DEBUG=1 时修复 nlrthumb.c

- obj: 比较 str 和 bytes 对象时发出警告

- mpconfig.h:修复MICROPY_PY_STR_BYTES_CMP_WARN 的描述

- objstrunicode: str_index_to_ptr: 也应该处理字节

- objstrunicode: str_index_to_ptr: 正确实现正索引

-流:实现泛型flush()方法,就C级ioctl而言

- objstringio:添加 MP_STREAM_FLUSH ioctl 和 flush() 方法

- objstringio:实现 MP_STREAM_SEEK ioctl 并添加 seek() 方法

- 流:添加具有 POSIX 兼容签名的适配器方法

- mpconfig.h: 添加MICROPY_STREAMS_POSIX_API 设置

- py.mk:用于构建“嵌入式” BerkeleyDB BTree 库的额外开关

- mkrules.mk:允许使用 CLEAN_EXTRA 为“干净”目标添加更多项目

- objstr:使 .partition()/.rpartition() 方法可配置

- mpconfig.h:定义 MP_ALWAYSINLINE 以供重用

extmod:

- modussl:重命名为 modussl_axtls.c,以允许使用其他 SSL 库的 impl

- modussl_axtls:进一步更改以允许替代 SSL 模块

- modussl_axtls: 添加虚拟 setblocking() 方法

- vfs_fat:实现 rmdir() 方法(别名取消链接)

- modussl_axtls:使用 mp_stream_close() 方法

- modwebrepl:使用 mp_stream_close() 方法

- modbtree:检查 __bt_open() 返回值是否有错误

- modbtree:切换到接受流对象而不是文件名

- modbtree:实现__contains__操作

- modwebrepl:将“GET”迭代分解为 write_file_chunk()

- modwebrepl: 使 GET_FILE 操作非阻塞

- modbtree: open(): 添加选项 kwargs

- modwebsocket:添加readline方法

- modwebsocket:与非默认对象模型兼容

- modwebsocket:使用 mp_rom_map_elem_t 和朋友

- modwebrepl:添加GET_VER操作查询MicroPython版本

lib:

- axtls:升级到 axTLS 1.5.4 + MicroPython 补丁集

- axtls:更新,修复 esp8266 构建

- utils/stdout_helpers:从minimal/uart_extra.c 移动以供重用

- embed/abort_: abort_() 函数的实现引发 uPy 异常

- berkeley-db-1.xx:切换到“嵌入式”分支

- berkeley-db-1.xx:更新,将默认页面大小设置为 4096

测试:

- 将扩展参数的测试添加到流 .write() 方法

- extmod/machine_pinbase:如果 machine.PinBase 不可用则跳过

- bytes_compare:字节<-> str 比较的返工测试

- extmod/btree1:测试结束时关闭数据库

- unicode_subscr.py: Unicode 字符串下标详细测试

- run-tests:使“regex'ed .exp”工具可用于设备测试

- io/bytesio_ext:在 BytesIO 上测试 .seek()/.flush()

- extmod/btree1:针对内存数据库进行测试(使用 io.BytesIO)

- machine_mem.py:太不可移植,以unix端口为例返工

- machine1:修改以使用 unix 端口(具有“umachine”)

- 基础知识:bytes/str.partition/rpartition 现在是可选的

mpy-cross:

- 修复 Makefile 以处理 OS X 上的 gc-sections 链接器标志

- 使用二进制文件翻译模式在windows上创建mpy文件

- 修复 mingw 和 msys2 编译

最小端口:

- 禁用MICROPY_GC_ALLOC_THRESHOLD

unix 端口:

- mpthreadport:调整最小线程堆栈,以及堆栈限制检查

- 在本地构建目录中缓存 libaxtls.a

- 禁用 MICROPY_GC_ALLOC_THRESHOLD 以进行最小构建

- 启用MICROPY_PY_STR_BYTES_CMP_WARN

- mpconfigport.h:默认包含stdio.h

- 文件:实现 MP_STREAM_FLUSH ioctl

- 文件:ioctl():在操作前检查文件是否打开

- 文件:fdfile_ioctl():修复 check_fd_is_open() 的参数

- 文件:使用通用流flush()方法

- 启用 websocket 模块

- moduselect:允许 poll.register() 等接受类似 fd 的对象

stmhal 端口:

- 与外部库一起使用时修复 malloc

- 使 SPI NSS 引脚定义可选

- 修复 STM32F429DISC 板的 I2C 映射

esp8266 端口:

- 选择 axTLS 用于 SSL 实现,根据最近的重构

- moduos: 添加 rmdir() 函数

- 在本地构建目录中缓存 Xtensa 构建的 libaxtls.a

- 启用MICROPY_PY_STR_BYTES_CMP_WARN

- dupterm_task_init() 应该在运行 _boot.py 等之前调用

- _boot.py: 将 GC 分配阈值设置为堆大小的一半

- _boot.py:将 GC 分配阈值降低到堆大小的四分之一

- modpybuart:修复UART奇偶校验设置

- axtls_helpers:删除 abort_(),现在在 lib/embed/

- mpconfigport.h:包括 sys/types.h 用于 POSIX 类型定义

- esp_mphal:实现libc的errno

- 启用 btree 模块

- eagle.rom.addr.v6.ld:从 SDK 2.0.0 添加 Enable_QMode 符号

- 使 APA102 驱动程序包含可配置

- makeimg.py:将固件大小存储为填充区的最后 4 个字节

- makeimg.py:将 md5 哈希附加到生成的二进制文件中

-modesp: 添加 check_fw() 函数来检查固件的完整性

- scripts/port_diag.py: 包括 esp.check_fw() 调用

- flashbdev:为 SDK 2.0.0 兼容性保留额外的 sysparam 扇区

- scripts/inisetup: 将注释掉的调用添加到 esp.osdebug(None)

- modmachine:实现idle()函数

- esp_mphal.h:添加 mp_hal_ticks_cpu() 以供重用

- modutime:实际实现ticks_cpu()

- modmachine:实现虚拟 sleep() 函数

- 教程/介绍:改写 para abou -fm dio 开关

- modules/flashbdev: 在 0x90000 处启动文件系统

- esp8266.ld:将固件镜像大小增加到 0x90000 (576K)

@docs:

- 将 DHT 添加到 ESP8266 快速参考和教程

- 修正一些拼写错误

-数组:文档数组模块

- 库/索引:在 ToC 中包含数组模块

- esp8266/intro:从“简介”重命名为“入门”

- esp8266/intro: 添加故障排除部分

- esp8266/quickref:安装说明链接

- esp8266/tutorial/intro: 为来自 quickeref 的链接添加锚点

- esp8266/intro: 关注出土电力电子产品的危害

- uio:提到对 io.BytesIO 的 seek()/flush() 支持

@misc:

- logo/1bit-logo 标志的黑白版本

例子:

- http_server*:更新类似缓冲的流(逐行读取)

- 嵌入:在应用程序中嵌入 MicroPython 的示例

-嵌入:添加README

- http_client*:一定要关闭socket

- 网络:拆分基于接收和读取的 HTTP 服务器

qemu-arm:

- 为 nlrthumb.c 启用 gcc LTO 选项

========

周日,2016 年 7 月 10 日 12:46:50 +0100

v1.8.2 线程支持、ESP8266 内存改进、btree 模块、改进的文档

此版本以_thread 模块的形式带来了多线程支持,它与相应的CPython 模块的语义紧密匹配。支持 GIL 和非 GIL 构建;如果没有启用 GIL,则必须使用 Lock 对象在 Python 级别保护对可变 Python 状态的并发访问。在 WiPy 上的 cc3200 端口中启用了 GIL 线程。在 unix 端口上启用了没有 GIL 的线程。ESP8266 端口支持冻结字节码(用于模块/子目录中的脚本),以及针对减少内存使用和减少内存碎片的优化。ESP8266 RTC 在深度睡眠后也能正确恢复。已为数据库支持实现了一个初始的“btree”模块(仅限 unix 端口),

py 核心:

- 解析:将以下划线开头的常量视为私有的

- objdict:实现了 OrderedDict 相等性检查

- 支持构建 berkeley db 1.85 和“btree”模块

- mpconfig.h: MP_NOINLINE 普遍有用,从 unix 端口移动

- makeqstrdefs.py:删除源路径不能是绝对路径的限制

- mkrules.mk:在条件块外定义“lib”

- 将 __QSTR_EXTRACT 标志重命名为 NO_QSTR

- objtype: 实例:从基类继承协议 vtable

- mphal.h:如果使用virtpin API,则自动包含其头文件

- objtype:仅当基类存在时从基类继承协议vtable

- 添加 MP_STATE_THREAD 以保存特定于给定线程的状态

- 添加基本 _thread 模块,能够启动新线程

- modthread:正确地将具体异常指针投射到对象

- modthread:添加 stack_size() 函数

- modthread:添加exit()函数

- modthread:实现锁定对象,用于创建互斥锁

- modthread:添加上下文功能以锁定对象

- gc:使内存管理器和垃圾收集器线程安全

- modthread:满足未使用参数警告

- gc:修复ATB和FTB并发访问2种情况

- modthread:创建线程时要更加小心根指针

- modthread:围绕线程调用 mp_thread_start/mp_thread_finish

- gc:修复 GC+thread 错误,其中 ptr 因未计算而丢失

- 使 qstrs 线程安全

- 实现一个简单的全局解释器锁(GIL)

- 启用 GIL 时不要使用 gc 或 qstr mutex,没有必要

- modthread:在启用 GIL 时使 Lock 对象工作

- mpthread.h:将 GIL 宏移出 MICROPY_PY_THREAD 块

- modthread:允许正确设置线程的堆栈限制

- nlrthumb:使用 inline-asm 将 NLR 拇指函数从 asm 转换为 C

- nlrsetjmp:更新以考虑 nlr_top 的新位置

- mpthread:在定义 GIL 宏时包含 mpstate.h

- gc: 一定要在 stats 中计算堆结束时最后分配的块

- gc:计算(并报告)最大连续空闲块大小

- builtinimport:禁用“作为命名空间包导入”警告

- mpconfig.h:提及MICROPY_PY_BTREE 配置选项

- objarray: 拆分标题以允许直接访问对象

- 将 mp_obj_type_t::stream_p 重命名为“协议”

extmod:

- modbtree:基于 BerkeleyDB 的“btree”模块的初步实现

- modbtree:处理默认值和错误检查

- modbtree:实现 .items() 迭代器

- modbtree:实际实现对 .items() 的结束键支持

- modbtree: items(): 实现“end key inclusive”标志

- modbtree: items(): 实现 DESC 标志

- modbtree: __getitem__() 应该为不存在的密钥引发 KeyError

- modbtree:open():支持文件名=无的“内存中”数据库

- machine_pinbase:PinBase 类的实现

- machine_pinbase:修复nanbox构建

- modlwip:存储传入的 pbuf 链,而不是只有一个

- modbtree:实现keys()、values()、items()迭代器

- modbtree:巧妙地实现“for key in btree:”语法

- modwebsocket:添加 readinto() 方法

- modwebrepl:添加 readinto() 方法

- modbtree:修复未使用的参数警告

- modbtree:修复了 nanbox 构建

- moduos_dupterm:为 dupterm 保留缓冲区字节数组对象

- moduos_dupterm:重复使用 dupterm_arr_obj 进行写操作

库:

- berkeley-db-1.xx:添加 Berkeley DB 1.85 作为子模块

- berkeley-db-1.xx:更新上游,为 uPy 构建

- fatfs/option/ccsbcs:遵循 uPy 可选功能模型

- libm: 格式化代码以通过gcc v6.1.1 警告

- libm:删除未使用的“一”定义

司机:

- display/ssd1306: 添加宽度参数并支持 64px 宽显示

测试:

- recursive_iternext:clang/Linux 比 MacOS 更节省堆栈

- 基准:添加测试用例来比较字节(N)与 b"\0" * N

- 添加 OrderedDict 相等性的测试用例

- 为 machine.PinBase 类添加测试用例

- extmod:添加“btree”模块测试

- btree1:添加testcase直接迭代btree对象

- 为 _thread 模块添加测试

- 为 _thread 模块添加另外 3 个测试

- 线程:删除在某些测试中需要休眠以等待完成

- 线程:添加线程内运行GC的测试,以及堆压力

- 线程:将thread_stress_XXX.py 重命名为stress_XXX.py

- 线程:添加改变共享对象的测试

- 线程:为字符串的并发实习添加测试

- 线程:为用户实例的并发变异添加测试

- 线程:使堆栈大小测试在 uPy 上正确可靠地运行

- 线程:确保线程测试不依赖于浮点

- 线程:允许 thread_sleep1 无浮点运行

- 线程:允许一些测试在没有太多堆的端口上运行

- meminfo:更新添加“最大空闲 sz”输出

- run-tests: 如果在 unix 上运行线程测试,不要运行 mutate 测试

unix 端口:

- 通过禁用 FatFs 来解除“最小”目标

- mpconfigport_minimal.h:明确标记用户自定义配置的结束位置

- 弃用对 GNU Readline 的支持 (MICROPY_USE_READLINE=2)

- 使用 --gc-sections 构建的时间

- 将“utime”模块配置移动到 C 级别而不是 make 级别

- Makefile: libffi: Build with -Os

- alloc:添加选项以使用 uPy 的 alloc-exec 实现,即使对于 libffi

- alloc:使覆盖范围构建及其过度热心的警告感到高兴

- 为正常构建禁用 FatFs VFS,保持启用以进行覆盖

- modmachine:包括 PinBase 类

- modmachine:启用 time_pulse_us() 函数

- 修复 Makefile 以处理 Mac OS 上的 gc-sections 链接器标志

- 添加使用 pthreads 的基本线程支持

- 文件:如果写入系统调用由于 EINTR 而返回,则重试

- 用线程实现垃圾收集

- mpthreadport:将 SA_SIGINFO 用于 GC 信号处理程序

- gccollect:提供导出函数的声明

- mpthreadport:禁止有关未使用参数的编译器警告

- modtime:睡觉时释放GIL

- 启用 btree 模块

- Makefile:使“最小”构建再次最小化

- mpconfigport_minimal.h: 允许打印 1KB 堆内的字符串

- 主要: -X heapsize= 选项中后缀的未知值出错

- main: 稍微改进一下 -X 选项的帮助

- main:准备sys.path时,在uPy堆上分配精确的字符串

- 禁用 GIL 以提高非线程代码的性能

windows 端口:

- 遵循有关“utime”模块的 unix 端口更改

- msvc: 在 build 中包含 machine_pinbase.c 并启用 umachine 模块

stmhal 端口:

- 添加Olimex STM32-E407的板定义文件

- f4 hal 的端口提交 1d7fb82 到 l4 hal(SD 卡修改)

- 修正 DMA 以允许 L4 MCU 上的 SD 卡

- 在 L4 MCU 上启用 SD 卡

cc3200 端口:

- 将 FreeRTOS 更新至 v9.0.0

- 定义我们自己的 FreeRTOS 堆,以便它可以进入一个特殊的段

- 添加基本线程功能

- 将新异常的调用修复为 _msg 而不是 _arg1

- 使用 xTaskCreateStatic 而不是 osi_TaskCreate

- mpthreadport:静态分配互斥锁

- mpthreadport:正确初始化主线程的数据

- gccollect: 使用 MP_STATE_THREAD(stack_top) 获取栈顶

- mpthreadport:从线程数据中扫描更多的根指针

- mpthreadport:将内存分配移到thread_mutex锁之外

- 启用 GIL

- 在 FreeRTOSConfig.h 中,评论 configSUPPORT_STATIC_ALLOCATION

- 从 osi_TaskCreate 函数中删除 .boot 部分属性

- 使用静态任务创建者启动 simplelink spawn 任务

- 缩小 FreeRTOS 堆并将 TCB+堆栈放置在已释放的位置

- 允许在启用线程的情况下编译引导加载程序

- 删除过时的单例心跳对象

teensy 端口:

- 使用 OSX 特定信息和提示更新自述文件

esp8266 端口:

- modnetwork:使用 struct bss_info::ssid_len 作为 ESSID 长度

-让RTC在deepsleep后正常工作

- 将浮点运算程序切换到 BootROM

- Makefile:为 esptool.py write_flash 启用 --verify 选项

- 使用 RTC 设置文件的日期和时间戳

- main.c:(重新)启动时清除命令行历史记录

- 启用冻结字节码,在模块/子目录中使用脚本

- README:描述如何构建mpy-cross

- websocket_helper.py:避免额外的字符串分配

- websocket_helper.py:修复调试输出中的错字

- modpybuart:允许设置波特率和其他参数

- 在引导脚本中显式收集垃圾

- 切换 webrepl_setup 以使用冻结的字节码

- 切换 webrepl 以使用冻结的字节码

- README:从“高度实验性”提升为“实验性”

- main: init 最近添加的 dupterm_arr_obj 端口状态 var

- esp_mphal: call_dupterm_read: 使用 readinto() 方法

- esp_mphal:切换到 readinto() 后正确处理 dupterm EOF

qemu-arm 端口:

- 禁用 nlrthumb.c 的 gcc LTO 选项

文档:

- esp8266/tutorial/network_basics:小错误修复,ap 变成 ap_if

- 在侧边栏中添加指向 PDF 版本文档的链接

- 库/网络:wipy:修复文字块缩进

- esp.socket:删除未使用的文件

- ure: 错别字修复

- usocket:.only 之后必须有空行::

- library/machine.Pin:提到GPIO和交叉链接.value()函数

- machine.*: 添加“currentmodule::machine”指令

- pyb.*: 添加“currentmodule::pyb”指令

- machine.Pin:删除显式目标

- machine.UART:清理pyboard部分

- machine.*:在方法头中使用适当的类案例

- machine.Pin:为所有常量添加类指示符

- pyb.CAN:将 CAN.initfilterbanks() 显式标记为类方法

- pyb.Pin: af_list() 是普通方法,不是类方法

- pyb.ExtInt,pyb.Pin:标记类方法

- pyb.*:在方法头中使用适当的类大小写

- pyb.Pin:将 .af() 和 .af_list() 方法排序在一起

- builtins:枚举所有已实现的内置函数

- 库/索引:添加builtins.rst

- machine.Pin:消除对象调用方法的歧义

- machine*:删除明确的目标和“机器”。类的前缀

- uctypes:改进文档

- sys: 回溯模块中print_exception() diff 的详细描述

- 添加 sphinx_selective_exclude 扩展套件

- conf.py: 活动 sphinx_selective_exclude 扩展

- 从头开始​​重建文档,仅在适当的情况下需要:: 处理

- 选择:添加文章

- 系统:print_exception:修复/说明

- conf.py: 从 modindex 中排除 cmath for wipy

- 库:修复 usocket.listen() 文档中的错字

例子:

- unix/ffi_example.py:更新当前“ffi”模块API

- unix/ffi_example.py:删除TODO,让输出更清晰

========

2016 年 6 月 3 日星期五 15:45:43 +0100

v1.8.1 ESP8266 的多项改进、增强的 WebREPL 以及对 STM32L4 MCU 的支持

此版本带来了一般改进和错误修复,以及一些新功能。现在有一个 uerror 模块,用于跨端口一致的 errno 处理,以及在引发 OSError 时打印的 OS 错误的文本名称。通过冻结脚本和冻结字节码,都支持冻结包。ESP8266 上的 WebREPL 得到了很大改进,修复了许多错误,现在支持无限(或非常大)数量的重新连接。ESP8266 上的 os 模块现在具有 rename、chdir、getcwd 和 stat。unix 端口现在默认包含 ussl 模块。stmhal 端口支持 STM32L4 MCU,包括 STM32L476 Discovery 板和 LimiFrog 板。

自述:

- 添加明确说明子目录包含更多自述文件

- 将“make deplibs”添加到快速构建部分

-“快速构建”:毕竟使用“make axtls”

CODECONVENTIONS.md:

- 描述 git commit 消息约定

py 核心:

- obj: 添加关于 get_array 返回值和 GC 块的警告说明

- objstr: 缓冲协议的 str/bytes 二进制类型是 'B'

- 运行时:正确处理将用户映射传递给 ** 关键字参数

- repl:如果没有更好的选择,请尝试完成“导入”

- mpz:修复除法例程中 C-shift 溢出的错误

- mpz:在 bignum divmod 例程中进行 Python 风格的除法/取模

- mpz:修复 mpn_div 使其不修改分母的内存

- vstr:vstr_null_terminated_str():将字符串最多扩展一个字节

- vstr:更改分配策略,+16 到请求的大小,而不是 *2

- 添加带有 uPy 定义的 errno 常量的 mperrno.h 文件

- 添加 uerrno 模块,带有 errno 常量和 dict

- 解析:将 uerrno 添加到模块列表中以查找常量

- mperrno:添加EAFNOSUPPORT定义

- repl:修复检查连续性时引号中反斜杠的处理

- gc: gc_dump_alloc_table(): 显示 byte/str 和 (byte)array 对象

- gc:以启用这些类型为条件进行(字节)数组类型转储

- gc: 转储堆时对尾块使用'='字符

- mperrno:增加一些MP_Exxx常量,与网络相关

- moduerrno:向errno模块添加更多常量

- 添加 mp_errno_to_str() 并使用它来提供更好的 OSError msgs

- objfloat, py/modmath: 确保定义了 M_PI 和 M_E

-emitglue:修复与加载 .mpy 文件相关的 AArch64(ARMv8 等)上的构建

- objexcept:不要在构造函数中将 errno 转换为 str,而是在打印中进行

- moduerrno:添加 EACCES,Unix 上非常常见的错误

- gc: gc_dump_alloc_table(): dump heap offset 而不是实际地址

- objstr: 制作专用的分割线功能,支持diff换行

- objstringio:添加关于避免在 .getvalue() 上复制的 TODO 注释

- modstruct:在不支持的格式字符上引发 ValueError

- 流:同时支持“精确大小”和“一个底层调用”操作

- 将常量数据声明为适当的常量

-流:添加 mp_stream_close() 辅助函数

- mphal.h:为 mp_hal_delay_us/mp_hal_ticks_us 提供默认原型

- 返工冻结模块支持以支持包

- objstr: 实现 str.center()

- 允许使用新的冻结“VFS”统计和导入冻结的mpy文件

- makeqstrdata.py: 允许在 qstrs 中有双引号字符

- objnamedtuple:允许将字段名称作为元组传递

- moduerrno: 添加 EEXIST, EISDIR, ECONNREFUSED

- modstruct:允许在结构体格式中有“0”

extmod:

- modlwip:将 errno 转换为使用 MP_Exxx 符号

- modlwip:重做 Python 接受回调的调用方式

- 当包含 extmod 标头时,路径前缀为 extmod/

- modwebsocket:添加close()方法

- modwebrepl:添加 close() 方法

- moduos_dupterm:dumpterm子系统负责关闭流

- modussl:使与非默认 obj 表示更兼容

- machine_i2c:重做 mp_hal_pin 宏以使用 open_drain 和 od_low

- virtpin:开放式C级Pin接口的初始实现

- vfs_fat:用 POSIX 错误号替换文本错误消息

- vfs_fat: 添加 chdir() 方法

- vfs_fat: 添加 getcwd() 方法

- vfs_fat: 添加 vfs.stat() 方法

- 添加机器 time_pulse_us 函数(在 C 和 Python 级别)

- 机器:为 time_pulse_us 添加 MICROPY_PY_MACHINE_PULSE 配置

库:

- timeutils/timeutils:timeutils_mktime 可以接受负时间值

司机:

- cc3000:将timeval 重命名为cc3000_timeval,以避免冲突

- 添加C级函数读取DHT11和DHT22设备

- display/ssd1306:更新 SSD1306_SPI 以使用新 API

工具:

- make-frozen.py:在制作 C 字符串时正确转义十六进制字符

- make-frozen.py:快速修复以支持包模块

- mpy-tool.py:添加对关键配置变量的检查

- make-frozen.py:更新冻结模块支持的最新变化

- mpy-tool.py:在冻结的文件名中包含 .py 扩展名

- mpy-tool.py:不要从冻结的源名称中剥离目录

-upip 升级到 0.7:SSL 证书警告,使用 uerrno,更好的使用信息

测试:

- 运行测试:列出支持的外部板

- 禁用溢出 int 转换的 memoryview 测试

- basics/string_splitlines:恢复分割线的特征测试

- struct1:为未知类型的字符添加测试用例

- 为 str.center() 添加测试用例

- extmod/vfs_fat_ramdisk:为 chdir()、getcwd() 添加测试用例

- misc/recursive_iternext.py:将深度 N 从 1000 增加到 2000

- misc/recursive_iternext.py:提供更细粒度的 N 选择

- pyb/rtc:通过调用init()使pyboard上的RTC测试更加可靠

mpy-cross:

- 添加 -s 选项以指定嵌入的源文件名

Unix 端口:

- mphalport:添加 mp_hal_delay_us() 以与其他端口保持一致

- 启用 uerrno 模块

- 添加在构建中包含冻结字节码的能力

- mpconfigport_coverage.h:为覆盖构建添加专用配置文件

- unix_mphal:实现 mp_hal_ticks_us()

- 支持冷冻包

- Makefile: nanbox build 与 modussl 不兼容,禁用

- 启用“ussl”模块

- mpconfigport.mk:文档MICROPY_STANDALONE make-level 选项

- Makefile: "make axtls": 如果缺少子模块,自动获取

windows 端口:

- 为 msvc 启用多处理器编译

stmhal 端口:

- l4:适配DMA以支持STM32L4 MCU系列

- l4:适配启动代码、时钟配置和中断

- l4:使 CCM/DTCM RAM 以 MCU 类型为条件启动

- l4:在 STM32L4 MCU 上添加对 machine.sleep 的支持

- dma:使 DAC DMA 描述符以拥有 DAC 为条件

- 为 LIMIFROG 板添加板文件

- 对于LIMIFROG板,添加early-init函数进入DFU模式

- dma:修复带有 F4 或 F7 但没有 DAC 的电路板的构建

- sdcard:修复 DMA TX 的初始化以便写入工作

- can:如果没有参数构造,则允许获取现有的 CAN obj

-修复STM32L476-discovery的时钟配置;还添加 I2C2

- 转换为使用内部 errno 符号;启用 uerrno 模块

- 对于网络驱动,转换为使用 MP_Exxx errno 符号

- led:允许 LED 处于 PWM 模式,TIM1 和通道 1-4

- i2c:公开 I2CHandle3 以供自定义 C 代码使用

- sdcard: 允许对 SD 卡进行未对齐的读/写

- 支持使用 .mpy 文件的冻结包

- moduos: getcwd(): 使用 mp_obj_new_exception_arg1()

- dac: 添加 DAC deinit() 方法

- uart:修复stm32l4系列波特率计算错误

esp8266 端口:

- scripts/: 删除 pin.PULL_NONE 的使用

- scripts/inisetup:不要在 master 分支中启动时启动 WebREPL

- scripts/:向 NeoPixel 添加 fill()

- scripts/webrepl:向 webrepl.start() 添加可选的密码参数

- 脚本/webrepl:添加 start_foreground() 方法

- main:将堆大小提高到 28K

- mpconfigport:减少各种解析器相关的分配参数

- 帮助:添加“sta_if.active(True)”命令

- 转换为使用新的 MP_Exxx errno 符号

- 启用 uerrno 模块,弱链接也作为 errno

- 更改为使用内部错误号

- moduos.c:向模块uos添加重命名方法

- scripts/port_diag:添加网络诊断输出

- scripts/webrepl_setup:显示密码占位符字符

- scripts/webrepl_setup:添加最大密码长度检查

- README:添加第一个开始部分

- 添加 APA102 串行可单独控制 LED 支持

- 启用 collections.OrderedDict

- main: 更新 _boot 模块加载最近冻结的模块重构

- scripts/port_diag: 转储网络接口 IP 设置

- esp_mphal:修复 call_dupterm_read() 中的 NLR 缓冲区泄漏

- esp_mphal:处理来自 dupterm 的 Ctrl+C(例如 WebREPL)

- esp_mphal:mp_uos_dupterm_deactivate() 可能引发异常

- 添加 mp_hal_pin_input() 和 mp_hal_pin_output() 函数

- modpybspi:初始化SPI对象时配置引脚

- xtirq:添加 xtirq.h 用于控制 xtensa irqs

- ets_alt_task:如果 irqs 被禁用,则不要运行 ets_loop_iter

- modmachine:添加 disable_irq 和 enable_irq 功能

- 启用 DHT C 级驱动程序

- 添加 dht.py 脚本,用于 DHT11/DHT22 传感器的高层控制

- Makefile:UART_OS 的文档“禁用”值

- modnetwork: scan() 仅在 STA 启用时支持

- modnetwork:保护 scan() 回调免受内存错误的影响

- modnetwork:允许在 scan() 运行时按 ctrl-C

- uart:在 uart_config 中正确初始化 UART0 RXD 引脚

- moduos:添加 chdir() 和 getcwd() 函数

- scripts/ntptime:允许覆盖NTP服务器

- modmachine:添加machine.time_pulse_us函数

- 启用MICROPY_PY_IO_FILEIO 以获取兼容的文本/二进制流

- moduos.c:在esp8266的uos模块中添加stat()

- rtc:在第一次启动时将 RTC 用户内存长度设置为 0

- 提供一个专用变量来禁用 ets_loop_iter

- modpybrtc:处理RTC溢出

文档:

- machine.UART:从 esp8266 文档中过滤掉未实现的 UART 方法

- esp8266/quickref:获取 MAC 地址的新方法

- esp8266/quickstart:删除带有 stop=False 的 i2c 示例

- ustruct:描述支持的类型代码

- ussl:添加基于 axTLS 的 modussl 的基本描述

- esp8266:在文档中包含 ussl 模块

- 机器:使 disable_irq 和 enable_irq 文档对所有人可用

- 库/机器:为 machine.time_pulse_us 添加文档

- math, cmath: 添加端口可用性信息

- 库/索引:添加关于模块可用性的介绍段落

- README: 为 PDF 文档生成添加一些提示

- wipy/tutorial:添加有关 OS X 上屏幕键绑定的注释

- esp8266/quickref:更新 1.8.1 版本的 WebREPL 部分

- esp8266:修复ESP8266网络教程

- esp8266/quickref:使用 Adafruit Huzzah 板的本地图像

- esp8266/general: 添加关于 RTC 溢出的注释

特拉维斯:

- 现在使用 --force-yes 安装 gcc-arm-none-eabi

========

2016 年 5 月 3 日星期二 17:32:32 +0100

v1.8 ESP8266 端口首次通用发布,并支持冻结字节码

此版本标志着 MicroPython 代码库中首次正式发布官方 ESP8266 支持。ESP8266 端口有许多改进和补充,包括:websocket 和 webrepl 模块、深度睡眠模式、UART 读取、增强的 I2C 支持、增强的网络配置、完整的启动脚本序列(内置 _boot.py、boot. py 和 main.py),通过自动闪存大小检测以及文档和教程改进了文件系统支持。

ESP8266 端口的已知问题是:

- 可以使用基本 SSL 支持,但它仅适用于相对较短的数据长度(几千字节)。

- 不支持基于 SSL 的 WebREPL。

- 只能连续启动 5 个左右的 WebREPL 会话(包括文件传输会话),之后板需要硬重置。

- WebREPL 上的文件传输存在大文件(超过几十 KB)的问题。

- 根据设计,仅支持一个并发 WebREPL 连接。

- 软重置不会重置网络堆栈。

除了支持 ESP8266 之外,此版本还带来了冻结字节码,允许离线编译字节码并将其链接到固件中,完全无需在运行时进行编译(以及相关的 RAM 使用)。现在支持基本的 async/await 语法,并且 qstrs 现在在构建系统中自动生成。

下面给出了详细的更改列表。

自述:

- 明确指向所需的依赖项部分

- 将“文档”和“测试”提升为“主要组件”

- 提及 Python 3.5 中的“异步”关键字支持

致谢:

- 添加来自 ESP8266 活动的 842 名支持者列表

py 核心:

- modbuiltins:添加关于设置“_”特殊变量的注释

- 使用语法添加 async/await/async for/async

- 修复常量折叠和 inline-asm 以使用新的异步语法

-emitglue:将 mp_raw_code_t 的 typedef 从 .c 移动到 .h 文件

-发射胶:使 mp_raw_code_t* 参数成为常量指针

- makeqstrdata:将一些代码分解为可以重用的函数

- 添加从 .mpy 文件中冻结持久字节码的能力

- makeqstrdata:为转义字符和 esc 不可打印添加更多名称

- 通过使 ident-rules 显式来简化解析器中的“和”操作

- makeqstrdata:修复具有不可打印 ASCII 的 qstrs 的渲染

- makeqstrdata:添加特殊情况来处理\n qstr

- 在核心中声明帮助、输入、打开内置函数

- 地图:将哈希表分配策略更改为不那么激进

- makeqstrdefs:添加脚本以自动从源中提取 qstr

-frozenmod:将冻结模块的源名称传递给词法分析器

- 重新设计 QSTR 提取,使其以简单明了的方式工作

- 划分qstr提取的“split”和“cat”阶段以提高效率

- 修复了在字典中将字符串作为关键字 arg 传递的错误

- 将 call_function_*_protected() 函数移动到 py/ 以供重用

- makeqstrdefs.py:windows 兼容性

- obj.h:当构造一个 small-int 转换为 mp_uint_t 以进行位移时

- 发射:使用 MP_OBJ_NEW_SMALL_INT 而不是手动位移

- vm: "yield from" 没有处理 MP_OBJ_STOP_ITERATION 优化

- modio:将模块名称重命名为“uio”以与其他模块保持一致

- modcollections:重命名模块名称有“u”前缀以保持一致性

extmod:

- 添加初始framebuf模块

- 添加通用machine.I2C 类,使用bit-bang I2C

- machine_i2c:通过在字节末尾发送 ack/nack 来修复 I2C 读取

- machine_i2c:实现I2C内存读写

- moduos_dupterm:不要在 dupterm 的 read()/write() 中吞下异常

- modlwip: lwip_tcp_receive(): 正确处理非阻塞袜子的 EOF

- modlwip:针对各种边缘条件的更多调试消息

- fsusermount: 在 mount/mkfs 中,在出错时注销 VFS 对象

- modlwip: lwip_tcp_send(): 完整的错误处理

- modlwip: lwip_tcp_receive(): 完整的错误处理

- modlwip:添加在“recv”和“accept”事件上运行回调的能力

- machine_i2c:允许 mp_hal_pin_obj_t 是任何类型,而不是 ptr

- modlwip:保护接收/接受 Python 回调免受异常影响

- modlwip:解决方法 esp8266 sendto 返回 1 的问题

- modlwip: 添加print_pcbs() 调试功能

- modwebsocket:处理CLOSE控制帧

- modussl:出现错误时抛出Python异常

- modussl:支持服务器端 SSL 套接字

- modussl:来自 ssl_read() 的 SSL_OK 意味着“到目前为止没有用户数据”

- modwebrepl:处理WebREPL协议的模块

- modwebrepl:“获取文件”操作的初始实现

- modwebrepl:有内容时继续读取数据

- modwebrepl: GET_FILE: 一次 write() 发送长度前缀块

- modwebrepl:为损坏的网络驱动程序添加速率限制解决方法

- modwebrepl:设置调试默认关闭

- modwebrepl:添加密码支持

- modlwip:为 TCP 套接字实现 sendall() 方法

- 修复检测是否启用浮动的宏的错字

库:

- utils/printf: 重写 DEBUG_printf() 的打印机

- utils/pyexec:来自 pyexec 的条件输出 GC 调用

- utils/pyhelp:将 help(obj) 的实现提取到库函数中

- axtls:更新到最新的上游,修复报告的 MacOSX 构建问题

司机:

- 添加SSD1306 OLED驱动,带I2C和SPI接口

工具:

- mpy-tool.py:处理 .mpy 文件的新工具;目前它可以冻结它们

- mpy-tool.py:添加对 Python 2.7 的支持

测试:

- 为异步 await/for/with 添加 6 个测试

- 为异步测试添加 .exp 文件,以便它们可以与 Python 3.4 一起运行

- 修复 dict1.py 使其不依赖于 dict elems 的顺序

- extmod:将拆分空匹配测试移动到单独的测试文件

- 添加测试用例以从停止的生成器中产生

- run-bench-tests:按字母顺序处理测试

- _io/_collections 模块的更新已重命名

最小端口:

- 添加冻结持久字节码示例(.mpy 文件)

- 禁用异步/等待语法

Unix 端口:

- 如果已经使用 axTLS 构建,则使用 MICROPY_PY_UHASHLIB_SHA1 构建

-在访问它以冻结upip之前确保构建目录存在

- Makefile:使安装更兼容(BSD 等)

windows 端口:

- msvc:使用makeqstrdefs实现自动qstr生成

stmhal 端口:

- 实现基本的 C 级引脚 HAL

- 在机器模块中使用新的通用 I2C 对象

- 启用framebuf模块

- 正确处理 buf/unbuf 传输的 RTS/CTS 流控制

- 添加 Makefile 选项 FROZEN_MPY_DIR 以支持冻结字节码

- 生成冻结字节码,添加qstr文件的依赖

- l4:添加CMSIS文件支持STM32L476

- l4:添加基本的STM32L4xx HAL文件

- l4:适配UART HAL避免64位整数除法

- 由于更改为 hal 更新 HALCOMMITS

- l4:为STM32L476DISC添加板定义文件

- l4: 在 Makefile 中添加一行以构建 L4 系列

- l4:修改adc.c,增加对STM32L4系列的支持

- l4:修改uart.c以支持L4 MCU

- l4:修改usbd_conf.c以支持L4 MCU

- l4:修改rtc.c以支持L4 MCU

- l4:修改timer.c以支持L4 MCU

- 修复 machine.unique_id() 函数以适用于所有 MCU

- l4:修改mphalport以支持L4 MCU

- l4:修改flash.c和storage.c以支持L4 MCU

- l4: 添加对外部中断/事件的支持

- accel:如果无法初始化加速,则引发异常

- 使用 pyhelp_print_obj 函数

- 更改 i2c.scan() 方法以扫描地址 0x08-0x77

- 修复检测是否启用浮动的宏的错字

cc3200 端口:

- 使用 pyhelp_print_obj 函数

- 更改 i2c.scan() 方法以扫描地址 0x08-0x77

- 禁用异步/等待语法

esp8266 端口:

- 启用 websocket 模块

- modnetwork: .config(): 检查请求其配置的接口

- modnetwork: .config(): 添加“authmode”参数

- modnetwork: .config(): 添加“密码”参数(W/O)

- 为初始配置添加 Python 模块

- scripts/inisetup.py:使用预定义的密码设置 WPA/WPA2 AP 模式

- 保护 modpyb.h 头文件不被多次包含

- 实现基本的 C 级引脚 HAL

- 从使用自定义 I2C 驱动程序切换到通用 extmod 一

- 启用framebuf模块

- 在回调助手中,成功调用时弹出 nlr_buf

- esp_mphal:不要在 dupterm 的 read()/write() 中吞下异常

- esp_mphal: call_dupterm_read(): 修复 EOF 上的停用顺序

- 从 C pin 对象中删除 pin_id 字段

- 为不存在的引脚添加虚拟条目以简化引脚逻辑

- 为 GPIO0-15 上的引脚更改添加硬 IRQ 回调

- 从 Python 模块中分离出 1-wire 时序函数以保存 iRAM

- 将整数算法程序切换到 BootROM

- scripts/port_diag.py:收集诊断信息的模块

- 启用 input() 内置

- scripts/_boot:在“”而不是“/”上挂载块设备

- moduos:添加uos.mkdir 函数

- modmachine:添加 reset_cause() 函数

- 调整端口以使用新的自动 qstr 生成

- moduos: 添加 dupterm_notify() 函数

- esp_mphal:保护 dupterm_task_handler() 免受递归执行

- README.md:更新当前事务状态的功能列表

-modesp:允许 esp.deepsleep 为 RF 唤醒选择采取第二个参数

- scripts/flashbdev: 将 1MB FlashROM 中的所有可用空间用于 FS

-modesp: 添加 flash_size() 函数

- 脚本:不要尝试在 512KB 或更少的设备上创建文件系统

- modnetwork: .config(): 添加“频道”参数

- 脚本/flashbdev:禁用调试输出/检查

- scripts/_boot:执行初始设置时打印通知

- scripts/flashbdev:正确引导加载程序闪存大小以匹配实际大小

- modnetwork: .config(): 添加“隐藏的ESSID”参数

- 实现基本的深度睡眠功能

- 添加 uart_rx_wait 和 uart_rx_char 函数

- 实现UART.read功能

- uart:删除过时的 UART rx 缓冲代码

- esp_mphal:删除 mp_hal_feed_watchdog

- 将 mp_hal_pin_obj_t 从 pin ptr 转换为简单整数

- 允许 GPIO16 用作 uPy 引脚 HAL 中的引脚

- 更改软件 SPI 驱动程序以使用通用引脚 HAL

- scripts/websocket_helper:模块封装握手序列

- scripts/websocket_helper:禁用调试输出

- scripts/webrepl:基于C级websocket对象的webREPL

- scripts/webrepl:转换为持久守护进程

- 脚本/webrepl:不要在导入时开始

- scripts/webrepl:允许覆盖端口

-scripts/webrepl:打印连接地址

- scripts/webrepl:打印传入连接的客户端地址

- scripts/flashbdev: 将所有可用的 Flash 用于文件系统

- scripts/webrepl:将“ws://”添加到“守护进程开始于”消息

- Makefile:添加目标以构建 axTLS

- esp8266.ld:将 axTLS 放入 FlashROM

- Makefile:在构建 axtls 时覆盖 abort()

- axtls_helpers:axTLS 的帮助器/包装器函数

- tests/onewire.py:不要在导入时运行测试

- Makefile:支持与从源代码构建的 axTLS 链接

- Makefile:启用“ussl”模块;axTLS 应首先使用“make axtls”构建

- 将 pyb.info() 函数移动到 esp 模块并删除 pyb 模块

- 将 onewire.py、neopixel.py 驱动程序从测试/移动到脚本/

-scripts/onewire.py:简化和改进1-wire驱动

- scripts/neopixel.py:从 neopixel 驱动程序中删除测试功能

- 为 axtls 的 RT_MAX_PLAIN_LENGTH & RT_EXTRA 设置合适的值

- README:添加最近需要的'make axtls'步骤

- modnetwork: 使 WLAN.ifconfig() 读/写

- help: 实现 help() 内置

- 帮助:为基本的 WiFi 配置添加备忘单

- 启用 WebREPL 文件传输速率限制

- 启用 webrepl 模块

- 脚本:将所有初始设置移动到 inisetup 模块

- scripts/inisetup:在文件系统中创建默认的 boot.py

- scripts/webrepl:连接确认提示现在由 modwebrepl 打印

- scripts/webrepl:切换到使用 _webrepl 对象包装器

- scripts/webrepl:添加“首次连接”模式设置密码

- README:提及WebREPL

- Makefile:构建axtls时一定要通过交叉编译AR

- scripts/webrepl_setup:拒绝太短的密码

- 将平台名称从 ESP8266 更改为 esp8266

- modnetwork:删除不推荐使用的wifi_mode()

- esp_mphal:添加ets_esf_free_bufs()等函数

-modesp:添加esf_free_bufs()调试函数

-modesp:添加 malloc() 和 free() 函数

- scripts/inisetup:在启动时启用 WebREPL 自动启动

- modnetwork:删除 .mac() 方法,移至 .config("mac")

- scripts/inisetup:nic.mac() 方法的更新消失了

- scripts/neopixel.py:在像素访问器中交换红色和绿色

- modpybpin:使用 enum+array 而不是 struct 来解析参数

- modpybpin:使用 None 而不是 PULL_NONE 进行无拉配置

- modpybpin:使 pin.irq() 方法采用关键字参数

- 教程:提到 esptool 可通过 pip 获得

- scripts/ntptime:添加简单的NTP客户端

文档:

- esp:枚举闪存访问功能

-机器:开始更新esp8266端口

- speed_python:澄清/概括“缓冲区”小节

- speed_python:概括“浮点”小节

- speed_python:添加更多关于内存视图的细节

- machine: reset_cause() 已为 esp8266 实现

- topindex.html: esp8266: 在主页上启用 quickref/general

- esp8266/general: 为 esp8266 启动“一般信息”

- esp8266:将使用深度睡眠模式的信息添加到 quickref

- esp8266/tutorial:添加教程占位符页面

- ustruct:没有完整的“struct”模块,只有“ustruct”子集

- esp8266: 包含 usocket 模块参考

- library/usocket: 添加到 CPython 的 socket 模块的链接

- usocket:特定于套接字的异常仅适用于 WiPy

- usocket:socket.IPPROTO_SEC 是 WiPy 特定的

- usocket:开头描述一次地址格式

- network: esp8266: scan(): 添加注意 bssid 是 bytes 对象

- 库:将特定于 MicroPython 的模块分组在单独的标题下

-库/索引:将WiPy“微库”移动到相应标题下

- 库/索引:esp8266 与 pyboard/unix 具有相同的标准库集

- 模块“时间”实际上是“utime”

- 库/索引:为“微化”模块制作单节

- 库/索引:从最高到最低标准模块的顺序

- Makefile:基于MICROPY_PORT的默认BUILDDIR

- 库:“os”模块实际上是“uos”

- 修正 uos 和 utime 标题下划线为正确的长度

- library/utime:为unix和esp8266端口添加更多时间函数

- utime:描述 MicroPython 中的 time() 特性

- utime:描述 MicroPython 中的 sleep() 特性

- 库:对 CPython 差异始终使用警告

- ubinascii:清理语法

- 网络:esp8266:添加 wlan.ifconfig() 方法

- 网络:esp8266:描述 wlan.config() 方法

- 使端口/版本侧边栏中的短端口名称小写

- esp8266:更新 quickref 以反映对 1-wire 和 NeoPixel 的更改

- library/utime:详解epochs和日历时间维护

- esp8266/quickref:添加有关 WebREPL 的信息

- ustruct: 文档 pack_into(), unpack_from()

- sys: 文件 sys.modules

- ustruct:修复参数格式

- sys:从 stdin/out/err 的描述中删除特定于端口的详细信息

- sys: 阐明 sys.exit() 的描述

- sys: 清理print_exception() 描述

- sys:描述sys.implementation

- sys:描述sys.maxsize

- sys: 描述 sys.platform 是端口中立的方式

- 添加_collections 模块引用

- 添加_io 模块引用

- _io 和 _collections 被重命名为具有标准的“u”前缀

- library/machine.I2C:更新以反映 ESP8266 实现

- esp8266/general: webREPL 目前在 quickref 中有描述

- esp8266/general:在“Multitude of board”部分添加更多点

- esp8266/general: 修复列表格式

- esp8266/general: 添加技术规范部分

- esp8266/general: 添加“启动过程”部分

- esp8266_contents:参考一般和教程文档

- 网络:esp8266:通过 .config() 方法设置 MAC 地址

- esp8266:添加ESP8266教程

- 机器:将文档从 WiPy 推广到其他端口

- 机器:将 WiPy 特定的硬件细节移至其一般参考

- 机器:更通用的睡眠描述,WiPy 详细信息的流派

- machine: idle() 描述概括

- library/machine.Pin:更新 pin 文档以反映 ESP8266 支持

- esp8266/tutorial:更新引脚教程以反映 API 的变化

例子:

- http_server_ssl.py:添加HTTPS服务器示例

========

2016 年 4 月 11 日星期一 12:18:10 +0100

v1.7 新的 MicroPython 交叉编译器,以及大大改进的 ESP8266 端口

此版本添加了 MicroPython 交叉编译器,可以生成可以在任何 MicroPython 运行时/VM 中执行的 .mpy 文件(预编译的字节码)。由于 Kickstarter 活动非常成功,ESP8266 端口也得到了极大的改进。这个端口现在有一个替代的事件循环实现,以允许使用从源构建的 lwIP 的正确 Berkeley 套接字,以及一个大大改进的网络模块。现在启用了许多扩展模块(ujson、ubinascii、uctypes、uhashlib、urandom、uheapq、ure、uzlib),机器模块包括 Timer、Pin、PWM、ADC、I2C、SPI 和基本 UART。支持 Bignum,以及 30 位精度浮点和正常错误消息。有 FatFS 支持和 uos.dupterm。

对核心和其他端口进行了许多其他改进和错误修复。基本测试套件现在可以在 16k 堆中运行。内联汇编器函数现在支持 4 个参数。Unix 端口具有 -i 选项以在脚本完成后启动 REPL。stmhal 端口现在将闪存和 SD 卡公开为具有块协议的适当对象。支持通用 STM32F439 板、NUCLEO-F411RE 板以及通过 ST-LINK 和 OpenOCD 部署的目标。

py 核心:

- mpprint:在 printf %u、%x 和 %X 时修复符号扩展

- vm:修复 UNWIND_JUMP 操作码中异常块的弹出

- objstr:对于str.format,添加嵌套/计算字段支持

- objstr:对于str.format,不要在堆上分配字段名

- 扩展原生 type-sig 以使用 4 位,因此 uint 与 ptr 分开

- mpz:完整实现 mpz_{and,or,xor} 用于负参数

- mpz:添加注释掉的 mpz_pow3_inpl 函数,以计算 (x**y)%z

- viper:允许将 Python 整数转换为 viper 指针

- viper:允许 uint 作为索引加载/存储,并提供更好的错误消息

- objarray:为字节数组实现“in”操作符

- mpstate.h:fs_user_mount 现在是标准的、可重用的 uPy 功能

- asmx64:添加用于从 reg64 生成 REX_[WRXB] 位的辅助宏

- asmx64:支持 reg 中的所有 16 个 reg 到内存移动指令

- 发射:添加检查毒蛇商店的RHS是整数类型

- repl:检查关键字后面的标识符字符

- vm:添加宏以挂钩到 VM 中的各个点

- 解析:使用 m_renew_maybe 确保内存就地收缩

- malloc:提供一个适当的基于 malloc 的 realloc_ext 实现

- emitinlinethumb:使用 qstrs 而不是 char* 作为 asm ops 的名称

- 在运行时向配置编译器添加 MICROPY_DYNAMIC_COMPILER 选项

- stackctrl: 添加 mp_stack_set_top() 来显式设置栈顶值

-emitglue:获取在 Linux ARM 平台上工作的持久字节码

- objboundmeth:如果堆分配失败,则在堆栈上分配 arg 状态

- 使用 MP_SMALL_INT_POSITIVE_MASK 检查 uint 是否适合小整数

- 修复将一些宽 int 类型传递给 printf varg 格式列表的问题

- objarray:修复数组重新分配时的数组切片分配

- formatfloat:修复格式化小数字时缓冲区溢出

- objfun:允许使用 4 个参数调用 inline-asm 函数

-frozenmod:允许端口覆盖词法分析器以用于冻结模块

- 解析:不为幂指数分配额外的解析节点

- 解析:查找常量时,先检查它们是否存在,然后再检查类型

- 流:添加 mp_stream_writeall() 辅助函数

- 流:在 mp_stream_writeall() 中修复对象 vs ptr 用例

- modio:io.BufferedWriter 类的初始实现

- modio:实现io.BufferedWriter.flush()

- modio: io.BufferedWriter: 描述刷新策略

- formatfloat:修复浮点格式的情况,其中前导数字为“10”

- formatfloat:修复格式化中缓冲区溢出的更多情况

- parsenum: 使用 pow 函数将指数应用于十进制数

- ringbuf.h:添加可重用的环形缓冲区类

- 地图:防止地图调整失败破坏地图

- 将流相关的声明从 obj.h 移动到 stream.h

- 将连续的发射步骤块组合成 with_cleanup 发射调用

- 在本机发射器中实现基本支持

- objarray: 修复 array.append 所以它不会在 append 失败时扩展

- 流:添加更大的流 ioctl 清单

-流:添加Python级别的ioctl()方法

extmod:

- 更新 uzlib 到 1.2.2

- fsusermount:引入单独的 mkfs() 函数

- fsusermount:实现单独的 umount() 函数

- fsusermount: 更改块协议以支持 ioctl 方法

- modmachine:截断要使用 mem* 存储的整数

- fsusermount:将 umount 公开为公共函数

- fsusermount:支持挂载多个块设备

- vfs_fat:FatFs VFS的面向对象封装

- vfs_fat_diskio:可重用的 FatFs 模块,从 stmhal/diskio 移动

- vfs_fat_file:可重用的 FatFs 模块,从 stmhal/file 移动

- vfs_fat_ffconf:可重用的 FatFs 模块,从 stmhal/ffconf 移出

- vfs_fat:从 stmhal 移动 listdir() 方法以供重用

- vfs_fat: 添加 .remove() 方法

- vfs_fat: 添加 .mkdir() 方法

- vfs_fat:添加fat_vfs_import_stat(),可重用的导入统计例程

- vfs_fat: 添加 .rename() 方法

- vfs_fat:添加词法分析器,从 stmhal 端口移动以供重用

- vfs_fat_lexer:以启用 FatFs 支持为条件

- modlwip:添加 .print() 方法

- modlwip:实现虚拟setsockopt()

- modlwip:添加流协议读取方法

- modlwip:添加虚拟 .makefile() 方法

- modlwip:添加流 .read() 和 .readline() 方法

- modlwip:在 recv 忙等待循环期间检查状态变化

- modlwip:仍然处理关闭套接字的剩余传入数据

- modlwip: 添加 .write() 流方法

- modlwip: 支持非阻塞 recv()

- modlwip:将“套接字连接”检查分解为函数

- modlwip:如果定义,则使用MICROPY_EVENT_POLL_HOOK 进行事件轮询

- modlwip:返工 getaddrinfo() 数据传递

- modlwip:添加socket.setblocking()方法

- modlwip: lwip_tcp_receive: 正确地将 lwIP 错误映射到 POSIX errno

- uctypes:提取值时使用 mp_binary_get_val helper

- uctypes:完成对 FLOAT32 和 FLOAT64 类型的支持

- modwebsocket:WebSocket 辅助函数的启动模块

- modwebsocket:实现读支持

- modlwip:为 setsockopt() 添加 SOL_SOCKET 和 SO_REUSEADDR 常量

- modlwip: 实现 setsocketopt(SO_REUSEADDR)

- modlwip: lwip_tcp_send: 正确处理发送缓冲区满情况

- modlwip:为 lwIP 1.4.0 添加 lwip->POSIX 错误映射

- modlwip: lwip_socket_setsockopt: 正确处理选项值

- vfs_fat_diskio:实际上支持扇区 != 512 与 Python blockdevs

- modwebsocket:正确检查构造函数的参数数量

- modure:由于 4.3BSD 中的冲突,re_exec() 重命名为 ure_exec()

- modwebsocket:确保传播EOF

- modwebsocket:在数据包之间重置掩码

- modwebsocket:添加用于阻止写入非 blk 套接字的选项

- modwebsocket:记录当前片段类型(二进制/文本/等)

- modwebsocket:允许使用 ioctl() 获取上次读取数据的类型

- modwebsocket:实现 MP_STREAM_SET_DATA_OPTS ioctl

- modwebsocket: 拆分 websocket 相关定义以供重用

- modlwip:修复未接受的传入套接字中的数据丢失

- modwebsocket:支持超过 125 字节的写入大小

lib:

- fatfs:添加对大于 512 字节的扇区大小的支持

- axtls:更新到最新的upstream master

司机:

- sdcard:增加对多块读/写的支持;添加 SD 测试

测试:

- open_plus:为“r+”、“w+”打开模式添加测试

- pyb:为pyboard上的stm模块添加简单的测试

- 运行测试:添加 esp8266 目标

- bytearray1:为“in”操作符添加测试用例

- vfs_fat_ramdisk:添加对 VfsFat 的测试

- vfs_fat_ramdisk:切换到基于ioctl的blockdev API

- vfs_fat_ramdisk:允许覆盖扇区大小

- vfs_fat_ramdisk:如果无法分配ramdisk,则跳过测试

- 跳过 WiPy 不支持的 uctypes 和 urandom 测试

- vfs_fat_ramdisk:添加 .listdir() 测试用例

- vfs_fat_ramdisk:为 .remove() 添加测试用例

- vfs_fat_ramdisk:为 .mkdir() 添加测试用例

- vfs_fat_ramdisk:允许在本机模式下运行(不要使用“with”)

- vfs_fat_ramdisk:为 .rename() 添加测试用例

- 减少大对象分配,以便测试可以用小堆运行

- print_exception:无论配置如何,都使用打印相同的异常

- recursive_iternext.py:使低堆友好

- run>-tests:简化测试输出中换行符的处理

- run-tests: 添加 cmd 行选项“--heapsize”

- 将大测试拆分成小文件,以小堆运行

- 专门为压力测试添加新的子目录“stress/”

- 为传递给内联汇编函数的参数添加测试

- 为 io.BufferedWriter 添加测试

- wipy: 添加 Timer 类测试

- float2int_fp30:30 位填充浮点数的 float2int 变体

- string_format_fp30:30 位填充浮点数的 string_format 变体

mpy-cross:

- 添加新组件,MicroPython 字节码的交叉编译器

- 当文件不存在时给出更合理的错误信息

- 从 Makefile 中删除 MICROPY_FORCE_32BIT=1 的设置

unix 端口:

- 文件:停止假设 O_RDWR == O_RDONLY | O_WRONLY

- 启用 VfsFat 支持

- 启用持久字节码(.mpy 文件)的导入

- modsocket:添加有关 close() 错误检查的注释(无)

- unix_mphal: hack 让 uos.dupterm() 真正工作

-实施-i选项(检查-脚本完成后启动REPL)

- 文件:解析 open() 内置的“缓冲”参数

- file: "encoding" arg to open() 不是 kw-only

- djgpp errno.h 没有 ENOTSUP,所以将其定义为 Linux 值

- freedos:二进制文件的条带和大小名称

stmhal 端口:

- diskio:介绍MICROPY_HW_HAS_FLASH设置

- 将特定于 stmhal 的 FatFs 例程/结构移动到 fatfs_port.c

- 文件:重铸为“FatFs 文件”类,以支持其他 VFS 类型

- 文件:对于自包含用例,不定义全局类型

- 改进 NUCLEO-F401RE 构建,使用 UART2 作为 REPL

- 使用块协议将闪存和 SD 卡公开为适当的对象

- 将 mount/umount/mkfs 添加到 os 模块

- 增加设置引脚复用功能的功能

- NUCLEO 401 - 添加一堆缺失的引脚并重新排列引脚

- CERB40 - 为 I2C3 添加引脚定义

- NUCLEO 401 - 添加 I2C2 和 I2C3 的定义

- diskio:为 ioctl INIT/SEC_SIZE 添加默认返回的规定

- 改进了 STM32F4DISC UART 配置设置

- 启用持久字节码(.mpy 文件)的导入

- 让 SPI 使用 mp_hal_gpio_set_af

- 从 dfu-util 切换到默认部署方法的 tools/pydfu.py

- 添加特定于 stmhal 的 README.md 以及此端口的额外详细信息

- 添加 makefile 目标以通过 ST-LINK 部署 stmhal 构建

- 添加对通用 STM32F439 板(非 DISCO)的支持

- 添加 makefile 目标和配置以通过 OpenOCD 进行部署

- 为 NUCLEO_F411RE 添加板定义文件

- 将 STM32F401NUCLEO 重命名为 NUCLEO_F401RE

- NUCELO_F401RE 清理

- 始终为所有 USB 模式(FS 和 HS)启用 USB SOF Irqs

qemu-arm 端口:

- 在每次测试开始时重新初始化 uPy 堆和运行时

- 启用内置覆盖功能,并启用更多测试

cc3200 端口:

- 添加 stmhal/builtin_open.c 来构建

- 修复 VfsFat 重构后的损坏

- 终于修复了 Timer 类 API

- 提高 I2C 驱动程序的鲁棒性

- 简化 Timer API 并修正文档

- 修复“调试”构建

- 在睡眠模式下提高 WLAN 的鲁棒性

- 将“服务器”类重命名为“服务器”以保持一致性

- 更新 WiPy 软件版本至 1.2.0

esp8266 端口:

-modesp: 实现 flash_write(), flash_erase()

- 自述文件:添加有关将工具链添加到 PATH 的提示

- modpybrtc:简化定点乘法

- 将 bignum 实现从 long-long 切换为 mpz

- 启用浮点支持,使用 30 位填充浮点数

- 启用数学模块

- 允许覆盖 Makefile 的 PORT 变量

- 更改“软重启”消息以使用 pyboard.py

- 添加 network.ifconfig()

- 启用 ujson、ubinascii 和 uctypes 模块

- esp8266.ld:SDK 版本部分的链接

- 启用有助于调试的配置设置

- 启用 uhashlib 模块

- 在 mpconfigport.h 中启用更多功能

- 添加 mp_hal_delay_us 函数

- 添加时间。{sleep_ms,sleep_us,ticks_ms,ticks_us,ticks_diff}

- 在开机时重置“虚拟 RTC”

- modutime:支持 time.sleep() 的浮点参数

- 添加带有 mem* 数组的 modmachine

- modmachine:用于操作系统虚拟定时器的定时器的基本实现

- modmachine:改变定时器的参数需要先解除它

- etshal.h:添加定时器函数原型

- modmachine:使用 etshal.h

- modmachine:定时器:添加 ONE_SHOT 和 PERIODIC 符号常量

- 添加自定义 _assert() 函数

- 实现 Pin.__call__() 和 Pin.OPEN_DRAIN 模式

- 在 C 级别公开简单的 pin API

- modpybpin:添加对GPIO16的支持

- modmachine:从 modpyb 添加 Pin 类

- etshal.h:ESP8266 SDK/BootROM 功能更多原型

- 支持在 Ctrl+C 上引发 KeyboardInterrupt

- uart:添加uart_flush()函数

- 允许覆盖 Makefile 的 BAUD 变量

- 启用堆栈溢出检查

- 不要 gc-collect BSS

- 启用 modlwip

- Makefile:为 ESP8266 lwIP 添加定义

- 在 iROM 部分放置更多代码

- main:启动时运行的模块是“boot”,而不是“main”

- 将 pyb.freq 移动到 machine.freq

- modnetwork:允许分别配置STA和AP接口

- 将 wifi_mode() 和 phy_mode() 移动到网络模块

- modnetwork:添加每个接口的 .active() 方法

- modnetwork:将配置定义移动到顶部

- modnetwork:引入接口.config()方法

- modnetwork:为网络接口添加符号名称:STA_IF & AP_IF

- 添加替代事件循环实现

- 在 ets_loop_iter() 中输入 WDT

- ets_alt_task:确保在调用其处理程序之前“弹出”事件

- ets_alt_task:供应商 SDK 1.5.0 更新

- esp_mphal:添加更高级别的事件轮询功能

- 为端口定义MICROPY_EVENT_POLL_HOOK

- 切换到从源代码构建的 lwIP

- 在 FlashROM 中存储冻结的模块

- ets_alt_task:使 FIRST_PRIO=0 覆盖所有任务优先级

- 使 mp_hal_delay_us 使用新的事件框架

- 启用 urandom 模块

- 添加模块弱链接从 json 到 ujson

- 启用更多 extmod:uheapq、ure、uzlib

- 启用非阻塞流支持

- 为 lwip 模块添加“socket”和“usocket”别名

- 在 REPL 中启用自动缩进

- 将 pin 对象公开为公共结构以用作 C pin API

- 添加基本的 I2C 驱动程序,带有 init 和 writeto 方法

- modpybi2c:添加缺少的包含

- 清理 bit-bang I2C 实现

-实现bit-bang I2C读取,并添加i2c.readfrom方法

- 添加单线辅助函数作为 C 模块

-添加tests/onewire.py作为ds18b20 dev的驱动和测试代码

- 实现软件SPI类

- 添加PWM支持

- esppwm.c: 修复 IRQ 处理程序原型

- 将 lexerstr32.o 放入 FlashROM

- 将 utils.o 放入 FlashROM

- 将 ADC 类链接到机器模块中

- 将 esp.neopixel_write 函数添加到 bit-bang WS2812 数据

- 测试:添加 neopixel.py 测试

- 将 modpybi2c.o 放入 FlashROM

- 即将在 init 进程中设置 UART 处理任务

-modesp:flash_write():以 4 个字节的倍数写入

-modesp: flash_read(): 接受要读取的缓冲区作为第二个参数

- README:更新端口的当前状态

- 启用 FatFs 支持

- esp8266.ld: 将 FatFs 放入 FlashROM

- deploy: 使用 --flash_size=8m 选项到 esptool.py

- moduos:为 MP_STATE_PORT(fs_user_mount)[0] 添加 listdir() 代理

- moduos:分解 VFS 方法代理助手

- moduos:添加os.remove(),代理到VFS对象

- 在(软)重置时将 fs_user_mount 状态归零

- 支持从文件系统导入模块

- 实现 os.urandom 函数

- 添加对复制 REPL 输出的基本支持

- 启用 uos.dupterm() 方法

- esp_mphal:添加对调试 UART-only 输出的支持

- 让 esp8266 "os" 消息进入标准 (REPL) UART

- 支持wifi同步扫描

- 修复当前 REPL 行被垃圾收集时的问题

- 切换回通过环形缓冲区累积输入数据

- 实现 dupterm 处理的输入部分

- 重启时重置 term_obj

- 将 PHY 模式常量从 modesp 移动到 modnetwork

- 禁止递归调用 REPL

- 支持专用 REPL 循环(又名拉式)

- 切换到非事件驱动的 REPL 以支持粘贴模式

- uart:现在让 ctrl-C 工作,因为基于事件的 REPL 被禁用

- 使用VM_HOOK在VM内调用ets_loop_iter

- 自述文件:添加文档链接

- 使用 -mforce-l32 帮助将 .rodata 移动到它所属的位置

- 将 iROM 大小提高到 512k

- ets_alt_task:注释掉调试输出

- 最小化 Inst/DataRAM 段和 FlashROM 段之间的间隙

- 切换回闪存组合固件(单个文件)

- 更新 README 中的刷机说明

- 将堆大小提高到 24k

- 将 pyb.hard_reset() 移动到 machine.reset()

- 将 pyb.unique_id() 移动到 machine.unique_id()

- modnetwork:require_if():报告实际需要的接口

- 使供应商操作系统调试输出的目的地可软配置

- 添加machine.UART的初始实现

- README:添加简短的故障排除部分

- 从简洁的错误信息切换到正常的错误信息

- 实现多级引导序列

- 添加 esp.freemem() 和 esp.meminfo() 函数

- 使用 vfs_proxy_call() 实现 mp_builtin_open()

例子:

- http_client.py, http_server.py 不仅仅是 unix,移至网络/

- http_client.py:提高流模式下的CPython兼容性

- http_client.py:引入 main() 函数

- http_server.py:为 Python 3.5 重构/简化

- http_server.py:引入 main() 函数

- http_server.py:绑定到 0.0.0.0,其他主机可以访问

- http_client_ssl.py:HTTPS 客户端示例

文档:

- 正确的 WiPy 计时器文档

- 小改动以提高 machine.Timer 文档的清晰度

- 在 machine.Timer 类上添加关于 PWM 输出引脚的注释

- 正确的 machine.Timer 与占空比相关的代码示例

- 添加 esp8266 快速参考页面,包含基本信息

- esp8266:对 quickref、Timer 和 I2C 类的小调整

- 为版本侧边栏添加versions.html 模板和支持代码

- 允许通过环境变量指定版本列表

- esp8266:修复缩进错误、拼写错误,并添加有关 REPL UART 的信息

- 更新 asm_thumb2_hints_tips 重新返回 asm 函数的类型

- 更新有关将 ADCAll 对象用于 vref/vbat 通道的详细信息

- 添加 Python 速度优化指南,包括最小 viper ref

- esp8266:更新快速参考:i2c.readfrom 和 neopixel 示例

- 更新 asm 教程,现在允许的最大参数数为 4

- 更新 pyb.I2C 构造函数以反映 Pyboard Lite 中的更改

- 提到 pyb.SPI 构造函数接受“X”和“Y”参数

- 更新 pyb.UART.any() 以提及它返回字符数

- topindex.html:仅针对pyboard参考“pyb”模块

- 为 esp8266 添加标准模块列表

- 网络:esp8266:更新有关 WLAN 构造函数的文档

- esp8266 的更多标准模块

- esp:删除 getaddrinfo(),现在按预期在套接字模块中

- esp8266/quickref:注意支持的定时器是虚拟定时器

- esp8266/quickref:添加关于GPIO16的注释

- esp8266: phy_mode() 移至网络模块

- esp8266: esp.wifi_mode() 替换为 network.WLAN.active()

- esp8266: esp.mac() 替换为 network.WLAN.mac()

- WiPy 的正确引脚中断示例代码

- network: esp8266: status is WLAN object method

- network: esp8266: .scan() 现在是同步的并返回结果列表

- 更新版权声明

- esp8266: esp.socket 已弃用,从文档中删除

- os:将措辞更改为更加端口中立

- 机器:将措辞改为端口中立

- ubinascii: 文档 a2b_base64(), b2a_base64()

- esp8266/quickref:添加关于物理与逻辑引脚编号的注释

- ubinascii:将非标准的“sep”参数记录到 hexlify()

- esp8266:启用“机器”模块文档

========

Sun,2016 年 1 月 31 日 23:22:41 +0000

v1.6 unix 中的 IPv6 支持,bignum 常量折叠,urandom 模块,更快的 VCP

在此版本中,有许多错误修复和以前功能的整合。解析器中的常量折叠现在可以对任意精度整数进行操作,并且内联汇编器不再局限于使用小整数或 30 位。添加了 urandom 模块,其中包含最有用的随机函数。uhashlib 模块现在实现了 SHA1。Unix 端口支持 IPv6。stmhal 端口具有用于板到 PC 传输的更快的 USB VCP,并且 Timer(3) 现在已释放供用户通用使用。

py 核心:

-frozenmod:使冻结的模块内容以 0 结尾

-frozenmod:将冻结的模块名称存储在一起,以便快速扫描它们

- 尽可能使用多态迭代器类型来减少代码大小

- 制作目录报表实例成员

- 为实例实现 __dict__

- objstr:在str.format中,处理字符串arg无格式规范的情况

- 解析:优化掉只是围绕 expr 括号的解析节点

- 将 mp_obj_int_is_positive 更改为更通用的 mp_obj_int_sign

- 解析:改进常量折叠以对小整数和大整数进行操作

- inlinethumb:允许汇编程序使用大整数作为指令的参数

- inlinethumb:移除 movwt 指令的 30 位限制

- viper:截断 viper 整数参数,使其最多为 32 位

-emitglue:向 .mpy 持久字节码输出添加更多功能标志

- mpz:修复了 float 到 mpz 的转换,使其适用于 big endian archs

- objint:修复浮点分类,使其适用于 OBJ_REPR_D

- 更改 .make_new 和 .call 参数的类型:mp_uint_t 变为 size_t

- 更改采用变量或 kw 参数的内置 funs 的类型签名

- 将 type.make_new 的第一个参数从 mp_obj_t 更改为 mp_obj_type_t*

-发射胶:使用 mp_obj_is_float 而不是 MP_OBJ_IS_TYPE

- 使用新的代码模式通过 mp_arg_parse_all 解析 kw args

- 添加 ustruct.pack_into 和 unpack_from

- modmicropython:添加stack_use、heap_lock和heap_unlock函数

- inlineasm:添加指定 asm_thumb 函数返回类型的能力

- 运行时:应在启动时立即调用 mp_stack_ctrl_init()

- formatfloat:添加使用指数 > 99 格式化双精度数的功能

- 内置属性:接受关键字参数

extmod:

- moduos_dupterm:使 uos.dupterm() 实现可重用

- moduos_dupterm:使 mp_uos_dupterm_tx_strn() 函数可重用

- moduos_dupterm:在调用 dupterm 的 .write() 时处理异常

- 修复位域的 uctypes 大小计算

- modurandom:添加“urandom”模块

- modurandom:使 yasmarang() 函数静态化

- modurandom:添加一些额外的随机函数

- moduhashlib:添加对 SHA1 的支持(基于 axTLS)

- moduhashlib:使用MICROPY_PY_UHASHLIB_SHA1 配置定义

- moductypes:为标量数组实现赋值

测试:

- uctypes:标量数组的测试项分配

- object_dict.py:为 obj.__dict__ 添加测试

- 允许在 MATH_SPECIAL_FUNCTIONS 禁用时运行浮动测试

- 修复 math_fun_special 测试,使其通过单个 prec 浮点数

- 删除 builtin_dict 测试

- 为 urandom 模块添加一些测试

- 更新pyboard LED 测试

- 对于 pyboard,添加 I2C 错误处理和恢复测试

最小端口:

- 添加足够的代码以在 STM32F4xx 硬件上运行最少的构建

unix 端口:

- unix_mphal:在调用 dupterm 的 .read() 时处理异常

- unix_mphal: 确保用 MICROPY_PY_OS_DUPTERM 包装 dupterm 代码

- modtime: strftime(): 支持第二个参数,但作为 time_t 值

- 添加socket.inet_ntop 函数

- 允许使用 OBJ_REPR_D 构建覆盖构建

- 添加选项以构建 64 位 NaN-boxing 解释器

- modffi: 允许在 OBJ_REPR_D 模式下编译 modffi

- modsocket: accept(): 使 IPv6-clean

- modsocket: sockaddr(): 处理 AF_INET6 地址

windows 端口:

- 启用 urandom 模块

stmhal 端口:

- 当 stm 常量不适合小整数时,将它们设为大整数

- 删除自定义 mod_machine_mem_get_{read,write}_addr 函数

- 添加 os.statvfs

- 添加对构建冻结文件的支持

- 添加对 STM32F401NUCLEO 板的支持

- 使 USB CDC 驱动程序使用 SOF 而不是 TIM3 来传出数据

- 使 TIM3 可供用户使用

- 为 pyboards 上的 LED(3) 和 LED(4) 添加 PWM 功能

- 在 HAL I2C 驱动程序中,将 DMA 设置移动到发送 I2C 地址后

@docs:

- 通过更新 Latex 参数修复 readthedocs 构建

- 将作者设置为“Damien P. George 和贡献者”

- 添加pyboard switch教程到ISR规则文档的链接

- 在 pyboard 的时间文档中包含额外的功能

- 几个小改动:network、pyb、ADCAll 和 inline asm

- 更新说 Timer(3) 是免费的,并详细说明 LED 强度

特拉维斯:

- 将 unix NaN-boxing 构建添加到 Travis 构建

- 切换到 Ubuntu 14.04 Trusty

========

2015 年 12 月 31 日星期四 14:43:19 +0000

v1.5.2 64 位 NaN-boxing、FreeDOS 目标以及 PYBv1.1 和 PYBLITEv1.0 板

此版本为 32 位体系结构上的 64 位 NaN 装箱带来了新的对象模型,同时允许使用双精度浮点数而无需在堆上分配。Unix 和 Windows 端口可以更好地处理 Ctrl-C,并且现在在 unix Makefile 中有一个 FreeDOS 目标。现在使用 Appveyor CI 检查 Windows (msvc) 版本。stmhal 端口具有用于 pyboard、PYBv1.1 和 PYBLITEv1.0 的下一个版本的新板配置文件,以及 STM32F429 探索套件的配置文件。现在有带有 LSI 回退的延迟 RTC 初始化,以及对 SD 卡的 DMA 支持。如果 DMA 空闲 100 毫秒或更长时间,则 DMA 控制器将关闭,以节省功耗。

py 核心:

- mpconfig.h:允许在没有 alloca() 的情况下构建以符合 ANSI C

- 二进制:利用 MP_ALIGN

- asmx86:修复函数定义以使用 int32_t 而不是 int

- 更改 mp_print_strn_t func 类型以使用 size_t 作为 str 长度

- 更改 qstr_* 函数以使用 size_t 作为 str len arg 的类型

- 发射:将 load_const_obj 的 arg 类型从 void* 更改为 mp_obj_t

- 使 mp_setup_code_state 为 func arg 取具体指针

- 在 MP_TAGPTR_* 宏中使用 uintptr_t 而不是 mp_uint_t

- gc:不再使用 mp_uint_t,而是使用 uintptr_t 和 size_t

- 添加 MP_ROM_* 宏和 mp_rom_* 类型并使用它们

- 将所有 obj-ptr 转换包装在 MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR 中

- 在 32 位机器上添加对 64 位 NaN 装箱对象模型的支持

- mpprint:现在支持打印双打(通过 uPy 自己的例程)

- gc: 使GC块大小可配置

- mpconfig:实际上允许覆盖MICROPY_BYTES_PER_GC_BLOCK

- 修复具有位置和带迭代器的星形参数的函数调用

- modsys:实现 sys.modules

- 无需MICROPY_PY_BUILTINS_COMPLEX即可轻松构建

- 添加MICROPY_PY_BUILTINS_MIN_MAX,禁用最小端口

- 添加最小/最大“默认”关键字参数

- 当 args 不是简单表达式时,不要尝试优化 for+range

- 修复从子类实例调用父类方法

- 添加 mp_get_stream_raise 以排除对流方法的检查

- mkrules.mk:不要将 COPT 传递给链接器

- emitinlinethumb:添加对MRS指令的支持

- 使 UNARY_OP_NOT 成为一流操作,以同意 Py 而非语义

- 修复编译器以处理用作默认参数的 lambda

- modmath:向sqrt、log、log2、log10添加域错误检查

- objpolyiter:实现实例多态迭代器类型

- gc:将 GC 块扫描为指针数组,而不是对象数组

- gc:对于终结器,将指向堆的指针解释为具体的 obj

- gc: 使用 size_t 而不是 mp_uint_t 来统计堆相关的东西

- mpprint:为 mp_printf 实现 %llu 和 %lld 格式说明符

- bc: 使用 size_t 而不是 mp_uint_t 来计算 state 和 args 的大小

- qstr:在计算分配的字节数时使用 size_t 而不是 mp_uint_t

- qstr:将 qstr 的类型从 mp_uint_t 更改为 size_t

- 解析:在适当的地方用 size_t 等替换 mp_int_t/mp_uint_t

- 编译:使用 size_t 或 uintptr_t 而不是 mp_uint_t

- 解析:包括 stddef.h 定义 size_t

- compile:简化理解迭代器的编译

-emitglue:为读取功能添加 unistd.h 的包含

- 添加MICROPY_ENABLE_COMPILER 和MICROPY_PY_BUILTINS_EVAL_EXEC 选项

- gc: 打印信息时,使用 %u 而不是 UINT_FMT 作为 size_t 参数

- obj:修复 MICROPY_OBJ_REPR_C 的浮点常量

- mpprint:修复 64 位 Windows 构建的 64 位整数打印

- objstr: 确保 b"%s" % b"foo" 使用未修饰的字节值

- objstr:将 %(格式)运算符应用于字节应返回字节,而不是 str

- 在 try-finally 的 finally 块中处理 return 的情况

- 在查找实例属性时更严格地绑定 self

- map:当它是一个qstr时,为map索引的哈希添加快速路径

- gc:改进标记/扫描调试输出

- 地图:在地图查找中,检查独立于有序地图的固定地图

- nlr:使用单个预处理器符号来检查是否在 Windows 上构建

extmod:

- 从 stmhal 移动 fsusermount.c 以进行跨端口重用

- fsusermount:使用 MICROPY_FSUSERMOUNT 进行配置

- modmachine:地址类型使用 uintptr_t 而不是 mp_uint_t

- moductypes: set_aligned(): 处理 INT64/UINT64

- moductypes:sizeof 操作取决于结构的布局类型

- moduhashlib:为加密算法/sha256.h 添加命名空间前缀

- modubinascii:将“分隔符”参数添加到 hexlify()

- modlwip: tcp_recv: 使用更常规和响应式的轮询模式

- modlwip:将一些 lwip_socket_obj_t 的字段标记为 volatile

- modlwip:套接字状态的用户专有字段名称和值名称

- modlwip:避免在 memcpy() 中使用魔法数值

- modlwip:使用 _ERR_BADF 而不是幻数

库:

- utils/printf: 应用与 uclibc 静态链接的解决方法

- utils/printf: 为 Clang 添加 vsnprintf 别名

- libm:允许非拇指拱使用数学函数

- utils: 添加pyexec_frozen_module 来加载和执行冻结模块

工具:

- 允许 pyboard.py 在 boot.py 打印东西时工作

- 向 pyboard.py 添加选项以等待串行设备准备就绪

-升级upip到0.6.3;更新 _os -> uos 内置模块重命名

- 添加 C 中间处理器使内置表成为正确的哈希表

测试:

- run-tests:提高REPL测试的健壮性

- extra_coverage:更新 sys.modules 添加

- run-tests:如果没有编译,允许跳过复杂的测试

- 添加最小/最大“默认”农业测试

- builtin_minmax:为惰性迭代(生成器)添加测试用例

- 为用户定义的类的“not”添加测试

- 为字节的 % 格式添加测试

- 为流 IO 错误添加测试

- 添加演示 uctypes LITTLE_ENDIAN 打包失败的测试

unix 端口:

- unix_mphal:在 stdout_tx_strn 声明中使用 size_t 而不是 mp_uint_t

- moduselect:修复 poll.poll() 扫描循环中的错误

- moduselect: poll.register(): 重用 poll 数组中释放的条目

- moduselect:支持poll数组的增长

- modtime:sleep():收到EINTR后自动重启

- modtime:sleep():如果KeyboardInterrupt 挂起,则提前返回

- mpconfigport.h:对于MICROPY_NO_ALLOCA=1,甚至不包括alloca.h

- main:在代码块执行结束时检查挂起的异常

- moduselect: register(): 允许使用重复的文件描述符调用

- modtermios:仅在定义时才提供 B57600 和 B115200 常量

- moduselect:为 poll.poll() 实现“one-shot”标志

- 将“_os”模块重命名为“uos”以与裸机端口保持一致

- 将 modmachine 移入 unix 目录

- moduselect:使用 MICROPY_PY_USELECT 进行配置

- modtime: 添加 strftime() 函数(仅支持单参数)

- modos:实现 ilistdir()

- modos:允许使用 _DIRENT_HAVE_D_INO 配置使用 d_ino

- modos:添加 errno() 函数来获取/设置 errno 值

- 添加 FreeDos 目标

- 更改 _DIRENT_HAVE_D_INO 的定义逻辑以匹配其他宏

- unix_mphal:正确初始化struct sigaction

- unix_mphal:始终将 sigaction.sa_flags 设置为 0

- machine_mem 改进

- 按下 Ctrl-C 时正确取消 REPL 输入

- unix_mphal:直接从信号处理程序中引发 KeyboardInterrupt

- 实现 uos.dupterm(),以 MICROPY_PY_OS_DUPTERM 为条件

windows 端口:

- 清理makefile

- 支持 64 位 mingw-w64 构建

- 使 keyboard_interrupt_obj 可用,这是标准功能

- 添加对提高 KeyboardInterrupt 的基本支持

- 为 msvc 端口添加 Appveyor CI 构建

- 更好地处理 Ctrl-C

- msvc:更好地处理断言和“无效”参数

- msvc:根据构建类型使用不同的输出目录

- msvc:根据 f925165 中的更改使用新的 modmachine 基础结构

- msvc:添加dirent.h/.c实现

stmhal 端口:

- 使用 LSI 回退实现延迟的 RTC 初始化

- 将 IRQ 置于优先顺序

- 空闲 100 毫秒时关闭 DMA 时钟

- 为 sdcard 添加 dma 支持

- 在 SysTick IRQ 上,一次只处理一个 DMA 通道

- irq: 添加SDIO优先级高于DMA的注释

- irq:将所有 IRQ 子优先级设置为 0,因为它们未被使用

- 将闪存空闲滴答处理程序从 TIM3 移动到 SysTick

- 在 SysTick IRQ 处理程序中,使 uwTick 变量具有非易失性

- 将不同插槽中的存储空闲滴答处理程序处理到 DMA

- 增加UART IRQ的优先级

- 添加 STMicro 对 STM32F429I-DISCO 套件的支持

- 允许 make DEBUG=1 构建

- 使 stm.mem* 支持大整数

- uart.any() 函数现在返回可用字节数

- 使 uart.write() 在 timeout=0 时正确运行

- 为 PYBv1.1 和 PYBLITEv1.0 添加板配置文件

- 将所有 DMA 通道和流定义放在 dma.h 中

- 添加 raise_irq_pri 和 restore_irq_pri 函数

- 保护 SD 卡 DMA 事务免受 USB MSC 争用

- 添加 rtc.init() 方法强制 RTC 重新初始化

- 如果 Cortex 是 M3 或更高,则仅使用 BASEPRI irq 的东西

- 添加选项以从 USB VCP 轮询中释放 TIM3

- 通过 1 个循环缓冲区大小修复 uart

- 格式化文件系统时执行boot.py和main.py

- 在 nlr_jump_failed 中打印异常信息

- 启用两个 USB phys 一起支持

- 计时器:使用 mp_float_t 而不是 float

- 对于 SPI 配置,使用 HW_SPIx_SCK 而不是 HW_ENABLE_SPIx

- 使 uart init 使用结构而不是数组来解析参数

- 扩展SPI支持,全面支持STM32F429上的所有SPI设备

- moduselect:实现“oneshot polling”标志

- 更改 STM32F7DISC 的 PLL 配置

- 机器模块添加mem8/mem16/mem32操作

- 添加 pyb.irq_stats() 以获取有关 IRQ 调用的统计信息

- 将结构 qstr 添加到 MICROPY_PY_STRUCT 所需的 qstr 块

- 为根本没有 USB_HS 的设备修复 usbd_conf.c

cc3200 端口:

- 更正串行闪存磁盘模块中的缓冲区偏移量

- 添加 __get_BASEPRI 和 __set_BASEPRI 内联函数定义

esp8266 端口:

-modesp: 实现 flash_read(offset, size_bytes) 函数

- mac() 函数属于最新 API 的网络模块

-modesp:允许编译出专有的 espconn 东西

@docs:

- 库:添加网络服务器示例

- 添加关于中断处理程序的讨论,包括 uPy 特定技术

pic16bit:

- 使用全局 MICROPY_NO_ALLOCA 设置

端口:

- 将“machine”模块重命名为“umachine”

========

2015 年 11 月 23 日星期一 21:27:33 +0000

v1.5.1 LwIP 支持,以及持久化字节码的初步实现

此版本包括具有滑动支持的 lwip 网络堆栈模块。有一个持久字节码的初步实现,它允许将编译后的字节码保存到 .mpy 文件,以便稍后由另一个 MicroPython 实例加载。双精度浮点格式化现在由内核提供,捆绑的upip模块不再依赖于FFI。stmhal 端口改进了 RTC 启动。有许多错误修复和文档改进。

py 核心:

- makeversionhdr.py 在路径中使用反斜杠

- 内联 asm、vldr 和 vstr 偏移量现在以字节为单位而不是字

- modstruct:支持所有类型的重复计数器,而不仅仅是字符串

- 添加 py/mphal.h 并在所有端口中使用

- 调整对象repr C(30位填充浮点数)以减少代码大小

- 调用 gc_free 时清除终结器标志

- objint_longlong:不是断言,而是抛出溢出错误

- asmthumb:允许使用 -Wsign-compare 和 -Wunused-parameter 进行编译

- emitinlinethumb: 允许使用 -Wsign-compare 编译

- 重新组织字节码布局,使其更加结构化,更易于编辑

- 将所有字节码状态(参数计数等)放入字节码中

- 将常量表添加到字节码中

- 添加 MICROPY_PERSISTENT_CODE 以便代码可以在运行时之外持久化

- 添加MICROPY_PERSISTENT_CODE_LOAD/SAVE 来加载/保存字节码

- 允许导入已编译的字节码文件

- modmath:使 expm1() 在 MICROPY_PY_MATH_SPECIAL_FUNCTIONS

- compile: 编译参数列表时不要不必要地保存状态

- 为 lambda 实现默认和星号参数

- modmath:使 log2、log10 和双曲函数成为 SPECIAL_FUNCTIONS

- 在 mp_state_ctx_t 中,使 mp_pending_exception 可变

- 将键/值存储在哈希表中最早可能的槽中

- 向 py/nlrx86.S 添加 Cygwin 支持

- 添加 mp_compile_to_raw_code() 以返回原始代码对象

-发射胶:添加 mp_raw_code_load_mem 从内存加载原始代码

-emitglue:mp_verbose_flag 的主机定义

- formatfloat:转换为完全可移植的实现

- formatfloat:修复 %f 格式的不正确四舍五入

- formatfloat: 正确处理 %f 格式的整数位计算

- mpz:将异或运算结果归一化以修复比较中的错误

-emitglue:将特征标志标头添加到 .mpy 以检测字节码兼容性

-emitglue:实现const对象的持久保存和加载

- 检查 hasattr 的第二个参数实际上是一个字符串

- 在函数定义中正确检查 * 和 **

extmod:

- modlwip:lwip 网络栈模块的初始提交

- modlwip:slip:使用流协议并且与端口无关

- modlwip: lwip_tcp_send():公共子表达式消除,使用MIN()

- modlwip:socket->incoming 被异步回调改变,必须是 volatile

- modlwip:将无效指针更改为联合,包括新的 mphal.h 文件

- moductypes:实现缓冲协议

- moductypes:处理UINT64时,使用mp_obj_new_int_from_ull()

- re1.5:更新到 0.8,实现 ?: 和 ??,并提高了健壮性

- re1.5:mingw32-gcc 4.2.1 的解决方法问题

- modure:确保早期发现正则表达式中的错误

库:

- lwip:在库目录中添加LwIP堆栈作为子模块

- pyexec:对于粘贴模式,使用“Ctrl”作为键名,而不是“CTRL”

- memzip:将 memzip 从 teensy/ 分解为 lib/memzip

- mp-readline:通过按回车轻松退出自动缩进模式

- fatfs:统一fatfs配置

- pyexec:从 stmhal 目录移动头文件 pyexec.h

- utils/printf: 从 stmhal/ 移动

工具:

- pyboard.py: make -c(内联 Python 代码)选项与 python2 兼容

- pyboard.py:不要在标准输出输出中添加终止 \x04 字符

- 更新到 upip 0.6.2:移除 FFI 依赖

测试:

- jni:测试基本对象操作

- 在 Windows 上运行时确保测试输出有 \r\n 行结束

- base/struct1.py:添加重复计数器测试

- jni: 为List接口的容器添加测试

- float/string_format:为 %f 的不正确舍入添加测试用例

- int_big_xor:测试异或结果是否标准化

- int_big_*:为结果标准化添加更多测试

最小端口:

- 使用 mp_hal_ticks_ms()

- 在 Makefile 中的 gchelper.s 行添加显式注释

unix 端口:

- modjni:不要将 Java 对象传递给不期望它的方法

- modjni:在进行方法解析时实际检查参数类型

- gccollect:回退到基于 setjmp 的寄存器自动获取

- modjni:添加缺少的 get_jclass_name() 函数

- 允许从命令行覆盖 MICROPY_PY_MATH_SPECIAL_FUNCTIONS

- 将标准错误打印从 ANSI C 切换到本机 POSIX

- modos:添加 getenv()

- modos:添加 mkdir()

- modos: getenv(): 正确处理不存在的 envvar

-输入:切换到POSIX I/O进行历史读/写

- 添加 "uselect" 模块,带有 poll() 函数

- modsocket:实现 sockaddr() 函数来解码原始套接字地址

- modsocket:使用 lib/utils/printf.c 定义的 snprintf()

- 在 mp_printf() 方面使用 printf() 实现

- main: 去掉使用 stdio 的 perror()

windows 端口:

- 在查找包含可选功能的目录时不要使用通配符

- 为 msvc 端口添加 usleep() 实现

- REPL:擦除预先计算的字符数而不是清除整行

- 将“time”模块重命名为“utime”以与其他模块保持一致

- 仅在 Visual Studio 2013 或更低版本上调用 _set_output_format()

- 使用 write() 而不是 fwrite() 来避免乱序输出

- 自述文件:弃用 mingw32,建议使用 mingw64

- 更新自述文件中的构建说明

- 修复 Visual Studio 2015 的项目文件

- 允许指定用于 msvc 构建的 python 可执行文件

- 定义 ssize_t 并使用重命名的 mphal 标头

stmhal 端口:

- ffconf.h: 包括 py/mpconfig.h

- 修复 USB_VCP.recv,使其返回实际读取的字节数

- pyexec: 使用 mp_hal_ticks_ms()

- moduselect:使用 mp_hal_ticks_ms()

- 通过 mpconfigboard.h 使加速 AVDD 引脚可配置

-在STM32F7DISC板上启用sdcard

- 添加定义 UNIQUE_ID 地址(每个 MCU 不同)

- 如果 LTE 已启用并准备就绪,则使 RTC init 跳过启动

- 更新 PYBv3 和 PYBv4 引脚定义以包括 MMA 引脚等

- pyexec.c 是常用模块,移至 lib/utils/

- 在 irq.h 中为中断级别添加符号 #defines

- 可以:修复过滤器处理中的错误

- rtc:lSx 振荡器仅在初始上电时初始化

- 添加缺少的正则表达式属性以解析标题注释

- 在 HardFault 时间打印更多信息

- fatFS 配置移动到库文件夹

- moduselect: 暴露 POLLIN/OUT/ERR/HUP 常量

- modmachine:最初尝试添加 I2C 和 SPI 类

cc3200 端口:

- 将创建的套接字添加到注册表

- 在创建时启用 WLAN irq

- 允许在 OPEN_DRAIN 模式下读取引脚值

- 更新 README 以将 pyb 更改为机器

-先设置引脚方向,然后设置值

- 修复FTP命令缓冲区的bug,设置监听backlog为0

-实际上允许指定自定义构建目录

- 从 HAL_Delay() 切换到 mp_hal_delay_ms()

- 从 HAL_GetTick() 切换到 mp_hal_ticks_ms()

- 使用通用的pyexec.c

-修复SPI时钟分频器计算

- 使 telnet 服务器忽略 NULL 字符

- 强制 SSL 方法为 TLSV1

- fatFS 配置移动到库文件夹

- 软重置后卸载所有用户文件系统

- appsign.sh:如果在 Darwin 下运行,请使用 md5

teensy 端口:

- 从 HAL_* 切换到 mp_hal_* 函数

- 切换到使用冻结模块而不是 memzip

esp8266 端口:

- 切换到标准的 mp_hal_*() 函数

例子:

-添加I2C用法示例,以PyBoard加速度计为主题

@docs:

- 添加关于 ssl 套接字和标准套接字的备注

- 正确的 machine.RTC 示例

- 明确指定超时时 UART 流协议方法的行为

- USB_VCP:始终处于非阻塞模式,阐明流方法返回

- wipy: 修复 WLAN quickref 中的错误

- wipy:修复几个错别字并将一些pyboard更改为WiPy

- wipy:修复示例代码中的错误并添加有关 OTA 的注释

- select:详细描述 poll.poll() 返回值

-实际上添加了unix端口索引,因此可以生成它的文档

- library/index.rst: 最低限度适应 unix 端口

- 将生成文档的说明移动到 docs/README.md

- 添加关于 REPL 粘贴模式和 Control-C 的文档

- 选择:文件POLLIN/OUT/ERR/HUP

- 更新 WiPy wlan.connect() 的文档

- wipy:添加有关更改模式时丢失 wlan 连接的警告

- wipy:使wifi/wlan命名与tutorial.rst一致

========

2015 年 10 月 21 日星期三 16:58:52 +0100

v1.5 一流的 REPL、ussl 模块、用于 WiPy 的机器模块、填充浮点数

此版本带来了一流的 REPL 支持,现在具有制表符完成、自动缩进、粘贴模式、历史记录和 _ 来保存最后计算的值。有一个新的 ussl 模块,现在可以构建一个独立的 unix 二进制文件。新的机器 API 在 cc3200 中实现,带有机器模块以及对时间和操作系统模块的补充。stmhal 包含这个新 API 的开始,同时仍然保留与原始 pyb API 的完全向后兼容性。unix 还包括新的时间函数,sleep_ms、sleep_us、ticks_ms、ticks_us 和 ticks_diff。一种新的对象表示可用,它在机器字中存储单精度浮点数(使用 30 位精度),并允许使用没有堆的浮点对象(未在任何端口中启用)。还有错误修复和一般改进。

py 核心:

- 将编译器状态放在 C 堆栈上

- objrange:当索引是切片对象时 range_subscr() 的错误修复

- parsenum: 使用转义字节为 int 解析提供详细错误

- mpz:引发 NotImplError 而不是失败的断言

- mpz:强制mpz_shl_inpl/mpz_shr_inpl 的rhs 为无符号

- mpz:用较小的正整数修正大负数和大数

- 捕获所有整数(大和小)除以零的情况

- 分块分配解析节点以减少碎片和内存使用

- 允许在没有本机发射器的情况下启用内联汇编器

- 在整数的常量折叠否定时修复边缘情况

- 发射:为不支持的一元操作引发 ViperTypeError

- 不要为赋值或 kwargs 生成不必要的解析节点

- 从 and-rule 创建解析节点时的因子逻辑

- makeqstrdata.py:捕获并报告空输入文件的情况

- 将 MP_BOOL() 重命名为 mp_obj_new_bool() 以保持命名的一致性

- 将粘贴模式添加到友好的 REPL,通过 CTRL-E 输入

- 在 REPL、帮助、自述文件和杂项中将“Micro Python”重命名为“MicroPython”

- objarray:允许创建空指针数组,作为 CPython 的扩展

- 将常量折叠从编译器移动到解析器

- 使解析器错误处理更清晰,更少像意大利面条

- 允许将 MicroPython 构建为静态库

- 添加对首次导入时从内置模块调用 __init__ 的支持

-在viper发射器中实现ptr32加载和存储

- 由于新的 qstr 块分配,修复了 qstr 内存使用的计算

- 删除 mp_plat_print 中对 printf/fwrite 的依赖

- 通过在展开 exc 堆栈时弹出 for-iter 来修复 +for+return 错误

- 为内联汇编器添加选项以支持 ARMv7-M 指令

- 在 REPL 中添加对 _ 的支持以保存最后计算的值

- 流:允许重用 is_nonblocking_error()

- 向内联 Thumb2 汇编程序添加 lsl/lsr/asr 操作码支持

- 添加 mp_obj_is_float 函数(宏)并在适当的地方使用它

- 将 float e/pi consts 移动到 objfloat 并使 mp_obj_float_t 私有

- 使浮动表示可配置为对象表示

- 添加对象repr "C",其中obj 字填充30 位浮点数

- nlrthumb: 兼容 Cortex-M0 (ARMv6M instr set)

extmod:

- 添加 modussl,一个基于 axTLS 的 SSL 套接字封装模块

库:

- axtls: 添加 axtls git 子模块, modussl 的依赖

- libffi:将libffi添加为子模块

- mp-readline:将 n_chars 参数添加到 mp_hal_erase_line_from_cursor

- 默认情况下使 netutils.h 可用于所有端口

司机:

- sdcard:允许最多 5 次重试来初始化 SD 卡

工具:

- upip:更新到 0.5.9

- pyboard:添加 -c 参数以运行作为字符串传递的程序

测试:

- wipy:提高时间测试的鲁棒性

- wipy: 提高 rtc_irq 测试的鲁棒性

- wipy: 添加机器模块测试

- 测试切片不从零开始的范围

- 为 mpz 代码添加进一步的测试

- 允许测试通过 CPython 3.5

- 为字典键/值对的评估顺序添加测试

- 在 pyb RTC 测试中,检查唤醒寄存器值

- 为 viper 16/32 位加载/存储和省略号添加更多测试

- jni: 开始添加 modjni 测试

- extmod:为 sleep_ms/us()、ticks_ms/us/diff() 添加测试

unix 端口:

- modjni: new_jobject(): 处理空引用

- modjni: call_method(): 如果名称不匹配,则通过 goto next_method 进行清理

- modjni: call_method: 更好的资源释放

- modjni: call_method: 在循环中删除已完成的本地引用

- modjni:为具有 java.util.List 接口的对象实现 len()

- modjni:修复方法参数匹配

- modjni:在列表访问时传播 Java 异常

- modjni:将 Java 的 IndexOutOfBoundsException 转换为 Python 的 IndexError

- modjni: jobject.__str__/__repr__: 返回 Java .toString() 值

- modjni: jclass.__str__/__repr__: 返回 Java .toString() 值

- 添加对构建 axtls 依赖库的支持

- modjni:在Call*Method()之后,应该总是检查Java异常

- modjni:允许访问对象的字段

- modjni: py2jvalue: 支持 bool 和 None 值

- modsocket:修复指向范围外本地人的指针的使用

- 向 shell 启动横幅添加退出和粘贴模式提示

- modtermios: tcsetattr: 如果“when”参数为 0,则视为 TCSANOW

- modjni:call_method:方法返回后检查Java异常

- modjni:添加对 Java List 对象的迭代支持

- 允许针对 Android 构建低至 1.5

- modos:添加 statvfs() 函数

- unix_mphal:实现 HAL_Delay() 和 HAL_GetTick()

- modtime: 实现 sleep_ms(), sleep_us()

- modtime:实现 ticks_ms()、ticks_us() 和 ticks_diff()

- modos:android Bionic 缺少 statvfs(),有 BSD statfs()

stmhal 端口:

- 在 RTC.wakeup 中,修复 wucksel 的设置以获得正确的周期

- 修复 RTC.wakeup 以便它正确计算大周期的 WUT

-修复Windows下USB CDC-only模式

- 启用 REPL 自动缩进;help() 中的文档粘贴模式

- 允许为 DAC 设置位分辨率;默认8个,可以有12个

-使USB序列号实际上是唯一的

- stmhal 机器模块的早期版本

- 添加 sleep_{ms,us} 和 ticks_{ms,us,cpu,diff} 到时间模块

- 实现 os.dupterm (是 pyb.repl_uart)

- uart:如果超时内没有收到字符,则返回EAGAIN错误

- 使 Pin 类接近新的机器模块规范

- rtc: init 使用 YMD 而不是备份寄存器来检测上电

- 启用“所有特殊方法”配置选项

cc3200 端口:

- 新的 irq API,影响所有提供 irq 方法的类

- 新的 WLAN API,包括测试

- 实现对 os.dupterm() 的支持

- 将 pyb 模块重命名为机器

- 禁用 uheapq 和 uhashlib

- 在 wlan.connect 中设置身份验证参数

- 设置模式后总是重置WLAN

- wiPy SW v1.0.0 发布

- 在扫描结果中将“auth”字段重命名为“sec”

- 创建 wipy 模块,移除 HeartBeat 类

- 稍微增加堆栈大小

- 重构网络模块,使服务器成为一个合适的对象

- WLAN 类可以检索现有实例

- 启用 REPL 自动缩进

- uart.read() 如果没有可用字符则返回 EGAIN

- 使 socket.listen([backlog]) 符合 Python 3.5

- 启用“所有特殊方法”配置选项

- 凹凸版本到 1.1.0

文档:

- 更新 esp8266 文档以匹配代码

- 正确描述如何从 pyb.standby() 状态唤醒 MCU

- wipy:更新所有 WiPy 文档以反映新的 API

- wipy:添加wipy和network.server文档

- wipy:添加wipy教程部分

- wipy:添加 usocket 和 ussl 模块的文档

- wipy:对机器模块中的类进行了一些更正

- wipy:删除对“af”的剩余引用,现在是“alt”

- wipy:添加更多教程和示例

@misc:

- travis:在 unix 端口中构建“deplibs”

- README:文档“Ctrl-D”外壳退出

- README:记录如何启用/构建外部依赖项

========

2015 年 9 月 23 日星期三 17:16:22 +0100

v1.4.6 REPL 自动缩进,unix jni 模块,更多测试

py 核心:

- 使冻结集可散列

- 添加MICROPY_PY_BUILTINS_FILTER 来配置过滤器内置

- 使切片属性(开始/停止/步骤)可读(通过启用

MICROPY_PY_BUILTINS_SLICE_ATTRS)

- 添加对数组('q')和数组('Q')的支持

- 添加stream_tell 方法,并用于unix 和stmhal 文件tell

- 使字符串格式化 8 位干净

- 在 REPL 延续中正确处理转义引号

- 当星形参数后跟关键字参数时修复函数参数

- 正确分类看起来像十六进制数字的浮点数(例如 0e0)

- 修复了mpz最大数字存储的计算;修复 sys.maxsize

- 细化 SyntaxError 以重复使用全局/非本地

- 当 unicode 字符点超出范围时引发 SyntaxError

- 修复模格式 str 意外结束的错误报告

- 修复格式错误的错误类型(现在是 ValueError)

- 为 Unicode 名称转义而不是断言引发 NotImplementedError

- 对于 str.endswith(s, start) 引发 NotImplementedError 而不是 assert

- 使 str.rsplit(None,n) 引发 NotImplementedError 而不是 assert

- 通过发出异常链接是

不支持

- 让它_iternext() 识别 IndexError

- 仅在确实需要时才编译函数注释(对于本机发射器)

- 简化 bool 二进制操作的调度

- 启用 unicode 时简化字节对象的打印

库:

- readline:添加自动缩进支持;在行首添加 4 个空格以匹配前一个缩进,如果前一行以冒号结尾;如果只有空格开始一行,退格键会删除 4 个空格

司机:

- nrf24l01:修复SPI相位设置以匹配nRF芯片的规格

工具:

- 将 upip 升级到 0.5.8(添加对实验性 ussl 模块的支持)

测试:

- 在 README 中解释如何跳过测试

- 添加feature_check目录收集能力检测脚本

- 将依赖于字节顺序的测试拆分为 *_endian.py

- 允许跳过依赖字节顺序的测试

- 为 REPL 添加转义引号测试

- 为 bool、bytearray、float、异常添加测试(以提高覆盖率)

- 添加异常链引发语法的测试

- 添加对 set/frozenset 相等性的测试

- 为不合规行为添加测试(相对于 CPython)

- 添加测试,其中 __getitem__ 引发 IndexError 以停止迭代

- 通过删除“testfile”在其自身之后进行 io 测试清理

- 将 int+unicode 测试移动到 unicode 特定的测试目录

- wipy: 添加 I2C 测试

- wipy:UART 未初始化时的附加测试

- wipy:在没有引脚分配的情况下改进 UART 测试

- wipy: 删除对 pyb.Pin 的不需要的依赖

unix-cpy 端口:

- 端口被移除(不再需要),以及核心中的条件代码

Unix 端口:

- 将默认堆大小提高到 1MB(64 位系统上为 2MB)

- 启用 REPL 自动缩进

- 允许从源代码构建 libffi 并链接到它

- 添加“jni”模块以连接到符合 JNI 的 JavaVM

windows 端口:

- 使 mpconfigport.h 与 unix 端口保持同步

- 使 unistd.h 更兼容 posix

stmhal 端口:

- 对 1 字节 SPI 传输使用轮询,而不是 DMA

- 将 'opt' arg 添加到 pyb.main,以设置 mp_optimise_value

- 添加查询当前usb模式的选项

- 添加对 STM32F411 探索板 (STM32F411E-DISCO) 的支持

- 为 Cortex-M7 启用 I&D 缓存

- 修复单精度浮点打印错误

cc3200 端口:

- 实现新的 Pin API

- 实现新的UART API

- 实现新的 I2C API

- 实现新的SPI API

- 实现新的 ADC API

- 实现新的 WDT API

- 实现新的 SD 和 RTC API 以及操作系统和时间模块的扩展

- 改进 uniflash 脚本并使其更加冗长

- 将错误导致的 blynk 周期增加到 100 毫秒

- 在顺序更新时继续覆盖相同的图像

- 改进文件系统检查例程

- 确保在注册时更新睡眠对象

- 减少服务器周期时间以提高FTP传输速率

- 删除 FreeRTOS 挂钩中不需要的循环

- 服务器端 SSL 套接字需要 certfile 和 keyfile

- 不要清除引导加载程序中的 WDT 特殊位

- 在调试模式下禁用一些 uPy 功能以帮助代码适应

- 将心跳周期从 5 秒更改为 4 秒

- 添加 mphal 错误以引发硬件相关异常

esp8266 端口:

- 添加wifi_mode()读取和设置WiFi工作模式

- 添加 wlan.isconnected() 以保持与其他端口的奇偶校验

文档:

- wipy:使 ADC 文档和 quickref 适应新的 API

- wipy:更新 I2C 和 UART 文档以匹配新的 API

- wipy:将引脚添加到 I2C 构造函数

========

2015 年 8 月 11 日星期二 13:42:30 +0100

v1.4.5 大量增加和改进;支持 STM32F2 和 F7 MCU。

py 核心:

- 使 showbc 解码 UNPACK_EX,并为 unop/binop 使用正确的范围

- 使用包装器检查内置方法的自变量,以防止段错误

- 删除 mp_load_const_str 并用内联版本替换使用

- 删除 mp_load_const_bytes 并加载预先创建的字节对象

- 改进 mp_import_name() 调试日志记录

- 在没有活动包的情况下发生相对导入时的情况

- 使用 -m 修复正在运行的包子模块

- 添加从 OSError 子类化的 TimeoutError 异常

- 允许使用调试和字节数组进行构建,但没有数组

- modstruct:为不受支持的重复规范引发 NotImplementedError

- REPL:修复较短名称被较长名称遮蔽的情况

- 通过为空字节预分配空间来防止许多额外的 vstr 分配

- 改进qstr数据的分配策略(节省RAM)

- modbuiltins:实现 round() 以达到精确

- 使 qstr 哈希大小可配置,默认为 2 个字节

- 实现内存视图切片赋值,例如 m1[0:3] = m2[2:5]

- viper:允许函数最多接受 4 个参数

- vipre:编译超过 4 个参数的函数时出错

- 当 str 十六进制转义序列格式错误时引发 SyntaxError

- 修复解析空输入的处理,因此它引发异常

- viper:编译错误现在有函数和文件名的回溯

- REPL:不要在字符串内部查找不匹配的括号/引号

- 为编译错误提供更精确的行号(包括 viper 函数)

- make list += 接受所有参数并添加测试

- makeversionhdr.py:如果没有 git repo,则回退到使用 docs 版本

extmod:

- ubinascii:添加a2b_base64 和b2a_base64 函数

- 机器:使用 /dev/mem(Linux 等)实现物理内存访问

库:

- readline:为光标移动添加 emacs 控制字符(默认禁用)

司机:

- onewire:修复 ds18x20.read_temp 以便在没有给出 rom 时它可以工作

工具:

- 将 upip 更新为 0.5.4:识别并处理“找不到包”错误

- make-frozen.py:使 Python2 兼容

- pydfu.py:修复了新旧版本的 PyUSB

- pyboard.py:修复返回错误的解析,因此最后一个 chr 不会丢失

- pyboard.py:使 enter_raw_repl 更严格更可靠

- pyboard.py:通过减少睡眠时间加快字符读取

- pyboard.py:添加telnet支持

- pyboard.py:使 Python2 兼容

测试:

- 为 open(..., "a") 添加测试用例

- 为具有较小堆大小的端口调整 basics/memoryerror.py

- 为没有浮点的端口调整 misc/feature.py 测试

- 在运行测试脚本中添加对 WiPy 的支持(使用 --target 指定它)

- 将 json 浮点测试拆分为单独的文件

- 为没有包上下文的相对导入添加测试

- 如果“编译”内置不可用,则跳过解析器测试

- 运行 REPL 测试时使用 PTY

- 在slave模式下添加pyboard SPI测试,recv没有master

- 测试 REPL emacs 密钥,但仅当存在时

- 始终对路径使用正斜杠(用于 Windows 测试)

- 修复在 Windows 上运行 cmdline 测试时的异常

- 删除启动横幅的过度规范

Unix 端口:

- 添加 O_WRONLY | O_CREAT 在打开文件进行追加时打开调用(“a”)

- socket.getaddrinfo: 接受 family & socktype 参数

- socket.getaddrinfo:端口是无符号值

- modsocket:实现sendto()、recvfrom()、inet_pton()

- 如果在 OSX 上编译,则将 MICROPY_PY_SYS_PLATFORM 设置为“darwin”

stmhal 端口:

- 修改 dma_init() 以接受 init 结构体作为参数,使其更通用

- 为存储添加配置选项以使用第二个闪存段(默认禁用)

- 为 make-pins.py 添加 I2S 支持

- 在为 WizNet 构建时为 ifconfig 添加 qstr 定义

- 将 HAL Cube 文件移动到 f4/ 子目录,只保留我们使用的那些

-在hal/f2目录下添加STM32CubeF2 1.1.0版本

- 为STM32F2xx系列添加CMSIS设备头文件

- 允许 DAC.write_timed 使用 Timer 对象代替 freq

- 允许 ADC.read_timed 使用 Timer 对象代替 freq

- 在访问之前检查用户块设备是否已安装

- 将 fs_user_mount 指针放在全局状态的根 ptr 部分(修复崩溃)

-添加来自STM32Cube_FW_F7_V1.1.0的hal和cmsis文件

- 添加STM32F7DISC支持

- 分解出带有 1 个 LED 的 USRSW 启动代码和支持板

- 将 GPIO 时钟使能逻辑转换为 mp_hal_gpio_clock_enable

- 添加打印硬故障信息的功能(默认禁用)

- 修复 make-pins.py 以允许端口 K

- 为在不同端口上具有 Tx 和 Rx 的 UART 添加更好的支持

- 在 make-pins.py 中添加对 USART1 和条件引脚的支持

- 添加STM32F7对USB串口和存储的支持

- 为 F7 MCU 启用 I2C 支持

- 启用对 F7 MCU 的 SPI 支持

- 修复配置为 SPI 从设备时的硬故障

- 每个构建生成 modstm 常量

cc3200 端口:

- 在 Timer.callback() 中仅在边缘计数模式下使用值参数

- 创建工具文件夹并添加 update-wipy.py 脚本

- 添加部署目标并提高 update-wipy.py 的健壮性

- 启用更多功能以提高与stmhal的兼容性

- 添加`Pin.name()` 方法

- 调整 update-wipy.py 时间以提高稳定性

- 正确的套接字设置超时时间格式

- 将 CA、证书和密钥文件添加到更新程序列表

- 添加 socket.timeout 和 socket.error 异常

- 如果尝试在 AP 模式下扫描网络,则会引发异常

- 优化WLAN AP模式检查

- 通过 rtc.datetime 方法设置 WLAN 日期/时间()

- 从普通套接字添加 modussl、ssl 套接字

- time.sleep() 现在接收秒,就像 CPython

- 修复 socket recv 和 recvfrom 返回值类型

- 从 modubinascii 启用 base64 方法

- 将中断堆栈大小从 2K 增加到 3K

- 启动时创建 /flash/sys 和 /flash/lib 目录

- 将 simplelink 的套接字错误号转换为 POSIX 值

- 在禁用中断时也使用替代 HAL_Delay

- 正确 udelay 我们进行滴答计算

- 每次尝试增加 telnet Tx 重试延迟

- 为 ustruct 添加结构体弱链接

- 启用WLAN时设置simplelink时间和日期

- 重构和清理套接字关闭代码

- 实施新的 OTA 机制,带有 2 个固件更新插槽

- 如果 /flash/cert 文件夹不存在,则创建它

- 使套接字流方法返回 POSIX 错误代码

- 添加 socket.sendall() (send() 的别名)

- 将引脚从 GPIO 重命名为 GP

- 添加socket.makefile()

- 切换到 QSTR 的 1 字节散列

- 在 ssl.read() 或 ssl.readall() 上忽略 ssl 层关闭错误

- 将 MAC 地址的最后 2 个字节附加到默认 SSID

- 使 I2C 和 SPI API 与 stmhal 相同

- 添加 nic.iwconfig() 以设置/获取 WLAN 配置

- 改进对 WEP 安全的支持

- 在最新固件上启用引导加载程序安全启动

- 修复 ffconf 中关于 '/flash' 字符串长度的错误

- 添加脚本以通过 UniFlash 对 WiPy 进行编程(仅限 Windows...)

- 添加工厂烟雾测试作为工具的一部分

- 加速启动期间的文件系统检查

- 在第一次启动时,总​​是使 AP ssid='wipy-wlan'

- 使 ADC API 与 pyboard 兼容

esp8266 端口:

- 将 scan() 从 esp 模块移动到网络

- 更新 README.md 以反映有效的内容

- 将 status() 从 esp 模块移动到网络

-使pyb.RTC成为一个类型,pyb.RTC()构造一个RTC对象

- 允许轻松覆盖编程波特率

文档:

- 在 pyb 模块中为 CC3200 添加更多文档

- 添加“参考”目录以放置有关语言的文档

- 添加对 Thumb2 内联汇编器的引用

- 使索引链接指向“index.html”而不考虑端口

- 修复 network.WLAN 的重复标签错误

- 更新安全启动注释以匹配实际行为

- 更新 pyb.Accel 文档以反映更改并解释 filters_xyz

- 正确的 nic.ifconfig() quickref 示例

- 添加 i2c 关键字参数仅指示

========

2015 年 6 月 15 日星期一 23:54:22 +0100

v1.4.4 Unix 二进制文件获得制表符补全和内置 upip 等等。

py 核心:

- 允许编译而无需 git 提取版本

- 符合 CPython 使用 padding 打印 nan/inf 的方式

- 将 qstr defs 用引号括起来以防止 C 预处理器

- 向 mp_iternext 添加堆栈检查以捕获嵌套迭代器

- 为 viper 加载/存储索引/值实现对 obj 的隐式转换

- 在 vi​​per 发射器中实现原生乘法运算

- 在内置模块中暴露 KeyboardInterrupt

- 如果堆分配失败,则回退到 Python 堆栈的堆栈分配

- 在 Python 源代码中支持 unicode(utf-8 编码)标识符

- 为 math.log 实现第二个参数(base 的可选值)

- 支持内置 divmod 中的 mpz bignums

extmod:

- 添加 ubinascii.unhexlify

- uctypes 构造函数中的交换地址和描述符参数

库:

- 修复 2000 年 3 月 1 日之前日期的一些问题

- 在 readline 中实现删除键

工具:

- pyboard.py: 允许 pyboard 构造函数采用波特率参数

- pyboard.py:在解析原始 ">" 提示时更改逻辑

- 添加 codestats.sh 来计算代码统计信息,例如大小、速度 unix 端口:

- 添加选项以使用 uPy readline 并默认启用(添加选项卡完成)

- 在标准 uPy 可执行文件中包含 upip 作为冻结模块;标准

使用方式是:micropython -m upip install

- 允许从命令行将脚本转换为 stdin

- make micropython -m 为冻结模块工作

windows 端口:

- 实现 mp_hal_xxx 函数并启用 uPy readline

stmhal 端口:

- 如果写入文件时磁盘已满,则会引发错误

- 为原始字节模式实现 sys.stdin.buffer, sys.stdout.buffer

- 删除所有 PYBVxx 定义并使用通用配置变量代替

- 如果 MCU 有,则添加对 UART5 的支持

- 通过从 DMA 等待循环中删除 wfi 来修复缓慢的 SPI DMA 传输

- 如果禁用 IRQ,则立即从 USB CDC 忙等待循环中断

- 尽可能使 I2C 传输使用 DMA(当启用 IRQ 时)

cc3200 端口:

- 添加 os.rename()

- 添加定时器模块

- 添加带有 SHA1 和 SHA256 的 uhashlib

- 添加 ubinascii 模块

- 实现全套 WLAN 唤醒功能

- 去除网卡抽象层

- 改进 WDT

- 使外围 API 更类似于 stmhal 的

- 提高 ftp 和 telnet 服务器的可靠性

- 为 WLAN 添加天线选择功能

- 向UART添加sendbreak方法

esp8266 端口:

- 添加 uos 模块

- 允许使用 pyb.freq 将 CPU 频率设置为 160MHz

- 添加 pyb.ADC 类

- 给esp模块添加:mac、phy_mode、sleep_type、deepsleep、flash_id

- 将 SDK 更新到 1.1.0 版(MIT 许可)

- 修复通过 UART 传输大量数据时丢失的字符

- 添加带有裸 WLAN() 构造函数的骨架“网络”模块

- 添加 WLAN.connect/disconnect 功能

- 更改 esp_scan 以保持当前的 WiFi 工作模式

文档:

- 文档 esp 模块

- 允许为每个端口生成单独的文档(使用 ..only 指令)

- 为 WiPy 添加初始文档

========

2015 年 5 月 16 日星期六 21:26:43 +0100

v1.4.3 选项卡自动完成,以及各种改进和错误修复。py核心:

- 为具有 attr 访问权限的空间高效元组添加 attrtuple

- 添加 sys.implementation,带有 uPy 名称和版本号

- 修复“inf”和“nan”值的打印

- 原生:修复二进制操作出错时的堆栈调整

- mpz:修复 shl 无法正确截断零位的错误

- 修改“with”实现,使其不使用任何堆

- 添加 sys.exc_info()

- 实现bignum到bytes的转换

- 在 32 位架构上使用 'q' 和 'Q' 参数实现 struct.pack

- 用 Python 编写的 makeversiohdr.py 替换 py-version.sh

- 为 REPL 实现 tab 自动补全

- 将 struct 模块重命名为 ustruct

- 添加 NotImplemented 内置常量

- 基于 Python 临时规则处理用户实例哈希

- 修复函数是闭包时函数参数的命名

- 使用 nan/inf 修复复数打印

extmod:

- 添加机器模块,有mem8、mem16、mem32对象

库:

- 将常见的 mod_network_* 函数移动到 lib/netutils

- 将常用时间函数移动到 lib/timeutils

工具:

- pyboard.py: 添加 --follow" 选项以无限期地等待输出

- 添加脚本以安装“upip”包管理器

测试:

- 添加更多 viper 测试,包括 ViperTypeError

- 覆盖率为 94%

unix 端口:

- modffi:支持传递浮点/双参数

- 为覆盖率构建添加特殊功能以提高覆盖率

- 将未处理的异常打印到 stderr

stmhal 端口:

- 实现 os.uname()

- 更改自动重新加载后将计时器计数器重置为零

- 正确禁用未处理的定时器中断

- 当代码下降到 USB REPL 时自动重新启用 IRQ

- 允许通过 mpconfigboard.h 完全配置 UART 引脚

- 使原始 REPL 与事件驱动版本的 pyexec 一起工作

- 添加 rtc.calibration() 方法来获取/设置 RTC 微调值

- 添加 os.rename()

- 将 readinto() 和 readlines() 方法添加到 sys.stdin 和 pyb.USB_VCP

cc3200 端口:

- 将 WiPy 特定信息添加到 README.md

- 修复 MAKE_SOCKADDR 和 UNPACK_SOCKADDR 中的字节顺序

-创建socket时选择网卡

- 添加延迟以允许 ftp 和 telnet 服务器启动/停止

- 使 Telnet 登录与 Tera Term 一起工作

- 实现 os.uname()

- 使 WLAN 扫描结果成为属性列表

- 使 WLAN.isconnected() 也工作在 AP 模式

- 实现 Sleep.wake_reason()

- 使 WLAN.ifconfig() 返回一个属性

- 启用MICROPY_MODULE_WEAK_LINKS

esp8266 端口:

- 导出站状态()常量

- 添加 esp.socket 类,具有 ESP 风格的套接字功能

- 添加原始 REPL 支持和工作软重置

- 通过硬编码堆栈结束地址修复垃圾收集器

- 添加 socket.onsent() 回调支持

- 添加对冻结模块的支持

- 实现时间功能

- 添加 utime 和 pyb.RTC

- 添加模块弱链接

文档:

- 文档 pyb.stop, pyb.standby, pyb.RTC.wakeup

- 文档 USB_VCP 读写方法

========

Tue,2015 年 4 月 21 日 12:51:14 +0000 v1.4.2 改进了本机代码生成,更好的 printf,支持 F401 和 F411 MCU。

py 核心:

- 实现属性和描述符的删除

- 添加选项以禁用“枚举”和“反向”内置函数

- 可以在原生发射器中调用带有 *args 的函数

- 为原生发射器实现全功能参数传递

- 将 load_attr 和 store_attr 内部类型方法合二为一

- 修复接近 1.0 的浮点数格式

- 支持将字节分配给字节数组切片

- 检修和简化 printf/pfenv 机制

- 修复内置 ord 以便它可以处理字节值 >= 0x80

- inlinethumb:添加对核心浮点指令的支持

- 使 viper 代码生成器在出错时引发 ViperTypeError

库:

- string0.c 现在在 lib/libc/ 中(在 stmhal/ 中)

- fatfs 代码大小减少(在 Thumb2 archs 上减少了 768 字节)

测试:

- 对内置函数的更多测试

- 词法分析器测试

- 覆盖率提高到 93%

stmhal:

- 使 LED 对象打印 LED(x) 以与构造函数保持一致

- 在 USB HID 驱动程序中,设置轮询间隔

- 允许发送超时=0 的 CAN 消息

- 添加对发送和接收 CAN RTR 报文的支持

- 使电路板参数更可配置(HSE PLL、LED4、TIM 等)

- 添加对 F401 和 F411 MCU 的支持

- 添加对 Espruino Pico 板的支持

- 使原始 REPL 模式 8 位干净

cc3200 端口:

- 为 stdio UART 引脚启用上拉

- 在 fatfs 中启用长文件名支持

- 添加WLAN.config_ip(),分配静态IP

- 添加 IPPROTO_SEC 以便可以制作安全套接字

工具:

- 使 pyboard.py 8 位干净,因此它适用于 unicode 字符

文档:

- 文档 pyb.main() 函数

========

2015 年 4 月 4 日星期六 17:41:11 +0100

v1.4.1 无堆栈支持,新的 16 位 PIC 端口。

py 核心:

- 内置 round() 接受第二个参数

- 添加更多特殊方法:__pos__、__neg__、__invert__

- 支持VM中的stackless Python调用,严格和非严格

- 支持适合 16 位架构的对象表示

- 在本机代码发射器中实现闭包

- 实现 str.splitlines() 方法

库:

- fatfs 库升级到 R0.11(修复了取消链接的错误)

pic16bit 端口:

- 16 位 PIC 的新端口(参考 MCU 是 dsPIC33J256GP506)

- 堆是 4600 字节

- 实现带延迟的基本 pyb 模块

- 实现基本的 LED 和 Switch 类

文档:

- micropython 模块的初始文档

- 定时器回调用法的附加示例

- 在 uctypes 中实例化结构对象的文档

========

周日,2015 年 3 月 29 日 18:01:19 +0100

v1.4 更多 Python 特性,减少代码量,91% 的覆盖率测试。

py 核心:

- 添加内置 setattr 函数

- 优化内存不足场景的异常

- 添加一些特殊方法:__mul__、__floordiv__、__truediv__

- 实现数组切片赋值

- 在范围对象中添加对开始/停止/步长属性的支持

- 使内置 abs 与 bools 和 bignums 一起使用

- 添加 collections.OrderedDict 的基本实现

- 添加对函数 __name__ 的支持

- 重构编译器代码以将代码大小减少多达 2k

- 支持描述符 __get__ 和 __set__

内联 Thumb2 汇编程序:

- 更强大的语法检查

- 一般错误修复

- 更好的错误信息

- 添加“它”指令

- 添加bl、bx指令

- 添加 bcc_n, bcc_w 说明

extmod:

- modure:组的错误修复

- modure:添加命名类

库:

- libm: 添加 erf, erfc, lgamma, tgamma

司机:

- 在纯 Python 中添加 onewire 驱动程序

- 添加ds18x20 温度传感器驱动,使用onewire

- cc3100 驱动升级到v1.1.0

测试:

- 很多新测试,包括许多针对 SyntaxError 的测试

- 使用工作服的自动化 covage 测试,覆盖率为 91%

unix 端口:

- 支持 readline 历史保存到文件

stmhal 端口:

- usbdev 代码清理

- 添加 Python 可配置 USB HID 模式

- 添加 CDC only USB 选项

- 改进 USB 描述符(在 Windows 和 Mac 上未经测试)

- 添加UART.sendbreak() 方法发送中断条件

- 添加对 CAN rx 回调的支持

- 如果 UART 无法在 5% 内执行请求的波特率,则会引发错误

- 当回调作为参数传递给 init 时修复计时 init

- 在 TimerChannel 中添加对正交编码器模式的支持

- 修复 ADC.read_timed 以便缓冲区存储尊重元素大小

- 添加RTC.wakeup方法设置唤醒定时器(初步)

- 为 RTC 添加编译时配置选项以使用 LSE 或 LSI

- 与未处理的通道中断相关的错误修复

- 改进了对停止和待机模式的支持

- 公开所有 PYBv1.0 引脚,包括 SD 和 USB 引脚

- 优化 ADC.read_timed,使其采样频率高达 750kHz

- 使其他端口可以使用 pybstdio 代码

cc3200 端口:

- 添加I2C模块

- 添加ADC模块

- 添加SD模块

- 支持连接到 WEP 安全网络

- 添加 WDT 支持

- 添加低功耗支持

- 添加 SPi 模块

esp8266 端口:

- 添加基本的 pyb.Pin 类

各种各样的:

- 在 ACKNOWLEDGMENTS 文件中添加 Kickstarter 支持者列表

size 与以前版本的字节差异(负值表示此版本中的二进制更小):

- 裸臂:-2448

- 最小:-3028

- Unix:+574

- stmhal:+7996

-cc3200:-2984

- 青少年:-10560

- esp8266:-936

- qemu-arm:-844

========

2015 年 2 月 13 日星期五 13:26:44 +0000

v1.3.10 错误修复,CC3200 端口,改进的内联汇编器

py 核心:

- 大

-int 错误修复

- 支持 struct 模块中的浮点数

- 默认情况下,vstr 不再以空值终止 buff

- 正确处理三引号字符串中的 CR/LF

- list.sort 现在有 O(log(N)) 堆栈使用

- 直接在解析器中解析 big-int/float 常量

- 允许子类化本地缓冲区对象

- 在 stmhal 上将 VM 的堆栈大小减少 8 个字节,在 x86 上减少 16 个字节

- 向内联汇编程序添加 ldrex、strex、push、pop、sdiv、udiv、clz、rbit

- 使内联汇编器在出错时报告行号

extmod:

- uzlib:原始放气解码支持

Unix 端口:

- 为覆盖测试添加“coverage”makefile 目标

stmhal 端口:

- ADCAll 对象中的错误修复

- 修复 timer.deinit 中的错误

esp8266 端口:

- 添加esp模块

- 添加连接、断开、状态功能

cc3200 端口:

- CC3200 launchxl 板的新端口

========

周日,2015 年 1 月 25 日 00:10:07 +0000

v1.3.9 内部变化,RAM 和 ROM 减少,新的最小端口

py 核心:

- 许多小的优化、清理和代码大小减少

- 从 Plan 9 标题转移到传统的保护标题

- 改进和优化了浮点到整数的转换

- 修复 mpz 中的右移边缘情况

- namedtuple:使用字符串序列进行初始化

- namedtuple:允许在构造函数中使用关键字参数

- 能够发出编译/运行时警告

- str.format 现在有 kwargs 支持

- 将所有全局状态放在一个状态结构中

- 优化以字节码缓存地图查找结果

- 修复了某些 mpz 函数中“0”的处理

- 实现所有类型的相等性检查

- 添加 qstr cfg 功能

- 现在可以配置 qstr len 存储;默认使用 1 个字节

- 允许在启用更多警告的情况下编译代码

- 添加 LOAD_CONST_OBJ 字节码,直接加载 Python 对象

- 从不实习大型 str/bytes 对象的数据

- 修复除编译器外的默认处理

- 向字节码编译器添加额外的传递以计算堆栈大小

- 实现非常简单的冻结模块支持

- 实现 __reversed__ 槽

- 在本机代码生成器的 finally 处理程序中实现适当的重新提升

库:

- 将 readline 代码从 stmhal 移动到 lib/mp-readline/

- readline 重构以支持事件驱动的使用

- 将 frexp 和 modf 添加到 libm

最小端口:

- 新端口,用于表示最少的工作代码

stmhal 端口:

- 一起收集根指针;提高 GC 速度

- 添加MICROPY_HW_USB_VBUS_DETECT_PIN 选项

- 添加MICROPY_HW_USB_OTG_ID_PIN 选项

- 添加对 FEZ Cerb40 II 板的支持

- 网络模块和 usocket.accept、setsockopt 中的错误修复

qemu-arm 端口:

- 启用 GC 和本机代码生成

- 添加工作测试

- 在 Travis CI 下运行测试

esp8266 端口:

- 使用分配为静态数组的专用堆

- 使用 UART 实现基于任务、事件驱动的接口

- 实现 pyb.hard_reset()

========

2014 年 12 月 29 日星期一 00:51:24 +0200

v1.3.8 对核心、unix 和 stmhal 的功能添加;一般改进。

py 核心:

- 为字节数组和数组对象实现 +、+=、.extend

- 将 mem_info、qstr_info 添加到 micropython 模块

- bytes/bytearray/array 可以由缓冲协议 objs 初始化

- 通过暴露词法分析器类型优化词法分析器;节省 ROM

- 添加 sys.print_exception

- 允许覆盖内置函数

- 修复了范围优化的所有语义问题

- 编译器为错误的全局/非本地提供正确的 SyntaxError 异常

- 每个异常减少 1 个机器字的 VM 异常堆栈大小

- 使字节对象与更多 str 方法一起工作

- 重构并使 mp_bytecode_print 和朋友更有用

- 开始过渡到受保护的包含

- 大量代码清理

- 节省一些 ROM

extmod:

- 添加 ubinascii 模块,使用 hexlify

Unix 端口:

- 添加_os.unlink, _os.system 函数

- ffi 模块中的 64 位清洁

- 时间模块重命名为 utime

stmhal 端口:

- 添加USB_VCP.setinterrupt 方法,禁用CTRL-C

- 使 pyb.[u] 在 irqs 被禁用时延迟工​​作

- 内部网络驱动接口大修

- 修复了 CC3K 和 WIZNET5K 网络驱动程序的错误

- 使用 DMA 进行 SPI 传输(仅当启用 irqs 时)

- 允许 SPI.init 直接指定预分频器

- 增强 pyb.freq 以配置总线频率

- 添加更多数学函数(acosh、asinh、atanh、tan)

- 添加execfile函数

- 升级到最新的 FatFs 驱动程序(现在在 lib/ 中)

- 添加挂载自定义块设备的能力

esp8266 端口:

- 在 irom 部分放入更多的rodata

- 添加 README.md

文档:

- uhashlib、ubinascii、ure、uzlib 的基本文档

- 链接到 LCD 和 AMP 皮肤原理图

- 一般改进

========

2014 年 11 月 28 日星期五 17:48:48 +0000

v1.3.7 转ESP8266,添加uhashlib,改进CAN驱动。

py 核心:

- 支持字节/字节数组的更多操作

- 支持用户定义类型的 __hash__

- 支持数组模块中的 float/double 数组

- TERSE 消息选项的较短错误消息

- 通过 ioctl 添加seek到流协议

extmod:

- 使用 sha256 添加 uhashlib

Unix 端口:

- heapsize 可以带 w 说明符进行字调整

stmhal 端口:

- CAN init 现在需要 sjw, bs1, bs2 args

- 添加CAN过滤器管理

- 修复 HAL 错误引发的错误

esp8266 端口:

- ESP8266 wifi 芯片的新端口

文档:

- 小补充

========

2014 年 11 月 4 日星期二 19:04:12 +0000

v1.3.6 改进了文档,以及其他小改动。

py 核心:

- 添加内置圆形函数

- gc.​​enable/disable 仍然允许手动 GC(根据 CPython)

- 修复用户定义类型的内置调用

- 修复小整数大量右移的问题

Unix 端口:

- 添加“快速”版本

- 改进 uctypes,包括 sizeof 函数

stmhal 端口:

- 支持扩展的 CAN 帧

- USB_VCP 与 select 一起使用

- UART 中对 RTS/CTS 的实验性支持

- 使 UART 位计数数据位的数量,不包括奇偶校验

- pyb.freq 现在允许 8MHz 和 16MHz

文档:

- 将所有内联文档修改并合并到 Sphinx 框架中

- 添加更多教程

========

周日,2014 年 10 月 26 日 22:58:18 +0000

v1.3.5 RAM 节省、内存查看、快速参考等。

核心改进:

- 更好地利用字节码编码空间

- 在字节码中节省大约 10% 的 RAM

- 添加 uheapq 模块

- 添加内存视图内置

- 添加编译内置

- 在 VM 中支持 KeyboardInterrupt

- 用负参数修复整数模

- 小 GC 修复

- 将第二个参数添加到 readinto

unix 端口的新特性:

- CTRL-C 引发 KeyboardInterrupt

- heapsize 选项采用 K 和 M

- -m 执行库模块的选项

stmhal 改进:

- 使 MMA_INT/PB2 引脚可用

- 添加 pyb.hard_reset()

- cc3k recv 改进

- 所有 HAL 错误现在都使用 POSIX 错误代码引发 OSError

- 改进了 Windows 的 USB 配置(Windows 10 上的 CDC 没有驱动程序)

- 在 CDC+HID 模式下使用不同的 USB PID(因此 HID 在 Windows 中工作)

- boot.py 和 main.py 使用 \r\n 换行

- 将 SPI 相位从 1,2 更改为 0,1 以符合行业惯例

- 允许从引脚初始化 DAC 对象

- 改进的原始 REPL 控制代码

- 改进的 pyboard.py 脚本

文档:

- 添加带引脚排列的快速参考页面

========

2014 年 10 月 21 日星期二 22:15:20 +0100

v1.3.4 添加正则表达式和CAN,改进UART等。

py 核心:

- 使用 re1.5 库添加基本的正则表达式支持

- 用 uzlib 替换 zlibd

- 编译器在 SyntaxError 上返回正确的异常

- 为 eval/exec 正确保存上下文

- 在大多数地方使用 mp_[u]int_t 而不是 [u]int

- 在本机发射器中更好的 ARM 支持

- 自动检测机器字节序

- 更好的大端支持

- 可以报告来自锁定 gc 的内存错误

- 内存不足时更强大的词法分析器

- 重命名模块以 u- 开头,并添加模块弱链接

- viper 发射器中的更多原生binops

- 在 vi​​per 中加载+存储的本机指针

- 修复 GC 重新分配,以便块正确收缩

- 常量 if/while 条件的编译器优化

- 为内置的 open() 和 FileIO 添加 kwargs

- 在 Windows 上启用 unicode

stmhal 端口:

- 添加基本的 CAN 总线支持

-大修UART类以使用读/写

- 添加 NRF24L01 驱动程序(纯 Python)

- pyb.freq 可以改变SYSCLK

- 添加 pyb.stop 和 pyb.standby

- 可以使用浮动设置定时器频率

- 定时器支持互补通道和死区时间

- 添加SD卡初始化重试

========

2014 年 10 月 2 日星期四 14:51:17 +0100

v1.3.3 stmhal 中的网络支持,以及改进的 viper 编译器。

核心变化:

- 整理原生发射器和汇编器

- viper 可以编译更多的二进制操作

- viper 支持强制转换(int、ptr8、ptr16)

- viper 可以编译本地存储(例如 p[1] = 42)

- 删除 IOError (改用 OSError)

stmhal 端口:

- 修复 OSX 大容量存储问题,因此 pyboard 可以保持插入状态

- 添加支持 CC3000 和 WIZnet5k 的网络和 usocket 模块(默认禁用)

- 改进了定时器 PWM 中的百分比选项

- 添加 pyb.elapsed_millis, pyb.elapsed_micros

- 内部闪存在创建时被标记为“pybflash”

- 使用 NSS_SOFT 模式初始化 SPI 总线时不要初始化 NSS 引脚

========

2014 年 9 月 25 日星期四 19:42:27 +0100

v1.3.2 核心变化:

-字节码前奏使用较少的RAM

- 之前释放的非实习字符串

- 添加内置模块

- 添加带有转储和加载的 ujson 模块

- mpz div 改变,让 mpz 更有效率

- 一些编译器优化

- 代码的一些简化

- 错误修复 memcpy -> memmove

- 将大多数 int/uint 实例更改为 mp_int_t/mp_uint_t

- 向流协议添加了 ioctl 方法

- divmod, % and // 支持浮点数

Native 发射器增强:

- bug修复

- 支持删除名称和全局

- 最终支持结束

- x86 支持

- x86-64 可以使用扩展的 regs

Unix 端口:

- MIPS 编译支持

stmhal 端口:

- 添加通用选择模块

- 能够选择/轮询 UART 对象

- 适当的 SDHC 支持(卡 > 4gb 现在可以工作)

- 增强定时器支持(PWM、OC、IC)

- 未对齐堆栈指针的重大修复

- 实现了更多数学函数

添加了支持 WIZNet5200 的驱动程序子目录(默认禁用)。

添加了 docs 子目录并移至 Sphinx docs。

改进了青少年支持。

========

2014 年 8 月 28 日星期四 23:37:02 +0100

v1.3.1 错误修复、毒蛇改进等

核心新功能:

- min 和 max 接受 key= 参数

- 接受用户定义的 ==、>、<=、>=

- 对 ARM 的本机支持(非拇指)

- 削减zlibd的RAM和ROM使用

- 显着的 GC 分配加速

Viper 改进:

- 类型注释

- 存储到全局

- 使用本机类型调用函数

- 引发异常

核心错误修复:

- 修复序列乘以负数

- 收集本机代码的 GC 错误修复

- int(b'1234') 现在有效

- 现在可以使字符串长度超过 64k

Unix 端口:

- unix 的 modtermios

- 为 unix 进行安装

stmhal 端口:

- 将代码大小减少了 35k

- 将一些代码放入第一个 16k 块

- 在安全模式下 SD 卡仍然显示为 MSD

- SD 卡初始化修复;应该更可靠

- 添加了 time.mktime; 增强的 time.localtime

- 新引脚功能:模式、拉动、af

- 嵌套 enable_irq/disable_irq

- 添加了 pyb.micros()

- 添加了 USB_VCP.any()

- STM32F4DISC 加速支持通过 staccel.py 脚本

========

2014 年 8 月 12 日星期二 23:24:29 +0100

v1.3 v1.3:新功能和许多错误修复。

新功能包括:

- file.flush, os.stat

- 默认情况下在 unix 和 stmhal 端口上启用 unicode

- 打印函数接受 file= 参数

- I2C 对象允许 16 位内存地址

- 用于改进异常回溯的紧急异常缓冲区

- USB_VCP 对象

- 0:/ 和 1:/ 改为 /flash 和 /sd

- 改进的 Pin 对象

- 可以从 Python 设置引脚交替功能

- 内置反转,可以 len() 和 subscr 范围对象

- 添加 moductypes

- 添加了用于 DEFLATE 解压的 modzlibd

代码改进包括:

- 更高效的行号到字节码映射

- 新STM HAL驱动v1.3.0

错误修复包括:

- mpz (bignum) 修复

-加速启动改进

- GC 中的重要错误修复

========

Sun,2014 年 7 月 13 日 23:34:35 +0300

v1.2 v1.2:Unicode 支持(默认禁用);添加了错误修复和次要功能。

========

Sun,2014 年 6 月 15 日 09:47:27 +0100

v1.1.1 v1.1.1:改进的 LCD 驱动程序、UART REPL 和一些错误修复。

Bumping 版本,因为这个二进制文件将放在下一批 pyboards 上。

========

2014 年 6 月 12 日星期四 19:50:17 +0100

v1.1 v1.1:许多错误修复、增强和功能。

========

Sun,2014 年 5 月 11 日 22:50:27 +0300

v1.0.1 v1.0.1:主要是针对 stmhal/ 的错误修复,针对 py/ 的功能。

主要错误修复:正确刷新USB CDC,设置RTC。

stmhal 的主要功能:改进的原生和毒蛇发射器。

这个版本会在下一批 pyboards 上出现。

========

2014 年 5 月 3 日星期六 19:08:02 +0100

v1.0 1.0 版!这是与下一批 pyboards 一起发货的。