github adafruit/circuitpython 8.0.0-beta.1
CircuitPython 8.0.0 Beta 1

latest releases: 9.2.0, 9.2.0-rc.0, 9.2.0-beta.1...
pre-release2 years ago

This is CircuitPython 8.0.0-beta.1, a beta release for 8.0.0. It is relatively stable, but there will be further additions and fixes before final release.

Notable changes to 8.0.0 since 7.3.0

  • Added WiFi workflow with browser-based device discovery, filesystem browsing, upload, download, file editing, serial/REPL connection.
  • Added a one-line status bar, which displays connection status, last exception, and version on a terminal window title or on the top line of an attached display. Support for status bar display is also being added to the Mu and Thonny editors.
  • .env file in CIRCUITPY specifies WiFI connection parameters, BLE name, and other startup values.
  • dotenv support: os.getenv() values can be set in the .env file.
  • Preliminary implementation of WiFi on the Pi Pico W.
  • Revised Espressif camera support, now available on ESP32, ESP32-S2, and ESP32-S3.
  • Bulk analog input: analogbufio (available only on RP2040 for now).
  • Pin state can be preserved during deep sleep (available only on Espressif for now).
  • Allow setting USB VID, PID, manufacturer, and product ids at runtime.
  • AnalogIn values are full range from 0 to 65535, instead of having zeros on low-order bits.
  • OneWire is only in onewireio, and is no longer in busio or bitbangio.
  • gamepadshift has been removed: use keypad.ShiftRegisterKeys instead.
  • MP3Decoder and WaveFile can now take a filename instead of an open file.
  • PulseOut no longer accepts a PWMOut. Use a Pin instead.
  • Added TileGrid.contains().
  • i2ctarget.I2CTarget is the new name for i2cperipheral.I2CPeripheral. Accept both for now. I2CPeripheral will be removed in 9.0.0.
  • Auto-brightness support in displayio and framebufferio has been removed. It was never implemented completely.
  • Restored rainbowio and onewireio to a number of boards.
  • Print out whole-number floats exactly and correctly.
  • Enabled collections.deque on most builds.

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

  • atmel-samd: Microchip SAMD21, SAMx5x
  • cxd56: Sony Spresense
  • espressif: Espressif ESP32-S2
  • nrf: Nordic nRF52840, nRF52833
  • raspberrypi: Raspberry Pi RP2040
  • stm: ST STM32F4 chip family

These ports are considered alpha and will have bugs and missing functionality:

  • broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2W
  • espressif: ESP32, ESP32-S3, ESP32-C3
  • litex: fomu
  • mimxrt10xx: NXP i.MX RT10xxx
  • stm: ST non-STM32F4 chip families

Changes since 8.0.0-beta.0

Fixes and enhancements

  • Update frozen libraries #6971. Thanks @dhalbert.
  • Simplify status bar code, and make partial writes less likely. #6952. Thanks @dhalbert.
  • Support opening a file by name in MP3Decoder and WaveFile. #6943, #6931. Thanks @snkYmkrct.
  • Update ulab to 5.1.1. #6939. Thanks @jepler.
  • Clean up implementation and internal use of ringbuf. #6915. Thanks @dhalbert.
  • Fix slowdown on devices with dimmable displays. #6894. Thanks @gamblor21.
  • Improve web workflow directory page. #6885. Thanks @MicroDev1.
  • Allow writing empty color frame in EpaperDisplay. #6871. Thanks @pepijndevos.
  • Allow status bar to be enabled and disabled. #6847. Thanks @dhalbert.
  • Make PulseIn objects be long-lived so they won't be moved. #6834. Thanks @DavePutz.
  • Improve usb_hid.Device.get_last_received_report(). #6818, #6810, #6767. Thanks @maximkulkin.
  • Allow move and rename to be used from localhost in web workflow. #6807. Thanks @makermelissa.
  • Remove deprecated usb_hid.Device.last_received_report, replaced by get_last_received_report(). #6802. Thanks @dhalbert.
  • Fix hashlib.Hash.digest_size. #6797. Thanks @jepler.
  • Make rotaryio objects be long-lived so they won't be moved. #6789. Thanks @DavePutz.
  • Add UID to web workflow version.json. #6787. Thanks @Neradoc.
  • Fix is31fl3741 display issues. #6784. Thanks @gamblor21.
  • Fix display scroll area issues when scale > 1. #6783. Thanks @tannewt.
  • Allow setting USB VID, PID, manufacturer, and product ids at runtime. #6247. Thanks @s-ol.

Port and board-specific changes

Broadcom

Espressif

i.MX

nRF

  • UART.read() now returns None when nothing read, consistent with other ports. #6908. Thanks @dhalbert.
  • Handle zero-length PulseOut pulses properly. #6798. Thanks @DavePutz.

RP2040

SAMx

STM

Individual boards

Documentation changes

Build and infrastructure changes

  • Clean up of port/*/.gitignore. #6974. Thanks @MicroDev1 and @dhalbert.
  • Make makeversionhdr more strict. #6912. Thanks @jepler.
  • fontio by itself can now be enabled or disabled at compile time. #6890. Thanks @jepler.
  • Provide default versions for common board.c routines. #6878. Thanks @dhalbert.
  • Use Ubuntu 22.04 for pre-commit CI runs. #6875. Thanks @jepler.
  • Check creatorid:creationid uniqueness. #6831. Thanks @jepler.
  • Improve argument validation and consolidate error messages. #6522. Thanks @jepler.

Translation additions and improvements

Thanks for translations:

New boards since 8.0.0-beta.0

Known issues

Thanks

Thank you to all who used, tested, and contributed since 8.0.0-beta.0, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.

Don't miss a new circuitpython release

NewReleases is sending notifications on new releases.