Skip to content
Tags give the ability to mark specific points in history as being important
  • v1.0-rc1
    Preparing for v1.0.
  • v1.0
    Version 1.0!  This is shipping with the next batch of pyboards.
  • v1.0.1
    v1.0.1: mostly bug fixes for stmhal/, features for py/.
    
    Main bug fixes: flushing USB CDC correctly, setting RTC.
    
    Main features for stmhal: improved native and viper emitters.
    
    This version goes on the next batch of pyboards.
  • v1.1
    v1.1: Many bug fixes, enhancements and features.
  • v1.1.1
    v1.1.1: Improved LCD driver, UART REPL and some bug fixes.
    
    Bumping version because this binary will be put on the next batch of pyboards.
  • v1.2
    v1.2: Unicode support (disabled by default); bug fixes and minor features added.
  • v1.3
    v1.3: New features and many bug fixes.
    
    New features include:
    - file.flush, os.stat
    - unicode enabled by default on unix and stmhal ports
    - print function accepts file= argument
    - I2C object allows for 16-bit mem addr
    - emergency exception buffer for improved exception traceback
    - USB_VCP object
    - 0:/ and 1:/ changed to /flash and /sd
    - improved Pin object
    - can set pin alternate function from Python
    - builtin reversed, can len() and subscr range objects
    - added moductypes
    - added modzlibd for DEFLATE decompression
    
    Code improvements include:
    - more efficient line-number to bytecode mapping
    - new STM HAL driver v1.3.0
    
    Bug fixes include:
    - mpz (bignum) fixes
    - accel startup improved
    - important bug fix in GC
  • v1.3.1
    Bug fixes, viper improvements, and more
    
    New features in core:
    - min and max accept key= argument
    - accepts user defined ==, >, <=, >=
    - native support for ARM (non thumb)
    - cut RAM and ROM usage of zlibd
    - significant GC allocation speed up
    
    Viper improvements:
    - type annotations
    - store to global
    - call functions with native types
    - raise exceptions
    
    Bug fixes to core:
    - fix multiplication of a sequence by negative number
    - GC bug fix where native code was being collected
    - int(b'1234') now works
    - can now make strings longer than 64k
    
    unix port:
    - modtermios for unix
    - make install for unix
    
    stmhal port:
    - reduced code size by 35k
    - put some code into first 16k block
    - in safe mode SD card is still presented as MSD
    - SD card init fixes; should be more reliable
    - added time.mktime; enhanced time.localtime
    - new Pin functions: mode, pull, af
    - nestable enable_irq/disable_irq
    - added pyb.micros()
    - added USB_VCP.any()
    - STM32F4DISC accel support via staccel.py script
  • v1.3.2
    Changes in core:
    - bytecode prelude uses less RAM
    - free non-interned strings earlier
    - add builtins module
    - add ujson module with dumps and loads
    - mpz div changed so that mpz is more efficient
    - some compiler optimisations
    - some simplifications of the code
    - bug fix memcpy -> memmove
    - changed most instances of int/uint to mp_int_t/mp_uint_t
    - added ioctl method to stream protocol
    - divmod, % and // support for floating-point numbers
    
    Native emitter enhancements:
    - bug fixes
    - support for delete name and global
    - support for end finally
    - x86 support
    - x86-64 can use extended regs
    
    unix port:
    - MIPS compilation support
    
    stmhal port:
    - add generic select module
    - ability to select/poll on UART objects
    - proper SDHC support (cards > 4gb now work)
    - enhanced timer support (PWM, OC, IC)
    - big fix with miss-aligned stack pointer
    - more math functions implemented
    
    Added drivers subdirectory with WIZNet5200 support
    (disabled by default).
    
    Added docs subdirectory and moved to Sphinx docs.
    
    Improved teensy support.
  • v1.3.3
    0bbe4de5 · stmhal: Update help text. ·
    Network support in stmhal, and improved viper compiler.
    
    Changes in core:
    - tidy up native emitter and assemblers
    - viper can compiler more binary ops
    - viper supports casting (int, ptr8, ptr16)
    - viper can compile native stores (eg p[1] = 42)
    - remove IOError (use OSError instead)
    
    stmhal port:
    - fix OSX mass storage issue, so pyboard can be left plugged in
    - add network and usocket modules with CC3000 and WIZnet5k support
      (disabled by default)
    - improved percent option in timer PWM
    - add pyb.elapsed_millis, pyb.elapsed_micros
    - internal flash is labelled as "pybflash" on creation
    - don't init NSS pin when initialising SPI bus with NSS_SOFT mode
  • v1.3.4
    Add regex and CAN, improve UART, and more.
    
    py core:
    - add basic regex support using re1.5 library
    - replace zlibd with uzlib
    - compiler returns proper exception on SyntaxError
    - proper context saving for eval/exec
    - use mp_[u]int_t in most places instead of [u]int
    - better ARM support in native emitter
    - autodetect machine endianness
    - better big endian support
    - memory errors from locked gc can be reported
    - more robust lexer when out of memory
    - rename modules to begin with u-, and add module weak links
    - more native binops in viper emitter
    - native pointers with load+store in viper
    - fix GC realloc so that chunks are shrunk correctly
    - compiler optimisations for constant if/while conds
    - add kwargs for builtin open() and FileIO
    - enable unicode on windows
    
    stmhal port:
    - add basic CAN bus support
    - overhaul UART class to use read/write
    - add NRF24L01 driver (in pure Python)
    - pyb.freq can change SYSCLK
    - add pyb.stop and pyb.standby
    - can set Timer freq using float
    - Timer supports complementary channel and deadtime
    - add retry for SD card init
  • v1.3.5
    RAM savings, memoryview, quick-ref and more.
    
    Improvements to core:
    - make better use of bytecode coding space
    - about 10% RAM savings in bytecode
    - add uheapq module
    - add memoryview builtin
    - add compile builtin
    - support in VM for KeyboardInterrupt
    - fix integer modulo with negative arguments
    - small GC fixes
    - add 2nd arg to readinto
    
    New features in unix port:
    - CTRL-C raises KeyboardInterrupt
    - heapsize option takes K and M
    - -m option to execute library module
    
    stmhal improvements:
    - make MMA_INT/PB2 pin available
    - add pyb.hard_reset()
    - cc3k recv improments
    - all HAL errors now raise OSError with POSIX error code
    - USB config improved for windows (CDC on Windows 10 without driver)
    - use different USB PID when in CDC+HID mode (so HID works in Windows)
    - boot.py and main.py use \r\n for newlines
    - change SPI phase from 1,2 to 0,1 to match industry conventions
    - allow DAC object to be init'd from pin
    - improved raw REPL control codes
    - improved pyboard.py script
    
    docs:
    - add quick reference page with pinout
  • v1.3.6
    Improved documentation, and other small changes.
    
    py core:
    - add builtin round function
    - gc.enable/disable still allows manual GC (as per CPython)
    - fix builtin callable for user-defined types
    - fix bug for right shift of small int by large amount
    
    unix port:
    - add "fast" version
    - improve uctypes, including sizeof function
    
    stmhal port:
    - support for extended CAN frames
    - USB_VCP works with select
    - experimental support for RTS/CTS in UART
    - make UART bits count number of data bits, not incl parity
    - pyb.freq now allows 8MHz and 16MHz
    
    docs:
    - revamp and merge all inline docs into Sphinx framework
    - add a few more tutorials
  • v1.3.7
    Port to ESP8266, add uhashlib, improved CAN driver.
    
    py core:
    - support more ops for bytes/bytarray
    - support __hash__ for user-defined types
    - support for float/double arrays in array module
    - shorter error messages for TERSE message option
    - add seek via ioctl to stream protocol
    
    extmod:
    - add uhashlib with sha256
    
    unix port:
    - heapsize can take w specifier for word adjustment
    
    stmhal port:
    - CAN init now takes sjw, bs1, bs2 args
    - add CAN filter management
    - fix HAL error raising bug
    
    esp8266 port:
    - new port to ESP8266 wifi chip
    
    docs:
    - minor additions
  • v1.3.8
    Feature additions to core, unix and stmhal; general improvements.
    
    py core:
    - implement +, +=, .extend for bytarray and array objs
    - add mem_info, qstr_info to micropython module
    - bytes/bytearray/array can be init'd by buffer protocol objs
    - optimised lexer by exposing lexer type; gives ROM savings
    - add sys.print_exception
    - allow builtins to be overridden
    - fixed all semantic issues with range optimisation
    - compiler gives proper SyntaxError exceptions for bad global/nonlocal
    - reduce VM exception stack size by 1 machine word per exception
    - make bytes objs work with more str methods
    - refactor and make mp_bytecode_print and friends more useful
    - start transition to guarded includes
    - lots of code cleanup
    - some ROM savings
    
    extmod:
    - add ubinascii module, with hexlify
    
    unix port:
    - add _os.unlink, _os.system functions
    - 64-bit clean in ffi module
    - time module renamed to utime
    
    stmhal port:
    - add USB_VCP.setinterrupt method, to disable CTRL-C
    - make pyb.[u]delay work when irqs are disabled
    - overhaul of internal network driver interface
    - bug fixes to CC3K and WIZNET5K network drivers
    - use DMA for SPI transfers (only if irqs enabled)
    - allow SPI.init to specify prescaler directly
    - enhance pyb.freq to configure bus frequencies
    - add more math functions (acosh, asinh, atanh, tan)
    - add execfile function
    - upgrade to latest FatFs driver (now in lib/)
    - add ability to mount custom block device
    
    esp8266 port:
    - put more rodata in irom section
    - add README.md
    
    docs:
    - basic docs for uhashlib, ubinascii, ure, uzlib
    - links to LCD and AMP skin schematics
    - general improvements
  • v1.3.9
    Internal changes, RAM and ROM reductions, new minimal port
    
    py core:
    - lots of small optimisations, cleanups and code size reduction
    - move away from Plan 9 headers to traditional guarded ones
    - improved and optimised float to int conversion
    - fix right-shifting edge cases in mpz
    - namedtuple: use sequence of strings for init
    - namedtuple: allow keyword arguments in constructor
    - ability to issue compile/runtime warnings
    - str.format now has kwargs support
    - put all global state togther in a state structure
    - optimisation to cache map lookup results in bytecode
    - fix handling of "0" in some mpz functions
    - implement equality check for all types
    - add qstr cfg capability
    - can now configure qstr len storage; defaults to using 1 byte
    - allow code to compile with lots more warnings enabled
    - add LOAD_CONST_OBJ bytecode, to directly load Python objects
    - never intern data of large str/bytes objects
    - fix handling of default except in compiler
    - add extra pass to bytecode compiler to compute stack size
    - implement very simple frozen modules support
    - implement __reversed__ slot
    - implement proper re-raising in native codegen's finally handler
    
    lib:
    - move readline code from stmhal to lib/mp-readline/
    - readline refactored to support event-driven usage
    - add frexp and modf to libm
    
    minimal port:
    - new port, intended to represent minimal working code
    
    stmhal port:
    - collect root pointers together; improves GC speed
    - add MICROPY_HW_USB_VBUS_DETECT_PIN option
    - add MICROPY_HW_USB_OTG_ID_PIN option
    - add support for FEZ Cerb40 II board
    - bug fixes in network module and usocket.accept, setsockopt
    
    qemu-arm port:
    - enable GC and native code-gen
    - add working tests
    - get tests running under Travis CI
    
    esp8266 port:
    - use dedicated heap allocated as static array
    - implement task-based, event-driven interface with UART
    - implement pyb.hard_reset()
  • v1.3.10
    Bug fixes, CC3200 port, improved inline assembler
    
    py core:
    - big-int bug fixes
    - support for floats in struct module
    - vstr no longer null-terminates buff by default
    - properly handle CR/LF in triple-quoted string
    - list.sort now has O(log(N)) stack usage
    - parse big-int/float constants directly in parser
    - allow to subclass native buffer objects
    - reduce stack size of VM by 8 bytes on stmhal, 16 on x86
    - add ldrex, strex, push, pop, sdiv, udiv, clz, rbit to inline assembler
    - make inline assembler report line numbers on error
    
    extmod:
    - uzlib: raw deflate decoding support
    
    unix port:
    - add "coverage" makefile target for coverage testing
    
    stmhal port:
    - bug fixes in ADCAll object
    - bug fix in timer.deinit
    
    esp8266 port:
    - add esp module
    - add connect, disconnect, status functions
    
    cc3200 port:
    - new port to the CC3200 launchxl board
  • v1.4
    More Python features, reduced code size, coverage testing at 91%.
    
    py core:
    - add builtin setattr function
    - optimise exceptions for out-of-memory scenario
    - add some special methods: __mul__, __floordiv__, __truediv__
    - implement array slice assignment
    - add support for start/stop/step attrs in range object
    - make builtin abs work with bools and bignums
    - add basic implementation of collections.OrderedDict
    - add support for a function's __name__
    - refactor compiler code to reduce code size by up to 2k
    - support for descriptors __get__ and __set__
    
    inline Thumb2 assembler:
    - more robust syntax checking
    - general bug fixes
    - better error messages
    - add "it" instructions
    - add bl, bx instructions
    - add bcc_n, bcc_w instructions
    
    extmod:
    - modure: bug fixes for groups
    - modure: add named classes
    
    lib:
    - libm: add erf, erfc, lgamma, tgamma
    
    drivers:
    - add onewire driver in pure Python
    - add ds18x20 temp sensor driver, using onewire
    - cc3100 driver upgraded to v1.1.0
    
    tests:
    - lots of new tests, including many for SyntaxError
    - automated covage testing using coveralls, at 91% coverage
    
    unix port:
    - support for readline history saving to file
    
    stmhal port:
    - usbdev code cleanup
    - add Python-configurable USB HID mode
    - add CDC only USB option
    - improve USB descriptors (untested on Windows and Mac)
    - add UART.sendbreak() method to send break condition
    - add support for CAN rx callbacks
    - raise error if UART can't do requested baudrate within 5%
    - fix timing init when callback is passed as argument to init
    - add support for quadrature encoder mode in TimerChannel
    - fix ADC.read_timed so buffer store respects element size
    - add RTC.wakeup method to set wakeup timer (preliminary)
    - add compile-time config option for RTC to use LSE or LSI
    - bug fix related to unhandled channel interrupts
    - improved support for stop and standby mode
    - expose all PYBv1.0 pins, including SD and USB pins
    - optimise ADC.read_timed so it can sample at up to 750kHz
    - make pybstdio code usable by other ports
    
    cc3200 port:
    - add I2C module
    - add ADC module
    - add SD module
    - support for connecting to WEP secured networks
    - add WDT support
    - add low power support
    - add SPi module
    
    esp8266 port:
    - add basic pyb.Pin class
    
    miscellaneous:
    - add list of Kickstarter backers in ACKNOWLEDGEMENTS file
    
    size difference in bytes to previous version (a negative value means
    binary is smaller in this version):
    - bare-arm: -2448
    - minimal: -3028
    - unix: +574
    - stmhal: +7996
    - cc3200: -2984
    - teensy: -10560
    - esp8266: -936
    - qemu-arm: -844
  • v1.4.1
    Stackless support, new 16-bit PIC port.
    
    py core:
    - builtin round() accepts second arg
    - add more special methods: __pos__, __neg__, __invert__
    - support for stackless Python calls in VM, strict and non-strict
    - support for object representation that suits 16-bit archs
    - implement closures in native code emitter
    - implement str.splitlines() method
    
    lib:
    - fatfs library upgraded to R0.11 (fixes bugs with unlink)
    
    pic16bit port:
    - new port to 16-bit PIC (reference MCU is dsPIC33J256GP506)
    - heap is 4600 bytes
    - implement basic pyb module with delay
    - implement basic LED and Switch classes
    
    docs:
    - initial docs for micropython module
    - additional example for Timer callback usage
    - document instantiating struct objects in uctypes
  • v1.4.2
    Improved native codegen, better printf, support for F401 and F411 MCUs.
    
    py core:
    - implement delete for property and descriptors
    - add option to disable "enumerate" and "reversed" builtins
    - can call functions with *args in native emitter
    - implement full function arg passing for native emitter
    - combine load_attr and store_attr internal type methods into one
    - fix formatting of floating point numbers near 1.0
    - support assignment of bytes to bytearray slices
    - overhaul and simplify printf/pfenv mechanism
    - fix builtin ord so that it can handle bytes values >= 0x80
    - inlinethumb: add support for core floating point instructions
    - make viper code generator raise ViperTypeError on error
    
    lib:
    - string0.c now in lib/libc/ (was in stmhal/)
    - fatfs code size reduced (by 768 bytes on Thumb2 archs)
    
    tests:
    - more tests for builtins
    - tests for lexer
    - coverage increased to 93%
    
    stmhal:
    - make LED object print LED(x) for consistency with constructor
    - in USB HID driver, make polling interval configurable
    - allow sending CAN messages with timeout=0
    - add support for sending and receiving CAN RTR messages
    - make board parameters more configurable (HSE PLL, LED4, TIMs, etc)
    - add support for F401 and F411 MCUs
    - add support for Espruino Pico board
    - make raw REPL mode 8-bit clean
    
    cc3200 port:
    - enable pull-ups for stdio UART pins
    - enable long filename support in fatfs
    - add WLAN.config_ip(), to assign a static IP
    - add IPPROTO_SEC so secure sockets can be made
    
    tools:
    - make pyboard.py 8-bit clean, so it works with unicode chars
    
    docs:
    - document pyb.main() function