MicroPython 1.20.0 Launches with Mip, a Dedicated Package Manager, and Raspberry Pi Pico W Support

New release aims to make package management easier, both on-device and remotely, while bringing improvements and bug fixes.

Gareth Halfacree
12 months agoPython on Hardware

MicroPython author Damien George has announced the release of MicroPython 1.20.0 — a major upgrade which brings with it a brand-new package manager, dubbed mip, capable of running on-device or remotely.

"This release of MicroPython introduces a new lightweight package manager called mip, which uses a custom protocol to query and install packages that is optimized for embedded systems," George explains. "It is intended to take over the role of upip and supports installing packages from micropython-lib as well as any URL. Mip can be run directly on a device (with network connectivity) or via mpremote. As part of this, all pure-Python drivers have been moved from the micropython repository to the micropython-lib repository, making it easier to install the packages needed for a given project."

While previously MicroPython users were able to use upip, the MicroPython version of the popular pip Python package manager, to handle package installation, mip is something new — custom-built specifically for the MicroPython project. While, at present, it only handles pure Python packages — and not, for example, device drivers written in C/C++ with a Python wrapper — it promises easier dependency handling and package updating than in previous approaches.

The new MicroPython release also brings with it mainline support for the Raspberry Pi Pico W, the second RP2040-based development board to come from the company. Based on the same microcontroller as the original Raspberry Pi Pico, the Pico W adds a radio with Wi-Fi and Bluetooth connectivity — though while MicroPython 1.20.0 includes support for the Wi-Fi portion of the radio, there's no word yet on Bluetooth support.

Other changes in the new release include bug fixes and improvements in the MicroPython runtime, a move to compressed types which will need to be followed by third-party C extensions, more consistency of argument naming in the network module plus the addition to set hostname and regulatory country, and changes in the Nordic Semi nRF-family port which includes a breaking modification to how machine.PWM works. There's also a whole new MicroPython port, dubbed embed, which targets .c and .h files as its output for embedding into larger projects.

The full changelist is available on GitHub, along with the MicroPython source code under the permissive MIT license.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles