This is CircuitPython 11.0.0-alpha.1, an alpha release for 11.0.0. Further features, changes, and bug fixes will be added before the final release of 11.0.0.
Circuitpython 11.0.0 is now planned to be the next stable release after 10.3.x, instead of 10.4.0. There may be further 10.3.x releases for critical bug fixes if needed.
CircuitPython libraries from the 10.x bundles are still compatible with CircuitPython 11.0.0 builds.
Highlights of changes since 10.4.0-alpha.2
importnow also looks forfilename.<arch>.mpyarchitecture-specific machine-code files.hmacandhardwarekeymodules.- Isochronous USB IN support.
- RP2350
alarmmodule. - Firmware size reductions.
- Zephyr dynamic pin assignment.
- The
broadcom,litex, andrenodeports have been removed.
Incompatibility warnings when upgrading to 11.0.0 from 10.x.x
- The
broadcom,litex, andrenodeports have been removed.
Download from circuitpython.org
Firmware downloads are available from the downloads page on circuitpython.org. The site makes it easy to select the correct file and language for your board.
Installation
To install, follow the instructions in the Welcome to CircuitPython! guide. To install the latest libraries, see this page in that guide.
Try code.circuitpython.org or the latest version of the Mu editor for creating and editing your CircuitPython programs and for easy access to the CircuitPython serial connection (the REPL).
Documentation
Documentation is available in readthedocs.io.
Port status
CircuitPython has a number of "ports" that are the core implementations for different microcontroller families. Stability varies on a per-port basis. As of this release, these ports are consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S2, ESP32-S3nordic: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040, RP2350stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
analog: Analog Devices MAX32690espressif: ESP32-P4mimxrt10xx: NXP i.MX RT10xxxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip familieszephyr: multiplatform RTOS, running on multiple chip families
Changes since 10.4.0-alpha.2
Fixes and enhancements
- Speed up
TileGrid.fill_area. #11459. Thanks @lynt-smitka. - Fix
bitmaptools.dither()for 1-bit destinations. #11455. Thanks @FoamyGuy. picogamespeedups on processors without hardware division. #11454. Thanks @lynt-smitka.importwill now look forsomefile.py, thensomefile.<arch>.mpy, thensomefile.mpy.<arch>is a machine architecture name, likearm7emsp. It implies that the.mpyfile contains architecture-specific machine code. #11453. Thanks @mikeysklar.- Add
microcontroller.cpu.architecture, which returns a string likearm7emspspecifying the detailed CPU architecture. #11445. Thanks @mikeysklar. - Fix regression causing
random.randint(n, 0x7FFFFFFF)to fail. #11443. Thanks @dhalbert. - Implement finalizers for many more native objects, allowing
deinit()on them. #11439. Thanks @tannewt. - In
_bleioHCI (AirLift) on ESP32-C6, fix advertising and ATT responses. #11432. Thanks @dhalbert. - On ST7735 boards, fix display init sequence. #11429. THanks @lynt-smitka.
- Fix RGB444 on
picogame. #11428. Thanks @lynt-smitka. - Speed up
bitmaptools.blit(). #11413. Thanks @FoamyGuy. - Fix several bugs caught by LLM auditing. #11383. Thanks @peterbay.
- Support LittleFS for boards without USB MSC storage. #11352. Thanks @tannewt.
- Add
hmacmodule for keyed-hash message authentication, backed by PSA crypto. Currently available on Espressif. #11341. Thanks @mmabey. - Add
hardwarekey, enabling use without exposure of values in a hardware key store. Used withhmac. Currently implemented on Espressif. #11319.
Port and board-specific changes
Analog Devices
Broadcom
- The bare-metal
broadcomport has been removed. In the future a Zephyr port would be possible. #11438. Thanks @tannewt.
Espressif
- Update the ESP-iDF
esp-protocolssubmodule to a newer version that fixes some mDNS issues. #11451. Thanks @grgrant. - Update TinyUSB to fix pasting large strings into the REPL. #11433. Thanks @mikeysklar.
i.MX
litex
Nordic
- Turn on turbo (machine code)
.mpyloader for all boards. #11406. Thanks @mikeysklar.
renode
RP2xxx
- Update
Pico-PIO-USBtoadafruitfork, which includes bug fixes and isochronous IN support. #11458, #11450. Thanks @mikeysklar. - Implement
alarmon RP2350, including light and deep sleep, time and pin alarms, and sleep memory. #11434. Thanks @mikeysklar. - Update to Pico SDK 2.3.1. #11426. Thanks @mikeysklar.
- Reduce
picogamefirmware size with careful optimization flag settings. #11358. Thanks @lynt-smitka. - Enable
picogameon Pi Pico and Pi Pico W. #11358. Thanks @lynt-smitka.
SAMx
- Turn on turbo (machine code)
.mpyloader for more boards. #11405. Thanks @mikeysklar.
SiLabs
Spresense
STM
Zephyr
- Wake the main task on UART receive. Speeds up first REPL prompt. #11448. Thanks @tannewt.
- Automatically update and submit PRs for
autogen_board_info.tomlfiles. #11447, #11414. Thanks @tannewt. - Speed up CI builds. #11424, #11416. Thanks @dhalbert.
- Fix problem on
DEBUG=1builds. #11423. Thanks @dhalbert. - Fix broken non-English builds. #11422. Thanks @dhalbert.
- Turn off
ccacheon builds; it was not effective. #11421. Thanks @dhalbert. - Support dynamic pin assignment to peripherals with a new "IOBroker" Zephyr module. #11420. Thanks @tannewt.
Individual boards
- Studiolab Pico Expander is renamed to IDE-TUDelft RealPicoExpander. #11449. Thanks @Jerzeek.
- Adafruit PyBadge: enable
picogame. #11430. Thanks @lynt-smitka.
Documentation changes
- Clarify when to use
make fetch-port-submodulesandfetch-board-submodules. #11452. Thanks @lynt-smitka.
Build and infrastructure changes
- Update to ARM gcc 15.3.Rel1 from 15.2.Rel1. #11427. Thanks @dhalbert.
- Shrink builds by using
MICROPY_PY_DOUBLE_TYPECODEconsistently. #11410. Thanks @dhalbert. - Generate a builds firmware size report on CI builds. #11408. Thanks @dhalbert.
- Store ROM qstrs more efficiently to save firmware space. #11407. Thanks @dhalbert.
- Avoid soft-float uint64 conversion in `alarm.time.TimeAlarm, to save firmware space. #11404. Thanks @dhalbert.
- Save space on nearly-full builds with
ulabby usingNDARRAY_BINARY_USES_FUN_POINTER. #11403. Thanks @dhalbert.
Translation additions and improvements
New boards
- ELIO Eliobot S3. #11411. Thanks @rboutrois (@Eliobot).
- Espressif ESP32-S3-BOX-3. #11431. Thanks @mtrovo.
Known issues
- See https://github.com/adafruit/circuitpython/issues for other issues, including issues still to be addressed for:
Thanks
Thank you to all who used, tested, and contributed toward this release, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.