Skip to content
RELEASE 2020.10

RIOT-2020.10 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release:
===================

The 2020.10 release includes:

 - Support for PicoLIBC as standard C library implementation
 - A new radio abstraction layer for ieee802.15.4 radios
 - Improvement to the linking of modules
 - An improved algorithm for generating local unique identifiers
 - Pagewise addressing support for MTD devices
 - 23 additional modules supported by Kconfig
 - Initial rework of the clock modelling on stm32 devices
 - 5 new boards, 2 new device drivers, 7 packages updated

482 pull requests, composed of 1355 commits, have been merged since the
last release, and 84 issues have been solved. 64 people contributed with
code in 94 days. 2426 files have been touched with 133358 (+) insertions and
756906 deletions (-).

Notations used below:
=====================

    + means new feature/item
    * means modified feature/item
    - means removed feature/item

New features and changes
========================

Core
----
+ init: make boot message configurable
+ panic: callback app during panic
+ bitarithm: add bitarithm_test_and_clear()
* thread: Add THREAD_NAMES make flag
* kernel_defines.h: Fix container_of()
* core: Add and use helper functions for internal data
* treewide: Fix direct access to scheduler internals
* core/bitarithm: use __builtin_clz() for bitarithm_msb()

System Libraries
----------------
+ architecture: New module to access architecture internals
+ Add support for PicoLIBC
+ ztimer: add ztimer_spin()
+ ztimer: add periodic timers API
* byteorder:
    * Moved to sys
    + Add byteorder_bebuftohll() and inverse
    + add uint32 from/to buffer funcs
+ event: implement waiting on multiple queues
+ evtimer: add mbox support
+ random: add SHA256 mode to SHA1PRNG & tests
* sys/luid: improve luid_base() algorithm
* tsrb: Make thread-safe
* pipe_dynamic: fix possible null pointer dereference

Networking
----------
+ ieee802154_submac: add initial support for common MAC sub layer
+ ieee802154/radio_hal: introduce Radio HAL for IEEE802.15.4 compatible radios
+ EUI:
    + luid: add luid_netdev_get_eui48() & luid_netdev_get_eui64()
    + eui64: add eui64_to_eui48()
+ link_layer: implement EUI provider
* luid: shuffle bytes
* uhcp: use LOG_xxx functions
* gcoap: Insert registrations at the front
* gnrc_ipv6_nib: only multicast probe UNREACHABLE neighbor if 6LR
* gnrc_ipv6_nib: set NCE stale on incoming ARO
* gnrc_ipv6_nib: don't add non-link-local to NC without ARSM
+ gnrc_netif_pktq: add packets to optional send queue when device is busy
* emcute: fix buffer overflow in _willupd_msg()
* SUIT:
    + Introduction of a payload storage API for SUIT manifest payloads
    * Upgrade to draft-ietf-suit-manifest-09
    * fail fetch if the image size doesn't match expected
* gnrc:
    - Remove cyclic dependencies
    - Remove deprecated module gnrc_nettest
- netopt: remove deprecated alias NETOPT_LINK_CONNECTED

Packages
--------
+ openwsn: add riot based openwsn scheduler
+ openwsn: add shell commands
* openthread: migrate to event loop
* nimble/netif: fix deadlock on connection loss
* wolfssl: bump version to 4.5.0
* nanopb: bump version to 0.4.3
* ccn-lite: bump version
* cn-cbor bump to 1.0.0
* tinycbor: bump to v0.5.3
* tinydtls: enforce the selection of a crypto secure PRNG
* jerryscript: bump to version 2.3.0
* semtech-loramac: replace xtimer by ztimer
* lvgl:
    + add logic for managing touch devices
    + introduce screen_dev wrapper
    * bump to v7
- emb6: remove deprecated package

Boards
------
+ nrf52: Enable PWM on the LED pins
+ nucleo-g071rb: add initial support
+ nucleo-g070rb: add board
+ nucleo-g431rb: add initial support
+ Support for YARM board
+ add Adafruit Itsy Bitsy
* samr21-xpro: fix reading EUI-64 from EDBG on cold boot
* nucleo-l452re: add i2c config
* hifive1b: add support for openocd programmer
- remove support for wsn430-1_3b and wsn430-1_4

CPU
---
* cortexm:
    + Make no_thread_idle compatible with cortex-m0
    + Add thread info to hard fault handler
    + advertise puf_sram feature
    * Skip context save/restore on scheduling the previous thread
    * use mpu stack guard if DEVELHELP is enabled
    * fix check for bitbanding
    * Flush pipeline after triggering PendSV
+ cc2538: add Watchdog implementation
* cc26xx_cc13xx:
    * add & link CCFG configuration
    * enable periph clocks on sleep
* fe310:
    + Add custom PLIC driver as peripheral
    * Merge and optimize trap_entry with irq_arch
    * Unify linker scripts
* msp430: Update to inline-able IRQ API Area
* nrf5x_common: UART: add support for 1 MBaud
* stm32:
    + generate vectors C files and IRQ defines from CMSIS headers
    + stm32cmsis: retrieve STM32 CMSIS header from a package
    + g0: add basic support
    + implement periph_timer_periodic
    * Add support for arbitrary SPI clock rate
    * f0/f1/f3/l0/l1/l4/wb: rework clock initialization and configuration
    - disable MPU for cortex-m0+
* sam0:
    + GPIO: use tamper detection to wake from Deep Sleep
    + add support to run PWM off TC timers
    + ADC: add support for samd5x/same5x
    + Add support for Single-cycle I/O Port for GPIO
    * UART: implement arithmetic BAUD mode
    * merge RTC & RTT implementation
    * flashpage: clean up implementation
- saml1x: Remove MPU feature

Device Drivers
--------------
+ at86rf2xx: spi security module
+ at86rf2xx: support frame retry reporting on AT86RFR2
+ soft_uart: add software based UART implementation
+ scd30 : Add driver for scd30 sensor
+ stm32_eth: add 'NETDEV_EVENT_LINK_UP' event
+ Add support for Adafruit Seesaw Soil moisture sensor
+ radio_hal:
    + introduce Radio HAL for IEEE802.15.4 compatible radios
    + cc2538_rf: implement Radio HAL
    + nrf52840: implement Radio HAL
+ mtd: add page addressed operation
* stmpe811: fix interrupt polarity & interrupt generation
* sps30: Update units of measurement
* sps30: Add sleep mode
- sdcard_spi: remove auto-init

Build System / Tooling
----------------------
+ Add libstdcpp feature
+ gnrc_border_router: Add USB Ethernet support
+ buspirate: add Bus Pirate as Debug Adapter
* README: Add more badges
* Convert remaining Python2 users to Python3
* openocd-adapters: select transport based on adapter
* Makefile.{base,include}: Fix linking for C++ code in external modules
* link object files instead of archives
* tapsetup:
    - Add support for listing bridges
    - Add support to configure addresses for bridge
    - Add support for configuring routes and forwarding capabilities for bridge
    - Add TUN support

Testing
-------
+ vagrant: add Vagrantfile to test native in FreeBSD
+ compile_and_test_for_board.py: add optional JUnit XML support
* bench_*: Add ticks per iteration results

Kconfig
-------
+ Finished modelling provided features
+ Modules with support added:
    + credman
    + cord
    + nrf-based
    + ek-lm4f120xl
    + lpc1768-based
    + lpc2387-based
    + native
    + mips32r2-based
    + sam3-based
    + sam0_common
    + same54-xpro
    + saml1x-based
    + saml21-based
    + stm32
    + l2filter
    + dhcpv6
    + hifive1(b) clock area
    + stm32gx clock configuration
    + periph/timer
    + netif
    + skald
    + sock_dtls
    + lora
+ add genconfig script
* enable incremental compilation on config changes
* include KCONFIG_OUT_CONFIG unconditionally

API Changes
===========
- gcoap: remove gcoap_finish
* gpio: IRQs triggered after gpio_irq_disable() are discarded
* sched: Refactor to return the next scheduled thread
* sock: Application should pull in the pseudomodules
* driver-guide.md: Drivers are expected to return negative errno values
* nrf52xxxdk: configure LEDs as PWM

Known issues
============

Networking related issues (42)
------------------------------
        packet buffer
        address
       assertion or completely without error
       chars
       address

Timer related issues (15)
-------------------------
       time.
       _xtimer_now()  and irq_disable()

Drivers related issues (14)
---------------------------
        timeout
        clock cycles
       supported

Native related issues (3)
-------------------------

Other platforms related issues (19)
-----------------------------------
        __WFI()
        (not previous)
       CS

Build system related issues (14)
--------------------------------
        evaluation
       image
       value

Other issues (41)
-----------------
        LLVM
        depending on code layout in flash
        esp32-wroom-32
        shell after flashing with J-Link
        10
       static_asserts in the same scope
       everywhere

There are 148 known issues in this release

Fixed Issues since the last release (2020.07)
=============================================

        ASSERTION.
        after debug break
        sometimes
       boards

42 fixed issues since last release (2020.07)

Acknowledgements
================
We would like to thank all companies that provided us with hardware for porting
and testing RIOT-OS. Further thanks go to companies and institutions that
directly sponsored development time. And finally, big thanks to all of you
contributing in so many different ways to make RIOT worthwhile!

More information
================
http://www.riot-os.org

Mailing lists
-------------
* RIOT OS kernel developers list
  devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
  users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
  commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
  notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)

IRC & Matrix
------------
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
* Join the RIOT Matrix room at: #riot-os:matrix.org

License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
  General Public License (LGPL) version 2.1 as published by the Free Software
  Foundation.
* Some external sources and packages are published under a separate license.

All code files contain licensing information.