Skip to content
Lots of additions and improvements; support for STM32F2 and F7 MCUs.

py core:
- make showbc decode UNPACK_EX, and use correct range for unop/binop
- use wrapper to check self argument of builtin methods, to prevent seg faults
- remove mp_load_const_str and replace uses with inlined version
- remove mp_load_const_bytes and instead load precreated bytes object
- improve mp_import_name() debug logging
- catch case when relative import happens without active package
- fix running package submodule with -m
- add TimeoutError exception subclassed from OSError
- allow to build with debugging and bytearray but no array
- modstruct: Raise NotImplementedError for unsupported repeat specification
- REPL: Fix case where shorter names are shadowed by longer names
- prevent many extra vstr allocations by preallocating room for null byte
- improve allocation policy of qstr data (saves RAM)
- modbuiltins: Implement round() to precision
- make qstr hash size configurable, defaults to 2 bytes
- implement memoryview slice assignment, eg m1[0:3] = m2[2:5]
- viper: allow functions to take up to 4 arguments
- vipre: issue an error when compiling functions with more than 4 args
- raise SyntaxError when str hex escape sequence is malformed
- fix handling of parsing empty input so it raises an exception
- viper: compile errors now have traceback with function and filename
- REPL: don't look inside strings for unmatched brackets/quotes
- give more precise line number for compile errors (incl viper functions)
- make list += accept all arguments and add test
- makeversionhdr.py: Fallback to using docs version if no git repo

extmod:
- ubinascii: add a2b_base64 and b2a_base64 functions
- machine: implement physical memory access using /dev/mem (Linux, etc)

lib:
- readline: add emacs control chars for cursor movement (disabled by default)

drivers:
- onewire: fix ds18x20.read_temp so it works when no rom given

tools:
- update upip to 0.5.4: recognize and handle "package not found" error
- make-frozen.py: make Python2 compatibile
- pydfu.py: fix to work with old and new versions of PyUSB
- pyboard.py: fix parsing of returned error so last chr is not lost
- pyboard.py: make enter_raw_repl stricter and more reliable
- pyboard.py: speed up reading of chars by decreasing sleep period
- pyboard.py: add telnet support
- pyboard.py: make Python2 compatible

tests:
- add testcase for open(..., "a")
- adapt basics/memoryerror.py for ports with lower heap sizes
- adapt misc/features.py tests for ports without floating point
- add support for the WiPy in run-tests script (use --target to specify it)
- split out json float tests to separate files
- add test for relative import without package context
- skip parser test if "compile" builtin is not available
- use PTY when running REPL tests
- add test for pyboard SPI in slave mode, recv with no master
- test REPL emacs keys, but only if present
- always use forward slashes for paths (for Windows tests)
- fix exceptions when running cmdline tests on Windows
- Remove over-specification of startup banner

unix port:
- add O_WRONLY | O_CREAT to open call when opening file for append ("a")
- socket.getaddrinfo: accept family & socktype arguments
- socket.getaddrinfo: port is unsigned value
- modsocket: implement sendto(), recvfrom(), inet_pton()
- set MICROPY_PY_SYS_PLATFORM to "darwin" if compiled on OSX

stmhal port:
- modify dma_init() to accept init struct as an argument, making it more generic
- add config option for storage to use second flash segment (disable by default)
- add I2S support to make-pins.py
- add qstr definition for ifconfig when building for WizNet
- move HAL Cube files to f4/ subdir, keeping only those we use
- add STM32CubeF2 version 1.1.0, in hal/f2 directory
- add CMSIS device header files for STM32F2xx series
- allow DAC.write_timed to take Timer object in place of freq
- allow ADC.read_timed to take Timer object in place of freq
- check if user block device is mounted before accessing it
- put fs_user_mount pointer in root ptr section of global state (fixes crash)
- add hal and cmsis files from STM32Cube_FW_F7_V1.1.0
- add STM32F7DISC support
- factor out USRSW boot-up code and support boards with 1 LED
- factor GPIO clock enable logic into mp_hal_gpio_clock_enable
- add capability to print out info about a hard fault (disabled by default)
- fix make-pins.py to allow Port K
- add better support for UART having Tx and Rx on different ports
- add support for USART1 and conditional pins in make-pins.py
- add STM32F7 support for USB serial and storage
- enable I2C support for F7 MCUs
- enable SPI support for F7 MCUs
- fix hardfault when configured as a SPI slave
- generate modstm constants per build

cc3200 port:
- in Timer.callback() only use value param if in edge count mode
- create tools folder and add update-wipy.py script
- add deploy target and improve robustness of update-wipy.py
- enable more features to improve compatibility with stmhal
- add `Pin.name()` method
- adapt update-wipy.py timing to improve stability
- correct socket settimeout time format
- add CA, certificate and key files to the updater list
- add socket.timeout and socket.error exceptions
- raise an exception if trying to scan for networks in AP mode
- optimize check for WLAN AP mode
- set WLAN date/time via the rtc.datetime method()
- add modussl, ssl sockets subclassed from normal sockets
- time.sleep() now receives seconds, like CPython
- fix socket recv and recvfrom return value type
- enable base64 methods from modubinascii
- increment interrupt stack size from 2K to 3K
- create /flash/sys and /flash/lib directories while booting
- translate simplelink's socket error numbers to POSIX values
- use alternative HAL_Delay also when interrupts are disabled
- correct udelay us to ticks calculation
- increment telnet Tx retry delay on every try
- add struct weak link for ustruct
- set simplelink time and date when enabling WLAN
- refactor and clean-up socket closing code
- implement new OTA mechanism with 2 firmware update slots
- create /flash/cert folder if it doesn't exist
- make socket stream methods return POSIX error codes
- add socket.sendall() (aliases to send())
- rename pins from GPIO to just GP
- add socket.makefile()
- switch to 1 byte hash for QSTRs
- on ssl.read() or ssl.readall() ignore ssl layer closed error
- append last 2 bytes of the MAC address to the default SSID
- make I2C and SPI API the same as in stmhal
- add nic.iwconfig() to set/get WLAN configuration
- improve support for WEP security
- enable bootloader safe boot on latest firmware
- fix bug in ffconf regarding '/flash' string length
- add script to program the WiPy via UniFlash (windows only...)
- add factory smoke test as part of the tools
- speed up file system checking during start-up
- on the first boot, always make AP ssid='wipy-wlan'
- make ADC API compatible with the pyboard

esp8266 port:
- move scan() from esp module to network
- update the README.md to reflect what works
- move status() from esp module to network
- make pyb.RTC a type, and pyb.RTC() constructs an RTC object
- allow to easily override programming baudrate

docs:
- add more documentation for the CC3200 in the pyb module
- add "reference" directory for putting docs about the language
- add reference for Thumb2 inline assembler
- make index link point to "index.html" irrespective of port
- fix duplicate label error for network.WLAN
- update safe boot comments to match actual behaviour
- update pyb.Accel doc to reflect changes and explain filtered_xyz
- correct nic.ifconfig() quickref example
- add i2c keywork arguments only indication