Tags: jasonkajita/micropython
Tags
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
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.
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
PreviousNext