MicroPython 1.20 released with Raspberry Pi Pico W support, mip package manager, smaller footprint

MicroPython 1.20 Pico W

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.

mip package manager

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.

MicroPython is getting smaller

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, 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

New boards – Raspberry Pi Pico W, WeAct RP2040, Olimex ESP32 PoE board, etc…

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.

Share this:

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK Pi 4C Plus
Notify of
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
11 months ago

Nice, but still no USB device support on most platforms. Seems that I’m stuck with CircuitPython forever.

11 months ago

Why would you prefer MicroPython otherwise?

11 months ago

For many reasons. One example would be, because it supports interrupts.

Khadas VIM4 SBC