Forum | Documentation | Website | Blog

Skip to content
Tags give the ability to mark specific points in history as being important
  • v1.4.4
    Unix binary gets tab completion and builtin upip, and more.
    
    py core:
    - allow to compile without needing git to extract version
    - conform to CPython's way of printing nan/inf with padding
    - wrap qstr defs in quotes to protect from C preprocessor
    - add stack check to mp_iternext to catch nested iterators
    - implement implicit cast to obj for viper load/store index/value
    - implement native multiply operation in viper emitter
    - expose KeyboardInterrupt in builtins module
    - fallback to stack alloca for Python-stack if heap alloc fails
    - support unicode (utf-8 encoded) identifiers in Python source
    - implement second arg for math.log (optional value for base)
    - support mpz bignums in divmod builtin
    
    extmod:
    - add ubinascii.unhexlify
    - swap address and descriptor args in uctypes constructor
    
    lib:
    - fix some issues with dates prior to 1 Mar 2000
    - implemente delete key in readline
    
    tools:
    - pyboard.py: allow pyboard constructor to take a baudrate parameter
    - pyboard.py: change logic for when raw ">" prompt is parsed
    - add codestats.sh to compute code statistics such as size, speed
    
    unix port:
    - add option to use uPy readline and enable by default (adds tab completion)
    - include upip as frozen module within standard uPy executable; standard
      way to use is: micropython -m upip install <module>
    - allow to cat a script into stdin from the command line
    - make micropython -m <module> work for frozen modules
    
    windows port:
    - implement mp_hal_xxx functions and enable uPy readline
    
    stmhal port:
    - raise error if disk is full when writing a file
    - implement sys.stdin.buffer, sys.stdout.buffer for raw byte mode
    - remove all PYBVxx defines and use general config vars instead
    - add support for UART5 if MCU has it
    - fix slow SPI DMA transfers by removing wfi from DMA wait loop
    - break immediately from USB CDC busy wait loop if IRQs disabled
    - make I2C transfers use DMA when possible (when IRQs are enabled)
    
    cc3200 port:
    - add os.rename()
    - add Timer module
    - add uhashlib with SHA1 and SHA256
    - add ubinascii module
    - implement full set of wake-on-WLAN features
    - remove NIC abstraction layer
    - improve WDT
    - make peripheral API more similar to stmhal's
    - improve reliability of ftp and telnet servers
    - add antenna selection feature to WLAN
    - add sendbreak method to UART
    
    esp8266 port:
    - add uos module
    - allow to set CPU frequency to 160MHz using pyb.freq
    - add pyb.ADC class
    - to esp module add: mac, phy_mode, sleep_type, deepsleep, flash_id
    - update SDK to version 1.1.0 (MIT licensed)
    - fix lost chars when transfering large amounts of data over UART
    - add skeleton "network" module with bare WLAN() constructor
    - add WLAN.connect/disconnect functions
    - change esp_scan to keep the current WiFi operating mode
    
    docs:
    - document esp module
    - allow to generate separate docs for each port (using ..only directive)
    - add initial docs for the WiPy
  • v1.4.3
    Tab autocompletion, and various improvements and bug fixes.
    
    py core:
    - add attrtuple for space efficient tuples with attr access
    - add sys.implementation, with uPy name and version number
    - fix printing of "inf" and "nan" values
    - native: fix stack adjustment when erroring on binary op
    - mpz: fix bug with shl not truncating zero digits correctly
    - modify "with" implementation so it doesn't use any heap
    - add sys.exc_info()
    - implement conversion of bignum to bytes
    - implement struct.pack with 'q' and 'Q' args on 32-bit archs
    - replace py-version.sh with makeversiohdr.py, written in Python
    - implement tab autocompletion for REPL
    - rename struct module to ustruct
    - add NotImplemented builtin constant
    - handle user instance hash based on Python adhoc rules
    - fix naming of function arguments when function is a closure
    - fix printing of complex numbers with nan/inf
    
    extmod:
    - add machine module, with mem8, mem16, mem32 objects
    
    lib:
    - move common mod_network_* functions to lib/netutils
    - move common time functions to lib/timeutils
    
    tools:
    - pyboard.py: add "--follow" option to wait for output indefinitely
    - add script to install "upip" package manager
    
    tests:
    - add more viper tests, including for ViperTypeError
    - coverage at 94%
    
    unix port:
    - modffi: support passing float/double args
    - add special function to coverage build to improve coverage
    - print unhandled exceptions to stderr
    
    stmhal port:
    - implement os.uname()
    - reset timer counter to zero after changing auto reload
    - properly disable unhandled timer interrupts
    - automatically reenable IRQs when code drops to the USB REPL
    - allow to configure UART pins completely via mpconfigboard.h
    - make raw REPL work with event-driven version of pyexec
    - add rtc.calibration() method to get/set RTC fine-tuning value
    - add os.rename()
    - add readinto() and readlines() methods to sys.stdin and pyb.USB_VCP
    
    cc3200 port:
    - add WiPy specific info to README.md
    - fix byte order in MAKE_SOCKADDR and UNPACK_SOCKADDR
    - select NIC when the socket is created
    - add delays to allow ftp and telnet servers to start/stop
    - make telnet login work with Tera Term
    - implement os.uname()
    - make WLAN scan results a list of attrtuples
    - make WLAN.isconnected() also work in AP mode
    - implement Sleep.wake_reason()
    - make WLAN.ifconfig() return an attrtuple
    - enable MICROPY_MODULE_WEAK_LINKS
    
    esp8266 port:
    - export station status() constants
    - add esp.socket class, with ESP-style socket functionality
    - add raw REPL support and working soft reset
    - fix garbage collector by hard-coding stack end address
    - add socket.onsent() callback support
    - add support for frozen modules
    - implement time functions
    - add utime and pyb.RTC
    - add module weak links
    
    docs:
    - document pyb.stop, pyb.standby, pyb.RTC.wakeup
    - document USB_VCP read* and write methods
  • 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
  • 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
    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.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.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.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.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.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.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.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.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.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.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
    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.2
    v1.2: Unicode support (disabled by default); bug fixes and minor features added.
  • 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.1
    v1.1: Many bug fixes, enhancements and features.
  • 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.