Skip to content
IPv6 support in unix, bignum constant folding, urandom module, faster VCP

In this release there are many bug fixes and consolidation of previous
features.  Constant folding in the parser can now operate on arbitrary
precision integers, and the inline assembler is no longer restricted to
using small-ints or 30-bits.  The urandom module has been added with the
most useful random functions included.  The uhashlib module now
implements SHA1.  The Unix port supports IPv6.  The stmhal port has much
faster USB VCP for board to PC transfers, and Timer(3) is now freed up
for general purpose use by the user.

py core:
- frozenmod: make frozen module content be 0-terminated
- frozenmod: store frozen module names together, to quickly scan them
- use polymorphic iterator type where possible to reduce code size
- make dir report instance members
- implement __dict__ for instances
- objstr: in str.format, handle case of no format spec for string arg
- parse: optimise away parse node that's just parenthesis around expr
- change mp_obj_int_is_positive to more general mp_obj_int_sign
- parse: improve constant folding to operate on small and big ints
- inlinethumb: allow assembler to use big ints as args to instructions
- inlinethumb: remove 30-bit restriction on movwt instruction
- viper: truncate viper integer args so they can be up to 32-bit
- emitglue: add more feature flags to .mpy persistent bytecode output
- mpz: fix conversion of float to mpz so it works on big endian archs
- objint: fix classification of float so it works for OBJ_REPR_D
- change type of .make_new and .call args: mp_uint_t becomes size_t
- change type signature of builtin funs that take variable or kw args
- change first arg of type.make_new from mp_obj_t to mp_obj_type_t*
- emitglue: use mp_obj_is_float instead of MP_OBJ_IS_TYPE
- use new code pattern for parsing kw args with mp_arg_parse_all
- add ustruct.pack_into and unpack_from
- modmicropython: add stack_use, heap_lock and heap_unlock functions
- inlineasm: add ability to specify return type of asm_thumb funcs
- runtime: mp_stack_ctrl_init() should be called immediately on startup
- formatfloat: add ability to format doubles with exponents > 99
- builtin property: accept keyword arguments

extmod:
- moduos_dupterm: make uos.dupterm() implementation reusable
- moduos_dupterm: make mp_uos_dupterm_tx_strn() function reusable
- moduos_dupterm: handle exceptions in call to dupterm's .write()
- fix uctypes size calculation for bitfields
- modurandom: add "urandom" module
- modurandom: make yasmarang() function static
- modurandom: add some extra random functions
- moduhashlib: add support for SHA1 (based on axTLS)
- moduhashlib: use MICROPY_PY_UHASHLIB_SHA1 config define
- moductypes: implement assignment for scalar array

tests:
- uctypes: test item assignment for scalar arrays
- object_dict.py: add test for obj.__dict__
- allow float tests to run when MATH_SPECIAL_FUNCTIONS is disabled
- fix math_fun_special test so it passes with single prec float
- remove builtin_dict test
- add some tests for urandom module
- update pyboard LED test
- for pyboard, add test for I2C error handling and recovery

minimal port:
- add enough code to run minimal build on STM32F4xx hardware

unix port:
- unix_mphal: handle exceptions in call to dupterm's .read()
- unix_mphal: be sure to wrap dupterm code with MICROPY_PY_OS_DUPTERM
- modtime: strftime(): Support 2nd argument, but as time_t value
- add socket.inet_ntop function
- allow to build coverage build with OBJ_REPR_D
- add option to build 64-bit NaN-boxing interpreter
- modffi: allow to compile modffi in OBJ_REPR_D mode
- modsocket: accept(): Make IPv6-clean
- modsocket: sockaddr(): Handle AF_INET6 addresses

windows port:
- enable urandom module

stmhal port:
- make stm constants big ints when they don't fit in a small int
- remove custom mod_machine_mem_get_{read,write}_addr functions
- add os.statvfs
- add support for building frozen files
- add support for the STM32F401NUCLEO board
- make USB CDC driver use SOF instead of TIM3 for outgoing data
- make TIM3 available for use by the user
- add PWM capability for LED(3) and LED(4) on pyboards
- in HAL I2C driver, move DMA setup to after sending I2C address

docs:
- fix readthedocs build by updating Latex params
- set author as 'Damien P. George and contributors'
- add link from pyboard switch tutorial to ISR rules document
- include extra functions in time documentation for pyboard
- several minor changes: network, pyb, ADCAll and inline asm
- update to say that Timer(3) is free, and detail LED intensity

travis:
- add unix NaN-boxing build to Travis builds
- switch to Ubuntu 14.04 Trusty