Damien George has recently announced the release of MicroPython 1.20 with support for the Raspberry Pi Pico W board., a new lightweight package manager called mip, a smaller footprint thanks to the use of compressed type structs, and many other changes.
The new mip package manager uses a custom protocol optimized for embedded systems to query and install packages, and intends to replace upip for installing packages from micropython-lib or any URL. Mip can be run directly on a device, as long as it has network connectivity, or via mpremote from a host computer. Damien explains all pure-Python drivers have been moved from the micropython repository to the micropython-lib repository as part of the change in order to make it easier to install the packages needed for a given project.
The MicroPython binary size has been reduced by many kilobytes for all ports since all core/built-in types have been compressed by only including in the C-level type struct as many slots for C function pointers as is needed for a given type, as opposed to storing NULL pointers for unused slots.
The change in code size since the previous release for various ports (absolute in bytes and percentage change in the text section) can be seen below:
bare-arm: -1124 -1.934%
minimal x86: -4322 -2.967%
unix x64: +264181 +50.533% standard
stm32: -3592 -0.906% PYBV10
cc3200: -1832 -0.990%
esp8266: -2284 -0.327% GENERIC
esp32: +9659 +0.632% GENERIC
nrf: -84 -0.045% pca10040
rp2: +13096 +4.291% PICO
samd: +127776 +90.488% ADAFRUIT_ITSYBITSY_M4_EXPRESS
bare-arm, minimal x86, stm32, cc3200, and esp8266 targets are seeing a reduction in code size due to compressed type structs, while others are getting larger due to extra features:
- unix: switching axtls for mbedtls, merging in dev configuration options and features
- esp32: new Ethernet drivers for LAN8710, KSZ8081 and some additional machine module functionality
- nrf: compressed type struct and machine module improvements
- rp2: additional mbedtls features and ciphers
- samd: many new features, plus machine module classes and functions
Another notable change of MicroPython 1.20 is that the rp2 port implements the CYW43xx WiFi driver used in the new Raspberry Pi Pico W board (See download link for MicroPython 12.0), but other RP2040 boards have also been added to the latest MicroPython release including W5500-EVB-PICO, WeAct RP2040, and the nullbits Bit-C PRO board.
The ESP32 port also got a few more boards such as ESP32-S3 with octal SPIRAM, Olimex PoE boards, and a generic board for unicore chips. MicroPython 12.0 also gains support for the higher-end NXP i.MX RT1176 Cortex-M7 crossover processor and the MIMXRT1170_EVK board.
You’ll find a long list of changes in the release notes on GitHub. The tweet from Matt Trentini that alerted us of the MicroPython 1.20 release says it took 10 months to developer, and the project receibers over 1,000 commits from more than 100 contributors.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.