.. _changelog_v3_5_0: v3.5.0 ====== v3.5.0 introduces the :mod:`ulab` NumPy-like module, the **OpenRV** library, **image segmentation** support, iterable image objects, and freezes all the ``scripts/libraries`` modules into the firmware; TensorFlow also accepts more model types. The default CAN baudrate changed — read the breaking changes below. .. contents:: On this page :local: :depth: 1 Highlights ---------- - :mod:`ulab` — a NumPy-like array module is now available. - **OpenRV library** added. - **Image segmentation** — TensorFlow image-segmentation support. - **Iterable images** — image objects can now be iterated. - **Frozen libraries** — all ``scripts/libraries`` modules are frozen into the firmware. - **Breaking:** the default CAN baudrate changed from 250 Kbps to 125 Kbps — see the breaking changes. New features ------------ - :mod:`ulab` — added the :mod:`ulab` NumPy-like module (ulab submodule). - **OpenRV** — added the OpenRV library. - **Image segmentation** — added support for TensorFlow image segmentation. - **Iterable images** — image objects are now iterable. - **TensorFlow** — the TensorFlow library now accepts more model types. - Added MobileNet script examples (with model locations), a native code-emitters example, a ``modbus_apriltag.py`` example, and a light-shield example. Other changes and improvements ------------------------------ - Froze all the ``scripts/libraries`` modules into the firmware; updated the modbus library / RTU-slave example; increased the face-detection example contrast; updated the ``cpufreq`` example and the H7 ``cpufreq_scaling`` frequencies. Breaking API changes -------------------- User-visible API breaks between v3.5.0.beta.3 and v3.5.0. Scope: Python C-modules in ``modules/`` and Python libraries in ``scripts/libraries/``. The breaking change is a *behavior* change (same API, different result) — re-check affected scripts. Each commit hash links to its diff on GitHub. .. _v3_5_0_can: Default CAN baudrate changed to 125 Kbps *(behavior)* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The default :class:`pyb.CAN` baudrate changed from 250 Kbps to 125 Kbps. Scripts that constructed a ``CAN`` bus without an explicit baudrate (e.g. ``CAN(2, CAN.NORMAL)``) now run at 125 Kbps and will not communicate with peers still at 250 Kbps. Pass an explicit baudrate (or ``prescaler`` / ``sjw`` / ``bs1`` / ``bs2``) to restore 250 Kbps. *Commits:* `d3a9a06ef `__ .. _v3_5_0_migration: Migration checklist ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Set an explicit CAN baudrate on any :class:`pyb.CAN` bus that relied on the old 250 Kbps default (:ref:`the CAN baudrate change `). All other scripts run unchanged.