tag:github.com,2008:https://github.com/Python3-Training/micropython/releasesTags from micropython2019-12-20T05:59:02Ztag:github.com,2008:Repository/290133466/v1.122019-12-20T05:59:02Zv1.12: PYBD boards, BLE and littlefs, dynamic native modules, samd and powerpc<p>PYBD boards, BLE and littlefs, dynamic native modules, samd and powerpc</p>
<p>This release sees a reduction in overall bytecode size due to compression
<br />of the bytecode prelude, saving 7 bytes of bytecode per function for
<br />roughly 80% of functions. The bytecode opcode values are also redefined to
<br />group them based on their argument size and format. Support is also added
<br />for the matrix multiplication operator "@" (PEP 465).</p>
<p>The .mpy file format moved to version 5 to support the new bytecode
<br />encoding, and added support for relocation of native machine code, along
<br />with separate rodata and BSS sections. This allows a MicroPython system to
<br />import dynamic native modules, .mpy files that are generated from C code.
<br />Examples of this feature are provided in "examples/natmod/" and
<br />documentation in "docs/develop/natmod.rst".</p>
<p>Some code-size saving optimisations were implemented leading to a reduction
<br />in size of minimal firmware: bare-arm reduced by 584 bytes, minimal x86 by
<br />5476 bytes (partly due to changed compiler optimisation flags) and minimal
<br />ARM Thumb 2 by 1440 bytes (all measured with gcc 9.2.0).</p>
<p>A new mechanism to freeze scripts into firmware is provided - a frozen
<br />manifest - whereby scripts to freeze are listed in a Python file (eg
<br />manifest.py). All ports are updated to use this new feature.</p>
<p>When weak module links are enabled (via MICROPY_MODULE_WEAK_LINKS) an
<br />import will now automatically search for the built-in u-variant of a module
<br />if the non-u-variant fails (eg searches for "ufoo" if "foo" fails), so
<br />ports no longer provide an explicit list of these. The unix and windows
<br />ports now enable this feature.</p>
<p>A performance benchmarking test suite is added which can be used to compare
<br />changes in absolute performance when optimising features, as well as
<br />compare across different ports. See "tests/run-perfbench.py".</p>
<p>Bluetooth (BLE only) support is added via the "ubluetooth" module and
<br />provides the ability to implement the four BLE roles. The BLE stack is
<br />used is Mynewt Nimble and it currently runs on PYBD boards, STM32WB55 MCUs
<br />and ESP32 boards.</p>
<p>Support for littlefs filesystems is added through the MicroPython VFS
<br />interface, and it works on the unix, stm32, esp8266 and esp32 ports.</p>
<p>A new "machine.ADC.read_u16()" method is defined and implemented on stm32,
<br />esp8266, esp32 and nrf ports, providing a consistent way to read an ADC
<br />that returns a value in the range 0-65535. This new method should be
<br />preferred to the existing "ADC.read()" method.</p>
<p>The stm32 port sees support for the new PYBD range of pyboards which
<br />include a fully integrated CYW43xx WiFi/BT chip. USB is enhanced to
<br />support VCP+MSC+HID mode and up to 3x simultaneous VCP interfaces. Support
<br />is also added for STM32WBxx MCUs including BLE. There is a new machine.ADC
<br />class which is compatible with other ports, along with a new machine.Timer
<br />class that implements a software timer with millisecond resolution and
<br />number of active timers only limited by RAM. Support for littlefs is
<br />available by default via uos.VfsLfs2. Documentation for using littlefs is
<br />found in "docs/reference/filesystem.rst".</p>
<p>The esp8266 port has switched to use per-board configurations and builds,
<br />as well as the new frozen manifest feature. It also has optional littlefs
<br />support (requires a separate build).</p>
<p>The esp32 port has the following new features: native code generation,
<br />machine.SDCard, hardware I2C, mDNS queries and responder, esp32.Partition,
<br />esp32.RMT, BLE (requires IDF v4), and built-in support for VfsLfs2. It has
<br />switched to use per-board configurations and builds, and frozen manifests.
<br />The default SSL output buffer is resized from 16kiB down to 4kiB to save
<br />RAM.</p>
<p>There are new, minimal ports to Microchip SAMDxx microcontrollers, and
<br />the bare metal PowerPC architecture.</p>
<p>A code-of-conduct based on the PSF's code is added in CODEOFCONDUCT.md.</p>
<p>The following new Git submodules are added: mbedtls, asf4, tinyusb,
<br />mynewt-nimble. And a new third-party library: littlefs.</p>
<p>A detailed list of changes follows.</p>
<p>py core:
<br />- nativeglue: make private glue funs all static, remove commented code
<br />- nativeglue: remove dependency on mp_fun_table in dyn-compiler mode
<br />- obj: optimise small-int comparison to 0 in mp_obj_is_true
<br />- nlrthumb: save and restore VFP registers s16-s21 when CPU has them
<br />- mkrules.mk: use $(CPP) not $(CC) -E for preprocessor rule
<br />- define EMIT_MACHINE_CODE as EMIT_NATIVE || EMIT_INLINE_ASM
<br />- persistentcode: fix compilation with load and save both enabled
<br />- persistentcode: ensure prelude_offset is always initialised
<br />- asmarm: use __clear_cache on Linux/GCC when creating new asm code
<br />- nlrthumb: check __thumb2__ instead of __ARM_ARCH_6M__
<br />- objgenerator: add missing #if guard for PY_GENERATOR_PEND_THROW
<br />- asmarm: use __builtin___clear_cache instead of __clear_cache
<br />- makeqstrdata.py: allow using \r\n as a qstr if a port requires it
<br />- scheduler: rename sched_stack to sched_queue
<br />- objstringio: guard bytesio_stream_p struct w/ MICROPY_PY_IO_BYTESIO
<br />- objdict: quote non-string types when used as keys in JSON output
<br />- builtinimport: populate __file__ when importing frozen or mpy files
<br />- runtime: allow to override builtins.__import__ with Python func
<br />- modio: call mp_import_name to do resource stream import
<br />- allow to pass in read-only buffers to viper and inline-asm funcs
<br />- showbc: fix off-by-one when showing address of unknown opcode
<br />- implement new sys.atexit feature
<br />- objarray: fix amount of free space in array when doing slice assign
<br />- modmath: implement math.isclose() for non-complex numbers
<br />- introduce MP_UNREACHABLE macro to annotate unreachable code
<br />- nlr: use MP_UNREACHABLE at the end of arch-specific nlr_jump funcs
<br />- compile: improve the line numbering precision for comprehensions
<br />- emitbc: rewrite switch in load_const_tok to reduce code size
<br />- emitbc: make all emit_write_bytecode_* funcs take a stack_adj arg
<br />- objgenerator: move defn of mp_const_GeneratorExit_obj here
<br />- vm: shorten error message for not-implemented opcode
<br />- vm: don't add traceback info for exc's propagated through a finally
<br />- vm: don't add traceback info for exceptions that are re-raised
<br />- add global default_emit_opt variable to make emit kind persistent
<br />- compile: improve the line numbering precision for lambdas
<br />- bc: factor out code to get bytecode line number info into new func
<br />- profile: add initial implementation of sys.settrace feature
<br />- integrate sys.settrace feature into the VM and runtime
<br />- profile: add debugging for sys.settrace feature
<br />- objtuple: allow compatible subclasses of tuple in mp_obj_tuple_get
<br />- modstruct: fix struct.unpack with unaligned offset of native type
<br />- modstruct: fix struct.pack_into with unaligned offset of native type
<br />- binary: change mp_uint_t to size_t for index, size, align args
<br />- bc: fix size calculation of UNWIND_JUMP opcode in mp_opcode_format
<br />- mkenv.mk: add GDB variable
<br />- vm: factor cached map lookup code to inline function
<br />- mkrules.mk: add QSTR_GLOBAL_REQUIREMENTS variable for qstr auto-gen
<br />- persistentcode: enable persistent code saving for Windows ports
<br />- lexer: reorder operator tokens to match corresponding binary ops
<br />- parse: use calculation instead of table to convert token to operator
<br />- compile: use calculation instead of switch to convert token to op
<br />- add support for matmul operator @ as per PEP 465
<br />- bc0: order opcodes into groups based on their size and format
<br />- bc: replace big opcode format table with simple macro
<br />- introduce and use constants for multi-opcode sizes
<br />- split RAISE_VARARGS opcode into 3 separate ones
<br />- nlr.h: factor out constants to specific macros
<br />- emitnative: factor sizeof/offsetof calculations to macros
<br />- rename MP_QSTR_NULL to MP_QSTRnull to avoid intern collisions
<br />- nativeglue: make mp_fun_table fixed size regardless of config
<br />- persistentcode: bump .mpy version to 5
<br />- ringbuf: add helpers for put16/get16
<br />- bc: change mp_code_state_t.exc_sp to exc_sp_idx
<br />- add n_state to mp_code_state_t struct
<br />- compress first part of bytecode prelude
<br />- rework and compress second part of bytecode prelude
<br />- bc: don't include mp_decode_uint funcs when not needed
<br />- compile: disallow 'import *' outside module level
<br />- makeqstrdefs.py: remove unused blacklist
<br />- vm: fix handling of unwind jump out of active finally
<br />- runtime: fix PEP479 behaviour throwing StopIteration into yield from
<br />- emitnative: add support for archs with windowed registers
<br />- emitnative: add support for using setjmp with native emitter
<br />- emitnative: add support for archs that cannot read executable data
<br />- asmxtensa: add support for Xtensa with windowed registers
<br />- add new Xtensa-Windowed arch for native emitter
<br />- persistentcode: make .mpy more compact with qstr directly in prelude
<br />- objtype: add type.__bases__ attribute
<br />- mkrules.mk: add warning/error for invalid frozen config
<br />- objstr: size-optimise failure path for mp_obj_str_get_buffer
<br />- automatically provide weak links from "foo" to "ufoo" module name
<br />- modarray: rename "array" module to "uarray"
<br />- runtime: reorder some binary ops so they don't require conditionals
<br />- stream.h: add MP_STREAM_POLL_NVAL constant
<br />- nativeglue: remove unused mp_obj_new_cell from mp_fun_table
<br />- objgenerator: remove globals from mp_obj_gen_instance_t
<br />- objgenerator: allow pend_throw to an unstarted generator
<br />- persistentcode: move declarations for .mpy header from .c to .h file
<br />- modsys: report .mpy version in sys.implementation
<br />- emitnative: fix typo, REG_PARENT_ARG_RET should be REG_PARENT_RET
<br />- emitnx86: make mp_f_n_args table match order of mp_fun_kind_t
<br />- objdict: support ujson.dump() of OrderedDict objects
<br />- ringbuf: add peek16 method
<br />- compile: coalesce error message for break/continue outside loop
<br />- builtinimport: raise exception on empty module name
<br />- qstr: raise exception in qstr_from_strn if str to intern is too long
<br />- objstringio: slightly optimize stringio_copy_on_write for code size
<br />- objenumerate: check for valid args in enumerate constructor
<br />- persistentcode: add ability to relocate loaded native code
<br />- nativeglue: add new header file with native function table typedef
<br />- nativeglue: add funcs/types to native glue table for dynamic runtime
<br />- persistentcode: make ARM Thumb archs support multiple sub-archs
<br />- nativeglue: add float new/get functions with both single and double
<br />- dynruntime: add support for float API to make/get floats
<br />- dynruntime: implement uint new/get, mp_obj_len and mp_obj_subscr
<br />- persistentcode: move loading of rodata/bss to before obj/raw-code</p>
<p>extmod:
<br />- add network-level class binding to cyw43 driver
<br />- factor out makefile rules from py.mk to new extmod.mk file
<br />- extmod.mk: integrate mbedTLS so it is built from source
<br />- modussl_mbedtls: allow to build with object representation D
<br />- extmod.mk: include mdns app source in lwIP build
<br />- uos_dupterm: add mp_uos_dupterm_poll to poll all dupterms
<br />- moduwebsocket: make close_resp static array const to not use RAM
<br />- modwebrepl: make prompt/ver static arrays const to not use RAM
<br />- modwebrepl: add config option to put filebuf[512] on stack/bss
<br />- modlwip: for TCP send keep trying tcp_write if it returns ERR_MEM
<br />- modlwip: use mp_sched_schedule to schedule socket callbacks
<br />- modlwip: implement raw sockets for lwIP
<br />- modure: make regex dump-code debugging feature optional
<br />- moducryptolib: use "static" not "STATIC" for inline functions
<br />- give vars/funcs unique names so STATIC can be set to nothing
<br />- modujson: support passing bytes/bytearray to json.loads
<br />- crypto-algorithms: add source to header and populate copyright
<br />- vfs_posix: include stdio.h for declaration of function 'rename'
<br />- nimble: add nimble bindings
<br />- modbluetooth: add low-level Python BLE API
<br />- modbluetooth_nimble: implement modbluetooth API with Nimble
<br />- modbluetooth_nimble: use random addr if public isn't available
<br />- modbluetooth: allow MP_BLUETOOTH_MAX_ATTR_SIZE in board config
<br />- modbluetooth: allow config of scan interval/window
<br />- modbluetooth: use us instead of ms for advertising interval
<br />- modbluetooth: increase maximum connections from 1 to 4
<br />- modbluetooth: clear gap_advertise payload when data is empty
<br />- modbluetooth: fix order of params to IRQ_GATTS_WRITE event
<br />- modbluetooth: improve ringbuf handling
<br />- modbluetooth: make gap_disconnect not raise when disconnected
<br />- modbluetooth: in gap_advertise only accept None to stop adv
<br />- re1.5: support escaping within RE classes
<br />- modbluetooth: make UUID support the buffer protocol
<br />- modbluetooth: persist reference to NimBLE service instances
<br />- modbluetooth_nimble: use `data_alloc` length to truncate writes
<br />- modbluetooth: rename module to "ubluetooth"
<br />- factor out block-device struct to make independent of fatfs
<br />- vfs_blockdev: factor out block device interface code
<br />- vfs_blockdev: add extended read/write methods
<br />- add VFS littlefs bindings
<br />- vfs: rename BP_IOCTL_xxx constants to MP_BLOCKDEV_IOCTL_xxx
<br />- vfs: add MP_BLOCKDEV_IOCTL_BLOCK_ERASE constant
<br />- modbluetooth: add gatts_set_buffer
<br />- vfs_lfs: allow compiling in VfsLfs1 and VfsLfs2 separately
<br />- modlwip: unconditionally return POLLHUP when polling new socket
<br />- modlwip: make socket poll return POLLNVAL in case of bad file
<br />- modlwip: unconditionally return POLLHUP/POLLERR when polling
<br />- modussl_mbedtls: fix getpeercert to return None if no cert avail
<br />- modussl_mbedtls: check for invalid key/cert data
<br />- nimble: remove unneeded nimble_sprintf wrapper function
<br />- nimble: factor out stm32-specific HCI UART RX/TX code
<br />- modbtree: make FILEVTABLE const to put it in ROM
<br />- convert nlr_raise(mp_obj_new_exception_msg(x)) to mp_raise_msg(x)
<br />- vfs: add autodetect of littlefs filesystem when mounting
<br />- consolidate FAT FS config to MICROPY_VFS_FAT across all ports
<br />- modbluetooth: prioritise non-scan-result events
<br />- modbluetooth: create UUID from bytes and allow comparison ops
<br />- modbluetooth_nimble: make gap_scan_stop no-op if no scan ongoing
<br />- modbluetooh_nimble: fix UUID conversion for 16 and 32 bit values
<br />- modbluetooth: simplify management of pre-allocated event data
<br />- vfs_lfs: pass flag along to ioctl when init'ing bdev for lfs
<br />- vfs_lfs: fix bug when passing no args to constructor and mkfs
<br />- modbluetooth: simplify how BLE IRQ callback is scheduled
<br />- modbluetooth: remove limit on data coming from gattc data input
<br />- modbluetooth: add optional 4th arg to gattc_write for write mode
<br />- modbluetooth: allow setting ringbuf size via BLE.config(rxbuf=)
<br />- modbtree: use mp_printf instead of printf
<br />- add dynamic-runtime guards to btree/framebuf/uheapq/ure/uzlib
<br />- webrepl: move webrepl scripts to common place and use manifest</p>
<p>lib:
<br />- cmsis: upgrade to CMSIS 5.5.1
<br />- netutils: add DHCP server component
<br />- add new submodule for mbedtls, currently at v2.17.0
<br />- utils/sys_stdio_mphal: add support to poll sys.stdin and sys.stdout
<br />- add asf4 as a submodule
<br />- add tinyusb as a submodule
<br />- stm32lib: update library for updated H7xx, new L0xx, new WBxx
<br />- lwip: update lwIP to v2.1.2, tag STABLE-2_1_2_RELEASE
<br />- mynewt-nimble: add Apache mynewt nimble as a submodule
<br />- littlefs: add littlefs v1.7.2 source
<br />- littlefs: add littlefs v2.1.3 source
<br />- littlefs: add README describing origin and how to gen lfs1/lfs2
<br />- libc/string0: add simple implementations of strspn and strcspn</p>
<p>drivers:
<br />- add driver for CYW43xx WiFi SoCs
<br />- memory/spiflash: add support to put SPI flash in sleep mode
<br />- cyw43: add low-level CYW43xx Bluetooth HCI UART driver
<br />- onewire/ds18x20.py: add support for DS1822 sensor
<br />- sdcard: raise exception on timeout of readinto
<br />- wiznet5k: allow selecting maximum fixed buffer size for MACRAW</p>
<p>tools:
<br />- mpy-tool.py: fix linking qstrs in native code, and multiple files
<br />- mpy-tool.py: fix linking of qstr objects in native ARM Thumb code
<br />- add uf2conv.py from Microsoft/uf2 repository
<br />- pyboard.py: add filesystem commands to ls/cat/cp/rm remote files
<br />- mpy-tool.py: force native func alignment to halfword/word on ARM
<br />- mpy-tool.py: add initial support for frozen with settrace
<br />- mpy-tool.py: fix freezing of non-bytecode funcs with settrace
<br />- make-frozen.py: allow to run with no directory passed in
<br />- add mechanism to provide a manifest of frozen files
<br />- makemanifest.py: eval relative paths w.r.t. current manifest file
<br />- mpy-tool.py: use "<a class="user-mention notranslate" href="https://github.com/progbits">@progbits</a> #" attribute for native xtensa code
<br />- makemanifest.py: follow symlinks when freezing linked directories
<br />- makemanifest.py: skip freezing unsupported files with warning
<br />- makemanifest.py: use sys.executable when invoking Python scripts
<br />- mpy-tool.py: support qstr linking when freezing Xtensa native mpy
<br />- mpy-tool.py: add ability to merge multiple .mpy files into one
<br />- mpy_ld.py: add new mpy_ld.py tool and associated build files
<br />- mpy-tool.py: raise exception if trying to freeze relocatable mpy
<br />- pyboard.py: support executing .mpy files directly
<br />- tinytest-codegen.py: add extra newline and result message</p>
<p>tests:
<br />- rename "bench" tests to "internal_bench" and run-internalbench.py
<br />- add performance benchmarking test-suite framework
<br />- perf_bench: add some benchmarks from python-performance
<br />- perf_bench: add some miscellaneous performance benchmarks
<br />- perf_bench: add some viper performance benchmarks
<br />- stress/recursive_iternext.py: increase large depth to 5000
<br />- run-perfbench.py: add --emit option to select emitter for tests
<br />- add tests for overriding builtins.__import__
<br />- misc/sys_atexit: add test for new sys.atexit feature
<br />- unix: update extra_coverage expected output with new atexit func
<br />- extmod: split json.loads of bytes/bytearray into separate test
<br />- split out test for optimisation level and line-no printing
<br />- add tests for sys.settrace feature
<br />- basics: add test for matmul operator
<br />- update tests for changes to opcode ordering
<br />- micropython: add test for native generators
<br />- basics: add test for getting name of func with closed over locals
<br />- basics: add test for throw into yield-from with normal return
<br />- perf_bench: add bm_fft test
<br />- run-perfbench.py: show error when truth check fails
<br />- run-perfbench.py: skip complex tests if target doesn't enable it
<br />- cpydiff: fix typo in types_bytes_keywords.py doc comments
<br />- rename "array" module to "uarray"
<br />- extmod: add littlefs tests
<br />- extmod: add test for blockdev with standard and extended protocol
<br />- basics: use str.format instead of % for formatting messages
<br />- basics/builtin_dir.py: look for "version" in dir(sys)
<br />- add feature check for bytearray and skip corresponding tests
<br />- basics: split out specific bytearray tests to separate files
<br />- basics: use bytes not bytearray when checking user buffer proto
<br />- add feature check for slice and skip corresponding tests
<br />- basics: split out specific slice tests to separate files
<br />- run-tests: add misc list of tests that use slice, to skip them
<br />- basics: automatically skip tests that use str/bytes modulo-format
<br />- add feature check for uio module and skip corresponding tests
<br />- basics: split sys.exit test to separate file so it can be skipped
<br />- extmod: add test for ussl when passing in key/cert params
<br />- stress: add test for maximum length limit of qstrs
<br />- import: add test for importing viper code with additional flags
<br />- add script to run dynamic-native-module tests
<br />- add .exp files for basics/parser and import/import_override
<br />- stress/qstr_limit: tune params to run with stm32 port
<br />- basics/memoryview_itemsize: make portable to 32- and 64-bit archs
<br />- extmod/vfs_lfs_error: use small ints in seek error test
<br />- pyb: refactor pyboard tests to work on PYBv1, PYBLITEv1 and PYBD</p>
<p>mpy-cross:
<br />- do not automatically build mpy-cross, rather do it manually
<br />- main: only accept full emit cmdline options if native enabled
<br />- make mpconfigport.h compatible with msvc compiler
<br />- add msvc build of mpy-cross
<br />- set number of registers in nlr_buf_t based on native arch
<br />- enable Xtensa-Windowed native emitter
<br />- support armv7em, armv7emsp, armv7emdp architectures
<br />- README.md: add notes about -march and -O</p>
<p>all ports:
<br />- provide mp_hal_stdio_poll for sys.stdio polling where needed
<br />- add new make target "submodules" which inits required modules</p>
<p>minimal port:
<br />- use soft float for CROSS=1 Cortex-M4 target
<br />- frozentest: recompile now that mpy version has changed
<br />- set CSUPEROPT=-Os to get minimal firmware size</p>
<p>unix port:
<br />- mpconfigport.mk: update comment about TLS implementations
<br />- unix_mphal: use CLOCK_MONOTONIC for ticks_ms/us when available
<br />- enable sys.atexit, triggered after the main script ends
<br />- main: only accept full emit cmd-line options if native enabled
<br />- coverage: add coverage tests for ringbuf
<br />- convert to use FROZEN_MANIFEST to specify frozen code
<br />- enable module weak links
<br />- enable uos.VfsLfs1, uos.VfsLfs2 on coverage build
<br />- modtermios: fix output speed setter in tcsetattr</p>
<p>windows port:
<br />- mpconfigport.h: define empty MP_WEAK symbol
<br />- mpconfigport.h: don't define restrict/inline/alignof for C++
<br />- msvc: treat compiler warnings as errors
<br />- Makefile: make use of CFLAGS_EXTRA, LDFLAGS_EXTRA and SRC_MOD
<br />- msvc: remove unneeded definitions for qstr generation
<br />- msvc: move build options from .vcxproj to .props files
<br />- msvc: enable overriding directories used in the build
<br />- msvc: change the way sources are listed
<br />- default to binary mode for files
<br />- enable module weak links</p>
<p>qemu-arm port:
<br />- add testing of frozen native modules
<br />- convert to use FROZEN_MANIFEST to specify frozen code
<br />- add ldscript dependency in the final firmware.elf target
<br />- let tinytest.o be built by standard build rules
<br />- Makefile: allow overriding CROSS_COMPILE from another makefile</p>
<p>stm32 port:
<br />- usb: refactor CDC VCP code to enable N CDC interfaces
<br />- usb: support up to 3 VCP interfaces on USB device peripheral
<br />- boards/make-pins.py: allow pins.csv to skip or hide board-pin name
<br />- boards/pllvalues.py: search nested headers for HSx_VALUE defines
<br />- boards: add board definition files for PYBD -SF2, -SF3, -SF6
<br />- modpyb: add pyb.country() function to set the country
<br />- extint: add extint_set() function for internal C access to EXTI
<br />- mphalport: add support for having MAC in OTP region
<br />- add low-level SDIO interface for cyw43 driver
<br />- integrate in the cyw43 driver and network.WLAN class
<br />- boards/PYBD_SFx: enable CYW43 WLAN driver
<br />- modnetwork: replace generic netif NIC polling with specific code
<br />- integrate optional mbedTLS component for ussl module
<br />- boards/PYBD_SFx: enable ussl module using mbedTLS
<br />- support optional lwIP mDNS responder
<br />- lwip_inc: update to enable mDNS, TCP listen backlog, faster DHCP
<br />- usbd_msc: rework USBD MSC code to support multiple logical units
<br />- usbd_msc: provide custom irquiry processing by MSC interface
<br />- usbd_msc: provide Mode Sense response data in MSC interface
<br />- usb: use ARG_xxx enums to access kw args in pyb_usb_mode
<br />- usb: add "msc" kw-arg to pyb.usb_mode to select MSC logical units
<br />- usbd_msc: allow to compile when USB enabled and SD card disabled
<br />- in link script, define start of stack separately from heap end
<br />- boards: enable ussl module via mbedtls for boards with network
<br />- Makefile: print info messages about use of mboot/QSPI flash
<br />- enter bootloader via a system reset
<br />- boards/pllvalues.py: support HSx_VALUE defined without uint32_t
<br />- boards: add stm32??xx_hal_conf_base.h files with common settings
<br />- boards: rework all stm32??xx_hal_conf.h files to use common code
<br />- usb: fix regression with auto USB PID value giving PID=0xffff
<br />- boards: optimise flash and RAM allocation for L4 boards
<br />- mpu: add helper functions for configuring MPU
<br />- eth: use MPU helper functions to configure MPU for ETH use
<br />- sdram: use MPU helper functions to configure MPU for SDRAM use
<br />- qspi: use MPU to allow access to valid memory-mapped QSPI region
<br />- qspi: force a reset of the QSPI peripheral when initialising it
<br />- qspi: handle bus acquisition
<br />- powerctrl: add hooks for a board to perform actions on sleep/wake
<br />- boards/PYBD_SFx: put SPI flash to sleep during sleep modes
<br />- mpconfigport.h: enable useful networking modules if lwIP enabled
<br />- usb: add support to auto-detect USB interface, either FS or HS
<br />- usb: add "port" keyword argument to pyb.usb_mode, to select FS/HS
<br />- spi: factor out code to calculate SPI source frequency
<br />- extint: simplify bitband support config for different MCUs
<br />- modmachine: make RTC class available in machine module
<br />- boards/PYBD_SF2: put mbedtls library code in external QSPI flash
<br />- update components to work with new H7xx HAL
<br />- Makefile: remove Wno-attributes for ll_usb HAL file
<br />- Makefile: use startup_stm32*.s file from stm32lib
<br />- boards: remove startup_stm32*.s files now they are in stm32lib
<br />- mpu: include MPU functions when ETH is enabled
<br />- lwip_inc: define LWIP_NO_CTYPE_H=1 to use lwIP ctype funcs
<br />- modmachine: disable IRQs before entering bootloader
<br />- boards/PYBD_SFx: configure EN_3V3 pin as output on boot
<br />- sdcard: add hook for a board to power on SD/MMC
<br />- boards/PYBD_SFx: automatically turn on EN_3V3 when powering SD/MMC
<br />- add initial support for STM32L0xx MCUs
<br />- boards: add MCU support files for STM32L072
<br />- mpconfigport.h: make "framebuf" module configurable by a board
<br />- boards/NUCLEO_L073RZ: add definition files for new board
<br />- powerctrl: move L0's SystemClock_Config to powerctrlboot.c file
<br />- powerctrl: move F0's SystemClock_Config to powerctrlboot.c
<br />- remove SystemInit funcs, use stm32lib versions instead
<br />- boards/NUCLEO_F446RE: enable DAC
<br />- add support for STM32L452 MCUs
<br />- boards/NUCLEO_L452RE: add definition files for new board
<br />- boards/NUCLEO_F413ZH: remove STARTUP_FILE, it's defined globally
<br />- mboot: make _estack an array to avoid compiler warnings
<br />- mboot: remove use of BSRRL/H for H7 MCUs due to stm32lib update
<br />- mboot: use STARTUP_FILE from stm32lib
<br />- mboot: update dependencies to enable parallel build with -j
<br />- boards/B_L072Z_LRWAN1: add definition files for new board
<br />- gccollect: always use MP_STATE_THREAD(stack_top) to get stack top
<br />- usb: add config options to disable USB MSC and/or HID
<br />- usbd_cdc_interface: make CDC TX/RX buffer sizes configurable
<br />- add support for USB on L0 MCUs
<br />- powerctrlboot: increase SYSCLK to 32MHz for L0 MCUs
<br />- mphalport: fix GPIO clock enable for L0 MCUs
<br />- Makefile: allow a board to disable float support
<br />- boards/B_L072Z_LRWAN1: enable USB VCP support
<br />- boards/STM32F769DISC: fix length of FLASH_APP section
<br />- make-stmconst.py: allow more variation in parens and int-suffix L
<br />- add initial support for STM32WBxx MCUs
<br />- boards: add MCU support files for STM32WB55
<br />- boards/NUCLEO_WB55: add definition files for new board
<br />- boards/USBDONGLE_WB55: add definition files for new board
<br />- flashbdev: support internal filesystem on STM32F722/23/32/33
<br />- boards/stm32f722.ld: provide memory regions for internal FS
<br />- boards/NUCLEO_F722ZE: add definition files for new board
<br />- dma: fix re-start of DMA stream by clearing all event flags
<br />- usbd_hid_interface: rewrite USB HID interface code
<br />- boards/xxx_WB55: enable USB HID now that it works on WB MCUs
<br />- usbd_hid_interface: include extra header to build with threading
<br />- lwip_inc: enable raw socket type
<br />- mpconfigport.h: enable lwIP raw sockets
<br />- sdcard: support configuring the SD/MMC bus width to 1 or 4 bits
<br />- modpyb: support building with PY_PYB_LEGACY on and HW_USB_HID off
<br />- usbd: introduce MICROPY_HW_USB_IS_MULTI_OTG to simplify USB config
<br />- usbd: support USB device mode on STM32L432 MCUs
<br />- boards/NUCLEO_L432KC: add config for USB VCP support
<br />- usbd: make USB device FIFO sizes dynamically configurable
<br />- i2c: fix generation of restart condition for hw I2C on F0/F7
<br />- mphalport: put PYBD specific MAC code in board specific file
<br />- mboot/Makefile: define "BUILDING_MBOOT" when building mboot
<br />- boards/PYBD_SF2: exclude certain things when building mboot
<br />- extint: fix EXTI mapping of PVD and RTC events for H7 MCUs
<br />- stm32_it: include correct EXTI interrupt handlers for L0 MCUs
<br />- dma: fix DMA config for L0 MCUs
<br />- powerctrl: fix machine.bootloader() for L0 MCUs
<br />- machine_adc: add machine.ADC class
<br />- machine_adc: improve operation of ADC for H7, L4 and WB MCUs
<br />- boards/stm32wb55_af.csv: fix ADC pin-channel function mapping
<br />- mboot: support boards with only two LEDs
<br />- boards/NUCLEO_L073RZ: fix typo in MCU name
<br />- boards/MIKROE_CLICKER2_STM32: add MikroElektronika Clicker2 board
<br />- boards/STM32F769DISC: fix number of SDRAM row bits
<br />- board/NUCLEO_F746ZG: enable Ethernet periph, lwip and ussl
<br />- usb: add support for VCP+MSC+HID mode, incl 2xVCP and 3xVCP
<br />- usb: verify number of used endpoints doesn't exceed maximum
<br />- lwip_inc: allocate additional MEMP_SYS_TIMEOUT when mDNS enabled
<br />- lwip_inc: enable LWIP_NETIF_EXT_STATUS_CALLBACK for mDNS
<br />- machine_adc: fix build for F4 and L4 MCUs that only have ADC1
<br />- modusocket: fix NULL deref when accept() an unbound socket
<br />- machine_i2c: add ability to specify I2C(4) by name
<br />- can: factor CAN driver into low-level and Python bindings
<br />- add support for FDCAN peripheral, exposed as pyb.CAN
<br />- boards/NUCLEO_H743ZI: enable FDCAN on this board
<br />- use mp_printf with MICROPY_ERROR_PRINTER for uncaught exceptions
<br />- can: guard header file by MICROPY_HW_ENABLE_CAN
<br />- usbd_cdc_interface: add CTS flow control option for USB VCP
<br />- support disabling the compiler
<br />- powerctrlboot: fix clock and PLL selection for HSI48 on F0 MCUs
<br />- powerctrlboot: add support for HSI at 8MHz on F0 MCUs
<br />- uart: add RTS/CTS pin configuration support to UART4
<br />- provide port-specific implementation for Nimble on STM32
<br />- mpconfigport.h: add modbluetooth module to stm32
<br />- boards/PYBD: enable BLE for Pyboard D
<br />- system_stm32: support selection of HSE and LSI on L4 MCUs
<br />- boards: enable MICROPY_HW_RTC_USE_LSE on L4 boards
<br />- {adc,machine_adc}: change ADC clock and sampling time for F0 MCUs
<br />- usbdev: fix compile error if MICROPY_HW_USB_CDC_NUM is set to 2
<br />- boards/PYBD_SF2: put nimble library in external QSPI XIP flash
<br />- extract port-specific Nimble implementation
<br />- mboot: add option to automatically reset when USB is disconnected
<br />- sdcard: support boards with no SD card detect pin
<br />- use hardware double sqrt on F7/H7 MCUs
<br />- boards: add new board ADAFRUIT_F405_EXPRESS
<br />- convert to use FROZEN_MANIFEST to specify frozen code
<br />- adc: update ADC driver to work with the new H7 HAL
<br />- adc: remove unused macro and channel check, and fix spacing
<br />- adc: use IS_CHANNEL_INTERNAL macro to check for internal channels
<br />- adc: fix sampling for internal channels on H7 MCUs
<br />- mpu: save and restore the IRQ state when configuring MPU
<br />- accel: rename MMA I2C macro constants to make it generic
<br />- accel: add support for KXTJ3
<br />- boards: add NADHAT_PYB405 board
<br />- accel: fix Accel.read() method so it does read a byte
<br />- powerctrlboot: fix config of systick IRQ priority on F0/L0/WB MCU
<br />- sdram: fix to use new mpu_config_start/mpu_config_end signature
<br />- Makefile: only enable hardware sqrt on parts that support it
<br />- timer: fix Timer.freq() calc so mult doesn't overflow uint32_t
<br />- add soft timer implementation, using SysTick at 1ms resolution
<br />- add machine.Timer with soft timer implementation
<br />- add support for RF coprocessor on WB55 MCUs
<br />- boards: enable support for bluetooth on WB55 boards
<br />- mpthreadport: include runtime.h to get defn of mp_raise_msg
<br />- boards/stm32f405_af.csv: fix typo in ETH_RMII_REF_CLK on PA1
<br />- nimble_hci_uart.c: prevent scheduler running during CYW-BT wakeup
<br />- generalise flash mounting code so it supports arbitrary FS
<br />- storage: make pyb.Flash configurable, and support ext block proto
<br />- main: auto detect block device used for main filesystem
<br />- moduos: add VfsLfs1 and VfsLfs2 to uos module, if enabled
<br />- boards: enable LFS2 on PYBv1.x and PYBD boards
<br />- storage: change storage_read/write_blocks to return int type
<br />- storage: make start/len args of pyb.Flash keyword only
<br />- qstrdefsport.h: remove unused qstrs and make USB ones conditional
<br />- boards/NUCLEO_L073RZ: skip board-pin names for CPU only pins
<br />- main: fix auto creation of pyb.Flash on boot with kw-only args
<br />- mpconfigport.h: use IRQ_PRI_PENDSV to protect bluetooth ringbuf
<br />- uart: add support for UART4/5 on L0 MCUs
<br />- boards/xxx_WB55: enable littlefs2 on WB55 boards
<br />- main: fix SKIPSD file detection so SD card is mounted by default
<br />- Makefile: enable max buffer size on W5200 NIC when used with lwIP
<br />- modusocket: handle case of NULL NIC in socket ioctl
<br />- boards/PYBD_SF2: configure LEDs as inverted, for LED.intensity()
<br />- boards/NUCLEO_F767ZI: add pins and config for using an SD card
<br />- boards/NUCLEO_F767ZI: update pins, peripherals and total flash
<br />- boards/NUCLEO_H743ZI: add extra pins and peripheral definitions
<br />- timer: add missing TIM 1/15/16/17 IRQ handlers for H7 MCUs
<br />- boards/PYBD: include webrepl helper scripts in frozen manifest</p>
<p>esp8266 port:
<br />- uart: fix invalid ringbuf name when event driven REPL enabled
<br />- provide custom machine_time_pulse_us that feeds soft WDT
<br />- mpconfigport.h: enable lwIP raw sockets
<br />- machine_uart: allow remapping UART TX/RX pins from 1/3 to 15/13
<br />- put new profile code in iROM
<br />- machine_adc: rename pyb_adc_* to machine_adc_*
<br />- machine_adc: add read_u16 method and refactor
<br />- add per-board configs, following other ports
<br />- modules/ntptime.py: always close socket, and set day-of-week
<br />- convert to use FROZEN_MANIFEST to specify frozen code
<br />- allow building without a manifest
<br />- boards: add manifest_release.py with files for a release
<br />- modules/flashbdev.py: support extended block protocol
<br />- moduos: add optional support for VfsLfs1 and VfsLfs2</p>
<p>esp32 port:
<br />- machine_timer: reuse Timer handles, deallocate only on soft-reset
<br />- add machine.SDCard class using built-in HW SD/MMC controller
<br />- update to use ESP IDF v3.3-beta3
<br />- modnetwork: still try to reconnect to WLAN even with AUTH_FAIL
<br />- Makefile: include all driver/*.c source files in the build
<br />- network_ppp: add ppp_set_usepeerdns(pcb, 1) when init'ing iface
<br />- add support for hardware I2C
<br />- Makefile: fix path expansion for ESPIDF_DRIVER_O
<br />- Makefile: put OBJ and LIB rule additions in gen_espidf_lib_rule
<br />- Makefile: simplify include of IDF source by using wildcards
<br />- pin MicroPython tasks to a specific core
<br />- Makefile: include CFLAGS_EXTRA in CFLAGS definition
<br />- network_ppp: add authentication support to the PPP interface
<br />- add support for mDNS queries and responder
<br />- modules: on initial setup mount internal flash at root
<br />- add per-board configs, following other ports
<br />- add esp32.Partition class to expose partition and OTA funcs
<br />- add 'config' function to network.LAN, reusing network.WLAN
<br />- Makefile: fix subst->patsubst in ESPIDF_BOOTLOADER_SUPPORT_O
<br />- machine_adc: add ADC.read_u16() method
<br />- update to use ESP IDF v3.3
<br />- boards/TINYPICO: switch to use QIO and 80MHz for SPI interface
<br />- add VFS FAT partition to partitions.csv and mount it as the FS
<br />- add support for ESP32-D2WD with 2MiB internal flash
<br />- modules/inisetup.py: use bdev.ioctl instead of bdev.SEC_SIZE
<br />- Makefile: add SDKCONFIG_H to QSTR_GLOBAL_REQUIREMENTS
<br />- support building with ESP IDF 4.0-beta1
<br />- add check to Makefile for pyparsing version
<br />- add check to Makefile that the toolchain is in PATH
<br />- main: use both 3.3 and 4.0 config vars to enable SPIRAM
<br />- Makefile: fix printing of supported git hash
<br />- enable native emitter
<br />- implement BLE using Nimble from IDF 4.x
<br />- boards: enable BLE by default when building with IDF 4.x
<br />- add 4.x version of IDLE WDT config
<br />- run NimBLE on the app core
<br />- convert to use FROZEN_MANIFEST to specify frozen code
<br />- machine_uart: add ability to invert UART pins
<br />- boards: split out CPU frequency config, make 160MHz the default
<br />- machine_hw_spi: fix exception msg when host is already in use
<br />- Makefile: add correct arch to MPY_CROSS_FLAGS for native code
<br />- remove unused "esponewire.c" in favour of extmod/modonewire
<br />- esp32_partition: support extended block protocol
<br />- moduos: enable uos.VfsLfs2 for littlefs filesystems
<br />- boards/sdkconfig.base: resize SSL output buffer from 16 to 4kiB
<br />- rtc: set system microseconds when setting time via RTC.datetime()
<br />- machine_rtc: make RTC.memory size and availability configurable
<br />- machine_rtc: reduce memory footprint of user mem functionality
<br />- boards: enable ULP in base sdk configuration
<br />- boards/TINYPICO: add tinypico.py, dotstar.py with custom manifest
<br />- esp32_rmt: add initial support for RMT peripheral</p>
<p>javascript port:
<br />- enable support for frozen bytecode via FROZEN_MPY_DIR</p>
<p>nrf port:
<br />- led: adjust how board LEDs are defined
<br />- clean up source by removing tabs, trailing spaces, non-ASCII chars
<br />- machine/adc: add ADC.read_u16() method
<br />- add ADC channel mapping to alt function table
<br />- machine/adc: allow to pass a Pin object in to ADC constructor
<br />- machine/adc: fix mapping of ADC channel to pin
<br />- boards/make-pins.py: fix gen of board pins to use correct index
<br />- Makefile: add support for flashing with a Black Magic Probe
<br />- boards: add Particle Xenon board configuration (an nRF52840)
<br />- boards: add board definition for uBlox Nina B1 series BLE modules
<br />- i2c: add support for TWIM (EasyDMA)
<br />- temp: move module configuration guard
<br />- uart: add support for UARTE (EasyDMA)
<br />- flash: update flash driver to use nrfx_nvmc driver
<br />- led: expose public API for LED manipulation
<br />- main: update the way the LED is used on startup
<br />- add support to activate MICROPY_PY_SYS_STDFILES
<br />- device: correct SPIM3 IRQ handler entry for nrf52840
<br />- add tinyusb support for nrf52840
<br />- boards: add support for pca10059
<br />- add nrf9160 base support
<br />- boards: add nrf9160 pca10090 board
<br />- main: execute boot.py/main.py frozen modules without a file system
<br />- boards/particle_xenon: enable USB CDC on Particle Xenon board</p>
<p>powerpc port:
<br />- add initial port to bare metal PowerPC arch</p>
<p>samd port:
<br />- add new port to Microchip SAMDxx microcontrollers
<br />- make common linker scripts, rename board.mk to mpconfigboard.mk
<br />- boards: add Adafruit Feather M0 Express board configuration
<br />- boards: add Mini SAM M4 board configuration
<br />- add minimum config for Atmel SAMD21-XPLAINED-PRO board</p>
<p>zephyr port:
<br />- main: use mp_stack API instead of local pointer for stack top</p>
<p>docs:
<br />- machine: add initial docs for new machine.SDCard class
<br />- library/framebuf: add missing module reference in example code
<br />- library/sys: add documentation for sys.atexit function
<br />- pyboard: update name of mounted volume to match code
<br />- pyboard: clarify initial files on pyboard and fix up formatting
<br />- library: document that sys.version_info returns a 3-tuple only
<br />- pyboard: emphasize the instructions for making a USB mouse
<br />- reference/speed_python: update that read-only buffers are accepted
<br />- reference/speed_python: add missing self to var caching example
<br />- library/pyb.DAC.rst: correct frequency for triangle mode output
<br />- rename machine.ADC docs to machine.ADCWiPy
<br />- library: specify new machine.ADC class
<br />- library/pyb.rst: update docs for pyb.usb_mode() function
<br />- library/pyb.rst: update pyb.usb_mode() to mention VCP+MSC+HID
<br />- library/pyb.USB_VCP.rst: add info about id and flow params
<br />- develop/qstr.rst: add documentation for string interning
<br />- library/bluetooth: add initial BLE documentation
<br />- reference/glossary.rst: add new terms and reduce complexity of old
<br />- library/bluetooth.rst: clarify gap_advertise adv_data behavior
<br />- library/bluetooth.rst: explain how to increase char buffer size
<br />- library/bluetooth.rst: fix typo in HR/UART services example
<br />- esp8266/tutorial: make http_get sample function self contained
<br />- library: clarify relation between machine and port-specific mods
<br />- esp8266: add ntptime usage to esp8266 quickref
<br />- fix spelling in various parts of the docs
<br />- wipy/tutorial: link Blynk examples to the official library
<br />- library: rename "array" module to "uarray"
<br />- library/bluetooth: rename to "ubluetooth"
<br />- move ubluetooth under "MicroPython-specific libraries"
<br />- library: add documentation for extended block device protocol
<br />- library/ubluetooth: add docs for gatts_set_buffer
<br />- conf.py: fix path to favicon.ico
<br />- templates/topindex.html: replace usage of deprecated defindex.html
<br />- library/machine.SDCard.rst: fix various typos
<br />- library/ubluetooth: fix name and link to FLAG_xxx constants
<br />- reference: add docs describing use of pyboard.py
<br />- library: add docs for pyb.Flash class
<br />- add littlefs docs and a filesystem tutorial
<br />- reference/filesystem: fix typo in block device code example
<br />- reference/filesystem: add note and example about using filesystem
<br />- library/ubluetooth: add note about API being under development
<br />- library/uos: add notes and links about littlefs failures
<br />- library/uos.rst: clarify why the extended interface exists
<br />- esp8266/quickref: add note that machine.RTC is not fully supported
<br />- reference: add documentation describing use of .mpy files
<br />- develop: add documentation on how to build native .mpy modules
<br />- esp32: add quickref and full docs for esp32.RMT class</p>
<p>travis:
<br />- build PYBD_SF2 board as part of the stm32 job
<br />- selectively fetch git submodules only when needed
<br />- build esp8266 firmware as part of Travis CI
<br />- build esp32 firmware as part of Travis CI
<br />- enable performance benchmark tests on standard unix build
<br />- add samd port to Travis build
<br />- build stm32 mboot for PYBD_SF6 as part of CI
<br />- switch unix stackless build to use clang
<br />- build an stm32 board with threading enabled to test it with CI
<br />- add new job to test unix port with sys.settrace enabled
<br />- add ESP32 build with IDF v4
<br />- build more stm32 boards to cover all supported MCUs
<br />- build unix nanbox with PYTHON=python2
<br />- add BLE submodules to ESP32 IDF4 build
<br />- add esp8266 GENERIC_512K build to CI
<br />- use "make submodules" to init required modules for each port
<br />- add job to build and test unix minimal port
<br />- add tests for building and importing dynamic native modules
<br />- build urandom native module in coverage job</p>
<p>examples:
<br />- bluetooth: add basic BLE peripheral examples
<br />- bluetooth: use UUIDs directly to add services to adv payload
<br />- bluetooth/ble_uart_peripheral.py: add usage demo
<br />- embedding: replace symlink of mpconfigport.h with real file
<br />- bluetooth/ble_uart_peripheral: use append mode for RX char
<br />- embedding: remove obsolete fatfs files from build
<br />- bluetooth: add helpers for decoding advertising payloads
<br />- bluetooth: add example for reading temperature sensor
<br />- natmod: add btree example
<br />- natmod: add uheapq example
<br />- natmod: add uzlib example
<br />- natmod: add framebuf example
<br />- natmod: add ure example
<br />- natmod: add features1 and features2 examples
<br />- natmod: add urandom native module example
<br />- network: add testing key/cert to SSL HTTP server example
<br />- natmod: add very simple features0 example to compute factorial</p>
<p>miscellaneous:
<br />- top: add CODEOFCONDUCT.md document based on the PSF code of conduct
<br />- gitignore: put build-*/ pattern in top-level gitignore file
<br />- gitattributes: mark *.a files as binary</p>dpgeorgetag:github.com,2008:Repository/290133466/v1.112019-05-29T06:39:45Zv1.11<p>Improved mpy format with support for native code, and new JavaScript …</p>
<p>…port</p>
<p>In this release the mpy file format has been moved to version 4 and has
<br />some significant improvements: mpy file size is reduced on average by about
<br />35%, loading time of mpy files is reduced by about 40%, and they now have
<br />support to save native, viper and inline assembler code (or machine code
<br />generated from any other source). Size reduction of mpy files was achieved
<br />by adding a qstr window to reuse past qstrs when encoding them, by packing
<br />qstrs directly in the bytecode, and by defining a static qstr set.</p>
<p>Some VM opcodes were also changed to fix a bug when doing a break/continue
<br />out of a finally block, and to make some simplifications. In particular
<br />POP_BLOCK and POP_EXCEPT opcodes were replaced with POP_EXCEPT_JUMP.</p>
<p>Most uppercase macros have been converted to lowercase to make a more
<br />consistent C API, including all MP_OBJ_IS_xxx and MP_xxx_SLOT_IS_FILLED
<br />macros.</p>
<p>The default PYTHON makefile variable is now changed from "python" to
<br />"python3", but Python 2 is still supported via "make PYTHON=python2".</p>
<p>The mpy-cross compiler supports the new mpy version 4 and has new command
<br />line options: "-march=<arch>" to select the native emitter, and "--version"
<br />to print the MicroPython version and the mpy version. Also mpy-tool.py has
<br />support for freezing native code.</p>
<p>A module system for external, user C modules has been implemented and
<br />documentation for this is available in the new "docs/develop" section.</p>
<p>A new "javascript" port has been added which targets JavaScript as the
<br />machine via Emscripten. This allows to run MicroPython as an application
<br />within node.js, and to run it within a browser (among other things).</p>
<p>All bare-metal ports have the following improvements: machine.sleep() is
<br />now machine.lightsleep(), and both lightsleep() and deepsleep() now take an
<br />optional argument which is the maximum time to sleep in milliseconds.
<br />These ports also now allow freezing of boot.py and main.py using the usual
<br />methods. And a new I2C method i2c.writevto(addr, vect) is added which can
<br />be used to write a tuple/list of buffers all at once to an I2C device.</p>
<p>The stm32 port now has a fully integrated Ethernet MAC driver (see the
<br />network.LAN class) using lwIP for the TCP/IP stack, and sockets were made
<br />significantly more robust. Support for F413 MCUs was added. There are
<br />also some minor user-facing changes to this port:
<br />- machine.UART (and pyb.UART) now defaults to timeout=0 (was 1000ms) which
<br /> gives UARTs a non-blocking behaviour.
<br />- The USB REPL is now configurable using uos.dupterm, and by default
<br /> pyb.USB_VCP(0) is put on dupterm slot 1 before boot.py is executed. To
<br /> disable the default REPL use: uos.dupterm(None, 1).
<br />- pyb.DAC(id) will now only reset the DAC the first time it is called; to
<br /> get the old behaviour pass the bits parameter like: pyb.DAC(id, bits).
<br />- pyb.DAC.noise() and pyb.DAC.triangle() now output at full scale.
<br />- The system will not recreate boot.py if it's missing (it will only create
<br /> it if the filesystem is corrupt, or when doing a factory reset).</p>
<p>For the esp32 port, the build process has been updated to align better with
<br />the ESP IDF and now uses sdkconfig to configure features. Dual core mode
<br />is now enabled by default, SPIRAM is in memory-mapped mode so all of it can
<br />be used for the MicroPython heap, there is support to change the CPU
<br />frequency, and the WDT now panics and resets the device if it times out.</p>
<p>A detailed list of changes follows.</p>
<p>py core:
<br />- remove calls to file reader functions when these are disabled
<br />- add optional support for 2-argument version of built-in next()
<br />- compile: swap order of pop_block/pop_except in "except as" handler
<br />- warning: support categories for warnings
<br />- builtinhelp: only print help re FS modules if external import enabled
<br />- downcase all MP_OBJ_IS_xxx macros to make a more consistent C API
<br />- downcase MP_xxx_SLOT_IS_FILLED inline functions
<br />- mkenv.mk: change default PYTHON variable from "python" to "python3"
<br />- qstr: evaluate find_qstr only once then pass to Q_GET_HASH macro
<br />- obj.h: remove obsolete mp_obj_new_fun_viper() declaration
<br />- objfun: make fun_data arg of mp_obj_new_fun_asm() a const pointer
<br />- eliminate warnings about unused arguments when debugging disabled
<br />- compile: fix handling of unwinding BaseException in async with
<br />- compile: add optimisation to compile OrderedDict inplace
<br />- objexcept: fix hash of exc str created in mp_obj_new_exception_msg
<br />- py.mk: update lwip build config to work with latest lwip version
<br />- fix VM crash with unwinding jump out of a finally block
<br />- vm: remove currently_in_except_block variable
<br />- replace POP_BLOCK and POP_EXCEPT opcodes with POP_EXCEPT_JUMP
<br />- persistentcode: add a qstr window to save mpy files more efficiently
<br />- persistentcode: pack qstrs directly in bytecode to reduce mpy size
<br />- persistentcode: define static qstr set to reduce size of mpy files
<br />- add independent config for debugging sentinel object values
<br />- emitnative: consolidate where HASCONSTS is set to load-const-obj fun
<br />- emitnative: provide concentrated points of qstr emit
<br />- emitnative: adjust accounting of size of const_table
<br />- emitglue: remove union in mp_raw_code_t to combine bytecode & native
<br />- add support to save native, viper and asm code to .mpy files
<br />- persistentcode: bump .mpy version to 4
<br />- allow registration of modules at their definition
<br />- implement a module system for external, user C modules
<br />- update and rework build system for including external C modules
<br />- move mp_native_type_from_qstr() from emitnative.c to nativeglue.c
<br />- nativeglue: rename native convert funs to match other native helpers
<br />- compile: add support to select the native emitter at runtime
<br />- compile: support multiple inline asm emitters
<br />- compile: check that arch is set when compiling native, viper or asm
<br />- runtime: remove long-obsolete MICROPY_FSUSERMOUNT init code
<br />- scheduler: convert micropythyon.schedule() to a circular buffer
<br />- nlrthumb: add support for iOS where the C func is _nlr_push_tail
<br />- makedefs: use io.open with utf-8 encoding when processing source
<br />- runtime: optimise to not create temp float for int to power negative
<br />- runtime: fix mp_unpack_ex so seq can't be reclaimed by GC during use
<br />- mpprint: support printing %ld and %lu formats on 64-bit archs
<br />- asmthumb: support asm_thumb code running on normal ARM processors
<br />- native: improve support for bool type in viper functions
<br />- remove "if (0)" and "if (false)" branches
<br />- objgenerator: fix handling of None passed as 2nd arg to throw()
<br />- objgenerator: remove unneeded forward decl and clean up white space
<br />- misc.h: rename _MP_STRINGIFY to not use leading underscore in ident
<br />- persistentcode: change "len" type to size_t for mp_obj_str_get_data
<br />- objarray: add support for memoryview.itemsize attribute
<br />- objarray: add decode method to bytearray
<br />- update makefiles to use $(CAT) variable instead of hard coded "cat"
<br />- update makefiles to use $(TOUCH) instead of hard coded "touch"</p>
<p>extmod:
<br />- moduzlib: update to uzlib 2.9.2
<br />- modlwip: add support for polling UDP sockets for writability
<br />- moduhashlib: include implementation of sha256 only when required
<br />- convert legacy uppercase macro names to lowercase
<br />- moduwebsocket: refactor `websocket` to `uwebsocket`
<br />- modlwip: change #ifdef to #if for check of MICROPY_PY_LWIP
<br />- modlwip: fix bug when polling listening socket with backlog=1
<br />- modlwip: add concurrency protection macros
<br />- modwebrepl: fix logic to handle a put of file of size 0
<br />- vfs_fat: update for new oofatfs version
<br />- modlwip: fix case where concurrency lock isn't released on error
<br />- moduselect: adjust select_select and poll_register to use size_t
<br />- vfs_fat: fallback to FAT32 if standard FAT16/SFD format fails
<br />- modlwip: handle case of connection closing while on accept queue
<br />- modlwip: handle case of accept callback called with null PCB
<br />- modlwip: protect socket.accept with lwIP concurrency lock
<br />- modlwip: free any stored incoming bufs/connections on TCP error
<br />- modlwip: use correct listening socket object in accept callback
<br />- modlwip: abort TCP conns that didn't close cleanly in a while
<br />- modurandom: add init method to seed the Yasmarang generator
<br />- machine_signal: fix fault when no args are passed to Signal()
<br />- modussl_mbedtls: support non-blocking handshake
<br />- modussl_axtls: add non-blocking mode support
<br />- moducryptolib: add optional AES-CTR support
<br />- modujson: handle parsing of floats with + in the exponent
<br />- machine_i2c: change C-level API to allow split I2C transactions
<br />- machine_i2c: remove need for temporary memory in writemem() call
<br />- machine_i2c: add i2c.writevto() that can write a vector of bufs
<br />- modlwip: free any incoming bufs/connections before closing PCB
<br />- modlwip: register TCP close-timeout callback before closing PCB</p>
<p>lib:
<br />- utils/pyexec: implement paste mode with event driven REPL
<br />- utils/printf: exclude __GI_vsnprintf alias for gcc 9 and above
<br />- utils/gchelper_m3: add license header and clean up code
<br />- utils/gchelper_m3: add gc_helper_get_sp() function
<br />- utils/gchelper: add gchelper.h header file for assembler functions
<br />- netutils: add function to print tracing info for Ethernet frames
<br />- oofatfs: update oofatfs library to R0.13c working branch
<br />- oofatfs: update ffconf.h config for new oofatfs version
<br />- oofatfs: update oofatfs library to fix issue with logic not
<br />- stm32lib: update library to fix F7 MMC capacity calculation
<br />- utils/pyexec: add pyexec_file_if_exists() helper function
<br />- utils: make pyexec_file_if_exists run frozen scripts if they exist
<br />- utils/interrupt_char: invalidate interrupt char at start up
<br />- stm32lib: update library to fix UART9/10 baudrate on F4 MCUs
<br />- nrfx: upgrade nrfx to v1.7.1 plus a UART bug fix</p>
<p>drivers:
<br />- memory/spiflash: rework wait_sr to fix uninit'd variable 'sr'
<br />- display/ssd1306.py: change to use new i2c.writevto() method</p>
<p>tools:
<br />- mpy-tool.py: add support for freezing native code
<br />- upip.py: use "raise arg" instead of no-arg raise form, for native
<br />- pyboard.py: add missing line from example usage comments
<br />- mpy-tool.py: adjust use of super() to make it work with Python 2
<br />- mpy-tool.py: fix init of QStrWindow, and remove unused variable
<br />- pyboard.py: don't accumulate output data if data_consumer used
<br />- upip.py: add support for multiple index URLs with custom default</p>
<p>tests:
<br />- basics: add tests for try-except-else and try-except-else-finally
<br />- run-tests: support running native tests via mpy
<br />- import: add test for importing x64 native code
<br />- extmod: add test for FAT filesystem on a very large block device
<br />- run-tests: ignore exception in process kill when ending repl test
<br />- micropython: add some tests for failed heap allocation
<br />- skip tests needing machine module if (u)machine doesn't exist
<br />- ussl_basic: disable setblocking() calls
<br />- basics/sys1.py: add test for calling sys.exit() without any args
<br />- pyb: update UART expected output now that default timeout is 0
<br />- basics: add coverage tests for memoryview attributes</p>
<p>mpy-cross:
<br />- enable building of x64 native .mpy files
<br />- add "-march=<arch>" option to select native emitter
<br />- support compiling with MICROPY_PY___FILE__ enabled
<br />- automatically select ARMV6 arch when running on such a host
<br />- add --version command line option to print version info</p>
<p>all ports:
<br />- change PYB message prefix to MPY
<br />- convert legacy uppercase macro names to lowercase
<br />- update to work with new oofatfs version
<br />- {stm32,esp8266}: set mpy-cross native arch for frozen native code
<br />- convert to use pyexec_file_if_exists() to execute boot/main.py</p>
<p>unix port:
<br />- mpthreadport: add thread deinit code to stop threads on exit
<br />- mpthreadport: cleanup used memory on thread exit
<br />- mpthreadport: remove busy wait loop in thread garbage collection
<br />- modmachine: handle repeated /dev/mem open errors
<br />- modffi: eliminate unused-argument warning when debugging disabled
<br />- Makefile: update coverage tests to match those in Travis
<br />- mpthreadport: use named semaphores on Mac OS X
<br />- gcollect: make sure stack/regs get captured properly for GC
<br />- coverage: add test for printing literal % character
<br />- modusocket: fix use of setsockopt in usocket.settimeout impl
<br />- modusocket: raise ETIMEDOUT when connect or accept has timeout</p>
<p>windows port:
<br />- fix line wrapping behaviour on the REPL</p>
<p>qemu-arm port:
<br />- rework to run bare-metal on boards with Cortex-M CPUs
<br />- use gchelper code to get registers for GC scanning</p>
<p>stm32 port:
<br />- implement machine.lightsleep()
<br />- rtc: check RTCEN=1 when testing if RTC is already running on boot
<br />- usbdev: add USB config option for board being self powered
<br />- usbdev: add USB config option for max power drawn by the board
<br />- main: make board-defined UART REPL use a static object and buffer
<br />- boards/stm32f429_af.csv: fix typos in UART defs Tx->TX and Rx->RX
<br />- mboot: add option to autodetect the USB port that DFU uses
<br />- sdcard: don't use SD clock bypass on F7 MCUs
<br />- usb: add flow control option for USB VCP data received from host
<br />- boards/make-pins.py: add basic support for STM32H7 ADC periphs
<br />- boards/stm32h743_af.csv: add ADC entries to pin capability table
<br />- adc: add basic support for ADC on a pin on STM32H7 MCUs
<br />- mboot: use USB HS as main USB device regardless of USB_HS_IN_FS
<br />- mboot: add support for STM32F769 MCUs
<br />- mboot: add support for GPIO ports G, H, I and J
<br />- mboot: allow deploying via deploy-stlink
<br />- usb: use USB HS as main USB device regardless of USB_HS_IN_FS
<br />- usbd_conf: fully support USB HS with external PHY
<br />- modmachine: make bootloader() enter custom loader if it's enabled
<br />- boards/STM32F769DISC: support the use of USB HS with external PHY
<br />- boards/STM32F769DISC: configure for use with mboot by default
<br />- systick: rename sys_tick_XXX functions to systick_XXX
<br />- systick: make periodic systick callbacks use a cyclic func table
<br />- pendsv: clean up pendsv IRQ handler and eliminate duplicate code
<br />- pendsv: add ability to schedule callbacks at pendsv IRQ level
<br />- systick: provide better compile-time configurability of slots
<br />- modnetwork: change lwIP polling to be based on background systick
<br />- move gchelper assembler code to lib/utils for use by other ports
<br />- gccollect: use gchelper.h header instead of explicit declaration
<br />- pendsv: fix inline asm constant and prefix with # character
<br />- mboot/Makefile: support specifying BOARD_DIR for custom board
<br />- boards/NUCLEO_L476RG: add support for RNG, DAC and CAN1
<br />- boards/make-pins.py: add cmdline options to support use by mboot
<br />- mboot/Makefile: generate all pin header files from board pins.csv
<br />- mboot/mphalport.h: include genhdr/pins.h for access to pin names
<br />- qspi: use static af functions for pin configuration
<br />- mboot: add support for loading gzip'd firmware from a filesystem
<br />- mboot: move some BSS vars to new section that isn't zeroed out
<br />- mboot: add support script which can program mboot and application
<br />- modmachine: add ability to pass through user data to mboot
<br />- mboot: add hook to run board-specific code early on startup
<br />- boards/stm32f429.ld: increase uPy heap size by 64k for F429 MCU
<br />- extint: fix ExtInt to work with non-GPIO pins
<br />- extint: fix RTC Alarm/FS USB EXTI constants for L4
<br />- make-stmconst.py: improve regex to parse more constants
<br />- extint: add non-GPIO EXTI IRQ sources for F0
<br />- extint: remove unused (and incorrect) EXTI defines
<br />- stm32_it: fix RTC IRQ handler to handle all EXTI IRQs on F0 MCUs
<br />- sdram: increase GPIO speed for SDRAM interface to "very high"
<br />- boards/NUCLEO_F767ZI: fix up comments about HCLK computation
<br />- mphalport: add mp_hal_get_mac() helper function
<br />- eth: add low-level Ethernet MAC driver
<br />- network_lan: add high-level network.LAN interface to ETH driver
<br />- mpconfigport.h: enable lwIP concurrency protection mechanism
<br />- modnetwork: don't call NIC callback if it's NULL
<br />- boards/NUCLEO_F767ZI: enable lwIP and Ethernet peripheral
<br />- boards/STM32F7DISC: enable lwIP and Ethernet peripheral
<br />- boards/STM32F769DISC: enable lwIP and Ethernet peripheral
<br />- boards/NUCLEO_F429ZI: enable lwIP and Ethernet peripheral
<br />- qspi: enable sample shift and disable timeout counter
<br />- Makefile: allow a board to specify its linker sections for FW
<br />- boards/STM32F769DISC: use external QSPI flash to store some code
<br />- use global lwip build config and support building without lwip
<br />- boards: update to use new build config for lwip component
<br />- add compile-time option to use HSI as clock source
<br />- mboot: update to match latest oofatfs version
<br />- allow to build with threading with the GIL disabled
<br />- qspi: set pin speed to very-high and allow to config some options
<br />- usb: allow to override USB strings & VID/PID in app and mboot
<br />- stm32_it: guard UART7_IRQHandler with check for UART7 define
<br />- mboot: set USE_MBOOT=1 by default in the Makefile
<br />- system_stm32: provide default value for HSI calibration
<br />- mpconfigport.h: remove malloc/free/realloc helper macros
<br />- boards/STM32L476DISC: enable servo support on STM32L476DISC board
<br />- Makefile: allow to override CROSS_COMPILE with included Makefile
<br />- make default USB_VCP stream go through uos.dupterm for main REPL
<br />- timer: expose the PWM BRK capability of Timer 1 and 8
<br />- uart: handle correctly the char overrun case of RXNE=0 and ORE=1
<br />- rename MICROPY_HW_HAS_SDCARD to MICROPY_HW_ENABLE_SDCARD
<br />- add support for MMC driver, exposed via pyb.MMCard class
<br />- moduos: allow to compile again without USB enabled
<br />- network_wiznet5k: add ability to trace Ethernet TX and RX frames
<br />- network_wiznet5k: add ability to set the MAC address
<br />- network_wiznet5k: automatically set MAC if device doesn't have one
<br />- i2cslave: add support for H7 MCUs
<br />- usbd_conf: add support for USB HS peripheral on H7 MCUs
<br />- mboot: add support for H7 MCUs, with H743 flash layout
<br />- boards/NUCLEO_H743ZI: add config options to support mboot
<br />- boards/NUCLEO_L432KC: disable complex nos and default frozen mods
<br />- rtc: add auto-LSE-bypass detection with fallback to LSE then LSI
<br />- rtc: remove unused LSE detection code
<br />- rtc: remove non-ASCII mu-character from source code comment
<br />- timer: correctly initialise extended break settings on F7/H7/L4
<br />- system_stm32f0: enable PWR clock on startup
<br />- system_stm32f0: add support for using HSE and PLL as SYSCLK
<br />- powerctrl: enable EIWUP to ensure RTC wakes device from standby
<br />- dac: rework DAC driver to use direct register access
<br />- usbdev: make USB device descriptors at runtime rather than static
<br />- usb: add USB device mode for VCP+VCP without MSC
<br />- powerctrl: deselect PLLSAI as 48MHz src before turning off PLLSAI
<br />- usb: remove mp_hal_set_interrupt_char now that it's reset at boot
<br />- main: increase default UART REPL rx buffer from 64 to 260 bytes
<br />- powerctrl: support changing frequency when HSI is clock source
<br />- flash: fix bug computing page number for L432 page erase
<br />- add support for F413 MCUs
<br />- boards: add NUCLEO_F413ZH board configuration
<br />- machine_uart: change default UART timeout to 0, for non blocking
<br />- move factory reset files and code to separate source file
<br />- usbd_cdc_interface: don't retransmit chars if USB is reconnected
<br />- rtc: allow overriding startup timeouts from mpconfigboard
<br />- dma: initialise all members of DMA structs for H7 MCUs
<br />- dma: always reset and configure the H7 DMA peripheral
<br />- spi: enable SPI IRQs and add IRQHandlers for H7 MCUs
<br />- irq: fix IRQ_ENABLE_STATS stats config to work on all MCUs
<br />- boards/NUCLEO_H743ZI: enable SPI3 on this board
<br />- modmachine: create dedicated asm function to branch to bootloader
<br />- adc: fix VBAT_DIV to be 4 for STM32F411
<br />- machine_i2c: update to support new C-level I2C API
<br />- i2c: make timeout for hardware I2C configurable
<br />- machine_i2c: simplify ROM initialisation of static HW I2C objects
<br />- i2c: support setting the I2C TIMINGR value via keyword arg
<br />- sdcard: add switch break to ensure only correct SD/MMC IRQ is run
<br />- sdram: update MPU settings to block invalid region, change attrs
<br />- mboot/README: fix some typos, describe bootloader and fwupdate.py
<br />- modmachine: in bootloader() disable caches before reset of periphs</p>
<p>cc3200 port:
<br />- mods/modussl: fix ca_certs arg validation in mod_ssl_wrap_socket
<br />- modmachine: rename machine.sleep to machine.lightsleep
<br />- use common gchelper_m3.s code from lib/utils
<br />- mpconfigport.h: disable compiler optimisation of OrderedDict</p>
<p>esp8266 port:
<br />- modmachine: implement optional time_ms arg to machine.deepsleep
<br />- modmachine: rename machine.sleep to machine.lightsleep
<br />- modmachine: implement simple machine.lightsleep function
<br />- modmachine: in lightsleep, only waiti if wifi is turned off
<br />- modmachine: call ets_event_poll after waiti in machine.idle
<br />- modmachine: handle overflow of timer to get longer periods
<br />- fix ticks_ms to correctly handle wraparound of system counter</p>
<p>esp32 port:
<br />- don't put py/scheduler.o in iRAM, it's no longer needed
<br />- Makefile: put all IDF compenents in .a libs to use IDF ld script
<br />- update to latest ESP IDF using sdkconfig and new ldgen procedure
<br />- machine_timer: deinit all active timers on soft reset
<br />- Makefile: make sure that directory exists for sdkconfig.h
<br />- boards: use auto xtal freq config instead of default 40MHz
<br />- modsocket: fix crashes when connect/bind can't resolve given addr
<br />- modmachine: rename machine.sleep to machine.lightsleep
<br />- use SPIRAM in mem-map mode so all of it can be used for uPy heap
<br />- modmachine: add support for changing the CPU frequency
<br />- modsocket: fix usocket.send to accept anything with buffer proto
<br />- modsocket: change socket.socket to be socket type rather than fun
<br />- network_lan: add arg to constructor to set clock mode for ETH PHY
<br />- modnetwork: catch and report Ethernet events
<br />- network_lan: make power arg to constructor optional
<br />- modnetwork: fix wifi.isconnected to return False after disconnect
<br />- modnetwork: implement RSSI for WiFi STA via WLAN.status('rssi')
<br />- modnetwork: remove redundant esp_log include
<br />- Makefile: add some missing IDF source files to bootloader and app
<br />- mphalport: use ets_delay_us for mp_hal_delay_us_fast
<br />- machine_pin: make it so None as pull value disables pull up/down
<br />- machine_pin: add new PULL_HOLD pin pull mode
<br />- machine_pin: rework pull mode config to fix GPIO hold feature
<br />- mpthreadport: exit vPortCleanUpTCB early if threading not init'd
<br />- boards: enable dual core support by default
<br />- boards/sdkconfig: disable WDT check of idle task on CPU1
<br />- README: add info about pyparsing and the correct Python version
<br />- machine_wdt: add timeout arg to select interval, make WDT panic
<br />- modnetwork: change type to size_t for uses of mp_obj_str_get_data
<br />- machine_uart: implement UART.deinit() method
<br />- network_ppp: add a timeout for closing PPP connection
<br />- machine_touchpad: use HW timer for FSM to enable wake-on-touch
<br />- modsocket: raise EAGAIN when accept fails in non-blocking mode</p>
<p>javascript port:
<br />- add new port targeting JavaScript via Emscripten
<br />- fix Emscripten async load, and to compile with modern clang
<br />- library: use Buffer.alloc() since new Buffer() is deprecated
<br />- pass (error) exit value out from script to process caller
<br />- Makefile: fix unrepresentable float error by using clamp
<br />- library: print data as raw bytes to stdout so unicode works</p>
<p>nrf port:
<br />- modmachine: rename machine.sleep to machine.lightsleep
<br />- uart: use formula instead of switch for baudrate calculation
<br />- uart: remove unused machine.UART() parameters
<br />- shrink "<peripheral> does not exist" error messages
<br />- pin: cleanup Pin.__str__ to print relevant information
<br />- pin: print pull information in Pin.__str__
<br />- ticker: remove duplicate NRFX_IRQ_PRIORITY_SET
<br />- timer: fix disabling Timer 1 when using soft PWM
<br />- readme: update link to nrfjprog download
<br />- bluetooth: improve advertisment behavior for nrf52 targets
<br />- bluetooth: resolve compilation warning in ble_drv.c
<br />- readme: update make flash command when defining board
<br />- pwm: remove superfluous NULL in machine_hard_pwm_instances
<br />- bluetooth: add support for SoftDevice s132 version 6.1.1
<br />- board: migrate all nrf52832 targets to new BLE stack
<br />- bluetooth: deprecate use of SoftDevice s132 v6.0.0
<br />- bluetooth: add support for SoftDevice s140 version 6.1.1
<br />- board: migrate nrf52840 target to new BLE stack
<br />- bluetooth: deprecate use of SoftDevice s140 v6.0.0
<br />- readme: add section about LTO
<br />- Makefile: update to match latest oofatfs version
<br />- boards: add support for BLYST Nano module based boards
<br />- change types to size_t for all uses of mp_obj_str_get_data
<br />- machine/i2c: update to support new C-level I2C API
<br />- nrfx_glue: adapt to nrfx v.1.7.1
<br />- uart: change UART driver to be non-blocking and use IRQs
<br />- mpconfigport.h: enable MICROPY_KBD_EXCEPTION by default
<br />- uart: make UART print output something, and add write method
<br />- mphalport: use wfi to save power while waiting at the UART REPL</p>
<p>zephyr port:
<br />- modzephyr: revamp stacks_analyze() call
<br />- modzsensor: rename "TEMP" sensor channel to "DIE_TEMP"
<br />- prj_minimal.conf: switch to CONFIG_STDOUT_CONSOLE
<br />- Makefile: proxy ram_report, rom_report targets from Zephyr
<br />- prj_frdm_k64f.conf: add fxos8700 sensor
<br />- prj_frdm_kw41z.conf: add new board configuration
<br />- i2c: add support for hardware i2c
<br />- CMakeLists.txt: set AR to point to the Zephyr toolchain exe
<br />- machine_i2c: update to support new C-level I2C API
<br />- switch back to enabling I2C in board-specific configs</p>
<p>docs:
<br />- machine: change sleep to lightsleep and add timeout arguments
<br />- convert all cases of machine.sleep to machine.lightsleep
<br />- ure: fix match.group signature to indicate index param is required
<br />- uos: document extra requirements on stream objs passed to dupterm
<br />- pyboard: add link to pyboard v1.1 schematic and layout PDF
<br />- pyboard: make pyboard v1.1 pinout the default shown in quickref
<br />- develop: fix typos in C-module example for example_add_ints
<br />- library/machine.Pin: add PULL_HOLD constant to possible pin pulls
<br />- esp32: add a note to quickref about use of Pin.PULL_HOLD
<br />- esp32: add example for pin isolation in combination with deepsleep
<br />- develop: remove paragraph that was copied in error from other doc
<br />- cmodules: fix example to globally define MODULE_EXAMPLE_ENABLED
<br />- cmodules: note the various ways MODULE_EXAMPLE_ENABLED can be set
<br />- esp8266: add tutorial for APA102 LEDs
<br />- esp32: correct quickref for ESP32 hardware SPI with non-default IO
<br />- machine.I2C: add writevto method to write a vector of byte bufs
<br />- pyboard/quickref: refer to new machine.I2C instead of old pyb.I2C</p>
<p>travis:
<br />- update to use Ubuntu 16.04 Xenial for CI builds
<br />- enable test for running native code via mpy</p>dpgeorgetag:github.com,2008:Repository/290133466/v1.102019-01-25T13:56:52Zv1.10: Vast improvements to native emitter, new nrf port, unified documentation<p>Vast improvements to native emitter, new nrf port, unified documentation</p>
<p>In this release there are a wide range of improvements and additions to
<br />both the core and the ports. In the core the main improvement was to the
<br />native emitter to have much more comprehensive support for general Python
<br />features, such as generators and complex exception handling, and the
<br />generated machine code is smaller and retains its efficiency. Elsewhere,
<br />fuzzy testing was used to find and eliminate some corner-case bugs, user
<br />classes were optimised when they don't use special accessors, underscores
<br />in numeric literals are now supported (PEP515), and the uio.IOBase class
<br />was added to allow user defined streams.</p>
<p>For the extended modules there is now a VfsPosix filesystem component,
<br />a new ucryptolib module with AES support, addition of ure.sub() and of
<br />uhashlib.md5, and the lwIP socket implementation now has working TCP
<br />listen/accept backlog.</p>
<p>Compared to the last release the minimal baseline core code size is reduced
<br />by about 2.2%, down by roughly 1500 bytes for bare-arm port and 3500 bytes
<br />for minimal x86 port. Most other ports have increased in size due to the
<br />addition of new features (eg ucryptolib, ure.sub).</p>
<p>The stm32 port sees the introduction of a new bootloader -- mboot -- which
<br />supports DFU upload via USB FS, USB HS, as well as a custom I2C protocol,
<br />and also support to program external SPI flash. There is significant
<br />refactoring of the USB device driver, improved VCP throughput, and support
<br />for 2x VCP interfaces on the one USB device. lwIP has been integrated, and
<br />support added for SDRAM. Cortex-M0 CPUs are now supported along with
<br />STM32F0 MCUs.</p>
<p>For the esp8266 port the heap is increased by 2kbytes, the radio is
<br />automatically put to sleep if no WLAN interfaces are active, and the UART
<br />can now be disconnected from the REPL and its RX buffer length configured.
<br />Upon soft-reset sockets are now cleaned up.</p>
<p>The esp32 port has added support for external SPI RAM, PPPoS functionality,
<br />improved performance and stability when using threads, and other general
<br />bug fixes.</p>
<p>There is a new nrf port for Nordic MCUs, currently supporting nRF51x and
<br />nRF52x chips.</p>
<p>The docs have now been unified so there is just one set of documentation
<br />covering all ports. And initial documentation for the esp32 port is added.</p>
<p>There are two changes at the Python API level that are not backwards with
<br />previous versions:
<br />- uos.dupterm now requires that a stream passed to it is derived from
<br /> uio.IOBase (or is a native stream object).
<br />- The esp32 neopixel driver has had its default timing changed from 400kHz
<br /> to 800kHz; existing code that didn't explicitly specify the "timing"
<br /> parameter in the NeoPixel constructor may need to be updated to specify
<br /> this as "timing=0" to get 400kHz timing.</p>
<p>A detailed list of changes follows.</p>
<p>py core:
<br />- mpconfig.h: be stricter when autodetecting machine endianness
<br />- mpstate.h: adjust start of root pointer section to exclude non-ptrs
<br />- nlrx86: use naked attribute on nlr_push for gcc 8.0 and higher
<br />- vm: adjust #if logic for gil_divisor so braces are balanced
<br />- objfun: fix variable name in DECODE_CODESTATE_SIZE() macro
<br />- vm: use enum names instead of magic numbers in multi-opcode dispatch
<br />- vm: improve performance of opcode dispatch when using switch stmt
<br />- repl: fix handling of unmatched brackets and unfinished quotes
<br />- misc.h: add MP_STATIC_ASSERT macro to do static assertions
<br />- compile: change comment about ITER_BUF_NSLOTS to a static assertion
<br />- emitbc: avoid undefined behavior calling memset() with NULL 1st arg
<br />- parsenum: use int instead of mp_int_t for parsing float exponent
<br />- parsenum: avoid undefined behavior parsing floats with large exponents
<br />- objfloat: fix undefined shifting behavior in high-quality float hash
<br />- mpz: avoid undefined behavior at integer overflow in mpz_hash
<br />- objfloat: fix undefined integer behavior hashing negative zero
<br />- gc: when GC threshold is hit don't unnecessarily collect twice
<br />- parsenum: adjust braces so they are balanced
<br />- modbuiltins: add support for rounding integers
<br />- objgenerator: save state in old_globals instead of local variable
<br />- objgenerator: protect against reentering a generator
<br />- emit: combine fast and deref into one function for load/store/delete
<br />- emit: combine yield value and yield-from emit funcs into one
<br />- emit: combine build tuple/list/map emit funcs into one
<br />- emit: combine name and global into one func for load/store/delete
<br />- emit: combine load/store/delete subscr into one emit function
<br />- emit: combine load/store/delete attr into one emit function
<br />- emit: combine break_loop and continue_loop into one emit function
<br />- emit: combine import from/name/star into one emit function
<br />- emit: merge build set/slice into existing build emit function
<br />- emit: combine setup with/except/finally into one emit function
<br />- objtype: fix assertion failures in mp_obj_new_type by checking types
<br />- objtype: fix assertion failures in super_attr by checking type
<br />- stream: move definition of mp_stream_p_t from obj.h to stream.h
<br />- reader: allow MICROPY_VFS_POSIX to work with MICROPY_READER_POSIX
<br />- mpconfig.h: add default MICROPY_VFS_FAT config value
<br />- obj.h: introduce a "flags" entry in mp_obj_type_t
<br />- objtype: don't expose mp_obj_instance_attr()
<br />- objtype: optimise instance get/set/del by skipping special accessors
<br />- gc: add gc_sweep_all() function to run all remaining finalisers
<br />- lexer: add support for underscores in numeric literals
<br />- modio: add uio.IOBase class to allow to define user streams
<br />- mkrules.mk: regenerate all qstrs when config files change
<br />- stream: introduce and use efficient mp_get_stream to access stream_p
<br />- objarray: replace 0x80 with new MP_OBJ_ARRAY_TYPECODE_FLAG_RW macro
<br />- add checks for stream objects in print() and sys.print_exception()
<br />- compile: combine break and continue compile functions
<br />- compile: combine subscript_2 and subscript_3 into one function
<br />- compile: combine global and nonlocal statement compile functions
<br />- compile: combine or_test and and_test compile functions
<br />- compile: combine expr, xor_expr and and_expr into one function
<br />- compile: handle return/break/continue correctly in async with
<br />- objgenerator: eliminate need for mp_obj_gen_wrap wrapper instances
<br />- obj.h: fix broken build for object repr C when float disabled
<br />- simplify some cases of accessing the map of module and type dict
<br />- objdict: make mp_obj_dict_get_map an inline function
<br />- objmodule: make mp_obj_module_get_globals an inline function
<br />- obj.h: give compile error if using obj repr D with single-prec float
<br />- malloc: give a compile warning if using finaliser without GC
<br />- objgenerator: implement __name__ with normal fun attr accessor code
<br />- emitnative: optimise for iteration asm code for non-debug build
<br />- runtime: use mp_obj_new_int_from_ll when return int is not small
<br />- stream: introduce MP_STREAM_GET_FILENO ioctl request
<br />- objstr: in format error message, use common string with %s for type
<br />- asmthumb: optimise native code calling runtime glue functions
<br />- mpconfig.h: introduce MICROPY_DEBUG_PRINTER for debugging output
<br />- fix compiling with debug enabled and make more use of DEBUG_printf
<br />- emitnative: factor common code for native jump helper
<br />- emitnative: fix x86 native zero checks by comparing full word
<br />- asmx86: use generic emit function to simplify cmp emit function
<br />- emitnative: fix native locals stack to start at correct location
<br />- emitnative: simplify handling of exception objects from nlr_buf_t
<br />- emitnative: allocate space for local stack info as it's needed
<br />- compile: for dynamic compiler, widen literal 1 to get correct shift
<br />- py.mk: don't hardcode path to libaxtls.a
<br />- gc: in gc_alloc, reset n_free var right before search for free mem
<br />- objarray: allow to build again when bytearray is disabled
<br />- stream: adjust mp_stream_posix_XXX to take void*, not mp_obj_t
<br />- emitnative: use small tables to simplify handling of local regs
<br />- asmxtensa: handle function entry/exit when stack use larger than 127
<br />- asm*: support assembling code to jump to a register, and get PC+off
<br />- emitnative: optimise and improve exception handling in native code
<br />- asmxtensa: fix bug with order of regs in addi encoding
<br />- asmxtensa: optimise loading local addr and support larger offsets
<br />- emitnative: fix bug with store of 16 and 32 values in viper ARM mode
<br />- asmxtensa: use narrow version of add instr to reduce native code size
<br />- emitnx86: fix number of args passed to mp_setup_code_state, 4 not 5
<br />- vm: fix handling of finally-return with complex nested finallys
<br />- emitnative: cancel caught exception once handled to prevent reraise
<br />- emitnative: add support for return/break/continue in try and with
<br />- compile: factor code that compiles start/end of exception handler
<br />- py.mk: build axtls library directly from its source files
<br />- runtime: fix incorrect test for MICROPY_PORT_DEINIT_FUNC
<br />- objarray: bytearray: allow 2nd/3rd arg to constructor
<br />- emitnative: fix try-finally in outer scope, so finally is cancelled
<br />- fix native functions so they run with their correct globals context
<br />- optimise call to mp_arg_check_num by compressing fun signature
<br />- asmx64: fix bug in assembler when creating disp with r13 and 0 offset
<br />- {asmx86,asmx64}: extend test_r8_with_r8 to accept all 8 lower regs
<br />- emit: move MP_EMIT_OPT_xxx enums from compile.h to emitglue.h
<br />- emit: remove need to call set_native_type to set native/viper mode
<br />- emit: remove need to call set_native_type to set viper return type
<br />- emit: completely remove set_native_type, arg type is set in compiler
<br />- compile: merge viper annotation and normal param compilation stages
<br />- compile: factor code that compiles viper type annotations
<br />- emitnative: reuse mp_native_type_from_qstr when searching for a cast
<br />- make viper functions have the same entry signature as native
<br />- emitnative: support arbitrary number of arguments to viper functions
<br />- emitnative: use macros instead of raw offsetof for slot locations
<br />- emitnative: make viper funcs run with their correct globals context
<br />- asmxtensa: make indirect calls using func table, not raw pointers
<br />- asmthumb: detect presence of I-cache using CMSIS macro
<br />- objtype: clarify comment about configuring inplace op methods
<br />- shorten error messages by using contractions and some rewording
<br />- objstr: make % (__mod__) formatting operator configurable
<br />- modbuiltins: make oct/hex work when !MICROPY_PY_BUILTINS_STR_OP_MODULO
<br />- objgenerator: implement PEP479, StopIteration convs to RuntimeError
<br />- parsenum: avoid rounding errors with negative powers-of-10
<br />- modmath: add math.factorial, optimised and non-opt implementations
<br />- objstr: format: return bytes result for bytes format string
<br />- fix msvc C++ compiler warnings with MP_OBJ_FUN_MAKE_SIG macro
<br />- vm: make small optimisation of BUILD_SLICE opcode
<br />- objfloat: fix abs(-0.0) so it returns 0.0
<br />- emitnative: place const objs for native code in separate const table
<br />- asm*: remove ASM_MOV_REG_ALIGNED_IMM emit macro, it's no longer used
<br />- emitnative: change type of const_table from uintptr_t to mp_uint_t
<br />- vm: fix case of throwing GeneratorExit type into yield-from
<br />- runtime: remove nlr protection when calling __next__ in mp_resume
<br />- objtype: support full object model for get/set/delitem special meths
<br />- vm: when VM raises exception put exc obj at beginning of func state
<br />- asmthumb: add wide ldr to handle larger offsets
<br />- asmthumb: clean up asm_thumb_bl_ind to use new optimised ldr helper
<br />- asmthumb: extend asm entry/exit to handle stack larger than 508 bytes
<br />- asmx86: comment out unused asm_x86_nop to prevent compiler warnings
<br />- asmx64: extend asm_x64_mov_reg_pcrel to accept high registers
<br />- asmxtensa: use proper calculation for const table offset
<br />- emitnative: reorder native state on C stack so nlr_buf_t is first
<br />- emitnative: implement yield and yield-from in native emitter
<br />- runtime: use mp_import_name to implement tail of mp_import_from
<br />- runtime: remove comment in mp_import_name about level being 0
<br />- obj.h: use uint64_t instead of mp_int_t in repr-D MP_OBJ_IS_x macros
<br />- emitnative: clean up unused macro and forward function declarations
<br />- asmx64: change stack management to reference locals by rsp not rbp
<br />- asmx64: change indirect calls to load fun ptr from the native table
<br />- asmx86: change stack management to reference locals by esp not ebp
<br />- asmx86: change indirect calls to load fun ptr from the native table
<br />- emitnative: load native fun table ptr from const table for all archs
<br />- asmarm: simplify asm_arm_bl_ind to only load via index, not literal
<br />- asmthumb: remove unused fun_ptr arg from asm_thumb_bl_ind function
<br />- emitnative: remove unused ptr argument from ASM_CALL_IND macro
<br />- emitnative: consolidate use of stacked immediate values to one func
<br />- emitnative: simplify viper mode handling in emit_native_import_name
<br />- emitnative: push internal None rather than const obj where possible
<br />- emitnative: put None/False/True in global native const table
<br />- objtype: remove comment about catching exc from user __getattr__
<br />- objstr: make str.count() method configurable
<br />- objmodule: implement PEP 562's __getattr__ for modules
<br />- py.mk: when building axtls use -Wno-all to prevent all warnings
<br />- compile: fix case of eager implicit conversion of local to nonlocal
<br />- compile: remove unneeded variable from global/nonlocal stmt helpers
<br />- scope: optimise scope_find_or_add_id to not need "added" arg
<br />- runtime: fix qstr assumptions when handling "import *"
<br />- unicode: fix check for valid utf8 being stricter about contn chars
<br />- py.mk: fix broken Gmane URL
<br />- add option to reduce GC stack integer size to save RAM
<br />- objboundmeth: support loading generic attrs from the method
<br />- obj: add support for __int__ special method
<br />- objexcept: use macros to make offsets in emergency exc buf clearer
<br />- objexcept: make sure mp_obj_new_exception_msg doesn't copy/format msg
<br />- objdict: make .fromkeys() method configurable
<br />- bc: fix calculation of opcode size for opcodes with map caching
<br />- qstr: put a lower bound on new qstr pool allocation
<br />- objarray: introduce "memview_offset" alias for "free" field of object
<br />- gc: adjust gc_alloc() signature to be able to accept multiple flags
<br />- mpconfig: move MICROPY_VERSION macros to static ones in mpconfig.h
<br />- runtime: unlock the GIL in mp_deinit function
<br />- get optional VM stack overflow check compiling and working again
<br />- fix location of VM returned exception in invalid opcode and comments
<br />- modio: make iobase_singleton object const so it goes in ROM
<br />- obj.h: explicitly cast args to uint32_t in MP_OBJ_FUN_MAKE_SIG</p>
<p>extmod:
<br />- modlwip: update to work with lwIP v2.0
<br />- modlwip: set POLLHUP flag for sockets that are new
<br />- modlwip: allow to compile with MICROPY_PY_LWIP disabled
<br />- modussl_mbedtls: populate sock member right away in wrap_socket
<br />- modussl_mbedtls: use mbedtls_entropy_func for CTR-DRBG entropy
<br />- vfs: use u_rom_obj properly in argument structures
<br />- vfs_fat: rename FileIO/TextIO types to mp_type_vfs_fat_XXX
<br />- add VfsPosix filesystem component
<br />- vfs: add fast path for stating VfsPosix filesystem
<br />- vfs: introduce a C-level VFS protocol, with fast import_stat
<br />- moduhashlib: prefix all Python methods and objects with uhashlib
<br />- moduhashlib: reorder funcs so that they are grouped by hash type
<br />- moduhashlib: allow to disable the sha256 class
<br />- moduhashlib: allow using the sha256 implementation of mbedTLS
<br />- moduhashlib: make function objects STATIC
<br />- uos_dupterm: use native C stream methods on dupterm object
<br />- modussl_axtls: fix __del__ to point to mp_stream_close_obj
<br />- vfs_fat_diskio: factor disk ioctl code to reduce code size
<br />- update to use new mp_get_stream helper
<br />- moducryptolib: add ucryptolib module with crypto functions
<br />- moducryptolib: optionally export MODE_* constants to Python
<br />- moducryptolib: refactor functions for clean interface with axTLS
<br />- moducryptolib: add an mbedTLS implementation for this module
<br />- moducryptolib: prefix all Python methods/objects with ucryptolib
<br />- moducryptolib: shorten exception messages to reduce code size
<br />- moducryptolib: don't include arpa/inet.h, it's not needed
<br />- modure: add match.groups() method, and tests
<br />- modure: add match.span(), start() and end() methods, and tests
<br />- modure: add ure.sub() function and method, and tests
<br />- vfs: support opening a file descriptor (int) with VfsPosix
<br />- fix to support compiling with object representation D
<br />- vfs_posix: support ilistdir with no (or empty) argument
<br />- vfs_posix: use DTTOIF if available to convert type in ilistdir
<br />- modlwip: deregister all lwIP callbacks when closing a socket
<br />- modussl: support polling in ussl objects by passing through ioctl
<br />- modbtree: update to work with new mp_stream_posix_XXX signatures
<br />- modussl_axtls: use MP_ROM_PTR for objects in allowed args array
<br />- moduhashlib: add md5 implementation, using axTLS
<br />- moduhashlib: use newer message digest API for mbedtls >=2.7.0
<br />- moduhashlib: add md5 implementation using mbedtls
<br />- moductypes: remove BITFIELD from aggregate types enum
<br />- moductypes: accept OrderedDict as a structure description
<br />- modonewire: fix reset timings to match 1-wire specs
<br />- moductypes: make sizeof() accept "layout" parameter
<br />- modlwip: implement TCP listen/accept backlog
<br />- modlwip: fix read-polling of listening socket with a backlog
<br />- moductypes: implement __int__ for PTR
<br />- moductypes: add aliases for native C types</p>
<p>lib:
<br />- lwip: update lwIP to v2.0.3, tag STABLE-2_0_3_RELEASE
<br />- stm32lib: update library to include support for STM32F0 MCUs
<br />- utils/printf: make DEBUG_printf implementation more accessible
<br />- utils: fix to support compiling with object representation D
<br />- utils: expose pyb_set_repl_info function public
<br />- libm_dbl/tanh: make tanh more efficient and handle large numbers
<br />- libm/math: make tanhf more efficient and handle large numbers
<br />- libm/wf_tgamma: fix tgammaf handling of -inf, should return nan
<br />- libm_dbl: add implementation of copysign() for DEBUG builds
<br />- stm32lib: update library to fix issue with filling USB TX FIFO
<br />- libm/math: fix int type in float union, uint64_t should be uint32_t
<br />- libm/math: add implementation of __signbitf, if needed by a port
<br />- utils/pyexec: forcefully unlock the heap if locked and REPL active
<br />- utils: add generic MicroPython IRQ helper functions
<br />- stm32lib: update library to get F413 BOR defs and fix gcc 8 warning</p>
<p>drivers:
<br />- wiznet5k: fix bug with MACRAW socket calculating packet size
<br />- memory/spiflash: move cache buffer to user-provided config
<br />- memory/spiflash: rename functions to indicate they use cache
<br />- memory/spiflash: add functions for direct erase/read/write
<br />- sdcard: change driver to use new block-device protocol
<br />- sdcard: fix bug in computing number of sectors on SD Card
<br />- sdcard: do not release CS during the middle of read operations
<br />- cc3000: use cc3000_time_t instead of time_t for custom typedef
<br />- display/lcd160cr.py: in fast_spi, send command before flushing
<br />- sdcard: in test use os.umount and machine module instead of pyb
<br />- sdcard: remove debugging print statement in ioctl method
<br />- dht: allow open-drain-high call to be DHT specific if needed</p>
<p>tools:
<br />- pydfu.py: increase download packet size to full 2048 bytes
<br />- pydfu.py: add support for multiple memory segments
<br />- pydfu.py: use getfullargspec instead of getargspec for newer pyusb
<br />- pydfu.py: workaround stdio flush error on Windows with Python 3.6
<br />- pydfu.py: improve DFU reset, and auto-detect USB transfer size
<br />- mpy-tool.py: support freezing of floats in obj representation D
<br />- mpy-tool.py: put frozen bignum digit data in ROM, not in RAM
<br />- mpy-tool.py: set sane initial dynamic qstr pool size with frozen mods
<br />- mpy-tool.py: fix calc of opcode size for opcodes with map caching
<br />- mpy-tool.py: fix build error when no qstrs present in frozen mpy
<br />- dfu.py: pad image data to 8 byte alignment to support L476
<br />- pyboard.py: run exec: command as a string
<br />- pyboard.py: change base class of PyboardError to Exception
<br />- pyboard.py: in TelnetToSerial.close replace try/except with if</p>
<p>tests:
<br />- basics/special_methods2: enable some additional tests that work
<br />- add some tests for bigint hash, float hash and float parsing
<br />- extmod: add test for importing a script from a user VFS
<br />- extmod: remove conditional import of uos_vfs, it no longer exists
<br />- pyb: make i2c and pyb1 pyboard tests run again
<br />- io: add simple IOBase test
<br />- extmod: add test for VFS and user-defined filesystem and files
<br />- unix/extra_coverage: don't test stream objs with NULL write fun
<br />- extmod/ujson_dump.py: add test for dump to non-stream object
<br />- extmod: add test for ujson.dump writing to a user IOBase object
<br />- import: add test for importing invalid .mpy file
<br />- add tests using "file" argument in print and sys.print_exception
<br />- extmod/ucryptolib*: add tests for ucryptolib module
<br />- extmod/ucryptolib*: add into and inplace tests for ucryptolib
<br />- basics/namedtuple*: import ucollections first
<br />- move non-filesystem io tests to basics dir with io_ prefix
<br />- improve feature detection for VFS
<br />- run-tests: add nrf target
<br />- run-tests: improve crash reporting when running on remote targets
<br />- extmod/ujson_dump_iobase.py: return number of bytes written
<br />- make tests work on targets without float support
<br />- micropython/viper_cond: add test for large int as bool
<br />- run-tests: enable bool1.py test with native emitter
<br />- micropython: add tests for try and with blocks under native/viper
<br />- basics/set_pop.py: sort set before printing for consistent output
<br />- basics/int_big_error.py: use bytearray to test for int overflow
<br />- modify tests that print repr of an exception with 1 arg
<br />- basics: provide .exp files for generator tests that fail PEP479
<br />- run-tests: enable native tests for unwinding jumps
<br />- basics: add more tests for return within try-finally
<br />- basics: add test cases for context manager raising in enter/exit
<br />- float/cmath_fun.py: fix truncation of small real part of complex
<br />- float: test -inf and some larger values for special math funcs
<br />- remove pyboard.py symlink and instead import from ../tools
<br />- extmod/uhashlib_md5: add coverage tests for MD5 algorithm
<br />- float/float_parse.py: add tests for accuracy of small decimals
<br />- cpydiff: add case for difference in behaviour of bytes.format()
<br />- micropython: test loading const objs in native and viper funcs
<br />- basics: split out gen throw tests from yield-from-throw tests
<br />- run-tests: enabled native tests that pass now that yield works
<br />- unix/ffi_float: skip if strtof() is not available
<br />- uselect_poll_basic: add basic test for uselect.poll invariants
<br />- uctypes_sizeof_od: test for using OrderedDict as struct descriptor
<br />- basics/class_getattr: remove invalid test for __getattribute__
<br />- make bytes/str.count() tests skippable
<br />- extmod/uctypes_sizeof_layout: test for sizeof of different layout
<br />- import: add .exp file for module_getattr.py to not require Py 3.7
<br />- cmdline/cmd_showbc.py: fix test to explicitly declare nonlocal
<br />- extmod: skip uselect test when CPython doesn't have poll()
<br />- import_long_dyn: test for "import *" of a long dynamic name
<br />- io: update tests to use uos.remove() instead of uos.unlink()
<br />- basics/special_methods: add testcases for __int__
<br />- extmod/uctypes_ptr_le: test int() operation on a pointer field
<br />- extmod/uctypes_error: add test for unsupported unary op
<br />- run-tests: make .exp and .out file names unique by prefixing with dir</p>
<p>mpy-cross:
<br />- make build independent of extmod directory
<br />- Makefile: also undefine MICROPY_FORCE_32BIT and CROSS_COMPILE</p>
<p>minimal port:
<br />- main: allow to compile without GC enabled</p>
<p>unix port:
<br />- support MICROPY_VFS_POSIX and enable it in coverage build
<br />- moduos_vfs: add missing uos functions from traditional uos module
<br />- mpconfigport.h: enable MICROPY_PY_UCRYPTOLIB
<br />- mpconfigport_coverage: enable ure groups, span, start, end and sub
<br />- modos: convert dir-type to stat-type for file type in ilistdir
<br />- use MP_STREAM_GET_FILENO to allow uselect to poll general objects
<br />- Makefile: coverage: Explicitly build "axtls" too
<br />- Makefile: enable ussl module with nanbox build
<br />- Makefile: remove building of libaxtls.a which is no longer needed
<br />- Makefile: build libffi inside $BUILD
<br />- mpconfigport_coverage.h: enable uhashlib.md5
<br />- modos: include extmod/vfs.h for MP_S_IFDIR, etc
<br />- modjni: update .getiter signature to include mp_obj_iter_buf_t*
<br />- modjni: get building under coverage and nanbox builds
<br />- mpconfigport.h: enable MICROPY_PY_UHASHLIB_MD5 for uhashlib.md5
<br />- moduselect: raise OSError(ENOENT) if obj to modify is not in poller
<br />- modusocket: initial implementation of socket.settimeout()
<br />- modusocket: finish socket.settimeout() implementation
<br />- modffi: add support for "q"/"Q" specs (int64_t/uint64_t)
<br />- Makefile: allow to override/omit pthread lib name
<br />- modos: rename unlink to remove to be consistent with other ports
<br />- enable MICROPY_PY_BUILTINS_ROUND_INT
<br />- enable uio.IOBase
<br />- call gc_sweep_all() when doing a soft reset</p>
<p>windows port:
<br />- make printing of debugging info work out of the box
<br />- msvc: support custom compiler for header generation
<br />- msvc: implement file/directory type query
<br />- remove remaining traces of old GNU readline support</p>
<p>stm32 port:
<br />- usbd_conf.h: remove unused macros and clean up header file
<br />- usbd_conf: changes files to unix line endings and apply styling
<br />- usbdev: convert files to unix line endings
<br />- usbdev: remove unused RxState variable, and unused struct
<br />- usbdev: be honest about data not being written to HID endpoint
<br />- usbd_hid_interface: address possible race condition vs. interrupt
<br />- i2c: add new hardware I2C driver for F4 MCUs
<br />- machine_i2c: use new F4 hardware I2C driver for machine.I2C class
<br />- accel: switch pyb.Accel to use new C-level I2C API
<br />- modpyb: introduce MICROPY_PY_PYB_LEGACY config option for pyb mod
<br />- pyb_i2c: put pyb.I2C under MICROPY_PY_PYB_LEGACY setting
<br />- modpyb: remove unused includes and clean up comments
<br />- usb: use usbd_cdc_itf_t pointer directly in USB_VCP class
<br />- usb: combine CDC lower-layer and interface state into one struct
<br />- usb: combine HID lower-layer and interface state into one struct
<br />- usb: make CDC endpoint definitions private to core usbdev driver
<br />- usb: change CDC tx/rx funcs to take CDC state, not usbdev state
<br />- usb: change HID report funcs to take HID state, not usbdev state
<br />- usb: add ability to have 2x VCP interfaces on the one USB device
<br />- usb: initialise cdc variable to prevent compiler warnings
<br />- enable UART7/8 on F4 series that have these peripherals
<br />- add support for STM32L496 MCU
<br />- boards: add board ld and af.csv files for STM32L496 MCU
<br />- boards: add config files for new board, STM32L496GDISC
<br />- rtc: don't try to set SubSeconds value on RTC
<br />- integrate lwIP as implementation of usocket module
<br />- rng: use Yasmarang for rng_get() if MCU doesn't have HW RNG
<br />- remove unneeded HTML release notes from usbdev and usbhost dirs
<br />- add low-level hardware I2C slave driver
<br />- add new component, the mboot bootloader
<br />- allow to have no storage support if there are no block devices
<br />- add support for Cortex-M0 CPUs
<br />- timer: make timer_get_source_freq more efficient by using regs
<br />- allow a board to disable MICROPY_VFS_FAT
<br />- boards: add startup_stm32f0.s for STM32F0 MCUs
<br />- add support for STM32F0 MCUs
<br />- boards: add alt-func CSV list and linker script for STM32F091
<br />- boards: add NUCLEO_F091RC board configuration files
<br />- README: update to include STM32F0 in list of supported MCUs
<br />- boards: split combined alt-func labels and fix some other errors
<br />- boards: ensure USB OTG power is off for NUCLEO_F767ZI
<br />- flash: increase H7 flash size to full 2MiB
<br />- modnetwork: don't take netif's down when network is deinited
<br />- modnetwork: change base entry of NIC object from type to base
<br />- modnetwork: provide generic implementation of ifconfig method
<br />- add network driver for Wiznet5k using MACRAW mode and lwIP
<br />- modnetwork: fix arg indexing in generic ifconfig method
<br />- mpconfigport.h: enable DELATTR_SETATTR and BUILTINS_NOTIMPLEMENTED
<br />- mboot: increase USB rx_buf and DFU buf sizes to full 2048 bytes
<br />- Makefile: rebuild all qstrs when any board configuration changes
<br />- boards/STM32L476DISC: update SPI flash config for cache change
<br />- timer: support TIM1 on F0 MCUs
<br />- i2c: fix num_acks calculation in i2c_write for F0 and F7 MCU's
<br />- i2cslave: fix ordering of event callbacks in slave IRQ handler
<br />- mboot: adjust user-reset-mode timeout so it ends with mode=1
<br />- boards/stm32f091_af.csv: split labels that are multiple funcs
<br />- boards/NUCLEO_F091RC: add Arduino-named pins and rename CPU pins
<br />- can: use MP_OBJ_ARRAY_TYPECODE_FLAG_RW where appropriate
<br />- spi: fix SPI driver so it can send/recv more than 65535 bytes
<br />- mboot: define constants for reset mode cycling and timeout
<br />- boards/NUCLEO_F091RC: fix TICK_INT_PRIORITY so it is highest prio
<br />- qspi: don't require data reads and writes to be a multiple of 4
<br />- mboot: add support for erase/read/write of external SPI flash
<br />- boards: add .ld and af.csv files for STM32F722
<br />- modnetwork: fix query of DNS IP address in ifconfig()
<br />- mboot: fix bug with invalid memory access of USB state
<br />- mboot: only compile in code for the USB periph that is being used
<br />- mboot: always use a flash latency of 1WS to match 48MHz HCLK
<br />- access dict map directly instead of using helper function
<br />- support compiling with object representation D
<br />- fatfs_port: fix bug when MICROPY_HW_ENABLE_RTC not enabled
<br />- timer: use enum for indexing keyword arg in pyb_timer_init_helper
<br />- timer: add tick_hz arg to Timer constructor and init method
<br />- mphalport: make mp_hal_stdin_rx_chr/stdout_tx_strn weakly linked
<br />- flashbdev: fix bug with L4 block cache, dereferencing block size
<br />- add method for statically configuring pin alternate function
<br />- sdcard: use mp_hal_pin_config_alt_static to configure SD card pins
<br />- sdram: add SDRAM driver from OpenMV project
<br />- sdram: integrate SDRAM driver into rest of code
<br />- sdram: on F7 MCUs enable MPU on external SDRAM
<br />- boards/STM32F429DISC: enable onboard SDRAM
<br />- sdcard: get SDMMC alt func macro names working with F4,F7,H7 MCUs
<br />- Makefile: use -Wno-attributes for ll_usb.c HAL source file
<br />- rtc: get rtc.wakeup working on F0 MCUs
<br />- modmachine: get machine.sleep working on F0 MCUs
<br />- extint.h: use correct EXTI lines for RTC interrupts
<br />- modmachine: get machine.sleep working on L4 MCUs
<br />- adc: disable VBAT in read channel helper function
<br />- adc: fix ADC reading on F0 MCUs to only sample a single channel
<br />- spi: round up prescaler calc to never exceed requested baudrate
<br />- sdram: allow additional config by a board, and tune MPU settings
<br />- boards/STM32F429DISC: add burst len and autorefresh to SDRAM cfg
<br />- boards/STM32F7DISC: enable onboard SDRAM
<br />- spi: split out pyb.SPI and machine.SPI bindings to their own files
<br />- spi: add implementation of low-level SPI protocol
<br />- mboot/main: use correct formula for DFU download address
<br />- Makefile: allow external BOARD_DIR directory to be specified
<br />- boards/STM32L476DISC: enable external RTC xtal to get RTC working
<br />- for MCUs that have PLLSAI allow to set SYSCLK at 2MHz increments
<br />- dma: pass DMA direction as parameter to dma_init not in cfg struct
<br />- dma: reinitialise the DMA if the direction changed on the channel
<br />- sdcard: use only a single DMA stream for both SDIO TX/RX
<br />- sdcard: move temporary DMA state from BSS to stack
<br />- spi: be sure to set all SPI config values in SPI proto init
<br />- change flash IRQ priority from 2 to 6 to prevent preemption
<br />- flashbdev: protect flash writes from cache flushing and USB MSC
<br />- sdcard: fully reset SDMMC periph before calling HAL DMA functions
<br />- dma: get DMA working on F0 MCUs
<br />- sdram: add support for 32-bit wide data bus and 256MB in MPU cfg
<br />- boards/STM32F769DISC: add optional support for external SDRAM
<br />- add support for STM32F765xx MCUs
<br />- Makefile: include copysign.c in double precision float builds
<br />- adc: fix ADC calibration scale for L4 MCUs, they use 3.0V
<br />- adc: increase sample time for internal sensors on L4 MCUs
<br />- dcmi: add F4/F7/H7 hal files and dma definitions for DCMI periph
<br />- uart: add support for USART3-8 on F0 MCUs
<br />- boards/NUCLEO_F091RC: enable USART3-8 with default pins
<br />- modmachine: re-enable PLLSAI[1] after waking from stop mode
<br />- powerctrl: move function to set SYSCLK into new powerctrl file
<br />- powerctrl: fix configuring APB1/APB2 frequency when AHB also set
<br />- powerctrl: factor code to set RCC PLL and use it in startup
<br />- powerctrl: factor code that configures PLLSAI on F7 MCUs
<br />- powerctrl: optimise passing of default values to set_sysclk
<br />- powerctrl: don't configure clocks if already at desired frequency
<br />- usbd_conf: allocate enough space in USB HS TX FIFO for CDC packet
<br />- mpconfigport.h: enable math.factorial, optimised version
<br />- main: add configuration macros for board to set heap start/end
<br />- usbd_cdc_interface: handle disconnect IRQ to set VCP disconnected
<br />- usbd_cdc_interface: refactor USB CDC tx code to not use SOF IRQ
<br />- spi: fix calculation of SPI clock source on H7 MCUs
<br />- boards/stm32h743.ld: fix total flash size, should be 2048k
<br />- system_stm32: introduce configuration defines for PLL3 settings
<br />- adc: add ADC auto-calibration for L4 MCUs
<br />- flashbdev: add missing include for irq.h
<br />- servo: only initialise TIM5 if it is needed, to save power
<br />- usb: fully deinitialise USB periph when it is deactivated
<br />- powerctrl: move (deep)sleep funcs from modmachine.c to powerctrl.c
<br />- powerctrl: disable IRQs during stop mode to allow reconfig on wake
<br />- boards/STM32F429DISC: enable UART as secondary REPL
<br />- uart: always show the flow setting when printing a UART object
<br />- mboot: provide led_state_all function to reduce code size
<br />- mboot: add support for 4th board LED
<br />- boards: add configuration for putting mboot on PYBv1.x
<br />- mboot: add documentation for using mboot on PYBv1.x
<br />- powerctrl: add support for standby mode on L4 MCUs
<br />- uart: add rxbuf keyword arg to UART constructor and init method
<br />- boards: add STM32L432KC chip configuration files
<br />- add peripheral support for STM32L432
<br />- boards: add NUCLEO_L432KC board configuration files
<br />- split out UART Python bindings from uart.c to machine_uart.c
<br />- uart: factor out code from machine_uart.c that computes baudrate
<br />- uart: rework uart_get_baudrate so it doesn't need a UART handle
<br />- uart: factor out code to set RX buffer to function uart_set_rxbuf
<br />- uart: remove HAL's UART_HandleTypeDef from UART object struct
<br />- uart: simplify deinit of UART, no need to call HAL
<br />- uart: for UART init, pass in params directly, not via HAL struct
<br />- uart: move config of char_width/char_mask to uart.c
<br />- uart: add ability to have a static built-in UART object
<br />- extint: use correct EXTI channels on H7 MCUs for RTC events
<br />- adc: fix calibrated volt/temp readings on H7 by using 16bit scale
<br />- adc: increase ADC sampling time for internal sources on H7 MCUs
<br />- adc: support 16-bit ADC configuration on H7 MCUs
<br />- boards: allow OpenOCD stm_flash procedure to accept single FW img
<br />- boards/NUCLEO_L432KC: specify L4 OpenOCD config file for this MCU
<br />- main: add board config option to enable/disable mounting SD card
<br />- implement UART.irq() method with initial support for RX idle IRQ
<br />- uart: fix uart_rx_any in case of no buffer to return 0 or 1
<br />- uart: always enable global UART IRQ handler on init
<br />- uart: clear overrun error flag after reading RX data register
<br />- uart: make sure user IRQs are handled even with a keyboard intr
<br />- modmachine: fix reset_cause to correctly give DEEPSLEEP on L4 MCU
<br />- sdcard: properly reset SD periph when SDMMC2 is used on H7 MCUs
<br />- wdt: make singleton WDT object const so it goes in ROM
<br />- main: make thread and FS state static and exclude when not needed
<br />- use MICROPY_GC_STACK_ENTRY_TYPE to save some RAM
<br />- .gitattributes: remove special text handling of stm32 usbdev files
<br />- enable MICROPY_PY_BUILTINS_ROUND_INT
<br />- enable descriptors
<br />- enable uio.IOBase
<br />- enable ure.sub()
<br />- call gc_sweep_all() when doing a soft reset</p>
<p>cc3200 port:
<br />- mods: include stream.h to get definition of mp_stream_p_t
<br />- mods: access dict map directly instead of using helper func
<br />- use MICROPY_GC_STACK_ENTRY_TYPE to save some RAM</p>
<p>esp8266 port:
<br />- mpconfigport.h: add some weak links to common Python modules
<br />- modnetwork: return empty str for hostname if STA is inactive
<br />- modnetwork: raise ValueError when getting invalid WLAN id
<br />- modmachine: allow I2C and SPI to be configured out of the build
<br />- change UART(0) to attach to REPL via uos.dupterm interface
<br />- modules/ntptime.py: remove print of newly-set time
<br />- mpconfigport.h: enable ucryptolib module for standard build
<br />- esp8266_common.ld: put mp_keyboard_interrupt in iRAM
<br />- modesp: run ets_loop_iter before/after doing flash erase/write
<br />- let machine.WDT trigger the software WDT if obj is not fed
<br />- Makefile: remove build of libaxtls.a and add back tuned config
<br />- main: increase heap by 2kb, now that axtls rodata is in ROM
<br />- remove scanning of GC pointers in native code block
<br />- ets_alt_task: process idle callback if no other events occurred
<br />- modnetwork: automatically do radio sleep if no interface active
<br />- modnetwork: wait for iface to go down before forcing power mgmt
<br />- machine_uart: add rxbuf keyword arg to UART constructor/init
<br />- main: activate UART(0) on dupterm for REPL before boot.py runs
<br />- esp_mphal: provide mp_hal_pin_od_high_dht so DHT works reliably
<br />- implement high-res timers using new tick_hz argument
<br />- use MICROPY_GC_STACK_ENTRY_TYPE to save some RAM
<br />- enable MICROPY_PY_BUILTINS_ROUND_INT
<br />- enable descriptors
<br />- enable uio.IOBase
<br />- enable ure.sub()
<br />- call gc_sweep_all() when doing a soft reset, cleans up sockets</p>
<p>esp32 port:
<br />- update to latest ESP IDF version
<br />- modnetwork: fix STA/AP activate/deactivate for new IDF API
<br />- Makefile: update to latest ESP IDF version
<br />- esp32.custom_common.ld: put soc code in iram0
<br />- silence ESP-IDF log messages when in raw REPL mode
<br />- Makefile: extract common C & C++ flags for consistent compilation
<br />- add support for building with external SPI RAM
<br />- modnetwork: fix isconnected() when using static IP config
<br />- remove port-specific uhashlib implementation and use common one
<br />- fatfs_port: implement get_fattime so FAT files have a timestamp
<br />- update to latest ESP IDF
<br />- modules: include umqtt library in frozen modules
<br />- mpconfigport.h: enable ucryptolib module
<br />- allow to build with uPy floats disabled
<br />- reduce latency for handling of scheduled Python callbacks
<br />- modnetwork: add support for bssid parameter in WLAN.connect()
<br />- implement WLAN.status() return codes
<br />- modesp32: add raw temperature reading to esp32 module
<br />- modesp32: use MP_ROM_QSTR and MP_ROM_PTR in const locals dict
<br />- modnetwork: add network.(W)LAN.ifconfig('dhcp') support
<br />- update to latest ESP IDF
<br />- fix int overflow in machine.sleep/deepsleep functions
<br />- machine_rtc: fix locals dict entry, init qstr points to init meth
<br />- modesp32: add hall_sensor() function
<br />- network_ppp: add PPPoS functionality
<br />- mpthreadport: prevent deadlocks when deleting all threads
<br />- allocate task TCB and stack from system heap not uPy heap
<br />- machine_uart: add txbuf/rxbuf keyword args to UART construct/init
<br />- machine_uart: implement UART.sendbreak() method
<br />- machine_pwm: support higher PWM freq by auto-scaling timer res
<br />- machine_pwm: on deinit stop routing PWM signal to the pin
<br />- modmachine: enable machine.sleep() now that the IDF supports it
<br />- mphalport: when tx'ing to REPL only release GIL if many chars sent
<br />- modsocket: for socket read only release GIL if socket would block
<br />- machine_pin: add Pin.off() and Pin.on() methods
<br />- Makefile: use system provided math library rather than uPy one
<br />- modules/neopixel.py: change NeoPixel to different default timings
<br />- machine_hw_spi: use separate DMA channels for HSPI and VSPI
<br />- machine_hw_spi: make HW SPI objects statically allocated
<br />- implement high-res timers using new tick_hz argument
<br />- enable MICROPY_PY_BUILTINS_ROUND_INT
<br />- enable descriptors
<br />- enable uio.IOBase
<br />- enable ure.sub()
<br />- call gc_sweep_all() when doing a soft reset</p>
<p>nrf port:
<br />- add new port to Nordic nRF5x MCUs
<br />- align help.c builtin help text to use correct type
<br />- add WT51822-S4AT board
<br />- use --gc-sections to reduce code size
<br />- add compile switch to disable VFS
<br />- enable Link-time optimizations (LTO)
<br />- boards/arduino_primo: add missing hal_rng config used by random mod
<br />- implement NVMC HAL
<br />- disable FAT/VFS by default
<br />- hal/nvmc: remove pre-compiler error thrown in nvmc.h, if on nrf52
<br />- hal/hal_nvmc: fix non-SD code
<br />- boards: update linker scripts
<br />- add micro:bit filesystem
<br />- drivers/bluetooth/ble_drv: don't handle non-events
<br />- modules/uos/microbitfs: make OSError numeric
<br />- main: run boot.py and main.py on startup
<br />- use micropython libm to save flash
<br />- main: add ampy support
<br />- drivers/bluetooth: start advertising after disconnect
<br />- update usage of mp_obj_new_str by removing last parameter
<br />- remove default FROZEN_MPY_DIR
<br />- option to enable Ctrl-C in NUS console
<br />- boards/microbit: add copy of microbit display and image files
<br />- boards/microbit: add copy of microbit font type from microbit-dal
<br />- boards/microbit: rename display/image files from .cpp to .c ext
<br />- boards/microbit: update board modules from C++ to C-code
<br />- boards/microbit: add framework updates to build micro:bit modules
<br />- boards/microbit: attempt to get working display/images without FP
<br />- boards/microbit: add modmicrobit.h to expose module init function
<br />- boards/microbit: include modmicrobit.h in board_modules.h
<br />- drivers/softpwm: rename init function to softpwm_init0
<br />- drivers/ticker: rework ticker functions for microbit display/music
<br />- boards/microbit: update to work with new ticker code
<br />- modules/music: remove init of softpwm/ticker upon music module load
<br />- update main.c to init relevant board drivers, if enabled
<br />- boards/microbit: move microbit target to custom linker script
<br />- boards/microbit/modules: fix tabbing in modmicrobit.c
<br />- boards/microbit: add temperature back to microbit module
<br />- boards/microbit: update docs on top level tick low pri callback
<br />- change board module header from board_modules.h to boardmodules.h
<br />- add if-def around inclusion of nrf_sdm.h in main
<br />- boards/microbit: enable music, display, image, microbit module
<br />- drivers/bluetooth: reset evt_len to size of static buffer each iter
<br />- add support for s132 v5.0.0 bluetooth stack (<a class="issue-link js-issue-link" href="https://github.com/micropython/micropython/pull/139">micropython#139</a>)
<br />- change PYB prefix to MPY
<br />- only search for frozen files if FROZEN_MPY_DIR is set
<br />- mpconfigport: reduce GC stack size for nrf51
<br />- modules/machine/pin: disable pin debug by default
<br />- boards/common.ld: avoid overflowing the .text region
<br />- drivers/ble_drv: fixing sd_ble_enable bug for SD s132 v.2.0.1
<br />- make machine.UART optional
<br />- fix stack size in ld script and enable MICROPY_STACK_CHECK
<br />- improve include of boardmodules.mk
<br />- make LTO configurable via Makefile flag
<br />- boards/microbit/modules: initialize variable in microbit_sleep
<br />- replace custom-HAL with nrfx-HAL
<br />- fix NUS console when using boot.py or main.py
<br />- Makefile: fix .PHONY target
<br />- enable -g flag by default
<br />- make linker scripts more modular
<br />- remove port member from Pin object
<br />- modules/machine/pin: add support for IRQ on Pin's
<br />- modules/machine/spi: sPIM (EasyDMA) backend for nrf52x
<br />- drivers/bluetooth/ble_drv: increase max transfers in progress
<br />- gccollect: use the SP register instead of MSP
<br />- boards: remove unused defines from board config headers
<br />- boards/wt51822_s4at: fixes after nrfx and Pin IRQ introduction
<br />- modules/random: rename port config for RNG
<br />- modules: align method to resolve pin object
<br />- adc: allow for external use of new and value read function
<br />- spi: allow for external use of new and transfer function
<br />- return immediatly from mp_hal_delay_us if 0us is given
<br />- modules/machine/adc: fix to make adc.c compile for nrf51 targets
<br />- bluetooth: fixes for s132 v5 BLE stack
<br />- Makefile: use "standard" GCC -fshort-enums instead of --short-enums
<br />- Makefile: remove -fstack-usage
<br />- Makefile: use C11 instead of Gnu99
<br />- Makefile: refine dead-code elimination parameters
<br />- modules/machine/adc: don't compare -1 to an unsigned number
<br />- modules/uos/microbitfs: fix errno defines
<br />- modules/uos/microbitfs: remove unused uos_mbfs_mount
<br />- enable micro:bit FS by default
<br />- boards/feather52: move phony targets to main Makefile
<br />- modules/machine/spi: move enable-guard to prevent wrong includes
<br />- nrfx_config: move back nrf52832 to use non-EasyDMA SPI
<br />- move pyb module to boards module
<br />- add support for reading output pin state
<br />- generalize feather52 target
<br />- bluetooth: add support for s132/s140 v6, remove s132 v2/3/5
<br />- boards: check for stack/heap size using an assert
<br />- quick-fix on const objects with open array dimension in objtuples
<br />- bluetooth: replace BLE REPL (WebBluetooth) URL
<br />- add explicit make flag for oofatfs
<br />- compile nlr objects with -fno-lto flag
<br />- upgrade to nrfx 1.1.0
<br />- drivers: add license text to ticker.h and softpwm.h
<br />- use mp_raise_ValueError instead of nlr_raise(...)
<br />- include $(SRC_MOD) in the build
<br />- Makefile: make sure dependencies for pins_gen.c are correct
<br />- properly use (void) instead of () for function definitions
<br />- boards/microbit: use MICROPY_PY_BUILTINS_FLOAT to detect FP support
<br />- update nrfjprog links to allow to download any version
<br />- drivers/flash: fix incorrect page alignment check
<br />- uos: add mbfs __enter__ and __exit__ handlers
<br />- enable all PWM, RTC and Timer instances for nrf52840
<br />- correct index checking of ADC/PWM/RTCounter instances
<br />- use separate config for each PWM instance
<br />- uart: remove unused UART.char_width field
<br />- uart: fix UART.writechar() to write just 1 byte
<br />- bluetooth: set GAP_ADV_MAX_SIZE to 31 (s132/s140)
<br />- bluetooth: update BLE stack download script</p>
<p>pic16bit port:
<br />- update to compile with latest xc16 v1.35 compiler</p>
<p>teensy port:
<br />- add own uart.h to not rely on stm32's version of the file</p>
<p>zephyr port:
<br />- README: hint about existence of qemu_x86_nommu
<br />- main: after builtin testsuite, drop to REPL
<br />- mpconfigport.h: enable uhashlib and ubinascii modules
<br />- modzsensor: zephyr sensor subsystem bindings
<br />- prj_base.conf: enable DHCP and group static IPs together
<br />- add prj_disco_l475_iot1.conf with sensor drivers
<br />- Makefile: add kobj_types_h_target to Z_EXPORTS
<br />- prj_base.conf: remove outdated CONFIG_NET_NBUF_RX_COUNT option
<br />- prj_qemu_x86.conf: remove outdated CONFIG_RAM_SIZE
<br />- rename CONFIG_CONSOLE_PULL to CONFIG_CONSOLE_SUBSYS
<br />- prj_base.conf: update for net_config subsys refactor
<br />- CMakeLists: update for latest Zephyr CMake usage refactorings</p>
<p>docs:
<br />- library: add documentation for ucollections.deque
<br />- ucryptolib: add docs for new ucryptolib module
<br />- usocket: getaddrinfo: describe af/type/proto optional params
<br />- usocket: minor fixes to grammar of getaddrinfo
<br />- uos: make it clear that block device block_num param is an index
<br />- ure: document sub(), groups(), span(), start() and end()
<br />- ure: document some more supported regex operators
<br />- pyboard: for latex build, use smaller quickref jpg, and no gifs
<br />- library: remove "only" directive from all pyb module docs
<br />- library/machine.UART: remove conditional docs for wipy port
<br />- library/machine: remove conditional docs for wake_reason function
<br />- library/machine: remove conditional docs for rng function
<br />- library/index: remove all conditionals from library index
<br />- library/index: add hint about using help('modules') for discovery
<br />- reference/index: remove conditional for inline asm docs
<br />- library/machine: remove conditionals in machine class index
<br />- move WiPy specific Timer class to separate doc file
<br />- library/machine.I2C.rst: clarify availability of primitive I2C ops
<br />- library/machine.UART.rst: specify optional txbuf and rxbuf args
<br />- library/pyb: add deprecation warning for mount and old block proto
<br />- pyboard: fix to use Sphinx style for internal/external links
<br />- library/machine.SPI: add note about baudrate imprecision
<br />- library/network: move specific network classes to their own file
<br />- library/network: make AbstractNIC methods layout correctly
<br />- unify all the ports into one set of documentation
<br />- remove sphinx_selective_exclude, it's no longer used
<br />- wipy: fix links to network.Server, and markup for boot.py
<br />- uselect: describe more aspects of poll.register/modify behavior
<br />- machine.Pin: add note regarding irq handler argument
<br />- machine.Pin: document "hard" argument of Pin.irq method
<br />- uio: document StringIO/BytesIO(alloc_size) constructors
<br />- library/uctypes: add examples and make general updates
<br />- conf.py: use https for intersphinx link to docs.python.org
<br />- ure: fully describe supported syntax subset, add example
<br />- differences: clarify the differences are against Python 3.4
<br />- add initial docs for esp32 port, including quick-ref and general
<br />- library: add documentation for esp32 module</p>
<p>travis:
<br />- install explicit version of urllib3 for coveralls
<br />- use build stages and parallel jobs under Travis CI
<br />- add nrf port to Travis CI build</p>
<p>examples:
<br />- embedding: add code markup and fix typo in README.md
<br />- embedding: fix reference to freed memory, lexer src name
<br />- embedding: fix hard-coded MP_QSTR_ value
<br />- unix/ffi_example: clean up and update the ffi example</p>
<p>README:
<br />- update list of ports to include esp32 and nrf
<br />- remove references to "make axtls", it's no longer needed
<br />- remove text about selecting different ports in the docs</p>dpgeorgetag:github.com,2008:Repository/290133466/v1.9.42018-05-11T06:40:09Zv1.9.4<p>Parser size reduced, new Python stack, stm32 improvements, new esp32 …</p>
<p>…port</p>
<p>This release brings some significant size reductions to the parser, as well
<br />as removal of unused code and additional tests to improve coverage of the
<br />core. A new optional, internal Python stack is introduced for scoped
<br />allocation and can be used instead of alloca to provide more efficient and
<br />flexible temporary memory; see MICROPY_ENABLE_PYSTACK. There have been
<br />many improvements and internal code refactors of the stm32 port, and the
<br />port to the Espressif ESP32 SoC has been merged from its development
<br />repository.</p>
<p>Compared to the last release the change in code size is (in bytes, using
<br />gcc 7.3):</p>
<p> bare-arm: -1832
<br />minimal x86: -2608
<br /> unix x64: -5129
<br />unix nanbox: +1024
<br /> stm32: +2120
<br /> cc3200: -928
<br /> esp8266: +336</p>
<p>The decrease is mainly due to the reduced size of the parser, where the
<br />table of rule pointers was compressed to a table of offsets. The increase
<br />in the stm32 and esp8266 ports is due to additional features, such as more
<br />colour formats in the framebuf module and the addition of ujson.dump().</p>
<p>Code coverage (measured by gcov) has improved since the last version
<br />(v1.9.3 on the left, v1.9.4 on the right):</p>
<p>py: 15202/15447 = 98.4% -> 15391/15513 = 99.2%
<br />extmod: 2227/ 2363 = 94.2% -> 2291/ 2430 = 94.3%</p>
<p>Changes and additions seen by the Python user include: improvement of dir()
<br />and tab-completion to list all available attributes of an object; addition
<br />of efficient ucollections.deque type with fixed size; better handling and
<br />polling support of sockets that get into an error state; implementation of
<br />key and cert keyword arguments in ussl.wrap_socket (for axtls);
<br />uos.ilistdir now return 4-tuples with the file size in the fourth position.</p>
<p>Changes at the C level include: removal of "make_qstr_if_not_already"
<br />argument from mp_obj_new_str; rename of mp_exc_recursion_depth to
<br />mp_raise_recursion_depth; removal of mp_const_MemoryError_obj; switching
<br />of stream close operation from method to ioctl; refactoring of how native
<br />emitter code is compiled with a file per architecture.</p>
<p>The stm32 port has seen a lot of improvements and additions, as well as
<br />some significant internal refactoring to better support configuring custom
<br />boards. STM32F7 support is improved, USB HS is supported for F723 and
<br />F733, the CAN class has improvements to handle bus errors, ctrl-C can
<br />now interrupt running code when the REPL is over UART, and the ADC class
<br />added the read_timed_multi static method. Board configuration has seen
<br />some internal changes, in particular with setting LD_FILES, TEXT0_ADDR,
<br />and TEXT1_ADDR in mpconfigboard.mk (previously LD_FILE, FLASH_ADDR,
<br />TEXT_ADDR). The pin_X and pyb_pin_X identifiers have been changed to be
<br />pointers to objects rather than objects, and main is renamed to stm32_main.</p>
<p>A detailed list of changes follows.</p>
<p>py core:
<br />- compile: use alloca instead of qstr_build when compiling import name
<br />- mpconfig: introduce reusable MP_HTOBE32(), etc. macros
<br />- objtype: mp_obj_new_type: name base types related vars more clearly
<br />- objnamedtuple: add _asdict function if OrderedDict is supported
<br />- emitnative: clean up asm macro names so they have dest as first arg
<br />- mkenv.mk: use $(PYTHON) consistently when calling Python tools
<br />- objstr: remove "make_qstr_if_not_already" arg from mp_obj_new_str
<br />- objstr: make mp_obj_new_str_of_type check for existing interned qstr
<br />- objstr: when constructing str from bytes, check for existing qstr
<br />- add config option to disable multiple inheritance
<br />- objnamedtuple: allow to reuse namedtuple basic functionality
<br />- objfloat: allow float() to parse anything with the buffer protocol
<br />- modbuiltins: slightly simplify code in builtin round()
<br />- runtime: simplify handling of containment binary operator
<br />- opmethods: include the correct header for binary op enums
<br />- runtime: add MP_BINARY_OP_CONTAINS as reverse of MP_BINARY_OP_IN
<br />- parsenum: improve parsing of floating point numbers
<br />- objdict: reuse dict-view key iterator for standard dict iterator
<br />- annotate func defs with NORETURN when their corresp decls have it
<br />- qstr: rewrite find_qstr to make manifest that it returns a valid ptr
<br />- gc: in gc_realloc, convert pointer sanity checks to assertions
<br />- objgenerator: remove unreachable code for STOP_ITERATION case
<br />- misc.h: add m_new_obj_var_with_finaliser()
<br />- mp_call_function_*_protected(): pass-thru return value if possible
<br />- modbuiltins: use standard arg-parsing helper func for builtin print
<br />- mpprint: make "%p" format work properly on 64-bit systems
<br />- mpprint: support "%lx" format on 64-bit systems
<br />- malloc: allow to use debug logging if !MICROPY_MALLOC_USES_ALLOCATED_SIZE
<br />- gc: add CLEAR_ON_SWEEP option to debug mis-traced objects
<br />- emitbc, asmbase: only clear emit labels to -1 when in debug mode
<br />- asmbase: revert removal of clearing of label offsets for native emit
<br />- objint_longlong: check for zero division/modulo
<br />- runtime: when tracing unary/binary ops, output op (method) name
<br />- gc: factor out a macro to trace GC mark operations
<br />- gc: in sweep debug output, print pointer as a pointer
<br />- objfun: factor out macro for decoding codestate size
<br />- objfun, vm: add comments on codestate allocation in stackless mode
<br />- objfun: factor out macro for initializing codestate
<br />- mkrules.mk: add "clean-frozen" target to clean frozen script/modules dir
<br />- runtime: move mp_exc_recursion_depth to runtime and rename to raise
<br />- introduce a Python stack for scoped allocation
<br />- convert all uses of alloca() to use new scoped allocation API
<br />- runtime: use the Python stack when building *arg and **kwarg state
<br />- objexcept: use INT_FMT when printing errno value
<br />- extend nan-boxing config to have 47-bit small integers
<br />- objtype: implement better support for overriding native's __init__
<br />- objtype: refactor object's handling of __new__ to not create 2 objs
<br />- builtinimport: call __init__ for modules imported via a weak link
<br />- objgenerator: allow to pend an exception for next execution
<br />- map: don't include ordered-dict mutating code when not needed
<br />- mpz: fix pow3 function so it handles the case when 3rd arg is 1
<br />- modio: use correct config macro to enable resource_stream function
<br />- malloc: remove unneeded code checking m_malloc return value
<br />- nlrthumb: fix use of naked funcs, must only contain basic asm code
<br />- nlr: clean up selection and config of NLR implementation
<br />- nlr: factor out common NLR code to macro and generic funcs in nlr.c
<br />- parse: split out rule name from rule struct into separate array
<br />- parse: break rule data into separate act and arg arrays
<br />- parse: pass rule_id to push_result_rule, instead of passing rule_t*
<br />- parse: pass rule_id to push_result_token, instead of passing rule_t*
<br />- parse: remove rule_t struct because it's no longer needed
<br />- parse: compress rule pointer table to table of offsets
<br />- parse: update debugging code to compile on 64-bit arch
<br />- parse: fix macro evaluation by avoiding empty __VA_ARGS__
<br />- mpz: simplify handling of borrow and quo adjustment in mpn_div
<br />- mpz: in mpz_as_str_inpl, convert always-false checks to assertions
<br />- nlr: fix nlr functions for 64bit ports built with gcc on Windows
<br />- compile: combine compiler-opt of 2 and 3 tuple-to-tuple assignment
<br />- objtype: check and prevent delete/store on a fixed locals map
<br />- modbuiltins: for builtin_chr, use uint8_t instead of char for array
<br />- vm: simplify stack sentinel values for unwind return and jump
<br />- parsenum: fix parsing of floats that are close to subnormal
<br />- objfloat: fix case of raising 0 to -infinity
<br />- unicode: clean up utf8 funcs and provide non-utf8 inline versions
<br />- modbuiltins: simplify casts from char to byte ptr in builtin ord
<br />- objrange: implement (in)equality comparison between range objects
<br />- objexcept: remove long-obsolete mp_const_MemoryError_obj
<br />- nlrthumb: do not mark nlr_push as not returning anything
<br />- pystack: use "pystack exhausted" as error msg for out of pystack mem
<br />- objdict: disallow possible modifications to fixed dicts
<br />- gc: reduce code size by specialising VERIFY_MARK_AND_PUSH macro
<br />- gc: rename gc_drain_stack to gc_mark_subtree and pass it first block
<br />- gc: make GC stack pointer a local variable
<br />- qstr: add QSTR_TOTAL() macro to get number of qstrs
<br />- modbuiltins: simplify and generalise dir() by probing qstrs
<br />- repl: generalise REPL autocomplete to use qstr probing
<br />- objstr: protect against creating bytes(n) with n negative
<br />- objmodule: factor common code for calling __init__ on builtin module
<br />- builtinimport: add compile-time option to disable external imports
<br />- modmicropython: allow to have stack_use() func without mem_info()
<br />- objstr: remove unnecessary check for positive splits variable
<br />- objint: use MP_OBJ_IS_STR_OR_BYTES macro instead of 2 separate ones
<br />- objdeque: implement ucollections.deque type with fixed size
<br />- objdeque: protect against negative maxlen in deque constructor
<br />- objdeque: use m_new0 when allocating items to avoid need to clear
<br />- py.mk: split list of uPy sources into core and extmod files
<br />- py.mk: remove .. path component from list of extmod files
<br />- use "GEN" consistently for describing files generated in the build
<br />- compile: adjust c_assign_atom_expr() to use return instead of goto
<br />- asm*.c: remove unnecessary check for num_locals<0 in asm entry func
<br />- mpz: in mpz_clone, remove unused check for NULL dig
<br />- mpstate.h: add repl_line state for MICROPY_REPL_EVENT_DRIVEN
<br />- vm: fix case of handling raised StopIteration within yield from
<br />- vm: simplify handling of special-case STOP_ITERATION in yield from
<br />- formatfloat: fix rounding of %f format with edge-case FP values
<br />- formatfloat: fix case where floats could render with a ":" character
<br />- formatfloat: fix case where floats could render with negative digits
<br />- objint: remove unreachable code checking for int type in format func
<br />- misc.h: remove unused count_lead_ones() inline function
<br />- obj.h: clean up by removing commented-out inline versions of macros
<br />- obj.h: move declaration of mp_obj_list_init to objlist.h
<br />- makeqstrdefs.py: optimise by using compiled re's so it runs faster
<br />- objexcept: make MP_DEFINE_EXCEPTION public so ports can define excs
<br />- runtime: check that keys in dicts passed as ** args are strings
<br />- runtime: be sure that non-intercepted thrown object is an exception
<br />- vm: don't do unnecessary updates of ip and sp variables
<br />- vm: optimise handling of stackless mode when pystack is enabled
<br />- modsys: don't compile getsizeof function if feature is disabled
<br />- don't include mp_optimise_value or opt_level() if compiler disabled
<br />- objint: simplify LHS arg type checking in int binary op functions
<br />- objstr: in find/rfind, don't crash when end < start
<br />- stream: switch stream close operation from method to ioctl
<br />- objgenerator: check stack before resuming a generator
<br />- refactor how native emitter code is compiled with a file per arch
<br />- nlrthumb: fix Clang support wrt use of "return 0"
<br />- mperrno: define MP_EWOULDBLOCK as EWOULDBLOCK, not EAGAIN
<br />- stream: use uPy errno instead of system's for non-blocking check
<br />- obj.h: fix math.e constant for nan-boxing builds
<br />- modbuiltins, repl: start qstr probing from after empty qstr
<br />- runtime: add mp_load_method_protected helper which catches exceptions
<br />- modbuiltins: make built-in hasattr work properly for user types
<br />- repl: use mp_load_method_protected to prevent leaking of exceptions
<br />- modbuiltins: in built-in dir make use of mp_load_method_protected
<br />- modbuiltins: make built-in dir support the __dir__ special method
<br />- objdeque: fix sign extension bug when computing len of deque object</p>
<p>extmod:
<br />- modussl_axtls: socket_read: Handle EAGAIN
<br />- moduhashlib: enable SHA1 hashing when using "mbedtls" library
<br />- vfs_fat: mount FatFS on creation so VFS methods can be used
<br />- modussl_axtls: implement key and cert kw args to wrap_socket
<br />- modlwip: commit TCP out data to lower layers if buffer gets full
<br />- machine_signal: change VLA to use new scoped allocation API
<br />- modure: convert alloca() to use new scoped allocation API
<br />- modussl_mbedtls: clean up mbedtls state when error during setup
<br />- modframebuf: add 2-bit color format (GS2_HMSB)
<br />- modframebuf: add 8-bit greyscale format (GS8)
<br />- vfs_fat_file: implement SEEK_CUR for non-zero offset
<br />- modujson: implement ujson.dump() function
<br />- vfs_fat: move ilistdir implementation from misc to main file
<br />- vfs_fat: merge remaining vfs_fat_misc.c code into vfs_fat.c
<br />- vfs_fat: make fat_vfs_open_obj wrapper public, not its function
<br />- vfs_fat: remove declaration of mp_builtin_open_obj
<br />- vfs_fat_diskio: use a C-stack-allocated bytearray for block buf
<br />- machine_spi: make SPI protocol structure public
<br />- vfs_fat: add file size as 4th element of uos.ilistdir tuple
<br />- re1.5: fix compilecode.c compile problem on IAR tool chain
<br />- modlwip: check if getaddrinfo() constraints are supported or not
<br />- vfs: delegate import_stat to vfs.stat to allow generic FS import
<br />- uzlib: fix C-language sequencing error with uzlib_get_byte calls
<br />- modlwip: in ioctl handle case when socket is in an error state</p>
<p>lib:
<br />- tinytest: move from tools/tinytest
<br />- upytesthelper: add MicroPython test helper layer on top of tinytest
<br />- tinytest: clean up test reporting in the presence of stdout output
<br />- utils/pyexec.h: include py/obj.h because its decls are needed
<br />- utils/pyexec: update to work with new MICROPY_HW_ENABLE_USB option
<br />- stm32lib: update library to include support for STM32H7 MCUs
<br />- stm32lib: update library for fix to H7 SPI strict aliasing error
<br />- axtls: update, exposes AES functions to implement ECB cipher mode</p>
<p>drivers:
<br />- nrf24l01: make driver and test run on pyboard, ESP8266, ESP32
<br />- display/ssd1306: make SSD1306 class inherit from FrameBuffer
<br />- sdcard: support old SD cards (<=2GB)
<br />- sdcard: avoid allocation on the heap
<br />- sdcard: update doc for ESP8266 to use correct SPI number
<br />- cc3200: update to work with new stm32 SPI API
<br />- sdcard: update SD mounting example code for ESP8266
<br />- bus: add QSPI abstract type with software QSPI implementation
<br />- memory/spiflash: add support for QSPI interface
<br />- bus: pull out software SPI implementation to dedicated driver
<br />- memory/spiflash: change to use low-level SPI object not uPy one</p>
<p>tools:
<br />- mpy-tool.py: implement freezing of Ellipsis const object
<br />- gen-cpydiff.py: update executable paths to point to new ports dir
<br />- tinytest-codegen.py: generate code for upytesthelper
<br />- tinytest-codegen: wrap lines of exclude_tests
<br />- tinytest-codegen: more excludes after enabling expected output match
<br />- tinytest-codegen: take --target= option for test set selection
<br />- pydfu.py: call set_configuration() on fresh USB device object
<br />- tinytest-codegen: add --stdin switch instead of recently added --target
<br />- tinytest-codegen: ignore system locale, write output in UTF-8
<br />- upip: upgrade upip to 1.2.4</p>
<p>tests:
<br />- net_hosted: add test for socket connect() and poll() behaviour
<br />- basics: add test for containment of a subclass of a native type
<br />- basics/builtin_range: add test for corner case of range slicing
<br />- basics/builtin_locals: add test for using locals() in class body
<br />- cpydiff: add difference-test for second arg of builtin next()
<br />- cpydiff: fix markup where "`" (xref) was used instead of "``" (code)
<br />- heapalloc_*: refactor some tests to work in strict stackless mode
<br />- heapalloc, heapalloc_super: skip in strict stackless mode
<br />- basics: add test for overriding a native base-class's init method
<br />- extmod: add test which subclasses framebuf.FrameBuffer
<br />- cpydiff: update subclassing Exception case and give work-around
<br />- fix few test for proper "skipped" detection with qemu-arm's tinytest
<br />- run-tests: add --list-tests switch
<br />- add tests to improve coverage of py/objtype.c
<br />- run-tests: fix handling of --list-tests wrt skipped tests
<br />- run-tests: add composable --include and --exclude options
<br />- run-tests: don't test for --target=unix with "pyb is None"
<br />- run-tests: skip running feature checks for --list-tests/--write-exp
<br />- basics: add more set tests to improve coverage of py/objset.c
<br />- extmod/uhashlib_sha256: add test for hashing 56 bytes of data
<br />- float/builtin_float_hash: add test to improve objfloat.c coverage
<br />- unix: add test for printf with %lx format
<br />- basics/generator_pend_throw: add test for just-started generator
<br />- basics/builtin_pow3: add tests for edge cases of pow3
<br />- add some more tests to improve coverage of py/parse.c
<br />- extmod: add some uctypes tests to improve coverage of that module
<br />- basics/memoryerror: add test for out-of-memory using realloc
<br />- basics: rename remaining tests that are for built-in functions
<br />- unix: add coverage test for calling mp_obj_new_bytearray
<br />- automatically skip tests that require eval, exec or frozenset
<br />- rewrite some tests so they can run without needing eval/exec
<br />- run-tests: capture any output from a crashed uPy execution
<br />- basics/deque*: tests for ucollections.deque
<br />- basics: add tests to improve coverage of py/objdeque.c
<br />- basics: add test for calling a subclass of a native class
<br />- stress: add test to create a dict beyond "maximum" rehash size
<br />- unix: add coverage tests for mpz_set_from_float, mpz_mul_inpl
<br />- extmod/vfs_fat_fileio1: add test for failing alloc with finaliser
<br />- extmod/uzlib_decompress: add uzlib tests to improve coverage
<br />- float: adjust float-parsing tests to pass with only a small error
<br />- unix: add coverage test for VM executing invalid bytecode
<br />- basics/gc1: add test which triggers GC threshold
<br />- extmod/vfs_fat_fileio1: add test for calling file obj finaliser
<br />- unix: add coverage tests for various GC calls
<br />- move heap-realloc-while-locked test from C to Python
<br />- unix: add coverage test for uio.resource_stream from frozen str
<br />- extmod/time_ms_us: add test for calling ticks_cpu()
<br />- extmod/time_ms_us: fix ticks tests, ticks_diff args are reversed
<br />- basics/builtin_enumerate: add test for many pos args to enumerate
<br />- cpydiff: indent workaround code snippet so it formats correctly
<br />- pyb: update CAN test to expect that auto_restart is printed
<br />- pyb/can: update to test pyb.CAN restart, state, info, inplace recv
<br />- basics/iter1.py: add more tests for walking a user-defined iter
<br />- basics: add test for use of return within try-except
<br />- basics/int_big1.py: add test converting str with non-print chars
<br />- basics: modify int-big tests to prevent constant folding
<br />- stress: add test to verify the GC can trace nested objects
<br />- basics/int_big1.py: add test for big int in mp_obj_get_int_maybe
<br />- basics: add test for subclassing an iterable native type
<br />- basics: add tests for edge cases of nan-box's 47-bit small int
<br />- basics/class_super.py: add tests for store/delete of super attr
<br />- basics/string_compare.py: add test with string that hashes to 0
<br />- micropython: add set of tests for extreme cases of raising exc's
<br />- stress/recursive_gen: add test for recursive gen with iter
<br />- move recursive tests to the tests/stress/ subdir
<br />- pyb/adc.py: fix test so that it really does test ADC values
<br />- pyb: add test for pyb.ADCAll class
<br />- io/bytesio_ext2: remove dependency on specific EINVAL value
<br />- run-tests: support esp32 as a target for running the test suite
<br />- cpydiff: remove core_function_unpacking now that it succeeds
<br />- cpydiff: remove types_str_decodeerror now that it succeeds
<br />- cpydiff: remove working cases from types_float_rounding
<br />- cpydiff: remove types_int_tobytesfloat now that it doesn't fail
<br />- float/float_parse: allow test to run on 32-bit archs</p>
<p>minimal port:
<br />- README: update text to better describe what "make run" does
<br />- Makefile: explicitly include lib/utils/printf.c in build
<br />- Makefile: only build with core source files</p>
<p>unix port:
<br />- moduselect: add .dump() method for debugging
<br />- mpconfigport: disable uio.resource_stream()
<br />- add support for using the Python stack
<br />- Makefile: coverage: allow user to pass CFLAGS_EXTRA
<br />- mpconfigport.h: allow to override stackless options from commandline
<br />- mpconfigport_coverage.h: enable MICROPY_PY_IO_RESOURCE_STREAM
<br />- mpconfigport_coverage: enable range (in)equality comparison
<br />- coverage: allow coverage tests to pass with debugging disabled</p>
<p>windows port:
<br />- mpconfigport: provide off_t definition for MSVC port
<br />- mpconfigport: enable some features, including the Python stack
<br />- add Appveyor CI builds for windows mingw port</p>
<p>qemu-arm port:
<br />- rework "test" target using upytesthelper
<br />- test_main: clean up invocation of tinytest_main()
<br />- test_main: include setjmp.h because it's used by gc_collect</p>
<p>stm32 port:
<br />- boards/NUCLEO_F429ZI: incr CPU freq to 168MHz to get USB working
<br />- boards: add support for NUCLEO-F746ZG evaluation board
<br />- boards/stm32f767_af.csv: update AF table based on datasheet
<br />- boards/*_af.csv: make consistent use of JTMS, JTCK, SWDIO, SWCLK
<br />- add support for using the Python stack
<br />- usbdev: pass thru correct val for SCSI PreventAllowMediumRemoval
<br />- use corrected capitalization of HAL_SD_CardStateTypedef
<br />- allow to build a board without any hardware I2C ports defined
<br />- uart: add support for 7-bit modes: 7N1 and 7N2
<br />- uart: support board configs with CTS/RTS on UART6
<br />- i2c: fix bug with I2C4 initialisation
<br />- i2c: support more I2C baudrates for F746, and more F7 MCUs
<br />- spi: if MICROPY_HW_SPIn_MISO undefined, do not claim pin on init
<br />- modmachine: handle case of no MICROPY_PY_MACHINE_I2C
<br />- add support for DHT11/DHT22 sensors
<br />- spi: make SPI DMA wait routine more power efficient by using WFI
<br />- sdcard: make SD wait routine more power efficient by using WFI
<br />- usbdev: reduce dependency on py header files
<br />- usbdev: combine all str descriptor accessor funcs into one func
<br />- can: support MCUs without a CAN2 peripheral
<br />- improve support for STM32F722, F723, F732, F733 MCUs
<br />- modmachine: in freq(), select flash latency value based on freq
<br />- sdcard: only define IRQ handler if using SDMMC1 peripheral
<br />- sdcard: use maximum speed SDMMC clock on F7 MCUs
<br />- usbdev: add support for MSC-only USB device class
<br />- usb: allow board to select which USBD is used as the main one
<br />- usbdev: add support for high-speed USB device mode
<br />- i2c: use macros instead of magic numbers for I2C speed grades
<br />- spi: add support for a board naming SPI peripherals 4, 5 and 6
<br />- rng: simplify RNG implementation by accessing raw peripheral regs
<br />- spi: allow SPI peripheral state to persist across a soft reset
<br />- i2c: allow I2C peripheral state to persist across a soft reset
<br />- spi: provide better separation between SPI driver and uPy objs
<br />- update LCD and network drivers to work with new SPI API
<br />- spi: accept machine.SPI object in spi_from_mp_obj() function
<br />- rtc: fix rtc_info flags when LSE fails and falls back to LSI
<br />- rtc: fix RTC init to use LSI if LSI is already selected on boot
<br />- rtc: add compile-time option to set RTC source as LSE bypass
<br />- main: reorder some init calls to put them before soft-reset loop
<br />- main: remove need for first_soft_reset variable
<br />- add mpconfigboard_common.h with common/default board settings
<br />- boards: remove all config options that are set to defaults
<br />- usbdev: fix USBD setup request handler to use correct recipient
<br />- update HAL macro and constant names to use newer versions
<br />- timer: support MCUs that don't have TIM4 and/or TIM5
<br />- introduce MICROPY_HW_ENABLE_USB and clean up USB config
<br />- boards: update all boards to work with new USB configuration
<br />- factor out flash and SPI block-device code to separate files
<br />- change header include guards from STMHAL to STM32 to match dir
<br />- add board config option to enable/disable the ADC
<br />- use "GEN" for describing files generated in the build
<br />- flash: use FLASH_TYPEPROGRAM_WORD to support newer HALs
<br />- move MCU-specific cfg from mphalport.h to mpconfigboard_common.h
<br />- spibdev: update to work with new spiflash driver
<br />- spibdev: add option to configure SPI block dev to use QSPI flash
<br />- storage: add option for bdev to supply readblock/writeblocks
<br />- spibdev: convert to use multiple block read/write interface
<br />- qspi: add hardware QSPI driver, with memory-map capability
<br />- i2c: on F4 MCUs report the actual I2C SCL frequency
<br />- boards/stm32f767_af.csv: add ADC column to pin capability list
<br />- boards/NUCLEO_F767ZI: update pins list to include 3 extra pins
<br />- boards: add stm32h743_af.csv file describing H7 GPIO alt funcs
<br />- boards: add stm32h743.ld linker script
<br />- boards: add new NUCLEO_H743ZI board configuration files
<br />- Makefile: add settings to support H7 MCUs
<br />- flash: add flash support for H7 MCUs
<br />- system_stm32: add H7 MCU system initialisation
<br />- mphalport: use GPIO BSRRL/BSRRH registers for H7 MCUs
<br />- wdt: add WDT support for H7 MCUs
<br />- uart: add UART support for H7 MCUs
<br />- timer: add Timer support for H7 MCUs
<br />- modmachine: support basic H7 MCU features
<br />- usbd_conf: add USB support for H7 MCUs
<br />- stm32_it: add support for H7 MCUs
<br />- dma: add DMA support for H7 MCUs
<br />- rtc: add RTC support for H7 MCUs
<br />- extint: add EXTI support for H7 MCUs
<br />- mpconfigboard_common: add STM32H7 common configuration
<br />- main: enable D2 SRAM1/2/3 clocks on H7 MCUs
<br />- boards: add startup_stm32h7.s for H7 series specific startup
<br />- boards: add startup_stm32f7.s for F7 series specific startup
<br />- boards: add startup_stm32f4.s for F4 series specific startup
<br />- boards: add startup_stm32l4.s for L4 series specific startup
<br />- Makefile: use separate startup file for each MCU series
<br />- remove startup_stm32.S, now provided in boards/ for each MCU
<br />- usbd_conf.h: add include of stdint.h to fix compilation issues
<br />- system_stm32: fix CONFIG_RCC_CR_2ND value to use bitwise or
<br />- storage: merge all misc block-dev funcs into a single ioctl func
<br />- storage: make spi_bdev interface take a data pointer as first arg
<br />- storage: remove all SPI-flash bdev cfg, to be provided per board
<br />- storage: introduce MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE cfg
<br />- boards/STM32L476DISC: provide SPI-flash bdev config
<br />- storage: provide support for a second block device
<br />- qspi: do an explicit read instead of using memory-mapped mode
<br />- boards/STM32L476DISC: enable CAN peripheral
<br />- can: improve can.recv() so it checks for events, eg ctrl-C
<br />- can: use enums to index keyword arguments, for clarity
<br />- can: add "auto_restart" option to constructor and init() method
<br />- can: add CAN.restart() method so controller can leave bus-off
<br />- can: add CAN.state() method to get the state of the controller
<br />- can: add CAN.info() method to retrieve error and tx/rx buf info
<br />- use STM32xx macros instead of MCU_SERIES_xx to select MCU type
<br />- can: add "list" param to CAN.recv() to receive data inplace
<br />- dma: enable H7 DMA descriptors
<br />- i2c: add H7 I2C timing configurations
<br />- boards/NUCLEO_H743ZI: enable hardware I2C support
<br />- boards/NUCLEO_H743ZI: disable uSD transceiver
<br />- Makefile: re-enable strict aliasing optimisation for ST HAL files
<br />- consolidate include of genhdr/pins.h to single location in pin.h
<br />- qspi: don't take the address of pin configuration identifiers
<br />- *bdev.c: eliminate dependency on sys_tick_has_passed
<br />- boards: allow boards to have finer control over the linker script
<br />- Makefile: rename FLASH_ADDR/TEXT_ADDR to TEXT0_ADDR/TEXT1_ADDR
<br />- Makefile: allow a board to config either 1 or 2 firmware sections
<br />- boards: add common_basic.ld for a board to have a single section
<br />- boards: add common_bl.ld for boards that need a bootloader
<br />- system_stm32: set VTOR pointer from TEXT0_ADDR
<br />- boards/stm32f767.ld: add definition of FLASH_APP
<br />- boards/stm32h743.ld: remove include of common.ld
<br />- boards/NUCLEO_H743ZI: update to build with new linker management
<br />- dma: remove H7 SDMMC DMA descriptors
<br />- sdcard: add H7 SD card support
<br />- boards/NUCLEO_H743ZI: enable SD card support
<br />- change pin_X and pyb_pin_X identifiers to be pointers to objects
<br />- boards/STM32L476DISC: update to not take the address of pin objs
<br />- add custom, optimised Reset_Handler code
<br />- main: rename main to stm32_main and pass through first argument
<br />- main: only update reset_mode if board doesn't use a bootloader
<br />- mphalport: use MCU regs to detect if cycle counter is started
<br />- dac: add support for H7 MCUs
<br />- boards/NUCLEO_H743ZI: enable DAC peripheral
<br />- i2c: update HAL macros to use new __HAL_RCC prefix
<br />- i2c: fully support peripheral I2C4
<br />- main: guard usb_mode lines in default boot.py by relevant #if
<br />- adc: fix verification of ADC channel 16 for F411 MCUs
<br />- adc: add read_timed_multi() static method, with docs and tests
<br />- adc: optimise read_timed_multi() by caching buffer pointers
<br />- dac: add buffering argument to constructor and init() method
<br />- adc: factor code to optimise adc_read_channel and adc_read
<br />- adc: fix config of EOC selection and Ext-Trig for ADC periph
<br />- adc: factor common ADC init code into adcx_init_periph()
<br />- pin: in pin AF object, remove union of periph ptr types
<br />- can: allow CAN pins to be configured per board
<br />- stm32_it: add IRQ handler for I2C4
<br />- allow a board to configure the HSE in bypass mode
<br />- main: allow a board to configure the label of the flash FS
<br />- sdcard: implement BP_IOCTL_SEC_COUNT to get size of SD card
<br />- rng: set RNG clock source for STM32H7
<br />- boards/NUCLEO_H743ZI: enable RNG for this board
<br />- uart: allow ctrl-C to issue keyboard intr when REPL is over UART
<br />- uart: allow ctrl-C to work with UARTs put on REPL via os.dupterm
<br />- introduce MICROPY_PY_STM config to include or not the stm module
<br />- dac: support MCUs that don't have TIM4/5 and use new HAL macro
<br />- rename i2c.c to pyb_i2c.c
<br />- rename legacy pyb.I2C helper functions to start with pyb_i2c_
<br />- i2c: add low-level I2C driver for F7 MCUs
<br />- machine_i2c: provide hardware I2C for machine.I2C on F7 MCUs
<br />- system_stm32: reconfigure SysTick IRQ priority for L4 MCUs
<br />- boards/NUCLEO_H743ZI: use priority 0 for SysTick IRQ
<br />- adc: add support for H7 MCU series
<br />- boards/NUCLEO_H743ZI: enable ADC peripheral
<br />- mphalport: add mp_hal_pin_config_speed() to select GPIO speed
<br />- usbd_conf: use mp_hal_pin_config() instead of HAL_GPIO_Init
<br />- dac: use mp_hal_pin_config() instead of HAL_GPIO_Init()
<br />- boards: update pins.csv to include USB pins where needed
<br />- mphalport: support ADC mode on a pin for L4 MCUs
<br />- adc: use mp_hal_pin_config() instead of HAL_GPIO_Init()
<br />- dac: make deinit disable the output buffer on H7 and L4 MCUs
<br />- dac: implement printing of a DAC object
<br />- mphalport: optimise the way that GPIO clocks are enabled
<br />- flash: remove unused src parameter from flash_erase()
<br />- dma: always deinit/reinit DMA channels on L4 MCUs
<br />- irq: define IRQ priorities directly as encoded hardware values
<br />- main: clean up and optimise initial start-up code of the MCU
<br />- dma: fix duplicate typedef of struct, it's typedef'd in dma.h
<br />- don't use %lu or %lx for formatting, use just %u or %x
<br />- Makefile: use -O2 to optimise compilation of lib/libc/string0.c
<br />- i2c: make sure stop condition is sent after receiving addr nack
<br />- usb: fix broken pyb.have_cdc() so it works again
<br />- usb: use correct type for USB HID object
<br />- README: update to reflect current MCU support</p>
<p>teensy port:
<br />- update GPIO speed consts to align with changes in stm32 port</p>
<p>esp8266 port:
<br />- etshal.h: make function prototypes compatible with ESP SDK 2.1.0+
<br />- README: emphasize the need to change default WiFi password
<br />- README: add section on using upip
<br />- esp8266_common.ld: put .text of more libs into .irom0.text
<br />- modules/webrepl_setup: fix first-time enable of WebREPL
<br />- modnetwork: make sure to intern string passed to .config("param")
<br />- machine_hspi: after an SPI write wait for last byte to transfer
<br />- modules: move dht.py driver to drivers/dht directory
<br />- esppwm: clip negative duty numbers to 0
<br />- README.md: update build instruction to reflect new ports dir
<br />- uart: allow to compile with event-driven REPL
<br />- modnetwork: implement WLAN.status('rssi') for STA interface
<br />- esppwm: always start timer to avoid glitch from full to nonfull
<br />- esp_mphal.h: fix I2C glitching by using input mode for od_high
<br />- modnetwork: allow to get ESSID of AP that STA is connected to
<br />- disable DEBUG_PRINTERS for 512k build</p>
<p>esp32:
<br />- add new port to Espressif ESP32 SoC
<br />- modnetwork: give better error msgs for AP timeout and not-found
<br />- modsocket: implement setsockopt(IP_ADD_MEMBERSHIP)
<br />- mpconfigport.h: add missing uhashlib
<br />- mphalport.h: make mp_hal_pin_<dir> select gpio on the pad
<br />- call initialization function on sha1 and sha256
<br />- implement machine.WDT() class
<br />- README: update general description of port to add avail features
<br />- modutime.c: add localtime and mktime functions
<br />- machine_pwm: always set the channel in the PWM object
<br />- update to latest ESP IDF
<br />- modules: symlink in ntptime.py from esp8266/modules
<br />- modnetwork.c: fix for setting DNS with network.WLAN.ifconfig()
<br />- mpconfigport.h: enable ussl finaliser
<br />- implement wired Ethernet via network.LAN()
<br />- mpconfigport.h: enable websocket module
<br />- modesp: add osdebug() function to disable or change IDF logging
<br />- Makefile: support using IDF_PATH as the env var to the IDF source
<br />- add custom partitions.csv file with uPy specific size
<br />- machine_hw_spi: fix large HW SPI transfers by splitting them up
<br />- README: update toolchain setup
<br />- machine_uart: fix check of UART id so it only allows valid UARTs
<br />- machine_rtc: add RTC class to machine module with sleep impl
<br />- modesp32: add new module "esp32" to support extra wake features
<br />- machine_rtc: move export declaration from .c to common .h file
<br />- modnetwork: implement dhcp_hostname for WLAN.config()
<br />- update to the latest ESP IDF
<br />- main: allocate the uPy heap via malloc instead of on the bss
<br />- modsocket: allow getaddrinfo() to take up to 6 args
<br />- modnetwork: implement status('stations') to list STAs in AP mode
<br />- machine_uart: return None from UART read if no data is available
<br />- machine_uart: remove UART event queue object
<br />- README.md: fix typo readme
<br />- mphalport: use esp_timer_get_time instead of gettimeofday
<br />- mphalport: improve mp_hal_delay_us so it handles pending events
<br />- mphalport: improve mp_hal_stdout_tx_XXX functions
<br />- add support for and enable uos.dupterm()
<br />- modsocket: add support for registering socket event callbacks
<br />- mpconfigport: enable webrepl module and socket events
<br />- modules: add support scripts for WebREPL
<br />- add support for the esp32's ULP
<br />- modnetwork: allow to get ESSID of AP that STA is connected to
<br />- README: add --init to submodule update command
<br />- modsocket: correctly handle reading from a peer-closed socket
<br />- use mp_rom_map_elem_t and MP_ROM_xxx macros for const dicts
<br />- modsocket: check for pending events during blocking socket calls</p>
<p>zephyr port:
<br />- README: "make qemu" was replaced with "make run"
<br />- Makefile: clean: Remove generated prj_*_merged.conf
<br />- prj_base.conf: force zephyr.bin build output
<br />- Makefile: convert to new CMake-based Zephyr build system
<br />- Makefile: make prj_$(BOARD).conf optional, again
<br />- Makefile: syscall_macros.h generation was moved from CMake to make
<br />- CMakeLists.txt: update for latest Zephyr buildsys changes
<br />- CMakeLists.txt: properly separate CFLAGS parts gotten from CMake
<br />- main: move var declarations to the top of file
<br />- add support for binary with builtin testsuite
<br />- prj_base.conf: bump MAIN_STACK_SIZE to let builtin testsuite run
<br />- Makefile: clean: Clean libmicropython.a too
<br />- main: remove unused do_str() function</p>
<p>docs:
<br />- esp8266/general: TLS limitations: mention also "ussl" module limitations
<br />- ure: add flags arg to ure.compile(), mention that ure.DEBUG is optional
<br />- ure: emphasize not supported features more
<br />- _thread: add a placeholder docs for _thread module
<br />- library/network: enhance AbstractNIC.status to take an argument
<br />- add notes on heap allocation caused by bound method refs
<br />- uselect: poll: Explicitly specify that no-timeout value is -1
<br />- uctypes: tweak descriptor reference to hopefully be easier to follow
<br />- uselect: describe POLLHUP/POLLERR semantics in more details
<br />- library/utime: fix incorrect example with ticks_diff args order
<br />- uselect: ipoll: Fix grammar/wording of one-shot flag description
<br />- glossary: describe the callee-owned tuple concept
<br />- uerrno: fix xref-vs-code markup
<br />- glossary: describe "stream" term
<br />- glossary: describe string interning
<br />- library: add xrefs to "stream" dictionary entry for many modules
<br />- glossary: clarify wording for "baremetal"
<br />- reference/packages: add chapter on distribution packages and deployment
<br />- packages: add quick "Creating distribution packages" section
<br />- packages: mpy_bin2res no longer required to create resources
<br />- conf: reference CPython 3.5 docs
<br />- packages: use "install_dir/" in examples
<br />- packages: explicitly recommend usage of setuptools instead of distutils
<br />- library/index: elaborate uPy libraries intro
<br />- library/pyb.rst: add note about availability of USB MSC-only mode
<br />- esp8266: update PWM doc regarding clipping of min/max values
<br />- esp8266: add a note concerning GPIO16 pull capabilities
<br />- library/ujson: document dump() and load() functions
<br />- library/usocket: make xref to uerrno explicitly a module reference
<br />- library/micropython: describe optimisation levels for opt_level()
<br />- library/uos: create sections for distinct parts and document uname
<br />- library/uos: document mount, umount, VfsFat and block devices
<br />- reference/repl.rst: fix some minor errors in the REPL tutorial
<br />- library/pyb.ADC: document new features for ADCAll
<br />- library/pyb.ADC: remove outdated ADCAll code example
<br />- library: add ussl module to library index for unix port</p>
<p>travis:
<br />- pass -j4 to make to speed up compilation
<br />- update for qemu-arm's testing moved to Makefile.test
<br />- build and test strict stackless build
<br />- add Unix coverage test for script via stdin</p>dpgeorgetag:github.com,2008:Repository/290133466/v1.9.32017-11-01T00:20:08Zv1.9.3: Introduction of ports subdirectory where all ports are moved to<p>Introduction of ports subdirectory where all ports are moved to</p>
<p>The main change in this release is the introduction of a "ports/"
<br />subdirectory at the top-level of the repository, and all of the ports are
<br />moved here. In the process the "stmhal" port is renamed to "stm32" to
<br />better reflect the MCU that it targets. In addition, the STM32 CMSIS and
<br />HAL sources are moved to a new submodule called "stm32lib".</p>
<p>The bytecode has changed in this release, compared to the previous release,
<br />and as a consequence the .mpy version number has increased to version 3.
<br />This means that scripts compiled with the previous mpy-cross must be
<br />recompiled to work with this new version.</p>
<p>There have also been various enhancements and optimisations, such as:
<br />check for valid UTF-8 when creating str objects, support for reverse
<br />special binary operations like __radd__, full domain checking in the math
<br />module, support for floor-division and modulo in the viper emitter,
<br />and addition of stack overflow checking when executing a regex.</p>
<p>The stm32 port sees improved support for F7 MCUs, addition of a new board
<br />B_L475E_IOT01A based on the STM32L475, and support for the Wiznet W5500
<br />chipset along with improved socket behaviour.</p>
<p>A detailed list of changes follows.</p>
<p>py core:
<br />- objstr: startswith, endswith: check arg to be a string
<br />- nlrx86,x64: replace #define of defined() with portable macro usage
<br />- objtype: handle NotImplemented return from binary special methods
<br />- objtype: mp_obj_class_lookup: improve debug logging
<br />- map: remove unused new/free functions
<br />- make m_malloc_fail() have void return type, since it doesn't return
<br />- modstruct: in struct.pack, stop converting if there are no args left
<br />- modstruct: check and prevent buffer-read overflow in struct unpacking
<br />- modstruct: check and prevent buffer-write overflow in struct packing
<br />- nlrthumb: get working again on standard Thumb arch (ie not Thumb2)
<br />- objfloat: fix binary ops with incompatible objects
<br />- obj: fix comparison of float/complex NaN with itself
<br />- objtype: implement fallback for instance inplace special methods
<br />- objtuple: properly implement comparison with incompatible types
<br />- objstr: add check for valid UTF-8 when making a str from bytes
<br />- objlist: properly implement comparison with incompatible types
<br />- runtime0.h: move relational ops to the beginning of mp_binary_op_t
<br />- runtime0.h: move MP_BINARY_OP_DIVMOD to the end of mp_binary_op_t
<br />- objtype: make sure mp_binary_op_method_name has full size again
<br />- runtime0.h: put inplace arith ops in front of normal operations
<br />- builtinhelp: simplify code slightly by extracting object type
<br />- runtime: implement dispatch for "reverse op" special methods
<br />- nlrx86: fix building for Android/x86
<br />- builtinhelp: change signature of help text var from pointer to array
<br />- runtime.h: change empty mp_warning macro so var-args are non empty
<br />- modbuiltins: implement abs() by dispatching to MP_UNARY_OP_ABS
<br />- {objfloat,objcomplex}: optimise MP_UNARY_OP_ABS by reusing variables
<br />- mpconfig.h: add note that using computed gotos in VM is not C99
<br />- objstr: strip: don't strip "\0" by default
<br />- objexcept: prevent infinite recursion when allocating exceptions
<br />- stream: remove unnecessary checks for NULL return from vstr_add_len
<br />- vstr: raise a RuntimeError if fixed vstr buffer overflows
<br />- vm: use lowercase letter at start of exception message
<br />- persistentcode: define mp_raw_code_save_file() for any unix target
<br />- add config option to print warnings/errors to stderr
<br />- objfloat: support raising a negative number to a fractional power
<br />- objset: simplify set and frozenset by separating their locals dicts
<br />- objset: check that RHS of a binary op is a set/frozenset
<br />- objset: include the failed key in a KeyError raised from set.remove
<br />- objtype: change type of enum-to-qstr table to uint16_t to save space
<br />- objstr: make empty bytes object have a null-terminating byte
<br />- mpprint: only check for null string printing when NDEBUG not defined
<br />- objtype: clean up unary- and binary-op enum-to-qstr mapping tables
<br />- persistentcode: bump .mpy version number to version 3
<br />- bc: update opcode_format_table to match the bytecode
<br />- modmath: add full checks for math domain errors
<br />- modmath: convert log2 macro into a function
<br />- formatfloat: don't print the negative sign of a NaN value
<br />- formatfloat: use standard isinf, isnan funcs instead of custom ones
<br />- modbuiltins: use existing utf8_get_char helper in builtin ord func
<br />- emitnative: implement floor-division and modulo for viper emitter
<br />- objtype: use CPython compatible method name for sizeof
<br />- objtype: fit qstrs for special methods in byte type
<br />- objtype: define all special methods if requested
<br />- objtype: introduce MICROPY_PY_ALL_INPLACE_SPECIAL_METHODS</p>
<p>extmod:
<br />- modubinascii: only include uzlib/tinf.h when it's really needed
<br />- modussl_mbedtls: allow to compile with MBEDTLS_DEBUG_C disabled
<br />- machine_pinbase: put PinBase singleton in ROM
<br />- re1.5: upgrade to v0.8.2, adds hook for stack overflow checking
<br />- modure: add stack overflow checking when executing a regex
<br />- uos_dupterm: update uos.dupterm() and helper funcs to have index
<br />- uos_dupterm: swallow any errors from dupterm closing the stream
<br />- vfs: replace VLA in proxy func with small, static sized array
<br />- modussl: add finaliser support for ussl objects
<br />- modussl_mbedtls: allow to compile with unix coverage build</p>
<p>lib:
<br />- add new submodule, stm32lib containing STM32 CMSIS and HAL source
<br />- embed/abort_: use mp_raise_msg helper function
<br />- libm: fix tanhf so that it correctly handles +/- infinity args
<br />- libm: remove implementation of log2f, use MP_NEED_LOG2 instead
<br />- axtls: update, support for SSL_EAGAIN return code
<br />- berkeley-db-1.xx: update, allow to override MINCACHE, DEFPSIZE</p>
<p>drivers:
<br />- memory/spiflash: change from hard-coded soft SPI to generic SPI
<br />- display/ssd1306.py: improve performance of graphics methods
<br />- nrf24l01: make nRF24L01 test script more portable
<br />- display/ssd1306: implement SSD1306_I2C poweron method
<br />- display/ssd1306: make poweron() work the same with SSD1306_SPI
<br />- wiznet5k: improve the performance of socket ops with threading
<br />- wiznet5k: get low-level W5500 driver working</p>
<p>tools:
<br />- upip: upgrade to 1.2.2
<br />- pyboard: use repr() when quoting data in error messages
<br />- pyboard: update docstring for additional device support</p>
<p>tests:
<br />- object_new: better messages, check user __new__() method
<br />- class_new: add checks for __init__ being called and other improvements
<br />- class_new: add another testcase for __new__/__init__ interaction
<br />- class_inplace_op: test for inplace op fallback to normal one
<br />- run-bench-tests: update locations of executables, now in ports/
<br />- class_reverse_op: test for reverse arith ops special methods
<br />- run-tests: skip class_inplace_op for minimal profile
<br />- run-tests: fix copy-paste mistake in var name
<br />- cpydiff: add cases for locals() discrepancies
<br />- extmod: add test for ure regexes leading to infinite recursion
<br />- extmod: add test for '-' in character class in regex
<br />- run-tests: close device under test using "finally"
<br />- net_inet: update tls test to work with CPython and incl new site</p>
<p>unix port:
<br />- rename modsocket.c to modusocket.c
<br />- modusocket: remove #if MICROPY_SOCKET_EXTRA code blocks
<br />- enable MICROPY_PY_REVERSE_SPECIAL_METHODS</p>
<p>stm32 port:
<br />- modmachine: make machine.bootloader() work when MPU is enabled
<br />- modmachine: improve support for sleep/deepsleep on F7 MCUs
<br />- compute PLL freq table during build instead of at run time
<br />- modmachine: for F7 MCU, save power by reducing internal volt reg
<br />- boards/pllvalues.py: make script work with both Python 2 and 3
<br />- Makefile: use lib/stm32lib instead of local cmsis and hal files
<br />- remove cmsis and hal files, they are now a submodule
<br />- Makefile: automatically fetch stm32lib submodule if needed
<br />- update to new STM Cube HAL library
<br />- fix clock initialisation of L4 MCUs
<br />- rename stmhal port directory to stm32
<br />- remove unused usbd_msc.c file
<br />- boards: change remaining stm32f4xx_hal_conf.h to unix line ending
<br />- boards: change linker scripts to use "K" instead of hex byte size
<br />- boards: fix I2C1 pin mapping on NUCLEO_F401RE/F411RE boards
<br />- i2c: when scanning for I2C devices only do 1 probe per address
<br />- modnwwiznet5k: release the GIL on blocking network operations
<br />- boards: add new board B_L475E_IOT01A based on STM32L475
<br />- make-stmconst.py: make sure mpz const data lives in ROM
<br />- timer: make pyb.Timer() instances persistent
<br />- mpconfigport.h: add configuration for max periphs on L4 series
<br />- usbdev: make the USBD callback struct const so it can go in ROM
<br />- usbdev: change static function variable to non-static
<br />- usbdev: put all CDC state in a struct
<br />- usbdev: put all HID state in a struct
<br />- usbdev: simplify CDC tx/rx buffer passing
<br />- usbdev: simplify HID tx/rx buffer passing
<br />- usbdev/core: add state parameter to all callback functions
<br />- usbdev: put all state for the USB device driver in a struct
<br />- usbdev: simplify pointers to MSC state and block dev operations
<br />- usbdev: merge all global USB device state into a single struct
<br />- usbdev: make device descriptor callbacks take a state pointer
<br />- usbdev: move all the USB device descriptor state into its struct
<br />- timer: enable ARPE so that timer freq can be changed smoothly
<br />- modnwwiznet5k: get the IP address of an established socket
<br />- boards: fix typos in stm32f767_af.csv table
<br />- usbd_cdc_interface: don't reset CDC output buf on initialisation
<br />- modnwwiznet5k: implement WIZNET5K.isconnected() method
<br />- modusocket: make getaddrinfo() work when passed an IP address
<br />- modusocket: return OSError(-2) if getaddrinfo fails
<br />- mpconfigport.h: add MICROPY_THREAD_YIELD() macro
<br />- modnwwiznet5k: add support for W5500 Ethernet chip
<br />- modnwwiznet5k: increase SPI bus speed to 42MHz
<br />- modnwwiznet5k: implement stream ioctl for the Wiznet driver
<br />- mphalport: improve efficiency of mp_hal_stdout_tx_strn_cooked
<br />- make uos.dupterm() conform to specs by using extmod version</p>
<p>cc3200 port:
<br />- enable micropython.kbd_intr() method
<br />- use standard implementation of keyboard interrupt</p>
<p>esp8266 port:
<br />- rename axtls_helpers.c to posix_helpers.c
<br />- posix_helpers: set ENOMEM on memory alloc failure
<br />- set DEFPSIZE=1024, MINCACHE=3 for "btree" module
<br />- esp_mphal: send data in chunks to mp_uos_dupterm_tx_strn
<br />- modnetwork: add "bssid" keyword arg to WLAN.connect() method
<br />- modules/webrepl_setup: add info about allowed password length</p>
<p>zephyr port:
<br />- Makefile: revamp "test" target after ports were moved to ports/
<br />- use CONFIG_NET_APP_SETTINGS to setup initial network addresses
<br />- switch to interrupt-driven pull-style console</p>
<p>pic16bit port:
<br />- add definition of SEEK_SET to unistd.h</p>
<p>docs:
<br />- pyboard/tutorial: add "timeout=0" to UART in pass-through example
<br />- more xrefs to "MicroPython port" in glossary
<br />- library/network: fix ref to "socket" module (should be "usocket")
<br />- machine.Signal: improve style/grammar and add usage example
<br />- library: add description of "index" parameter to uos.dupterm()
<br />- library/micropython: fix typo in RST formatting
<br />- library/framebuf.rst: generalise constructor to all colour formats
<br />- btree: describe page caching policy of the underlying implementation
<br />- esp8266/tutorial: update neopixel with example of using 4 bbp
<br />- library/network: clarify usage of "bssid" arg in connect() method
<br />- pyboard/quickref: add info for Switch, RTC, CAN, Accel classes
<br />- pyboard/tutorial: update now that yellow LED also supports PWM
<br />- esp8266/quickref: add quickref info for RTC class
<br />- library: add missing cross-ref links for classes in pyb module
<br />- library/network: update docs to state that W5500 is supported
<br />- uselect: document one-shot polling mode
<br />- usocket: elaborate descriptions
<br />- usocket: document inet_ntop(), inet_pton()
<br />- library/network: add dhcp_hostname parameter
<br />- reference/isr_rules: minor typo correction
<br />- ussl: fix module name refs and use "MicroPython port" term
<br />- esp8266/general: add section on TLS limitations
<br />- usocket: document that settimeout() isn't supported by all ports
<br />- ure: add "|" (alternative) to the list of supported operators
<br />- reference/isr_rules.rst: add tutorial on use of micropython.schedule()</p>
<p>travis:
<br />- use --upgrade when pip is installing cpp-coveralls
<br />- update build command now that stm32 Wiznet config has changed</p>
<p>examples:
<br />- hwconfig_console: add .on()/.off() methods</p>
<p>all:
<br />- convert mp_uint_t to mp_unary_op_t/mp_binary_op_t where appropriate
<br />- convert remaining "mp_uint_t n_args" to "size_t n_args"
<br />- make new ports/ sub-directory and move all ports there
<br />- update Makefiles and others to build with new ports/ dir layout
<br />- remove inclusion of internal py header files
<br />- use NULL instead of "" when calling mp_raise exception helpers</p>
<p>README:
<br />- update "Dependencies" section
<br />- add explicit section on contributing
<br />- add gcc and arm-none-eabi-newlib to list of required components</p>
<p>.gitattributes:
<br />- remove obsolete entries for stmhal/hal, stmhal/cmsis
<br />- add entries for files that will move to ports/ dir</p>dpgeorgetag:github.com,2008:Repository/290133466/v1.9.22017-08-23T01:46:41Zv1.9.2: Double precision math library and support on pyboard, and improved ussl<p>Double precision math library and support on pyboard, and improved ussl</p>
<p>This release brings general improvements and bug fixes to the core and
<br />various ports, as well as documentation additions, clean-ups and better
<br />consistency. And effort has been made to clean up the source code to
<br />make it more consistent across the core and all ports.</p>
<p>There is a new tool "mpy_bin2res.py" to convert arbitrary (binary) files
<br />to Python resources for inclusion in source code (frozen or otherwise).</p>
<p>The ussl module has seen improvements, including implementation of
<br />server_hostname (for axtls) and server_side mode (for mbedtls).</p>
<p>There is now a double-precision float math library and stmhal has support
<br />to build firmware with software or hardware double-precision.</p>
<p>A detailed list of changes follows.</p>
<p>py core:
<br />- formatfloat: fix number of digits and exponent sign when rounding
<br />- modthread: raise RuntimeError in release() if lock is not acquired
<br />- compile: raise SyntaxError if positional args are given after */**
<br />- objint: support "big" byte-order in int.to_bytes()
<br />- objint: in to_bytes(), allow length arg to be any int and check sign
<br />- compile: fix bug with break/continue in else of optimised for-range
<br />- compile: optimise emitter label indices to save a word of heap
<br />- builtinimport: remove unreachable code for relative imports
<br />- objnamedtuple: simplify and remove use of alloca building namedtuple
<br />- mpprint: remove unreachable check for neg return of mp_format_float
<br />- binary: add missing "break" statements
<br />- runtime: mark m_malloc_fail() as NORETURN
<br />- objstr: remove unnecessary "sign" variable in formatting code
<br />- vm: make "if" control flow more obvious in YIELD_FROM opcode
<br />- modmath: check for zero division in log with 2 args
<br />- makeversionhdr.py: update to parse new release line in docs/conf.py
<br />- objdict: factorise dict accessor helper to reduce code size
<br />- change mp_uint_t to size_t in builtins code
<br />- repl: change mp_uint_t to size_t in repl helpers
<br />- compile: combine arith and bit-shift ops into 1 compile routine
<br />- compile: use switch-case to match token and operator
<br />- objgenerator: allow to hash generators and generator instances
<br />- gc: refactor assertions in gc_free function
<br />- vm: make n_state variable local to just set-up part of VM
<br />- asmx64: support moving a 64-bit immediate to one of top 8 registers
<br />- modmicropython: cast stack_limit value so it prints correctly
<br />- builtinevex: add typechecking of globals/locals args to eval/exec
<br />- py.mk: make berkeley-db C-defs apply only to relevant source files
<br />- mperrno: allow mperrno.h to be correctly included before other hdrs
<br />- mpz: make mpz_is_zero() an inline function
<br />- implement raising a big-int to a negative power
<br />- mkrules.mk: show frozen modules sizes together with executable size
<br />- objtuple: allow to use inplace-multiplication operator on tuples
<br />- objstr: raise an exception for wrong type on RHS of str binary op
<br />- modsys: initial implementation of sys.getsizeof()
<br />- binary.c: fix bug when packing big-endian 'Q' values
<br />- add verbose debug compile-time flag MICROPY_DEBUG_VERBOSE
<br />- binary: change internal bytearray typecode from 0 to 1
<br />- objstringio: prevent offset wraparound for io.BytesIO objects
<br />- objstringio: fix regression with handling SEEK_SET
<br />- stream: seek: Consistently handle negative offset for SEEK_SET
<br />- mkrules.mk: use "find -path" when searching for frozen obj files
<br />- compile: remove unused pn_colon code when compiling func params
<br />- objcomplex: remove unnecessary assignment of variable
<br />- formatfloat: don't post-increment variable that won't be used again
<br />- use "static inline" for funcs that should be inline
<br />- asmthumb: use existing macro to properly clear the D-cache</p>
<p>extmod:
<br />- modussl_axtls: update for axTLS 2.1.3
<br />- modussl_axtls: implement server_hostname arg to wrap_socket()
<br />- move modonewire.c from esp8266 to extmod directory
<br />- modure: if input string is bytes, return bytes results too
<br />- modubinascii: add check for empty buffer passed to hexlify
<br />- modussl_axtls: allow to close ssl stream multiple times
<br />- modussl_mbedtls: support server_side mode
<br />- modussl_mbedtls: when reading and peer wants to close, return 0
<br />- modframebuf: fix invalid stride for odd widths in GS4_HMSB fmt
<br />- modussl_mbedtls: make socket.close() free all TLS resources
<br />- modframebuf: consistently use "col" as name for colour variables
<br />- modussl_mbedtls: implement non-blocking SSL sockets
<br />- machine_signal: fix parsing of invert arg when Pin is first arg
<br />- modframebuf: use correct initialization for .locals_dict
<br />- modlwip: implement setsockopt(IP_ADD_MEMBERSHIP)
<br />- modussl_mbedtls.c: add ussl.getpeercert() method
<br />- modubinascii: rewrite mod_binascii_a2b_base64
<br />- modubinascii: don't post-increment variable that won't be used
<br />- modonewire: rename public module to mp_module_onewire
<br />- for uos.stat interpret st_size member as an unsigned int
<br />- use "static inline" for funcs that should be inline</p>
<p>lib:
<br />- axtls: upgrade to axTLS 2.1.3 + MicroPython patchset
<br />- libm/math: remove implementations of float conversion functions
<br />- add libm_dbl, a double-precision math library, from musl-1.1.16</p>
<p>drivers:
<br />- onewire: move onewire.py, ds18x20.py from esp8266 to drivers
<br />- onewire: enable pull-up when init'ing the 1-wire pin</p>
<p>tools:
<br />- gen-cpydiff: use case description as 3rd-level heading
<br />- pyboard: add license header
<br />- mpy_bin2res: tools to convert binary resources to Python module
<br />- mpy-tool.py: don't generate const_table if it's empty
<br />- mpy-tool.py: fix missing argument in dump() function</p>
<p>tests:
<br />- net_inet/test_tls_sites.py: integration test for SSL connections
<br />- net_inet: add tests for accept and connect in nonblocking mode
<br />- basics: add tests for for-else statement
<br />- net_inet: move tests which don't require full Internet to net_hosted
<br />- connect_nonblock: refactor towards real net_hosted test
<br />- auto detect floating point capabilites of the target
<br />- import: add a test for the builtin __import__ function
<br />- import: update comment now that uPy raises correct exception
<br />- basics/namedtuple1: add test for creating with pos and kw args
<br />- unix/extra_coverage: add test for mp_vprintf with bad fmt spec
<br />- basics: add tests for arithmetic operators precedence
<br />- cpydiff/modules_deque: elaborate workaround
<br />- cpydiff/core_class_mro: move under Classes, add workaround
<br />- cpydiff/core_arguments: move under Functions subsection
<br />- cpydiff/core_class_supermultiple: same cause as core_class_mro
<br />- cpydiff: improve wording, add more workarounds
<br />- cpydiff: add case for str.ljust/rjust
<br />- rename exec1.py to builtin_exec.py
<br />- basics/builtin_exec: test various globals/locals args to exec()</p>
<p>minimal port:
<br />- Makefile: enable gc-sections to remove unused code
<br />- remove unused stmhal include from Makefile
<br />- use size_t for mp_builtin_open argument</p>
<p>unix port:
<br />- modtime: replace strftime() with localtime()
<br />- mpconfigport.mk: update descriptions of readline and TLS options
<br />- Makefile: disable assertions in the standard unix executable
<br />- modjni: convert to mp_rom_map_elem_t
<br />- for uos.stat interpret st_size member as an unsigned int</p>
<p>stmhal port:
<br />- mpconfigport.h: remove config of PY_THREAD_GIL to use default
<br />- make error messages more consistent across peripherals
<br />- add initial implementation of Pin.irq() method
<br />- add .value() method to Switch object, to mirror Pin and Signal
<br />- move pybstdio.c to lib/utils/sys_stdio_mphal.c for common use
<br />- add "quiet timing" enter/exit functions
<br />- make available the _onewire module, for low-level bus control
<br />- modules: provide sym-link to onewire.py driver
<br />- boards/stm32f405.ld: increase FLASH_TEXT to end of 1MiB flash
<br />- sdcard: allow a board to customise the SDIO pins
<br />- add possibility to build with double-precision floating point
<br />- boards: enable double-prec FP on F76x boards
<br />- Makefile: use hardware double-prec FP for MCUs that support it
<br />- Makefile: rename FLOAT_IMPL to MICROPY_FLOAT_IMPL to match C name
<br />- Makefile: add CFLAGS_EXTRA to CFLAGS so cmdline can add options
<br />- mpconfigport.h: allow MICROPY_PY_THREAD to be overridden
<br />- boards: add configuration files for NUCLEO_F429ZI
<br />- boards/NUCLEO_F429ZI: change USB config from HS to FS peripheral
<br />- reduce size of ESPRUINO_PICO build so it fits in flash
<br />- servo: make pyb.Servo(n) map to Pin('Xn') on all MCUs
<br />- servo: don't compile servo code when it's not enabled
<br />- use "static inline" for funcs that should be inline</p>
<p>cc3200 port:
<br />- modusocket: simplify socket.makefile() function
<br />- make non-zero socket timeout work with connect/accept/send
<br />- modusocket: fix connect() when in non-blocking or timeout mode
<br />- use the name MicroPython consistently in code</p>
<p>esp8266 port:
<br />- Makefile: bump axTLS TLS record buffer size to 5K
<br />- Makefile: allow FROZEN_DIR,FROZEN_MPY_DIR to be overridden
<br />- Makefile: add LIB_SRC_C variable to qstr auto-extraction list
<br />- make onewire module and support code usable by other ports
<br />- modonewire: move low-level 1-wire bus code to modonewire.c
<br />- modonewire: make timings static and remove onewire.timings func
<br />- reinstate 1-wire scripts by sym-linking to drivers/onewire/
<br />- move mp_hal_pin_open_drain from esp_mphal.c to machine_pin.c
<br />- enable MICROPY_ENABLE_FINALISER
<br />- README: make "Documentation" a top-level section
<br />- machine_rtc: use correct arithmetic for aligning RTC mem len
<br />- mpconfigport_512k: use terse error messages to get 512k to fit
<br />- mpconfigport.h: make socket a weak link
<br />- modesp: remove unused constants: STA_MODE, etc
<br />- general: add known issue of WiFi RX buffers overflow
<br />- use size_t for mp_builtin_open argument
<br />- fix UART stop bit constants</p>
<p>zephyr port:
<br />- Makefile: rework dependencies and "clean" target
<br />- Makefile: revert prj.conf construction rule to the previous state
<br />- remove long-obsolete machine_ptr_t typedef's
<br />- Makefile: explicitly define default target as "all"
<br />- modusocket: allow to use socketized net_context in upstream
<br />- modusocket: socket, close: switch to native Zephyr socket calls
<br />- modusocket: bind, connect, listen, accept: Swtich to native sockets
<br />- modusocket: send: switch to native sockets
<br />- modusocket: recv: switch to native sockets
<br />- modusocket: fully switch to native Zephyr sockets
<br />- modzephyr: add current_tid() and stacks_analyze() functions
<br />- prj_base.conf: enable CONFIG_INIT_STACKS
<br />- modusocket: update struct sockaddr family field name
<br />- prj_96b_carbon.conf: re-enable networking on Carbon
<br />- modzephyr: add shell_net_iface() function</p>
<p>docs:
<br />- btree: add hints about opening db file and need to flush db
<br />- select: rename to uselect, to match the actual module name
<br />- license: update copyright year
<br />- esp8266/tutorial/intro: discourage use of 512kb firmwares
<br />- esp8266/tutorial/intro: Sphinx requires blank lines around literal blocks
<br />- conf.py: include 3 levels of ToC in latexpdf output
<br />- gc: mark mem_alloc()/mem_free() as uPy-specific
<br />- gc: document gc.threshold() function
<br />- builtins: list builtin exceptions
<br />- conf.py: set default_role = 'any'
<br />- lcd160cr: group related constants together and use full sentences
<br />- ref/speed_python: update and make more hardware-neutral
<br />- library/gc: fix grammar and improve readability of gc.threshold()
<br />- move all ports docs to the single ToC
<br />- topindex.html: remove link to wipy.io, it's no longer available
<br />- conf.py: add .venv dir to exclude_patterns
<br />- move topindex.html to templates/ subdir
<br />- differences/index_template: use consistent heading casing
<br />- builtins: add AssertionError, SyntaxError, ZeroDivisionError
<br />- add glossary
<br />- conf.py: switch to "new" format of intersphinx_mapping
<br />- conf.py: add file for global replacements definition
<br />- library: add CPython docs xref to each pertinent module
<br />- replace.inc: add |see_cpython|, to xref individual symbols from CPython
<br />- conf.py: set "version" and "release" to the same value
<br />- *_index: drop "Indices and tables" pseudo-section
<br />- pyboard: move hardware info into General Info chapter
<br />- uerrno: document "uerrno" module
<br />- esp8266/general.rst: fix name of NTP module
<br />- pyboard: move info about using Windows from topindex to general
<br />- uzlib: update description of decompress() and mention DecompIO
<br />- pyboard/tutorial/amp_skin: add example for playing large WAV files
<br />- library/ubinascii: update base64 docs
<br />- library/usocket: move socket.error to its own section
<br />- library/usocket: describe complete information on address formats
<br />- glossary: elaborate on possible MicroPython port differences
<br />- glossary: fix typos in micropython-lib paragraph
<br />- index: rewrite introduction paragraph to avoid confusion
<br />- use the name MicroPython consistently in documentation
<br />- consistently link to micropython-lib in glossary</p>
<p>all:
<br />- make more use of mp_raise_{msg,TypeError,ValueError} helpers
<br />- unify header guard usage
<br />- remove trailing spaces, per coding conventions
<br />- don't include system errno.h when it's not needed
<br />- use the name MicroPython consistently in comments
<br />- make use of $(TOP) variable in Makefiles, instead of ".."
<br />- raise exceptions via mp_raise_XXX
<br />- make static dicts use mp_rom_map_elem_t type and MP_ROM_xxx macros</p>
<p>README:
<br />- mention support for bytecode and frozen bytecode
<br />- improve description of precompiled bytecode; mention mpy-cross</p>
<p>CODECONVENTIONS:
<br />- clarify MicroPython changes sign-off process
<br />- start to describe docs conventions
<br />- describe docs use of markup for None/True/False</p>
<p>travis:
<br />- build STM32F769DISC board instead of F7DISC to test dbl-prec FP
<br />- pin cpp-coveralls at 0.3.12</p>dpgeorgetag:github.com,2008:Repository/290133466/v1.9.12017-06-11T13:04:05Zv1.9.1: Fixes for stmhal USB mass storage, lwIP bindings and VFS regressions<p>Fixes for stmhal USB mass storage, lwIP bindings and VFS regressions</p>
<p>This release provides an important fix for the USB mass storage device in
<br />the stmhal port by implementing the SCSI SYNCHRONIZE_CACHE command, which
<br />is now require by some Operating Systems. There are also fixes for the
<br />lwIP bindings to improve non-blocking sockets and error codes. The VFS has
<br />some regressions fixed including the ability to statvfs the root.</p>
<p>All changes are listed below.</p>
<p>py core:
<br />- modbuiltins: add core-provided version of input() function
<br />- objstr: catch case of negative "maxsplit" arg to str.rsplit()
<br />- persistentcode: allow to compile with complex numbers disabled
<br />- objstr: allow to compile with obj-repr D, and unicode disabled
<br />- modsys: allow to compile with obj-repr D and PY_ATTRTUPLE disabled
<br />- provide mp_decode_uint_skip() to help reduce stack usage
<br />- makeqstrdefs.py: make script run correctly with Python 2.6
<br />- objstringio: if created from immutable object, follow copy on write policy</p>
<p>extmod:
<br />- modlwip: connect: for non-blocking mode, return EINPROGRESS
<br />- modlwip: fix error codes for duplicate calls to connect()
<br />- modlwip: accept: fix error code for non-blocking mode
<br />- vfs: allow to statvfs the root directory
<br />- vfs: allow "buffering" and "encoding" args to VFS's open()
<br />- modframebuf: fix signed/unsigned comparison pendantic warning</p>
<p>lib:
<br />- libm: use isfinite instead of finitef, for C99 compatibility
<br />- utils/interrupt_char: remove support for KBD_EXCEPTION disabled</p>
<p>tests:
<br />- basics/string_rsplit: add tests for negative "maxsplit" argument
<br />- float: convert "sys.exit()" to "raise SystemExit"
<br />- float/builtin_float_minmax: PEP8 fixes
<br />- basics: convert "sys.exit()" to "raise SystemExit"
<br />- convert remaining "sys.exit()" to "raise SystemExit"</p>
<p>unix port:
<br />- convert to use core-provided version of built-in import()
<br />- Makefile: replace references to make with $(MAKE)</p>
<p>windows port:
<br />- convert to use core-provided version of built-in import()</p>
<p>qemu-arm port:
<br />- Makefile: adjust object-file lists to get correct dependencies
<br />- enable micropython.mem_*() functions to allow more tests</p>
<p>stmhal port:
<br />- boards: enable DAC for NUCLEO_F767ZI board
<br />- add support for NUCLEO_F446RE board
<br />- pass USB handler as parameter to allow more than one USB handler
<br />- usb: use local USB handler variable in Start-of-Frame handler
<br />- usb: make state for USB device private to top-level USB driver
<br />- usbdev: for MSC implement SCSI SYNCHRONIZE_CACHE command
<br />- convert from using stmhal's input() to core provided version</p>
<p>cc3200 port:
<br />- convert from using stmhal's input() to core provided version</p>
<p>teensy port:
<br />- convert from using stmhal's input() to core provided version</p>
<p>esp8266 port:
<br />- Makefile: replace references to make with $(MAKE)
<br />- Makefile: add clean-modules target
<br />- convert from using stmhal's input() to core provided version</p>
<p>zephyr port:
<br />- modusocket: getaddrinfo: Fix mp_obj_len() usage
<br />- define MICROPY_PY_SYS_PLATFORM (to "zephyr")
<br />- machine_pin: use native Zephyr types for Zephyr API calls</p>
<p>docs:
<br />- machine.Pin: remove out_value() method
<br />- machine.Pin: add on() and off() methods
<br />- esp8266: consistently replace Pin.high/low methods with .on/off
<br />- esp8266/quickref: polish Pin.on()/off() examples
<br />- network: move confusingly-named cc3200 Server class to its reference
<br />- uos: deconditionalize, remove minor port-specific details
<br />- uos: move cc3200 port legacy VFS mounting functions to its ref doc
<br />- machine: sort machine classes in logical order, not alphabetically
<br />- network: first step to describe standard network class interface</p>
<p>examples:
<br />- embedding: use core-provided KeyboardInterrupt object</p>dpgeorgetag:github.com,2008:Repository/290133466/v1.92017-05-26T09:07:45Zv1.9: New VFS subsystem and scheduling framework, and less need for the heap<p>New VFS subsystem and scheduling framework, and less need for the heap</p>
<p>This release adds some fundamental new components, allows for more Python
<br />operations without using the heap and has reduced code size and stack
<br />usage.</p>
<p>Changes in the way iterators are handled allows to iterate without
<br />allocating on the heap for the types: tuple, list, str, bytes, bytearray,
<br />array, dict, set, frozenset. It also allows to call the builtins all, any,
<br />min max and sum without allocating heap memory for the iterator argument.
<br />And improvements to the handling of super() means that super().foo() method
<br />calls are now heap-less.</p>
<p>A new generic VFS subsystem has been added which allows to mount arbitrary
<br />filesystems (even written in Python) at the root or at a mount-point within
<br />the root. The FatFS driver has been replaced with an object-oriented
<br />version (oofatfs) which allows a fully customisable filesystem layout.</p>
<p>A scheduling framework has been implemented in the core which gives the
<br />ability to schedule callbacks to be called "as soon as possible". This
<br />allows ports to implement "soft IRQs" which allow the programmer to
<br />allocate memory during an interrupt handler, at the cost of some
<br />performance related to response time of the handler. The new
<br />micropython.schedule() function gives access to the scheduler.</p>
<p>Other improvements to the core include: consts can now be big-nums, for
<br />example "X = const(1 << 100)"; addition of "help('modules')" to list
<br />available modules; stack usage reduced for a Python call by 8 bytes on ARM
<br />Cortex-M architectures; micropython.kbd_intr() function added to disable
<br />Ctrl-C capture; addition of uio.resource_stream(); mpy-cross is built
<br />automatically if needed; a helper tool mpy_cross_all.py is added to run
<br />mpy-cross on an entire project.</p>
<p>The bytecode has changed in this version so existing .mpy files will need
<br />recompiling. There have also been some changes to the C API, most notably
<br />with mp_uint_t changed to size_t in many places.</p>
<p>In the extended modules the following main changes have been made: addition
<br />of machine.Signal class to allow inversion on a Pin; framebuf has new
<br />formats of the form MONO_xxx; addition of uselect.ipoll() for allocation-
<br />free polling; addition of uos.ilistdir() for efficient iteration of a
<br />directory listing; machine.Pin high/low methods are renamed to on/off in
<br />esp8266 and zephyr (this is a backwards-incompatible change);
<br />machine.time_pulse_us() function no longer throws exceptions, but returns
<br />negative values instead.</p>
<p>For stmhal the pyb.fault_debug() function is added, and default behaviour
<br />for a hard-fault is now an immediate reset. There is better support for F7
<br />MCUs, in particular DMA and SD card support. A bug has been fixed with the
<br />USB VCP (USB serial) where it would in rare cases (usually when the host PC
<br />was under load) would lose characters. Pyboard now automatically mounts
<br />all available partitions on the SD card. Multithreading has been
<br />implemented and is available via the _thread module, but this feature is
<br />disabled by default and must be enabled at compile time using the
<br />MICROPY_THREAD and MICROPY_THREAD_GIL options. The ability to skip booting
<br />from SD card is now available by creating an empty file on the flash called
<br />"SKIPSD".</p>
<p>The cc3200 port has had some backwards incompatible changes, in particular
<br />with I2C, Pin, UART and uos. Please see the documentation for the new
<br />behaviour.</p>
<p>The esp8266 port has had a change in the size of the firmware in order to
<br />accommodate additional features. As such the filesystem for this version
<br />is incompatible with v1.8.7 and a device requires backup and erasure before
<br />flashing this version. Soft IRQs are now implemented for Pin and Timer
<br />callbacks, along with the general improvements described above.</p>
<p>In the documentation there is now a section describing the differences
<br />between MicroPython and CPython. And code coverage is up to 98% across py/
<br />and extmod/.</p>
<p>Changes in code size (in bytes) between v1.8.7 and this version are:</p>
<p> bare-arm: -1104
<br /> minimal: -1324
<br /> unix x64: -1115
<br />unix nanbox: -11106
<br /> stmhal: +18116
<br /> cc3200: +1032
<br /> esp8266: +3060</p>
<p>Note that stmhal has increased significantly due to the addition of frozen
<br />bytecode and the LCD160CR driver.</p>
<p>A detailed list of changes follows.</p>
<p>py core:
<br />- builtinimport: raise ValueError for bad relative import, per CPython
<br />- builtinimport: remove unreachable code and change obj-import comment
<br />- runtime: refactor assert(0) to improve coverage
<br />- runtime: fix handling of throw() when resuming generator
<br />- objgenerator: when throwing an object, don't make an exc instance
<br />- objgenerator: don't raise RuntimeError if GeneratorExit ignored
<br />- parse: refactor code to remove assert(0)'s
<br />- emitnative: remove assert(0)'s or replace with mp_not_implemented
<br />- objexcept: replace if-cond and assert(0) with simple assert
<br />- runtime: refactor default case of switch to remove assert(0)
<br />- binary: mp_binary_get_size: Raise error on unsupported typecodes
<br />- formatfloat: remove unreachable code
<br />- objint_mpz: refactor switch-statement to remove unreachable default
<br />- mpz: implement mpz_set_from_bytes() as a foundation for int.from_bytes()
<br />- objint: from_bytes(): implement "byteorder" param and arbitrary precision
<br />- objint_longlong: add stub for mp_obj_int_from_bytes_impl()
<br />- add builtin help function to core, with default help msg
<br />- move weak-link map to objmodule.c, and expose module maps as public
<br />- builtinhelp: implement help('modules') to list available modules
<br />- objint: fix left-shift overflow in checking for large int
<br />- objmodule: move module init/deinit code into runtime functions
<br />- objstr: optimize string concatenation with empty string
<br />- showbc: make sure to set the const_table before printing bytecode
<br />- py.mk: add CFLAGS_MOD flag to set config file for FatFs
<br />- objstringio: allow to specify initial capacity by passing numeric argument
<br />- objset: make inplace binary operators actually modify the set
<br />- objfloat: raise ZeroDivisionError for 0 to negative power
<br />- objcomplex: correctly handle case of 0j to power of something
<br />- objset: fix inplace binary ops so frozensets are not modified
<br />- added optimised support for 3-argument calls to builtin.pow()
<br />- objstr: give correct behaviour when passing a dict to %-formatting
<br />- mpconfig.h: move PY_BUILTINS_POW3 config option to diff part of file
<br />- objstr: convert some instances of mp_uint_t to size_t
<br />- objcomplex: fix typo in ternary expression
<br />- asmxtensa.h: explicitly cast args to 32-bits so left-shift is legal
<br />- map: change mp_uint_t to size_t where appropriate
<br />- nlr: fix execstack builds for ARM
<br />- objtype: add __delattr__/__setattr__ configured by MICROPY_PY_DELATTR_SETATTR
<br />- emitbc: produce correct line number info for large bytecode chunks
<br />- objtype: replace non-ASCII single-quote char with ASCII version
<br />- modthread: use system-provided mutexs for _thread locks
<br />- vm: add MICROPY_PY_THREAD_GIL_VM_DIVISOR option
<br />- runtime: convert mp_uint_t to size_t where appropriate
<br />- mpz: convert mp_uint_t to size_t where appropriate
<br />- mpz: remove obsolete declaration of mpz_as_str_size
<br />- mpz: change type of "base" args from mp_uint_t to unsigned int
<br />- persistentcode: replace mp_uint_t with size_t where appropriate
<br />- objtuple: convert mp_uint_t to size_t where appropriate
<br />- objlist: convert mp_uint_t to size_t where appropriate
<br />- objdict: convert mp_uint_t to size_t where appropriate
<br />- objset: convert mp_uint_t to size_t where appropriate
<br />- objstr: convert mp_uint_t to size_t (and use int) where appropriate
<br />- objarray: convert mp_uint_t to size_t where appropriate
<br />- objfun: convert mp_uint_t to size_t where appropriate
<br />- objclosure: convert mp_uint_t to size_t where appropriate
<br />- objexcept: convert mp_uint_t to size_t where appropriate
<br />- objint: convert mp_uint_t to size_t where appropriate
<br />- vm: convert mp_uint_t to size_t where appropriate
<br />- add iter_buf to getiter type method
<br />- allow bytecode/native to put iter_buf on stack for simple for loops
<br />- make FOR_ITER opcode pop 1+4 slots from the stack when finished
<br />- optimise storage of iterator so it takes only 4 slots on Py stack
<br />- remove unused "use_stack" argument from for_iter_end emit function
<br />- runtime: optimise case of identity iterator so it doesn't alloc RAM
<br />- compile: optimise list/dict/set comprehensions to use stack iter
<br />- de-optimise some uses of mp_getiter, so they don't use the C stack
<br />- grammar: group no-compile grammar rules together to shrink tables
<br />- lexer: don't generate string representation for period or ellipsis
<br />- persistentcode: bump .mpy version due to change in bytecode
<br />- lexer: simplify handling of indenting of very first token
<br />- lexer: move check for keyword to name-tokenising block
<br />- lexer: use strcmp to make keyword searching more efficient
<br />- lexer: simplify handling of line-continuation error
<br />- do adjacent str/bytes literal concatenation in lexer, not compiler
<br />- lexer: convert mp_uint_t to size_t where appropriate
<br />- grammar: remove unused rule
<br />- objlist: for list slice assignment, allow RHS to be a tuple or list
<br />- moduerrno: make uerrno.errorcode dict configurable
<br />- moduerrno: make list of errno codes configurable
<br />- parse: allow parser/compiler consts to be bignums
<br />- create str/bytes objects in the parser, not the compiler
<br />- parse: simplify handling of errors by raising them directly
<br />- runtime: mp_raise_msg(): Accept NULL argument for message
<br />- objarray: disallow slice-assignment to read-only memoryview
<br />- map: fix bugs with deletion of elements from OrderedDict
<br />- move locals/globals dicts to the thread-specific state
<br />- nlr.h: mark nlr_jump_fail as NORETURN
<br />- nlrxtensa: convert from assembler to C file with inline asm
<br />- nlrx64: convert from assembler to C file with inline asm
<br />- nlrx86: convert from assembler to C file with inline asm
<br />- py.mk: force nlr files to be compiled with -Os
<br />- modsys: use MP_SMALL_INT_MAX for sys.maxsize in case of LONGINT_IMPL_NONE
<br />- runtime.c: remove optimization of '*a,=b', it caused a bug
<br />- use mp_obj_get_array where sequence may be a tuple or a list
<br />- nlrx86: add workaround for Zephyr
<br />- nlrx64: fixes to support Mac OS
<br />- objint_longlong: implement mp_obj_int_from_bytes_impl()
<br />- allow lexer to raise exceptions during construction
<br />- objint: allow to print long-long ints without using the heap
<br />- emitnative: use assertions and mp_not_implemented correctly
<br />- emitnative: remove obsolete commented out code
<br />- mpprint: fix int formatting so "+" is printed for 0-valued integer
<br />- mkrules.mk: remove special check for "-B" in qstr auto generation
<br />- objstr: fix eager optimisation of str/bytes addition
<br />- reduce size of mp_code_state_t structure
<br />- provide mp_decode_uint_value to help optimise stack usage
<br />- objstr: use better msg in bad implicit str/bytes conversion exception
<br />- add micropython.schedule() function and associated runtime code
<br />- vm: don't release the GIL if the scheduler is locked
<br />- bc: provide better error message for an unexpected keyword argument
<br />- use size_t as len argument and return type of mp_get_index
<br />- sequence: convert mp_uint_t to size_t where appropriate
<br />- define and use MP_OBJ_ITER_BUF_NSLOTS to get size of stack iter buf
<br />- lexer: remove obsolete comment, since lexer can now raise exceptions
<br />- modmath: allow trunc/ceil/floor to return a big int if necessary
<br />- objint: handle special case of -0 when classifying fp as int
<br />- modbuiltins: for round() builtin use nearbyint instead of round
<br />- modbuiltins: allow round() to return a big int if necessary
<br />- objtype: use size_t where appropriate, instead of mp_uint_t or uint
<br />- objnamedtuple: use size_t where appropriate, instead of mp_uint_t
<br />- use mp_locals/mp_globals accessor funcs instead of MP_STATE_CTX
<br />- remove MP_STATE_CTX, use MP_STATE_THREAD instead (it's an alias)
<br />- objarray: use mp_obj_str_get_str instead of mp_obj_str_get_data
<br />- nlrx86: better check for Zephyr (requires 1.7)
<br />- obj: change mp_uint_t to size_t for mp_obj_get_array_fixed_n len arg
<br />- vm: fix VM opcode tracing to print correct stack pointer
<br />- compile: when compiling super(), handle closed-over self variable
<br />- objmap: convert mp_uint_t to size_t
<br />- use mp_raise_TypeError/mp_raise_ValueError helpers where possible
<br />- lexer: simplify and reduce code size for operator tokenising
<br />- compile: simplify syntax-error messages for illegal assignments
<br />- shorten a couple of error messages
<br />- compile: provide terse error message for invalid dict/set literals
<br />- convert mp_uint_t to size_t for tuple/list accessors
<br />- change mp_uint_t to size_t for mp_obj_str_get_data len arg
<br />- objzip: convert mp_uint_t to size_t
<br />- obj.h: make sequence grow more efficient and support overlapping
<br />- objstr: use MICROPY_FULL_CHECKS for range checking when constructing bytes
<br />- add very simple but correct hashing for float and complex numbers
<br />- objint: consolidate mp_obj_new_int_from_float to one implementation
<br />- raise a ValueError if range() step is zero
<br />- objtuple: add support for inplace add (same as normal add)
<br />- make sure that static emg-exc-buffer is aligned to size of mp_obj_t
<br />- runtime: when init'ing kbd intr exc, use tuple ptr instead of object
<br />- objint: extract small int value directly because type is known
<br />- objint: use unsigned arithmetic when formatting an integer
<br />- obj: clean up and add comments describing mp_obj_type_t struct
<br />- optimise types for common case where type has a single parent type
<br />- objfloat: add implementation of high-quality float hashing
<br />- nlrsetjmp: add check for failed NLR jump
<br />- gc: execute finaliser code in a protected environment
<br />- modmicropython: add micropython.kbd_intr() function
<br />- reduce str/repr precision of float numbers when floats are 30-bit
<br />- objtype: mp_obj_new_super doesn't need to be public, so inline it
<br />- compile: don't do unnecessary check if parse node is a struct
<br />- compile: extract parse-node kind at start of func for efficiency
<br />- compile: add COMP_RETURN_IF_EXPR option to enable return-if-else opt
<br />- compile: don't do unnecessary check if iter parse node is a struct
<br />- compile: refactor handling of special super() call
<br />- add LOAD_SUPER_METHOD bytecode to allow heap-free super meth calls
<br />- mpz: strip trailing zeros from mpz value when set from bytes
<br />- mpz: in mpn_sub, use existing function to remove trailing zeros
<br />- cleanup use of global DEBUG preprocessor definition
<br />- modio: implement uio.resource_stream(package, resource_path)
<br />- objint: in int.from_bytes, only create big-int if really needed
<br />- modio: resource_stream: Implement "package" param handling
<br />- binary: handle storing big-ints to all arrays types
<br />- lexer: simplify lexer startup by using dummy bytes and next_char()
<br />- mkrules.mk: add dependency of .mpy files upon mpy-cross
<br />- lexer: process CR earlier to allow newlines checks on chr1
<br />- modsys: update conditionals for code referencing sys.stdout
<br />- objstringio: fix StringIO reads at or beyond EOF
<br />- sequence: fix boundary errors when slicing with a negative step
<br />- objrange: fix slicing of range when step of slice is negative
<br />- mkenv.mk: use $(TOP) instead of ".." to reference tools, mpy-cross
<br />- vm: fix bug with stackless mode and unwinding of exceptions
<br />- vm: fix bug with unwind jump popping the iterator from a for loop
<br />- emitbc: fix bug with BC emitter computing Python stack size
<br />- mkrules.mk: fix auto-qstr generation when "make -B" is used
<br />- objstringio: catch mp_uint_t overflow of stream position in write()
<br />- move BYTES_PER_WORD definition from ports to py/mpconfig.h</p>
<p>extmod:
<br />- modframebuf: optimize fill_rect subroutine call
<br />- modframebuf: clip pixels drawn by line method
<br />- modframebuf: add GS4_HMSB format
<br />- vfs_fat: rework so it can optionally use OO version of FatFS
<br />- rename vfs_fat_file.h to vfs_fat.h
<br />- add generic VFS sub-system
<br />- vfs_fat: rework to support new generic VFS sub-system
<br />- vfs: add ability for VFS sub-system to import using VfsFat
<br />- modlwip: add socket.readinto() method
<br />- vfs: expose mp_vfs_mount_t type
<br />- vfs_fat: use SECSIZE macro to determine FatFs sector size
<br />- machine_signal: implement "Signal" abstraction for machine module
<br />- vfs_fat: update to use FF_DIR instead of DIR
<br />- vfs: expose lookup_path_raw as mp_vfs_lookup_path
<br />- vfs_fat: remove MICROPY_READER_FATFS component
<br />- vfs_fat: remove MICROPY_FSUSERMOUNT_ADHOC config option
<br />- remove MICROPY_FSUSERMOUNT and related files
<br />- vfs_fat: remove MICROPY_FATFS_OO config option
<br />- merge old fsusermount.h header into vfs.h and vfs_fat.h
<br />- vfs_fat: remove unused fatfs_builtin_open function
<br />- vfs_fat: remove unused function fat_vfs_listdir
<br />- vfs_reader: fix use of NLR by popping context
<br />- vfs_fat.c: use explicit include path for timeutils.h
<br />- machine_pulse: make time_pulse_us() not throw exceptions
<br />- machine_spi: remove EVENT_POLL_HOOK from soft-SPI transfer func
<br />- machine_signal: implement Signal .on() and .off() methods
<br />- vfs: allow to mount a block device, not just a VFS object
<br />- vfs: raise OSError(EEXIST) on attempt to mkdir a mount point
<br />- vfs: allow to stat the root directory
<br />- modlwip: add my copyright
<br />- modurandom: use mp_raise_ValueError()
<br />- modutimeq: make scheduling fair (round-robin)
<br />- modutimeq: add peektime() function (provisional)
<br />- vfs_fat: remove obsolete and unused str/len members
<br />- vfs_fat: allow to compile with MICROPY_VFS_FAT disabled
<br />- vfs: rewrite path lookup algo to support relative paths from root
<br />- modframebuf: add support for monochrome horizontal format
<br />- utime_mphal: don't exit/enter the GIL in generic sleep functions
<br />- modlwip: use mp_obj_str_get_str instead of mp_obj_str_get_data
<br />- vfs_fat: fix calculation of total blocks in statvfs
<br />- moduselect: update to use size_t for array accessor
<br />- update for changes to mp_obj_str_get_data
<br />- modframebuf: make monochrome bitmap formats start with MONO_
<br />- machine_signal: support all Pin's arguments to the constructor
<br />- machine_signal: rename "inverted" arg to "invert", it's shorter
<br />- moductypes: fix bigint handling for 32-bit ports
<br />- crypto-algorithms/sha256: remove non-standard memory.h header
<br />- moduselect: convert to MP_ROM_QSTR and friends
<br />- moduselect: refactor towards introduction of poll.ipoll()
<br />- moduselect: implement ipoll() method for alloc-free polling
<br />- modlwip: getaddrinfo: Allow to accept all 6 standard params
<br />- modlwip: ioctl POLL: Fix handling of peer closed socket
<br />- vfs: allow a VFS to be mounted at the root dir
<br />- vfs: implement mp_vfs_ilistdir()
<br />- vfs_fat: replace listdir() with implementation of ilistdir()
<br />- vfs: use MP_S_IFDIR, MP_S_IFREG consts instead of magic numbers
<br />- vfs_fat_misc: remove dot-dirs filter since FatFS already does it</p>
<p>lib:
<br />- utils: remove old pyhelp helper, replaced with py/builtinhelp.c
<br />- utils/pyexec: only print help prompt if HELP feature is enabled
<br />- oofatfs: add OO version of FatFS library
<br />- fatfs: remove old fatfs library component, it's replaced by oofatfs
<br />- oofatfs/ffconf.h: allow to configure FS_EXFAT option
<br />- oofatfs/ffconf.h: add MICROPY_FATFS_NORTC option
<br />- utils/pyexec: allow to compile when the uPy compiler is disabled
<br />- utils/pyexec: refactor to put lexer constructors all in one place
<br />- memzip: make lexer constructor raise exception when file not found
<br />- utils/pyexec: fix bug with pyexec_file not setting flag for source
<br />- libm: add implementation of nearbyintf, from musl-1.1.16
<br />- netutils: update for changes to mp_obj_str_get_data
<br />- utils/pyexec: update event-driven REPL to match non-event REPL</p>
<p>drivers:
<br />- fix some minor spelling mistakes
<br />- display: add driver and test for uPy LCD160CR display
<br />- memory: add SPI flash driver, written in C
<br />- display/lcd160cr: use correct variable in set_power()
<br />- display/lcd160cr: fix bugs with lcd.get_pixel()
<br />- display/lcd160cr: fix bug with save_to_flash method
<br />- display/lcd160cr: add check that JPEG size is less than 65536
<br />- nrf24l01: update to work on newer ports, using machine, utime
<br />- display/lcd160cr: fix get_line method and enhance screen_dump
<br />- display/lcd160cr_test: allow test to take orientation parameter
<br />- replace deprecated Pin.high()/low() methods with .__call__(1/0)</p>
<p>tools:
<br />- tinytest-codegen.py: blacklist heapalloc_str.py test for qemu-arm
<br />- upip: update to 1.1.5. Better and more user-friendly error handling
<br />- add gen-cpydiff.py to generate docs differences
<br />- gen-cpydiff.py: set the Python import path to find test modules
<br />- gen-cpydiff.py: configurable CPython and micropython executables
<br />- tinytest-codegen: update for recent test renaming ("intbig" suffix)
<br />- pyboard: tighten up Pyboard object closure on errors
<br />- pyboard: add "exec" and "execpty" pseudo-devices support
<br />- pyboard: execpty: Use shell=False to workaround some curdir issues
<br />- pyboard: processPtyToTerminal: Add workaround for PySerial bug
<br />- pyboard: provide more details when expected reply not received
<br />- mpy-tool: make work if run from another directory
<br />- upip: upgrade to 1.1.6, supports commented lines in requirements.txt
<br />- upip: upgrade to 1.2
<br />- mpy-tool.py: use MP_ROM_xxx macros to support nanbox builds
<br />- mpy_cross_all.py: helper tool to run mpy-cross on the entire project
<br />- mpy-tool.py: fix regression with freezing floats in obj repr C</p>
<p>tests:
<br />- add feature check for "const" keyword and skip related tests
<br />- update test suite to be compatible with CPython 3.6
<br />- improve stream.c test coverage
<br />- import: improve builtinimport.c test coverage
<br />- improve frozen import test coverage
<br />- update tests, and add new ones, for recent generator tweaks
<br />- io: improve test coverage of io.BufferedWriter
<br />- basics: improve runtime.c test coverage
<br />- extmod: improve test coverage of ure module
<br />- float: add test for assigning to attribute of complex number
<br />- extmod/framebuf1: add test for no-op fill_rect
<br />- micropython/opt_level: add test for opt_level 3
<br />- misc/non_compliant: add test for inability to assign func attrs
<br />- basics: add test for assignment of attribute to bound method
<br />- add test for int.from_bytes() for arbitrary-precision integer
<br />- heapalloc_int_from_bytes: test that int.from_bytes() can work w/o alloc
<br />- add test for builtin help function
<br />- basics/builtin_help: add test for help('modules')
<br />- make sure special tests can be skipped as well
<br />- extmod/framebuf4: add tests for GS4_HMSB framebuf format
<br />- extmod/framebuf1: fix test for framebuf invalid constructor
<br />- extmod: add test for ure debug printing when compiling a regex
<br />- heapalloc_str: test for alloc-free string operations
<br />- extmod: update vfs_fat tests for new OO FatFs library
<br />- extmod/vfs_fat: update tests to work with new VFS sub-system
<br />- extmod/vfs_fat_ramdisk: make it work on pyboard
<br />- run-tests: skip frozenset tests if set literal syntax is not available
<br />- basics/zip: make skippable
<br />- thread: make thread_exc2 runable on baremetal
<br />- thread: fix stack size test so tests run reliably on baremetal
<br />- heapalloc_bytesio: test for BytesIO with preallocates space
<br />- basics/set_binop: add tests for inplace set operations
<br />- float: add tests for zero to a negative power
<br />- split tests for 2- and 3-arg pow()
<br />- basics/string_format_modulo: add more tests for dict formatting
<br />- pyb: adjust tests so they can run on PYB and PYBLITE
<br />- misc: add test for line number printing with large bytecode chunk
<br />- add option to not clear MICROPYPATH when running tests
<br />- run-tests: allow to skip tests using async/await keywords
<br />- comprehension1, containment: split set tests to separate files
<br />- builtin_dir: the most expected thing in sys is exit, test for it
<br />- basic/[a-f]*: make skippable
<br />- dict_fromkeys: revert to use reversed() to run in native codegen mode
<br />- extmod: make tests skippable
<br />- thread: replace busy waiting loops with a loop that sleeps
<br />- thread: add stress-test for creating many threads
<br />- gen_yield_from_close: use range() instead of reversed()
<br />- basic/: make various tests skippable
<br />- cmdline: update tests to pass with latest changes to bytecode
<br />- cmdline/cmd_showbc: update to work with recent changes
<br />- micropython: add test for iterating with the heap locked
<br />- micropython/heapalloc_iter: add tests for contains and unpack
<br />- cmdline: update cmd_parsetree test for changes to grammar order
<br />- cmdline/cmd_parsetree: update to work with changes to grammar
<br />- basics/string_join: add more tests for string concatenation
<br />- heapalloc_exc_raise.py: heap alloc test for raising/catching exc
<br />- cpydiff: add initial set of tests for uPy-CPython differences
<br />- cpydiff: add a test for storing iterable to a list slice
<br />- micropython: add test for consts that are bignums
<br />- extmod: add test for machine.Signal class
<br />- basics: add further tests for OrderedDict
<br />- run-tests: check for big int availability and skip related tests
<br />- basic: split tests into working with small ints and not working
<br />- float/complex1: split out intbig test
<br />- float2int*: suffix with _intbig, don't run on any other int type
<br />- string_format_modulo2: split off intbig test
<br />- basics/string_join.py: add test case where argument is not iterable
<br />- basics/unpack1.py: test if *a, = b copies b when b is a list
<br />- micropython/: split off intbig tests
<br />- uctypes_array_assign_native_le: split off intbig part
<br />- basic: make various tests skippable
<br />- float: make various tests skippable
<br />- extmod: add very basic feature test for ussl module
<br />- extmod: add websocket tests
<br />- dict_fromkeys: split out skippable part
<br />- micropython: make uio-using tests skippable
<br />- micropython/heapalloc_traceback: fix backtrace line # after refactor
<br />- micropython/opt_level: clarify the expected output for opt_level == 3
<br />- feature_check/int_big: rework "big int" detection
<br />- basics/fun_error: split out skippable test
<br />- extmod: rename websocket test to websocket_basic
<br />- misc/: make few tests skippable
<br />- extmod: add a test for core VFS functionality, sans any filesystem
<br />- extmod/vfs_basic: add more tests for basic VFS functionality
<br />- extmod: improve re1.5/recursiveloop.c test coverage
<br />- improve binary.c test coverage
<br />- basics/struct_micropython: add test for 'S' typecode in ustruct
<br />- run-tests: re-instate skipping of doubleprec test on pyboard
<br />- extmod/vfs_basic: unmount all existing devices before doing test
<br />- extmod: improve tinfgzip.c test coverage
<br />- micropython/viper_error: add more tests to improve coverage
<br />- basics/string_format2: adjust comment now that tests succeed
<br />- basics: add test for string module formatting with int argument
<br />- basics: move string-modulo-format int tests to dedicated file
<br />- basics/bytes_add: add tests for optimised bytes addition
<br />- micropython: add tests for micropython.schedule()
<br />- heapalloc_str: test no-replacement case for str.replace()
<br />- float: add tests for math funcs that return ints
<br />- float: add tests for round() of inf, nan and large number
<br />- basics: add test for super() when self is closed over
<br />- basics: add tests for list and bytearray growing using themselves
<br />- run-tests: be sure to close Pyboard object on completion
<br />- vfs_fat_fileio.py is too big to be parsed in 16K heap, split in 2
<br />- extmod/vfs_fat_fileio*: improve skippability
<br />- float/byte*_construct: skip on missing array module
<br />- micropython/heapalloc_iter: improve skippability
<br />- run-tests: introduce generic "minimal" target
<br />- float: add tests for hashing float and complex numbers
<br />- run-tests: update names of tests that may need skipping
<br />- basics: add tests for raising ValueError when range() gets 0 step
<br />- basics: add test for tuple inplace add
<br />- extmod/utimeq1: improve coverage of utimeq module
<br />- run-tests: search feature checks wrt to main script location
<br />- run-tests: don't post-process CRASH result in any way
<br />- micropython: add test for micropython.kbd_intr()
<br />- add tests for calling super and loading a method directly
<br />- basics: add tests for int.from_bytes when src has trailing zeros
<br />- cpydiff/core_arguments: fill in cause/workaround
<br />- cpydiff/core_function_userattr: clarify, fill in cause and workaround
<br />- cpydiff/core_import_prereg: fill in cause and workaround
<br />- io/resource_stream: add test for uio.resource_stream()
<br />- cpydiff/core_import_path: test showing difference in package.__path__
<br />- cpydiff/core_import_split_ns_pkgs: test for split namespace packages
<br />- cpydiff/core_function_unpacking: fill in workaround
<br />- extmod: add more tests for VFS FAT
<br />- extmod: add some more VFS tests
<br />- micropython: add test for int.from_bytes with many zero bytes
<br />- move super-as-local test from cpydiff to basic tests
<br />- basics: update array test for big-int with lL typecodes
<br />- basics: add memoryview test for big ints
<br />- basics/lexer: add lexer tests for input starting with newlines
<br />- extmod: make some vfs tests fully unmount FSs before running
<br />- extmod/vfs: update tests to reflect new ilistdir() method
<br />- basics/lexer: add line continuation tests for lexer
<br />- extmod/vfs_fat: add test for ilistdir of a non-existent directory
<br />- extmod/vfs_fat_more: make skippable is uos is not available
<br />- io/bytesio_ext: test read() after seek() past end of BytesIO object
<br />- basics/list_slice_3arg: add more tests for negative slicing
<br />- basics/builtin_range: add tests for negative slicing of range
<br />- basics: add more tests for unwind jumps from within a try-finally</p>
<p>mpy-cross:
<br />- main: move lexer constructor to within NLR handler block
<br />- fix compiler detection for including windows/fmode.c
<br />- Makefile: override undefine any inherited variables
<br />- Makefile: guard "override undefine" by test for make feature</p>
<p>bare-arm port:
<br />- main: move lexer constructor to within NLR handler block
<br />- Makefile: change C standard from gnu99 to c99</p>
<p>minimal port:
<br />- update frozentest.mpy file for new .mpy version
<br />- add ability and description to build without the compiler
<br />- main: move lexer constructor to within NLR handler block
<br />- Makefile: change C standard from gnu99 to c99
<br />- main: make Cortex-M vector table constant</p>
<p>unix port:
<br />- coverage: move coverage #if guard back to top of file
<br />- enable builtin help function in coverage build
<br />- enable MICROPY_PY_BUILTINS_HELP_MODULES in coverage build
<br />- switch to OO version of FatFS library
<br />- get minimal version compiling again
<br />- change to use new generic VFS sub-system in coverage build
<br />- fatfs_port: include new oofatfs header
<br />- mpconfigport.h: remove obsolete MICROPY_FATFS_VOLUMES config
<br />- modos: remove VfsFat from uos module, it's now in uos_vfs module
<br />- make stack be non-executable
<br />- fix freedos port build problems
<br />- main: properly handle MICROPYPATH starting with ':'
<br />- moduselect: implement ipoll() method with no-allocation policy
<br />- modmachine: add Signal class to machine module
<br />- remove remaining, obsolete traces of GNU readline support
<br />- moduselect: properly implement ipoll object iteration
<br />- main: refactor to put lexer constructors all in one place
<br />- use mp_handle_pending() in time.sleep()
<br />- coverage: enable scheduler and add tests for it
<br />- use mp_obj_str_get_str instead of mp_obj_str_get_data
<br />- convert mp_uint_t to size_t for use of mp_obj_list_get
<br />- convert mp_uint_t to size_t in alloc.c
<br />- enabled high-quality float hashing in coverage build
<br />- remove obsolete MICROPY_FATFS macro
<br />- main: ignore SIGPIPE signal, instead make EPIPE arrive
<br />- main: don't allow to specify too small heap size
<br />- main: implement -m option for packages
<br />- Makefile: enable frozen bytecode modules dir
<br />- move upip to frozen bytecode dir
<br />- Makefile: don't add frozen bytecode to minimal build
<br />- add ilistdir in uos module
<br />- use core-provided KeyboardInterrupt exception object</p>
<p>windows port:
<br />- .gitignore: ignore VC.db and VC.opendb files from VS2015
<br />- make msvc project file support any version from VS2013 to VS2017
<br />- bring mpconfigport.h up-to-date with unix port
<br />- README: convert to Markdown
<br />- README: fix some typos and grammar
<br />- README: add a note about stack usage for msvc
<br />- use core-provided KeyboardInterrupt exception object
<br />- msvc: add machine/pin-related sources to build
<br />- msvc: remove directory with generated files when cleaning
<br />- msvc: do not define DEBUG for debug builds
<br />- msvc: rebuild all qstrs when mpconfig headers are modified
<br />- msvc: workaround parser bug in older MSBuild versions</p>
<p>qemu-arm port:
<br />- don't compile tests in "REPL" mode
<br />- mpconfigport.h: enable MICROPY_PY_BUILTINS_POW3 option
<br />- enable machine module and associated tests
<br />- add basic uos module with generic VFS capabilities
<br />- move lexer constructors to within NLR handler block</p>
<p>stmhal port:
<br />- support PortG on STM32L476 and STM32L486
<br />- fix wrong usage of gcc -print-libgcc-file-name
<br />- fix USB HID receive not receiving the first packet
<br />- implement ioctl for USB HID read
<br />- implement SNAK/CNAK mechanism for USB HID receive
<br />- convert to use builtin help function
<br />- enable help('modules') feature
<br />- add default frozen-bytecode directory and link lcd160cr driver
<br />- fix examples in openocd configs to include addresses
<br />- add ability to have filesystem stored on external SPI flash
<br />- boards/STM32L476DISC: use external SPI flash for filesystem
<br />- mpconfigport.h: reorganise the config options into groups
<br />- usbd_msc_storage: use storage functions instead of disk ones
<br />- convert to use VFS sub-system and new ooFatFs component
<br />- fix name of automatically created boot.py
<br />- moduos: remove duplicated chdir
<br />- use LED constants from PYBv4 onwards
<br />- set the FatFs partition number when initialising VFS object
<br />- fix stack pointer initialisation for F411 and F429 boards
<br />- README: add paragraph about building mpy-cross
<br />- on boot, mount all available partitions of the SD card
<br />- main: put /sd directory before /flash in sys.path
<br />- pin: add C-level pin ioctl method
<br />- modmachine: add machine.Signal type
<br />- main: guard init_sdcard_fs with MICROPY_HW_HAS_SDCARD
<br />- pendsv: fill in comments about what the stack contains
<br />- initial implementation of multithreading, currently disabled
<br />- main: use _estack value to initialise stack extents
<br />- fix build issue when MICROPY_PY_THREAD is disabled
<br />- mpconfigport.h: enable MICROPY_PY_BUILTINS_POW3 option
<br />- on HardFault, print stack pointer and do a stack dump
<br />- add pyb.fault_debug() function, to control hard-fault behaviour
<br />- use MICROPY_EVENT_POLL_HOOK instead of __WFI where appropriate
<br />- add ability to skip booting from SD card via /flash/SKIPSD file
<br />- Makefile: drop use of -mabi=aapcs-linux; link libgcc by default
<br />- boards: for STM32F411DISC, change I2C pin according to datasheet
<br />- implement a proper thread scheduler
<br />- use generic interrupt char code
<br />- main: remove unnecessary header includes
<br />- use mp_hal_delay_ms instead of HAL_Delay
<br />- rename sys_tick ticks/delay functions to corresp. mp_hal ones
<br />- modpyb: use utime ticks ms/us functions instead of custom ones
<br />- modnwcc3k: add include for mp_hal_delay_ms
<br />- mphalport: get ticks_cpu() working on F7 MCUs
<br />- main: allocate flash's VFS struct on the heap to trace root ptrs
<br />- enable micropython.schedule()
<br />- pendsv: disable interrupts during a thread switch
<br />- irq: shift IRQ priorities of TIM and EXTINT to be above PENDSV
<br />- pybthread: allow interrupts to work during lock/unlock of mutex
<br />- systick: make mp_hal_delay_ms release the GIL when sleeping
<br />- boards: fix alt-func config for PA5 of STM32F767
<br />- board: fix existing and add more pin defs for NUCLEO_F767ZI
<br />- spi: clean and/or invalidate D-cache before SPI DMA transfers
<br />- hal: for F7 MCUs, expose DMA_CalcBaseAndBitshift function
<br />- dma: fix reinitialisation of DMA on F7 MCUs, following F4
<br />- update to use size_t for tuple/list accessors
<br />- update for changes to mp_obj_str_get_data
<br />- spi: increase SPI transfer timeout, proportional to num bytes
<br />- support SDMMC alternate functions in pin generation
<br />- sdcard: add support for SDMMC2 on F7 MCUs
<br />- boards: update F76x alternate function table to add SDMMC2
<br />- boards/STM32F769DISC: get SD card working by using SDMMC2
<br />- boards/STM32F769DISC: fix user switch pin, and document stlink
<br />- boards: remove F769 alt function table, it's same as for F767
<br />- dma: don't include SDMMC2 struct if SDMMC2 is not available
<br />- move L4/F7 I2C timing constants from mpconfigboard.h to i2c.c
<br />- i2c: clean the cache so that I2C DMA works on F7 MCUs
<br />- usbd_cdc_interface: increase in-endpoint timeout to 500ms
<br />- usbd_cdc_interface: change CDC RX to use a circular buffer
<br />- enable parsing of all Pin constructor args by machine.Signal
<br />- timer: clear interrupt flag before setting callback
<br />- convert all module and method tables to use MP_ROM macros
<br />- modmachine: add machine.UART class, linking to pyb.UART
<br />- modmachine: remove TODO comment that is now implemented
<br />- add machine.Pin on/off methods
<br />- add ilistdir in uos module</p>
<p>cc3200 port:
<br />- convert to use builtin help function
<br />- add implementations of mp_import_stat and builtin_open
<br />- modusocket: remove deprecated socket.error
<br />- convert to use new VFS sub-system and new ooFatFs library
<br />- refactor "ticks" functions to use common extmod implementation
<br />- move stoupper to ftp.c and define in terms of unichar_toupper
<br />- use simplelink API instead of emulated BSD API
<br />- remove util/std.h, can just use stdio.h instead
<br />- mods/modwlan: remove unused header includes; simplify others
<br />- mods/modwlan: make multi-threaded a proper compile-time option
<br />- mods/modwlan: allow antenna diversity to be fully compiled out
<br />- mods/modwlan: add int casts to silence compiler warnings
<br />- remove remaining references to std.h
<br />- move wlan socket glue functions from modwlan to modusocket
<br />- convert to using uPy internal errno numbers
<br />- when raising OSError's use MP_Exxx as arg instead of a string
<br />- enable uerrno module with short, custom list of error codes
<br />- mods/modusocket: init vars to 0 to silence compiler warnings
<br />- remove socket.timeout class, use OSError(ETIMEDOUT) instead
<br />- moduos: remove uos.sep, as it's strictly optional
<br />- mptask: allocate flash VFS struct on the heap to trace root ptrs
<br />- mods/modutime: use generic sleep_ms and sleep_us implementations
<br />- update to use size_t for tuple/list accessors
<br />- update for changes to mp_obj_str_get_data
<br />- mods/pybi2c: raise OSError if readfrom_mem fails to write addr
<br />- modmachine: return frequency value directly, like other ports
<br />- pybuart: make parity specifications consistent with HW API
<br />- mods/pybi2c: make machine.I2C constructor/init conform to HW API
<br />- mods/pybi2c: make readfnom_mem_into/writeto_mem return None
<br />- mods/pybpin: remove toggle() method</p>
<p>teensy port:
<br />- convert to use builtin help function
<br />- main: remove unnecessary header includes
<br />- lexerfrozen: make mp_lexer_new_from_file raise an exception</p>
<p>esp8266 port:
<br />- convert to use builtin help function
<br />- factor out common linker code to esp8266_common.ld
<br />- switch to use OO version of FatFs library
<br />- change to use new generic VFS sub-system
<br />- fatfs_port: include new oofatfs header
<br />- machine_pin: implement pin ioctl protocol
<br />- modmachine: add Signal class
<br />- mpconfigport.h: remove obsolete MICROPY_FATFS_VOLUMES config
<br />- uart: add support for polling uart device
<br />- moduos: populate release field of uname in case it was GC'd
<br />- mpconfigport.h: enable help('modules') feature
<br />- update lexer constructors so they can raise exceptions
<br />- only execute main.py if in friendly REPL mode
<br />- enable micropython.schedule() with locking in pin callback
<br />- change machine.Timer callback to soft callback
<br />- machine_pin: add "hard" parameter to pin.irq, soft by default
<br />- machine_pin: make pin.irq arguments positional
<br />- machine_pin: fix memset size for zeroing of pin_irq_is_hard
<br />- machine_pin: fix pin.irq() to work when all args are keywords
<br />- modesp: use mp_obj_str_get_str instead of mp_obj_str_get_data
<br />- modesp: remove long-obsolete and unused espconn bindings
<br />- update to use size_t for tuple/list accessors
<br />- update for changes to mp_obj_str_get_data
<br />- remove unused entry in port root pointers
<br />- README: replace reference of alpha status to beta status
<br />- README: add notice about 512K version
<br />- change default settings to mount flash at root dir
<br />- esp8266.ld, esp8266_ota.ld: grow main firmware size by 32KB
<br />- modesp: flash_user_start: Use value from linker script
<br />- modules/flashbdev: reserve one sector for native code storage
<br />- scripts: move drivers/modules to modules/ (frozen bytecode)
<br />- scripts: move initsetup & port_diag tools to modules/
<br />- ets_alt_task.c: prevent spurious large increment of ticks_ms()
<br />- modnetwork: in connect, fix potential buffer overflows
<br />- machine_uart: add uart.any() method
<br />- modules: mount filesystem at root when creating for first time
<br />- mpconfigport.h: remove duplicate link to lwip module
<br />- rename machine.Pin high/low methods to on/off
<br />- add ilistdir in uos module</p>
<p>zephyr port:
<br />- help: update n_args param type to size_t
<br />- remove deprecated .mdef file
<br />- add separate Zephyr config for "minimal" build
<br />- enable SLIP networking for the default build
<br />- convert to use builtin help function
<br />- make sure that correct Zephyr config is used for "minimal" build
<br />- allow to have per-board Zephyr config fragments
<br />- prj_frdm_k64f.conf: add, enable Ethernet support
<br />- Makefile.zephyr: support and default to networked (SLIP) QEMU
<br />- README: describe many gotchas of networked builds
<br />- enable IPv6 networking in addition to IPv4
<br />- add qemu_cortex_m3 config fragment
<br />- main: don't unconditionally dump stats on each GC
<br />- README: network startup issues with frdm_k64f resolved
<br />- modzephyr: add a module for Zephyr-specific things
<br />- modzephyr: fix typo in identifier
<br />- make sure that generated prj.conf is updated only on content changes
<br />- move "minimal" configuration building to a separate wrapper script
<br />- main: nlr_jump_fail: Fix noreturn warning
<br />- main: remove unused __fatal_error()
<br />- main: move lexer constructor to within NLR handler block
<br />- zephyr_getchar: use native k_sem instead of legacy nano_sem
<br />- prj_base.conf: disable legacy kernel compatibility
<br />- prj_base.conf: enable TCP (and UDP explicitly)
<br />- Makefile: rework to use modern, official build integration
<br />- Makefile: add workaround (fix?) for broken builds for DTS targets
<br />- fix NLR segfault in minimal build
<br />- modusocket: initial version of usocket module for Zephyr
<br />- integrate modusocket into build
<br />- modusocket: implement bind() and connect()
<br />- modusocket: implement send()
<br />- modusocket: implement recv() for UDP sockets
<br />- modusocket: implement recv() for TCP sockets
<br />- prj_base.conf: add config for net_buf logging
<br />- modusocket: be sure to use MP_OBJ_FROM_PTR
<br />- modusocket: factor out socket_new() function
<br />- zephyr_getchar: explicitly yield to other threads on char availability
<br />- Makefile: add "test" target, runs testsuite in QEMU
<br />- modusocket: factor out "extended k_fifo API"
<br />- modusocket: implement listen()
<br />- modusocket: socket_bind: Don't set recv callback on STREAM sockets
<br />- modusocket: implement accept()
<br />- mpconfigport.h: fix build if usocket module is disabled
<br />- modmachine: add Signal class
<br />- machine_pin: implement pin protocol for machine.Signal support
<br />- modusocket: call net_nbuf_print_frags() in recv callback if DEBUG > 1
<br />- modusocket: strip packet header right in the receive callback
<br />- modmachine: implement machine.reset()
<br />- main: configure IPv4 netmask and gateway to allow Internet access
<br />- add 96b_carbon configuration
<br />- modusocket: refactor send() into stream write() method
<br />- modusocket: enable stream write() method
<br />- modusocket: refactor recv() into stream read() method
<br />- modusocket: add read/readline/readinto stream methods
<br />- modusocket: sock_read: Check socket status only at the start of packet
<br />- modusocket: add dummy makefile() implementation
<br />- Makefile: add debugserver Zephyr target
<br />- mpconfigport.h: enable line number information for scripts
<br />- main: remove superfluous include
<br />- modusocket: add dummy setsockopt() implementation
<br />- modusocket: add SOL_SOCKET and SO_REUSEADDR constants
<br />- prj_qemu_x86.conf: bump RAM size to 320K
<br />- README: update to require Zephyr 1.8
<br />- modusocket: wrap pkt_get_info() call
<br />- modusocket: update for net_pkt refactor
<br />- modusocket: switch to net_pkt_append() returning length
<br />- modusocket: if there're no packets in recv_q, cancel waiter
<br />- modusocket: implement getaddrinfo()
<br />- modusocket: first step to switch to alternative FIFO processing
<br />- modusocket: get rid of cur_pkt object member
<br />- main: check default netif before applying operations to it
<br />- modusocket: getaddrinfo: Use RAISE_ERRNO for proper error decoding
<br />- modusocket: getaddrinfo: Raise OSError on resolution timeout, etc
<br />- modusocket: use DEBUG_PRINT macro name as other modules do
<br />- rename machine.Pin high/low methods to on/off
<br />- don't send more than MTU allows
<br />- modusocket: handle a case when recv_q is empty when EOF is signaled</p>
<p>pic16bit port:
<br />- main: make nlr_jump_fail never return
<br />- main: make mp_lexer_new_from_file raise an exception</p>
<p>README:
<br />- explicitly mention "await" support, and formatting for keywords
<br />- add link to docs.micropython.org
<br />- describe extmod/ dir
<br />- change Travis & Coveralls badges to not use link references</p>
<p>travis:
<br />- unconditionally run coveralls analysis, even if others failed
<br />- change an stmhal rule to build PYBV11 instead of default PYBV10</p>
<p>gitattributes:
<br />- add .mpy files to list of binary files
<br />- remove obsolete lines</p>
<p>docs:
<br />- fix some minor spelling mistakes
<br />- add documentation for lcd160cr module
<br />- pyboard/tutorial: add tutorial for LCD160CR
<br />- library/lcd160cr: fix set_brightness range, should be 0..31
<br />- machine.Timer: move WiPy adhoc parts to its documentation
<br />- machine: add explicit note on machine module level and scope
<br />- usocket: clarify exceptions used
<br />- usocket: elaborate "Constants" section
<br />- usocket: clarify description of various methods
<br />- usocket: dedent Methods section
<br />- uio: describe differences between uPy an CPy stream hierarchy
<br />- conf.py: add myself as a copyright holder on the docs
<br />- uio: typo fixes/lexical improvements
<br />- pyboard/tutorial/lcd160cr_skin: fix typo, get_touched->get_touch
<br />- for LCD160CR driver and tutorial, add link to positioning image
<br />- esp8266/tutorial: specify the baudrate in picocom example command
<br />- add M-logo as favicon
<br />- library/pyb.Pin: minor typo fix, B6 should be A0
<br />- library/machine: make separate TOC for WiPy vs non-WiPy
<br />- uos: remove mention of uos.sep
<br />- library/lcd160cr: mention the valid values for set_power() method
<br />- modify Makefile and indexes to generate cPy-differences pages
<br />- uhashlib: provide port-neutral description
<br />- Makefile: define and use PYTHON as the interpreter for CPYDIFF
<br />- machine: fix formatting of Constants section
<br />- library/lcd160cr: add note about supported JPEG format/encodings
<br />- library: add framebuf documentation
<br />- library/lcd160cr: add link to framebuf page
<br />- esp8266/tutorial: update since esptool 1.3 added Python 3 support
<br />- library/framebuf: fix typo in bit-width for MVLSB description
<br />- library/machine.I2C: fix scan() doc to match implementation
<br />- library/btree: add btree module docs
<br />- utime: de-conditionalize description of sleep_ms() and friends
<br />- uos: de-conditionalize statvfs() description
<br />- machine.SPI: remove outdated wipy chunk
<br />- machine.Pin: move wipy-specific details to its own docs
<br />- machine.Pin: move wipy-specific methods to its docs
<br />- esp8266/general: start explicit "Known Issues", mentioned RTC inaccuracy
<br />- library/builtins: int: Add notice on byteorder param for to/from_bytes
<br />- library/machine.UART: remove some conditionals
<br />- utime: deconditionalize description of sleep()
<br />- usocket: deconditionalize
<br />- uhashlib: deconditionalize
<br />- esp8266/tutorial/intro: reword section on flash size requirement
<br />- library/micropython: deconditionalize
<br />- library/uos: urandom: Generalize description
<br />- library/ussl: deconditionalize, wipy notes moved to its documentation
<br />- machine.UART: deconditionalize normal methods
<br />- machine: move machine.main() misnomer to wipy's known issues
<br />- library/machine: typo fix in machine_callbacks section
<br />- library/machine.UART: remove pyboard-specific section
<br />- wipy/quickref: update reference for change to I2C API
<br />- wipy/general: add section about specifics of I2C implementation
<br />- library/machine.I2C: deconditionalise all methods
<br />- library/machine.*: add cross-reference label to individual classes
<br />- esp8266/quickref: add links from quickref page to machine classes
<br />- library/machine.I2C: remove WiPy-specific return values
<br />- library/machine.SPI: fix formatting of bullet list to stop warning
<br />- library/uos: add description of uos.ilistdir() function
<br />- machine.Pin: there's no toggle() method in MicroPython hardware API
<br />- machine.Signal: add initial draft description of Signal class
<br />- library/index: add important summary of the intro section as warning
<br />- change single occurrence of "Micropython" to "MicroPython"
<br />- library/micropython: document the newer micropython functions
<br />- library/machine.UART: update and improve uart.any() docs
<br />- library/machine.Pin: remove .id() method and .board class attr</p>
<p>examples:
<br />- hwapi: use Signal for inverted LED on ESP-12
<br />- hwapi: consistently use Signal class to define LEDs
<br />- button_reaction: update for time_pulse_us() no longer raising exc
<br />- hwapi: add hwconfig_pyboard.py for pyboard
<br />- hwapi: be sure to import Signal when it's used
<br />- hwapi/soft_pwm: use Signal on()/off() methods
<br />- embedding/README: convert to markdown, grammar and clarity fixes
<br />- embedding: place lexer constructor within NLR handler block
<br />- hwapi: add config for Zephyr port of 96Boards Carbon
<br />- hwapi/hwconfig*: use inline Signal() args where possible
<br />- hwapi/soft_pwm2_uasyncio: update for call_later_ms()</p>dpgeorgetag:github.com,2008:Repository/290133466/v1.8.72017-01-08T12:53:14Zv1.8.7: Support for Xtensa emitter and assembler, and upgraded F4 and F7 STM HAL<p>Support for Xtensa emitter and assembler, and upgraded F4 and F7 STM HAL</p>
<p>This release adds support for the Xtensa architecture as a target for the
<br />native emitter, as well as Xtensa inline assembler. The int.from_bytes
<br />and int.to_bytes methods now require a second argument (the byte order)
<br />per CPython (only "little" is supported at this time). The "readall"
<br />method has been removed from all stream classes that used it; "read" with
<br />no arguments should be used instead. There is now support for importing
<br />packages from compiled .mpy files. Test coverage is increased to 96%.</p>
<p>The generic I2C driver has improvements: configurable clock stretching
<br />timeout, "stop" argument added to readfrom/writeto methods, "nack"
<br />argument added to readinto, and write[to] now returns num of ACKs
<br />received. The framebuf module now handles 16-bit depth (generic colour
<br />format) and has hline, vline, rect, line methods. A new utimeq module is
<br />added for efficient queue ordering defined by modulo time (to be
<br />compatible with time.ticks_xxx functions). The pyboard.py script has been
<br />modified so that the target board is not reset between scripts or commands
<br />that are given on a single command line.</p>
<p>For the stmhal port the STM Cube HAL has been upgraded: Cube F4 HAL to
<br />v1.13.1 (CMSIS 2.5.1, HAL v1.5.2) and Cube F7 HAL to v1.1.2. There is a
<br />more robust pyb.I2C implementation (DMA is now disabled by default, can be
<br />enabled via an option), and there is an implementation of machine.I2C with
<br />robust error handling and hardware acceleration on F4 MCUs. It is now
<br />recommended to use machine.I2C instead of pyb.I2C. The UART class is now
<br />more robust with better handling of errors/timeouts. There is also more
<br />accurate VBAT and VREFINT measurements for the ADC. New boards that are
<br />supported include: NUCLEO_F767ZI, STM32F769DISC and NUCLEO_L476RG.</p>
<p>For the esp8266 port select/poll is now supported for sockets using the
<br />uselect module. There is support for native and viper emitters, as well
<br />as an inline assembler (with limited iRAM for storage of native functions,
<br />or the option to store code to flash). There is improved software I2C
<br />with a slight API change: scl/sda pins can be specified as positional only
<br />when "-1" is passed as the first argument to indicate the use of software
<br />I2C. It is recommended to use keyword arguments for scl/sda. There is
<br />very early support for over-the-air (OTA) updates using the yaota8266
<br />project.</p>
<p>A detailed list of changes follows.</p>
<p>py core:
<br />- emitnative: fix native import emitter when in viper mode
<br />- remove readall() method, which is equivalent to read() w/o args
<br />- objexcept: allow clearing traceback with 'exc.__traceback__ = None'
<br />- runtime: mp_resume: handle exceptions in Python __next__()
<br />- mkrules.mk: rework find command so it works on OSX
<br />- *.mk: replace uses of 'sed' with $(SED)
<br />- parse: move function to check for const parse node to parse.[ch]
<br />- parse: make mp_parse_node_new_leaf an inline function
<br />- parse: add code to fold logical constants in or/and/not operations
<br />- factor persistent code load/save funcs into persistentcode.[ch]
<br />- factor out persistent-code reader into separate files
<br />- lexer: rewrite mp_lexer_new_from_str_len in terms of mp_reader_mem
<br />- lexer: provide generic mp_lexer_new_from_file based on mp_reader
<br />- lexer: rewrite mp_lexer_new_from_fd in terms of mp_reader
<br />- lexer: make lexer use an mp_reader as its source
<br />- objtype: implement __call__ handling for an instance w/o heap alloc
<br />- factor out common code from assemblers into asmbase.[ch]
<br />- stream: move ad-hoc ioctl constants to stream.h and rename them
<br />- compile: simplify configuration of native emitter
<br />- emit.h: remove long-obsolete declarations for cpython emitter
<br />- move arch-specific assembler macros from emitnative to asmXXX.h
<br />- asmbase: add MP_PLAT_COMMIT_EXEC option for handling exec code
<br />- asmxtensa: add low-level Xtensa assembler
<br />- integrate Xtensa assembler into native emitter
<br />- allow inline-assembler emitter to be generic
<br />- add inline Xtensa assembler
<br />- emitinline: embed entire asm struct instead of a pointer to it
<br />- emitinline: move inline-asm align and data methods to compiler
<br />- emitinline: move common code for end of final pass to compiler
<br />- asm: remove need for dummy_data when doing initial assembler passes
<br />- objint: from_bytes, to_bytes: require byteorder arg, require "little"
<br />- binary: do zero extension when storing a value larger than word size
<br />- builtinimport: support importing packages from compiled .mpy files
<br />- mpz: remove unreachable code in mpn_or_neg functions
<br />- runtime: zero out fs_user_mount array in mp_init
<br />- mpconfig.h: enable MICROPY_PY_SYS_EXIT by default
<br />- add MICROPY_KBD_EXCEPTION config option to provide mp_kbd_exception
<br />- compile: add an extra pass for Xtensa inline assembler
<br />- modbuiltins: remove unreachable code
<br />- objint: rename mp_obj_int_as_float to mp_obj_int_as_float_impl
<br />- emitglue: refactor to remove assert(0), to improve coverage
<br />- lexer: remove unreachable code in string tokeniser
<br />- lexer: remove unnecessary check for EOF in lexer's next_char func
<br />- lexer: permanently disable the mp_lexer_show_token function
<br />- parsenum: simplify and generalise decoding of digit values
<br />- mpz: fix assertion in mpz_set_from_str which checks value of base
<br />- mpprint: add assertion for, and comment about, valid base values
<br />- objint: simplify mp_int_format_size and remove unreachable code
<br />- unicode: comment-out unused function unichar_isprint
<br />- consistently update signatures of .make_new and .call methods
<br />- mkrules.mk: add MPY_CROSS_FLAGS option to pass flags to mpy-cross
<br />- builtinimport: fix bug when importing names from frozen packages</p>
<p>extmod:
<br />- machine_i2c: make the clock stretching timeout configurable
<br />- machine_i2c: raise an error when clock stretching times out
<br />- machine_i2c: release SDA on bus error
<br />- machine_i2c: add a C-level I2C-protocol, refactoring soft I2C
<br />- machine_i2c: add argument to C funcs to control stop generation
<br />- machine_i2c: rewrite i2c.scan in terms of C-level protocol
<br />- machine_i2c: rewrite mem xfer funcs in terms of C-level protocol
<br />- machine_i2c: remove unneeded i2c_write_mem/i2c_read_mem funcs
<br />- machine_i2c: make C-level functions return -errno on I2C error
<br />- machine_i2c: add 'nack' argument to i2c.readinto
<br />- machine_i2c: make i2c.write[to] methods return num of ACKs recvd
<br />- machine_i2c: add 'stop' argument to i2c readfrom/writeto meths
<br />- machine_i2c: remove trivial function wrappers
<br />- machine_i2c: expose soft I2C obj and readfrom/writeto funcs
<br />- machine_i2c: add hook to constructor to call port-specific code
<br />- modurandom: allow to build with float disabled
<br />- modframebuf: make FrameBuffer handle 16bit depth
<br />- modframebuf: add back legacy FrameBuffer1 "class"
<br />- modframebuf: optimise fill and fill_rect methods
<br />- vfs_fat: implement POSIX behaviour of rename, allow to overwrite
<br />- moduselect: use stream helper function instead of ad-hoc code
<br />- moduselect: use configurable EVENT_POLL_HOOK instead of WFI
<br />- modlwip: add ioctl method to socket, with poll implementation
<br />- vfs_fat_file: allow file obj to respond to ioctl flush request
<br />- modbtree: add method to sync the database
<br />- modbtree: rename "sync" method to "flush" for consistency
<br />- modframebuf: add hline, vline, rect and line methods
<br />- machine_spi: provide reusable software SPI class
<br />- modframebuf: make framebuf implement the buffer protocol
<br />- modframebuf: store underlying buffer object to prevent GC free
<br />- modutimeq: copy of current moduheapq with timeq support for refactoring
<br />- modutimeq: refactor into optimized class
<br />- modutimeq: make time_less_than be actually "less than", not less/eq</p>
<p>lib:
<br />- utils/interrupt_char: use core-provided mp_kbd_exception if enabled</p>
<p>drivers:
<br />- display/ssd1306.py: update to use FrameBuffer not FrameBuffer1
<br />- onewire: enable pull up on data pin
<br />- onewire/ds18x20: fix negative temperature calc for DS18B20</p>
<p>tools:
<br />- tinytest-codegen: blacklist recently added uheapq_timeq test (qemu-arm)
<br />- pyboard.py: refactor so target is not reset between scripts/cmd
<br />- mpy-tool.py: add support for OPT_CACHE_MAP_LOOKUP_IN_BYTECODE</p>
<p>tests:
<br />- micropython: add test for import from within viper function
<br />- use read() instead of readall()
<br />- basics: add test for logical constant folding
<br />- micropython: add test for creating traceback without allocation
<br />- micropython: move alloc-less traceback test to separate test file
<br />- extmod: improve ujson coverage
<br />- basics: improve user class coverage
<br />- basics: add test for dict.fromkeys where arg is a generator
<br />- basics: add tests for if-expressions
<br />- basics: change dict_fromkeys test so it doesn't use generators
<br />- basics: enable tests for list slice getting with 3rd arg
<br />- extmod/vfs_fat_fileio: add test for constructor of FileIO type
<br />- extmod/btree1: exercise btree.flush()
<br />- extmod/framebuf1: add basics tests for hline, vline, rect, line
<br />- update for required byteorder arg for int.from_bytes()/to_bytes()
<br />- extmod: improve moductypes test coverage
<br />- extmod: improve modframebuf test coverage
<br />- micropython: get heapalloc_traceback test running on baremetal
<br />- struct*: make skippable
<br />- basics: improve mpz test coverage
<br />- float/builtin_float_round: test round() with second arg
<br />- basics/builtin_dir: add test for dir() of a type
<br />- basics: add test for builtin locals()
<br />- basics/set_pop: improve coverage of set functions
<br />- run-tests: for REPL tests make sure the REPL is exited at the end
<br />- basics: improve test coverage for generators
<br />- import: add a test which uses ... in from-import statement
<br />- add tests to improve coverage of runtime.c
<br />- add tests to improve coverage of objarray.c
<br />- extmod: add test for utimeq module
<br />- basics/lexer: add a test for newline-escaping within a string
<br />- add a coverage test for printing the parse-tree
<br />- utimeq_stable: test for partial stability of utimeq queuing
<br />- heapalloc_inst_call: test for no alloc for simple object calls
<br />- basics: add tests for parsing of ints with base 36
<br />- basics: add tests to improve coverage of binary.c
<br />- micropython: add test for micropython.stack_use() function
<br />- extmod: improve ubinascii.c test coverage
<br />- thread: improve modthread.c test coverage
<br />- cmdline: improve repl.c autocomplete test coverage
<br />- unix: improve runtime_utils.c test coverage
<br />- pyb/uart: update test to match recent change to UART timeout_char
<br />- run-tests: allow to skip set tests
<br />- improve warning.c test coverage
<br />- float: improve formatfloat.c test coverage using Python
<br />- unix: improve formatfloat.c test coverage using C
<br />- unix/extra_coverage: add basic tests to import frozen str and mpy
<br />- types1: split out set type test to set_types
<br />- array: allow to skip test if "array" is unavailable
<br />- unix/extra_coverage: add tests for importing frozen packages</p>
<p>unix port:
<br />- rename define for unix moduselect to MICROPY_PY_USELECT_POSIX
<br />- Makefile: update freedos target for change of USELECT config name
<br />- enable utimeq module
<br />- main: allow to print the parse tree in coverage build
<br />- Makefile: make "coverage_test" target mirror Travis test actions
<br />- moduselect: if file object passed to .register(), return it in .poll()
<br />- Makefile: split long line for coverage target, easier to modify
<br />- enable and add basic frozen str and frozen mpy in coverage build
<br />- Makefile: allow cache-map-lookup optimisation with frozen bytecode</p>
<p>windows port:
<br />- enable READER_POSIX to get access to lexer_new_from_file</p>
<p>stmhal port:
<br />- dma: de-init the DMA peripheral properly before initialising
<br />- i2c: add option to I2C to enable/disable use of DMA transfers
<br />- i2c: reset the I2C peripheral if there was an error on the bus
<br />- rename mp_hal_pin_set_af to _config_alt, to simplify alt config
<br />- upgrade to STM32CubeF4 v1.13.0 - CMSIS/Device 2.5.1
<br />- upgrade to STM32CubeF4 v1.13.0 - HAL v1.5.1
<br />- apply STM32CubeF4 v1.13.1 patch - upgrade HAL driver to v1.5.2
<br />- hal/i2c: reapply HAL commit ea040a4 for f4
<br />- hal/sd: reapply HAL commit <a class="commit-link" href="https://github.com/Python3-Training/micropython/commit/1d7fb82f0aec11331635532583617d773888b991"><tt>1d7fb82</tt></a> for f4
<br />- hal: reapply HAL commit <a class="commit-link" href="https://github.com/Python3-Training/micropython/commit/9db719bb57626d72ab84ab0ccd2294bf89158762"><tt>9db719b</tt></a> for f4
<br />- hal/rcc: reapply HAL commit <a class="commit-link" href="https://github.com/Python3-Training/micropython/commit/c568a2b44387bee14ea5f427a6e9b736eb1b5345"><tt>c568a2b</tt></a> for f4
<br />- hal/sd: reapply HAL commit <a class="commit-link" href="https://github.com/Python3-Training/micropython/commit/09de030651b95956eb9f899e850f24d0ce804460"><tt>09de030</tt></a> for f4
<br />- boards: configure all F4 boards to work with new HAL
<br />- make-stmconst.py: fix regex's to work with current CMSIS
<br />- i2c: handle I2C IRQs
<br />- dma: precalculate register base and bitshift on handle init
<br />- dma: mark DMA sate as READY even if HAL_DMA_Init is skipped
<br />- can: clear FIFO flags in IRQ handler
<br />- i2c: provide custom IRQ handlers
<br />- hal: do not include <stdio.h> in HAL headers
<br />- mphalport.h: use single GPIOx->BSRR register
<br />- make-stmconst.py: add support for files with invalid utf8 bytes
<br />- update HALCOMMITS due to change to hal
<br />- make-stmconst.py: restore Python 2 compatibility
<br />- update HALCOMMITS due to change to hal
<br />- moduselect: move to extmod/ for reuse by other ports
<br />- i2c: use the HAL's I2C IRQ handler for F7 and L4 MCUs
<br />- updates to get F411 MCUs compiling with latest ST HAL
<br />- i2c: remove use of legacy I2C_NOSTRETCH_DISABLED option
<br />- add beginnings of port-specific machine.I2C implementation
<br />- i2c: add support for I2C4 hardware block on F7 MCUs
<br />- i2c: expose the pyb_i2c_obj_t struct and some relevant functions
<br />- machine_i2c: provide HW implementation of I2C peripherals for F4
<br />- add support for flash storage on STM32F415
<br />- add back GPIO_BSRRL and GPIO_BSRRH constants to stm module
<br />- add OpenOCD configuration for STM32L4
<br />- add address parameters to openocd config files
<br />- adc: add "mask" selection parameter to pyb.ADCAll constructor
<br />- adc: provide more accurate measure of VBAT and VREFINT
<br />- adc: make ADCAll.read_core_temp return accurate float value
<br />- adc: add ADCAll.read_vref method, returning "3.3v" value
<br />- adc: add support for F767 MCU
<br />- adc: make channel "16" always map to the temperature sensor
<br />- sdcard: clean/invalidate cache before DMA transfers with SD card
<br />- moduos: implement POSIX behaviour of rename, allow to overwrite
<br />- adc: use constants from new HAL version
<br />- refactor UART configuration to use pin objects
<br />- uart: add support for UART7 and UART8 on F7 MCUs
<br />- uart: add check that UART id is valid for the given board
<br />- cmsis: update STM32F7 CMSIS device include files to V1.1.2
<br />- hal: update ST32CubeF7 HAL files to V1.1.2
<br />- port of f4 hal commit <a class="commit-link" href="https://github.com/Python3-Training/micropython/commit/c568a2b44387bee14ea5f427a6e9b736eb1b5345"><tt>c568a2b</tt></a> to updated f7 hal
<br />- port of f4 hal commit <a class="commit-link" href="https://github.com/Python3-Training/micropython/commit/09de030651b95956eb9f899e850f24d0ce804460"><tt>09de030</tt></a> to updated f7 hal
<br />- port of f4 hal commit <a class="commit-link" href="https://github.com/Python3-Training/micropython/commit/1d7fb82f0aec11331635532583617d773888b991"><tt>1d7fb82</tt></a> to updated f7 hal
<br />- declare and initialise PrescTables for F7 MCUs
<br />- boards/STM32F7DISC: define LSE_STARTUP_TIMEOUT
<br />- hal: update HALCOMMITS due to change in f7 hal files
<br />- refactor to use extmod implementation of software SPI class
<br />- cmsis: add CMSIS file stm32f767xx.h, V1.1.2
<br />- add NUCLEO_F767ZI board, with openocd config for stm32f7
<br />- cmsis: add CMSIS file stm32f769xx.h, V1.1.2
<br />- add STM32F769DISC board files
<br />- move PY_SYS_PLATFORM config from board to general config file
<br />- mpconfigport: add weak-module links for io, collections, random
<br />- rename mp_const_vcp_interrupt to mp_kbd_exception
<br />- usb: always use the mp_kbd_exception object for VCP interrupt
<br />- use core-provided keyboard exception object
<br />- led: properly initialise timer handle to zero before using it
<br />- mphalport.h: explicitly use HAL's GPIO constants for pull modes
<br />- usrsw: use mp_hal_pin_config function instead of HAL_GPIO_Init
<br />- led: use mp_hal_pin_config function instead of HAL_GPIO_Init
<br />- sdcard: use mp_hal_pin_config function instead of HAL_GPIO_Init
<br />- add support for STM32 Nucleo64 L476RG
<br />- uart: provide a custom function to transmit over UART
<br />- uart: increase inter-character timeout by 1ms
<br />- enable utimeq module</p>
<p>cc3200 port:
<br />- tools/smoke.py: change readall() to read()
<br />- pybspi: remove static mode=SPI.MASTER parameter for latest HW API
<br />- mods/pybspi: remove SPI.MASTER constant, it's no longer needed
<br />- update for moduselect moved to extmod/
<br />- re-add support for UART REPL (MICROPY_STDIO_UART setting)
<br />- enable UART REPL by default
<br />- README: (re)add information about accessing REPL on serial
<br />- make: rename "deploy" target to "deploy-ota"
<br />- add targets to erase flash, deploy firmware using cc3200tool
<br />- README: reorganize and update to the current state of affairs
<br />- modwlan: add network.WLAN.print_ver() diagnostic function</p>
<p>esp8266 port:
<br />- enable uselect module
<br />- move websocket_helper.py from scripts to modules for frozen BC
<br />- refactor to use extmod implementation of software SPI class
<br />- mpconfigport_512k: disable framebuf module for 512k build
<br />- enable native emitter for Xtensa arch
<br />- enable inline Xtensa assembler
<br />- add "ota" target to produce firmware binary for use with yaota8266
<br />- use core-provided keyboard exception object
<br />- add "erase" target to Makefile, to erase entire flash
<br />- when doing GC be sure to trace the memory holding native code
<br />- modesp: flash_user_start(): support configuration with yaota8266
<br />- force relinking OTA firmware image if built after normal one
<br />- scripts/inisetup: dump FS starting sector/size on error
<br />- Makefile: produce OTA firmware as firmware-ota.bin
<br />- modesp: make check_fw() work with OTA firmware
<br />- enable utimeq module
<br />- Makefile: put firmware-ota.bin in build/, for consistency
<br />- modules/flashbdev: add RESERVED_SECS before the filesystem
<br />- modules/flashbdev: remove code to patch bootloader flash size
<br />- modules/flashbdev: remove now-unused function set_bl_flash_size
<br />- modules/flashbdev: change RESERVED_SECS to 0</p>
<p>zephyr port:
<br />- add .gitignore to ignore Zephyr's "outdir" directory
<br />- zephyr_getchar: update to Zephyr 1.6 unified kernel API
<br />- switch to Zephyr 1.6 unified kernel API
<br />- support raw REPL
<br />- implement soft reset feature
<br />- main: initialize sys.path and sys.argv
<br />- use core-provided keyboard exception object
<br />- uart_core: access console UART directly instead of printk() hack
<br />- enable slice subscription</p>
<p>docs:
<br />- remove references to readall() and update stream read() docs
<br />- library/index: elaborate on u-modules
<br />- library/machine.I2C: refine definitions of I2C methods
<br />- library/pyb.Accel: add hardware note about pins used by accel
<br />- library/pyb.UART: added clarification about timeouts
<br />- library/pyb.UART: moved writechar doc to sit with other writes
<br />- esp8266/tutorial: update intro to add Getting the firmware section
<br />- library/machine.I2C: fix I2C constructor docs to match impl
<br />- esp8266/tutorial: close socket after reading page content
<br />- esp8266/general: add "Scarcity of runtime resources" section
<br />- library/esp: document esp.set_native_code_location() function
<br />- library/esp: remove para and add further warning about flash
<br />- usocket: clarify that socket timeout raises OSError exception</p>
<p>travis:
<br />- build STM32 F7 and L4 boards under Travis CI
<br />- include persistent bytecode with floats in coverage tests</p>
<p>examples:
<br />- hwapi: button_led: Add GPIO pin read example
<br />- hwapi: add soft_pwm example converted to uasyncio
<br />- http_client: use read() instead of readall()
<br />- hwapi: add uasyncio example of fading 2 LEDs in parallel
<br />- hwapi: add example for machine.time_pulse_us()
<br />- hwapi: add hwconfig for console tracing of LED operations
<br />- accellog.py: change 1: to /sd/, and update comment about FS
<br />- hwapi/hwconfig_console: don't alloc memory in value()</p>dpgeorgetag:github.com,2008:Repository/290133466/v1.8.62016-11-10T10:25:01Zv1.8.6: ESP8266 port uses SDK 2.0, has more heap, has support for 512k devices<p>ESP8266 port uses SDK 2.0, has more heap, has support for 512k devices</p>
<p>This release brings some code size reductions to the core as well as
<br />more tests and improved coverage which is now at 94.3%.</p>
<p>The time.ticks_diff(a, b) function has changed: the order of the arguments
<br />has been swapped so that it behaves like "a - b", and it can now return a
<br />negative number if "a" came before "b" (modulo the period of the ticks
<br />functions).</p>
<p>For the ESP8266 port the Espressif SDK has been updated to 2.0.0, the
<br />heap has been increased from 28k to 36k, and there is support for 512k
<br />devices via "make 512k". upip is included by default as frozen bytecode.
<br />The network module now allows access-point reconnection without WiFi
<br />credentials, and exposes configuration for the station DHCP hostname. The
<br />DS18B20 driver now handles negative temperatures, and NeoPixel and APA102
<br />drivers handle 4 bytes-per-pixel LEDs.</p>
<p>For the CC3200 port there is now support for loading of precompiled .mpy
<br />files and threading now works properly with interrupts.</p>
<p>A detailed list of changes follows.</p>
<p>py core:
<br />- py.mk: automatically add frozen.c to source list if FROZEN_DIR is defined
<br />- be more specific with MP_DECLARE_CONST_FUN_OBJ macros
<br />- specialise builtin funcs to use separate type for fixed arg count
<br />- {modbuiltins,obj}: use MP_PYTHON_PRINTER where possible
<br />- modbuiltins: add builtin "slice", pointing to existing slice type
<br />- add "delattr" builtin, conditional on MICROPY_CPYTHON_COMPAT
<br />- sequence: fix reverse slicing of lists
<br />- fix null pointer dereference in mpz.c, fix missing va_end in warning.c
<br />- remove asserts that are always true in emitbc.c
<br />- fix wrong assumption that m_renew will not move if shrinking
<br />- change config default so m_malloc0 uses memset if GC not enabled
<br />- add MICROPY_FLOAT_CONST macro for defining float constants
<br />- move frozen bytecode Makefile rules from ports to common mk files
<br />- strip leading dirs from frozen mpy files, so any path can be used</p>
<p>extmod:
<br />- vfs_fat_file: check fatfs f_sync() and f_close() returns for errors
<br />- vfs_fat_file: make file.close() a no-op if file already closed
<br />- utime_mphal: ticks_diff(): switch arg order, return signed value
<br />- utime_mphal: add MP_THREAD_GIL_EXIT/ENTER warppers for sleep functions
<br />- utime_mphal: implement ticks_add(), add to all maintained ports
<br />- utime_mphal: allow ticks functions period be configurable by a port</p>
<p>lib:
<br />- utils/pyhelp.c: use mp_printf() instead of printf()
<br />- utils/pyexec: add mp_hal_set_interrupt_char() prototype
<br />- libm: move Thumb-specific sqrtf function to separate file</p>
<p>drivers:
<br />- add "from micropython import const" when const is used</p>
<p>tools:
<br />- upgrade upip to 1.1.4: fix error on unix when installing to non-existing
<br /> absolute path
<br />- pip-micropython: remove deprecated wrapper tool
<br />- check_code_size.sh: code size validation script for CI
<br />- replace upip tarball with just source file, to make its inclusion as
<br /> frozen modules in multiple ports less magic</p>
<p>tests:
<br />- extmod/vfs_fat: improve VFS test coverage
<br />- basics/builtin_slice: add test for "slice" builtin name
<br />- basics: add test for builtin "delattr"
<br />- extmod/vfs_fat_fsusermount: improve fsusermount test coverage
<br />- extmod/vfs_fat_oldproto: test old block device protocol
<br />- basics/gc1: garbage collector threshold() coverage
<br />- extmod/uhashlib_sha1: coverage for SHA1 algorithm
<br />- extmod/uhashlib_sha256: rename sha256.py test
<br />- btree1: fix out of memory error running on esp8266
<br />- extmod/ticks_diff: test for new semantics of ticks_diff()
<br />- extmod/framebuf1: test framebuffer pixel clear, and text function</p>
<p>minimal port:
<br />- Makefile: split rule for firmware.bin generation</p>
<p>unix port:
<br />- Makefile: remove references to deprecated pip-micropython
<br />- modtime: use ticks_diff() implementation from extmod/utime_mphal.c
<br />- mphalport.h: add warning of mp_hal_delay_ms() implementation
<br />- modtime: switch ticks/sleep_ms/us() to utime_mphal
<br />- fix symbol references for x86 Mac
<br />- replace upip tarball with just source file</p>
<p>windows port:
<br />- enable utime_mphal following unix, define mp_hal_ticks_*
<br />- fix utime_mphal compilation for msvc
<br />- implement mp_hal_ticks_cpu in terms of QueryPerformanceCounter</p>
<p>qemu-arm port:
<br />- exclude ticks_diff test for qemu-arm port
<br />- exclude extmod/vfs_fat_fileio.py test
<br />- exclude new vfs_fat tests
<br />- enable software floating point support, and float tests</p>
<p>stmhal port:
<br />- modutime: refactor to use extmod's version of ticks_cpu
<br />- refactor pin usage to use mp_hal_pin API
<br />- led: refactor LED to use mp_hal_pin_output() init function
<br />- Makefile: use standard rules for frozen module generation
<br />- modutime: consistently convert to MP_ROM_QSTR/MP_ROM_PTR
<br />- enable SD power save (disable CLK on idle)</p>
<p>cc3200 port:
<br />- use mp_raise_XXX helper functions to reduce code size
<br />- mods/pybspi: allow "write" arg of read/readinto to be positional
<br />- enable loading of precompiled .mpy files
<br />- fix thread mutex's so threading works with interrupts</p>
<p>teensy port:
<br />- update to provide new mp_hal_pin_XXX functions following stmhal</p>
<p>esp8266 port:
<br />- Makefile: use latest esptool.py flash size auto-detection
<br />- esp_init_data: auto-initialize system params with vendor SDK 2.0.0
<br />- esp8266.ld: move help.o to iROM
<br />- esp8266.ld: move modmachine.o to iROM
<br />- esp8266.ld: move main.o to iROM
<br />- add MP_FASTCODE modifier to put a function to iRAM
<br />- main: mark nlr_jump_fail() as MP_FASTCODE
<br />- modules/webrepl: enforce only one concurrent WebREPL connection
<br />- etshal.h: add few more ESP8266 vendor lib prototypes
<br />- modesp: add flash_user_start() function
<br />- add support for building firmware version for 512K modules
<br />- scripts: make neopixel/apa102 handle 4bpp LEDs with common code
<br />- modutime: consistently convert to MP_ROM_QSTR/MP_ROM_PTR
<br />- modnetwork: config(): fix copy-paste error in setting "mac"
<br />- scripts/port_diag: add descriptions for esf_buf types
<br />- modnetwork.c: allows AP reconnection without WiFi credentials
<br />- main: bump heap size to 36K
<br />- etshal.h: add prototypes for SPIRead/SPIWrite/SPIEraseSector
<br />- etshal.h: adjust size of MD5_CTX structure
<br />- modules: fix negative temperature in ds18x20 driver
<br />- rename "machine" module implementation to use contemporary naming
<br />- rework webrepl_setup to run over wired REPL
<br />- espneopixel.c: solve glitching LED issues with cpu at 80MHz
<br />- include upip as a standard frozen bytecode module
<br />- update docs for esptool 1.2.1/SDK 2.0 (--flash_size=detect)
<br />- modnetwork.c: expose configuration for station DHCP hostname</p>
<p>zephyr port:
<br />- implement utime module
<br />- use board/SoC values for startup banner based on Zephyr config
<br />- initial implementation of machine.Pin
<br />- zephyr_getchar: update for recent Zephyr refactor of console hooks
<br />- support time -> utime module "weaklink"
<br />- README: update for the current featureset, add more info
<br />- mpconfigport.h: move less important params to the bottom
<br />- Makefile: allow to adjust heap size from make command line
<br />- Makefile: update comments to the current state of affairs
<br />- Makefile: allow to override Zephyr config from make command line
<br />- Makefile: add minimal port
<br />- Makefile: add -fomit-frame-pointer to reduce code size
<br />- mphalport.h: update for new "unified" kernal API (sleep functions)</p>
<p>docs:
<br />- machine.SPI: bring up to date with Hardware API, make vendor-neutral
<br />- machine.SPI: improve descriptions of xfer methods
<br />- library/builtins: add docs for delattr and slice
<br />- library/network: reword intro paragraph
<br />- library/network: typo fixes, consistent acronym capitalization
<br />- library/index: update TOCs so builtins sorted before modules
<br />- utime: document ticks_cpu() in more detail
<br />- utime: describe new semantics of ticks_diff() (signed ring arithmetics)
<br />- utime: add docs for ticks_add(), improvements for other ticks_*()
<br />- esp8266: update for new WebREPL setup procedure
<br />- */quickref.rst: use new semantics of ticks_diff()
<br />- library/machine.Pin: update Pin docs to align with new HW API</p>
<p>travis:
<br />- integrate tools/check_code_size.sh
<br />- minimal: Use CROSS=1, for binary size check</p>
<p>examples:
<br />- http_server_simplistic: add "not suitable for real use" note
<br />- hwapi: example showing best practices for HW API usage in apps
<br />- hwapi: add hwconfig for DragonBoard 410c</p>dpgeorge