Tags: warner83/micropython
Tags
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
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
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
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()
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
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
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
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
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
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
PreviousNext