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