Skip to content
RELEASE 2019.04

RIOT-2019.04 - 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 2019.04 release includes a number of new features including porting of
riotboot to a number of new platforms, 802.15.4 support on the nRF52, and the
ability for firmware to flash images into a separate boot slot. Support for
several new boards and new sensors was added. Additionally, this release
contains a number of bug fixes and test improvements.

About 320 pull requests with about 569 commits have been merged since the last
release and about 40 issues have been solved. 44 people contributed with code
in 88 days. Approximately 825 files have been touched with 32716 insertions
and 5149 deletions.

Notations used below:
=====================
    + means new feature/item
    * means modified feature/item
    - means removed feature/item

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

System libraries
----------------
    + riotboot_flashwrite: added module to reliably write a firmware image to
      flash
    + crypto: added support for chacha20poly1305 AEAD symmetric key cypher
      algorithm
    * threads: added usage of thread_state_t enum to define thread states,
      instead of an integer
    * random: added usage of hwrng as seed if available
    + app_metadata: added module to print application metadata
    + unaligned.h: added functions to safely read values from potentially
      unaligned pointers
    + isrpipe: split isrpipe_read_timeout to isolate xtimer dependency

Networking
----------
    * gnrc_ipv6: adapted ping6 to original-ping-like implementation
    * gnrc_ipv6: allowed sending empty IPv6 packets
    + gnrc_netif_ieee802154: optional support to drop duplicate broadcast
      packets
    - gnrc_pktbuf: removed deprecated gnrc_pktbuf_get_iovec() function
    + l2util: initial import of a general IPv6 over X helper module
    + NimBLE: added Bluetooth device scanner
    + NimBLE: added helper functions for address printing
    * NimBLE: updated package to the latest version

Packages
--------
    + c25519: add support (embedded x25519 crypto library)

Boards
------
    + Arduino nano: added support
    + nrf52832-mdk: added support
    + PhyTec reel board: added support
    + MicroPython pyboard v1.1: added support
    + Hamilton: added support
    + saml10-xpro and saml11-xpro: added riotboot support
    + nrf52: added riotboot support
    + ESP32 and stm32: added command to allow runtime configuration of uart mode
    + ESP32 and ESP8266: add support for ESP-NOW network device driver
    * ESP8266: freed up RAM by moving most .rodata sections from DRAM to IROM
    + Arduino: added test to verify pin mappings
    + b-l072z-lrwan1: enabled RTT feature
    + STM32l0: added support for dual bank flashing with OpenOCD
    * Autonomo: changed flasher to BOSSA
    * stm32: rework common clock configuration for stm32f4
    * stm32f3discovery: Fix no external low speed crystal

CPU
---
    + stm32l0: added riotboot support
    + stm32f0: added support for periph_pm
    + stm32f3, f7, l1 and l4: added stop and standby low power modes. All
      STM32 families now provide periph_pm
    + samd21: enabled idle modes
    + sam0: added support for RWWEE on-chip memory
    + Kinetis: added support for EA series and S9KEAZ129 MCU
    + TI CC2650: added I2C periph implementation

Device Drivers
--------------
    + i2c: added slave scan shell command
    + USB: added device driver initialization function and API definition
    + USB: added peripheral driver for sam0_common
    + nrf5x temperature sensor: added driver
    + nrf52: added initial 802.15.4 support
    + add7746 capacitance sensor: added driver
    + ds323x extremely accurate RTC: added driver
    + ltc4150 coulomb counter: added driver
    + sht2x temperature and humidity sensor: added driver
    + sds011 dust sensor: added driver
    + added high level driver for H bridge ICs to drive DC motors
    * lpsxxx pressure and temperature sensor: add support for lps22hb and
      lps25hb

Build System / Tooling
----------------------
    + nrf52: added support for openocd
    * improved avrdude integration
    + added support for socat as a RIOT terminal
    + added script for backporting PRs during release testing
    * pyterm: specified use of python3 by default
    * flasher: support for flashing images at offset addresses `pyocd`, `jlink`
    * Texas Instruments UniFlash: put configuration in common
    * makefiles: introduce FLASHFILE
      * Use FLASHFILE for `riotboot` and `mcuboot`
      * Update flashers `avrdude`, `edbg`, `jlink`, lpc2k_pgm`, `openocd`
    * makefiles/docker.inc.mk: Use directories in RIOT when possible
    * make: unexport `TERM*` variables
    * msba2: compile 'lpc2k_pgm' when flashing

Testing
-------
    + documentation: added initial guide to running tests
    + Makefile.include: add a 'test/available' target
    * testrunner: Fix bug matching local echo
    * tests/rng: replace printf_float with fmt/print_float
    * tests/bloom_bytes: replace %f with fmt/print_float
    * tests/posix_semaphore: sem_timedwait should not return before abstime

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

Networking related issues
-------------------------
        address
       assertion or completely without error
       configured prefix
       address

Timer related issues
--------------------
       _xtimer_now()  and irq_disable()

Drivers related issues
----------------------
       supported

Native related issues
---------------------

Other platform related issues
-----------------------------
        clock cycles
        and no error
        (not previous)
       boards
       types

Build system related issues
---------------------------
        evaluation
       image
       Makefile.include
       value

Other issues
------------
       static_asserts in the same scope
       everywhere

Fixed Issues from the last release (2019.01)
============================================

You can get the complete detail in the git history and in the release milestone
[Release 2019.04](https://github.com/RIOT-OS/RIOT/milestone/26?closed=1).

Acknowledgements
================
We would like to thank all companies (vendors) that provided us with (their)
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
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os

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.