RIOT-2021.01 - 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 2021.01 release includes:
 - Device Firmware Upgrade support for USBUS
 - USB HID minimal implementation
 - IEEE 802.15.4 security initial implementation
 - 6LowPAN Minimal Forwarding and Selective Fragment Recovery initial
   implementation
 - Initial support for QN908x, SAMD10 STM32MP1 and STM32L5 CPUs
 - Initial support for Cortex-M33
 - A module for selecting entropy sources
 - Initial support for the Decawave Impulse Radio-Ultra Wideband (UWB Core)
 - Capability to join or leave link layer multicast groups (GNRC)
 - Support for IN865 region in GNRC LoRaWAN
 - 83 additional modules supported by Kconfig
 - 14 new boards, 6 new device drivers, 8 packages updated

In order to improve community interaction, during this release cycle we started
to migrate from a mailing-list-based communication to forum-based
communication. We are proud to present the RIOT-OS forum available at
forum.riot-os.org

533 pull requests, composed of 1440 commits, have been merged since the
last release, and 65 issues have been solved. 58 people contributed with
code in 119 days. 3852 files have been touched with 348619 (+) insertions and
52516 deletions (-).

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

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

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

Core
----
+ msg_bus: allow to differ between messages form bus and from thread
+ mutex: Add mutex_cancel
+ mbox: add mbox_size(), mbox_avail()
* refactor thread info
- remove kernel_types.h

System Libraries
----------------
+ Add thread-safe Malloc
+ sys/tsrb: Make thread-safe
+ mtd_mapper: implement pagewise functions
+ xtimer: introduce xtimer_msleep()
+ usbus: Add USB peripheral serial string support
+ hashes: Add PBKDF2-sha256 implementation
+ usbus/dfu: add Device Firmware Upgrade support for USBUS
+ USB HID minimal implementation
+ Add helpers for pointer tagging
+ atomic_utils: Functions for atomic access
+ entropy_source: add new module for entropy sources
+ nimble_autoadv: add new module
* ztimer:
    + add ztimer_mutex_lock_timeout()
    * fix xtimer_compat
    * increase xtimer_compat coverage
* oneway-malloc: check calloc args
* event: Allow single event_thread handling all queues
- irq_handler: Drop module

Networking
----------
+ gnrc_netif: add capability to join or leave link layer multicast groups
+ gnrc_sixlowpan_frag:
    + initial import of Minimal Forwarding according to RFC 8930
    + initial import of Selective Fragment Recovery (RFC 8931)
+ gnrc_netif_ethernet: Support RX timestamp
+ Initial implementation of IEEE 802.15.4 security
+ sock: add access to auxiliary data
* gnrc_pkt: refactor to not use utlist.h
* sys/net/gnrc: fix in-band signaling of no RSSI
* gnrc_netif_pktq: fix pktbuf leak
* Fixed a critical bug, allowing to crash the whole system with a specially
  crafted LoRa frame
* GNRC LoRaWAN:
    + Support for IN865 region, Improve debugging
    * GNRC LoRaWAN: Bug fix for zero CFList
* IEEE 802154 Radio HAL:
    + add `read` function
    + add IEEE802154_RADIO_INDICATION_CRC_ERROR
    + add IEEE802154_RADIO_INDICATION_TX_START
    + add helpers for RSSI and dBm conversion
    * fix wrong rssi conversions treewide
* IEEE 802.15.4 SubMAC:
    + add retransmission reporting
    * enable ACK_REQ by default
    * unify legacy and radio HAL bootstrap
* gcoap:
    + Process CON responses
    * make blocksize configurable
- Remove deprecated features
  - gcoap: remove deprecated gcoap_add_qstring
  - gnrc_nettype: remove GNRC_NETTYPE_IOVEC
  - gnrc_pktbuf: drop gnrc_pktbuf_replace_snip()
  - gnrc_sixlowpan_rb: remove GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE
  - sock/dtls: remove sock_dtls_session_create due to deprecation

Packages
--------
+ openthread: add support for radios compatible with SubMAC
+ uwb_core: initial support
* Updates:
    * littlefs2: Bump to v2.3
    * jsmn: bump version
    * libb2: update to latest release
    * libhydrogen: bump version
    * micro-ecc: bump version
    * tinycrypt: bump version
    * fatfs: bump version to r0.14
    * gecko_sdk: update to v2.7.7
    * hacl: switch upstream to backup copy
    * lvgl: bump to v7.7.1
* openwsn:
    + add ieee802154_hal based radio
    + openwsn: add sock_udp
- nordic-softdevice: remove deprecated package

Boards
------
* Renode:
    + stm32f4discovery: Add initial renode support
    + firefly: add renode configuration
    + hifive*: add renode support
* Arduino feature:
    + waspmote-pro: add arduino feature
    + remote-revb: add arduino feature
+ New boards:
    + ESP32-Ethernet-Kit
    + arduino-nano-33-iot
    + weact-f401cc / weact-f401ce / weact-f411ce
    + e104-bt5011a-tb
    + e180-zg120b-tb
    + feather-m0-lora
    + nrf52840-mdk-dongle
    + nucleo-l011k4
    + nucleo-l552ze-q
    + frdm-kl43z
    + slstk3400a
    + stk3200
    + SAM D10 Xplained Mini
+ Particle boards: Support monofirmware builds and uploads
+ saul_pwm: auto-init'able RGB LEDs and dimmers for:
    * particle-argon / particle-boron / particle-xenon
    * nrf52840-mdk-dongle
    * nrf52840dongle
+ native: allow to use ZEP instead of tap
+ ikea-tradfri: add SPI NOR Flash configuration

CPU
---
+ Cortex-M33: add initial support
+ nrf5x: implement periph_timer_periodic
+ nrf52: Add i2c reconfigure feature
+ SAMD10: Add support
+ stm32l5: add initial support
+ stm32mp1: Add initial support
+ QN908x: Add initial support
* atmega_common: Split into atmega_common and avr8_common
* Improve clock configuration
* stm32:
    * rtc: add unlock/lock to rtc_clear_alarm
    * uart: set flow control bits before enabling uart
    * cpu/stm32: enable overdrive mode on f4 and f7 for high clock speeds
    * cpu/stm32: Fix & cleanup periph_eth
* esp:
    + implement ESP WiFi SoftAP mode
    * Fix cast alignment issues
* sam3/periph_timer: fix trigger of cleared timer
* native:
    + rtc: add rtc_set_time implementation
    * fix memory leak
    - remove unused can_linux module
* cc2538:
    + add riotboot feature
    + add flashpage & flashpage_raw
    + add periph_uart_nonblocking
* efm32:
    + add coretemp driver
    + add watchdog peripheral
* sam0_common:
    + cpu/sam0: add initial ethernet support
    + flashpage: add functions to write to user config area / AUX page
    * flashpage: rename to sam0_flashpage_aux_write()
    + SPI: add support for QSPI in SPI mode

Device Drivers
--------------
+ Add utilities for Ethernet Media-Independent Interface (MII) and use them in
  STM32 `periph_eth`
+ cst816s: Initial include of cst816s touch screen driver
+ gp2y10xx dust sensor
+ DS3231 RTC
+ periph_common: dac: add dac_play()
+ scd30: Add reset function to Sensirion scd30 sensor
+ si1133: New SI1133 UV/IR/Ambient light driver
+ sc: Add driver for Honeywell HSC series pressure and temperature sensor
+ ndev: add mcp2515 + driver/mcp2515: add driver
+ net: Add netdev_driver_t::confirm_send
+ PTP Clock
* cpu/stm32:
    * periph_eth: Use auto-negotiation
    * Fix periph_eth link status
    * Fix reception bug in periph_eth
* nrf802154:
    * change internal state to idle after rx
    * fix set_cca_threshold range
    * fix unwanted emissions at the end of ACK frame
    * fix state transition and `off` function
    * nrf802154: default to netdev_ieee802154_submac
* cc2538_rf:
    * fix transmit function
    * default to netdev_ieee802154_submac
* at86rf2xx: fix null pointer check
* at86rf215:
    + add functions to configure trim & clock output at run-time
    + implement battery monitor, add power bus
    + implement MR-FSK
    * make use of packet queue if available
    * fix dependency resolution for 2.4 GHz
* w5100.c: correct the pointer position when w5100's buf is full
* srf04: fix overflow on AVR
* periph/rtt: fix overflow in tick conversion macros
* mtd_flashpage: fix erasure of multiple sectors
* mtd_spi_nor: cleanup & bug fixes

Documentation
-------------
+ README: Add merge-chance badge
+ riotboot: add basic porting guide
+ emulators: add emulators documentation in Doxygen
+ SECURITY.md: Add initial security policy
* generate-changelog: add support for point releases
* add Docker info to doxygen
* drivers/netdev: Clarify documentation
* README.md: move tapsetup section to documentation
* native: Improve Documentation
* CONTRIBUTING: cleanup and reorganize
* core/msg_bus: enhance documentation
* cpu/stm32: rewrite clock configuration documentation
* doc: advertise forum.riot-os.org
* doc: Give examples of what DEVELHELP does
* gnrc/rpl: document implementation status
* ieee802154/radio: indicate that FCS is ignored when reading buffer
* uhcp: improve documentation
* update board porting documentation page

Build System / Tooling
----------------------
+ testbed-support: add iotlab mapping for dwm1001
+ info.inc.mk: Add info-build-json as JSON-formatted build info
+ makefiles/utils: add util to compare to software versions
+ emulator: add debug feature with qemu emulator
* Makefile.include: avoid recursive expansion of USEMODULE
+ makefiles/pseudomodules.inc.mk: netdev_ieee802154_legacy is a pseudomodule
* dist/tools/bmp: Fix flashing with pygdbmi 0.10.0
* drivers/at86rf215: fix dependency resolution for single radio
* cpu/esp*: fix linker scripts
* info-objsize: Restore info-objsize target
* make: run static_tests.sh directly with `static-tests` target
* picolibc: model as a feature
* tools/esptool: add common makefile to define esptool variables
* dist/tools: Use bash instead of sh where needed
* tools/emulator: allow use with *term targets + introduce EMULATE=1 instead of emulate target
* mips: adapt for toolchain update (2020.06-01)
- remove the bootloader_% pseudo-feature, replace it with highlevel_stdio

Continuous Integration
----------------------

* use Github actions for static tests instead of Travis
    + Add support for Github annotations.
* gh-actions/release-test: bump ssh-agent to v0.4.1

Testing
-------
+ tests/mpu_stack_guard: add automatic test script
+ tests/mtd_raw: add simple test for MTD
* treewide: cleanup ENABLE_DEBUG
* release-tests: fix artifact naming and steps cleanup for matrix build
* tests/sys_atomic_utils_unittests: spice up test
* tests/unittests: split out atomic_utils unittests
* sys/shell: terminate shell on Ctrl-D

Kconfig
-------
+ Modules with support added:
    + drivers/{a, b, c, d, e, f, g, h, i, j}*
    + drivers/ili9341
    + test/periph_*
+ cpu/stm32: add script to generate Kconfig.models and Kconfig.lines files
+ add modules to test on native
+ Clock configuration for:
    + stm32l4
    + stm32l5
    + stm32wb
    + stm32f0
    + stm32g0g4
    + stm32l0l1
    + stm32f1f3
* drivers/rn2xx3 : Kconfig updates.
* MQTT-SN Clients: Kconfig Updates

Examples
--------
+ gnrc_networking: add option to enable DNS
* gnrc_border_route: simplify ZEP setup on native
* suit_update: use interactive sync in test
* gcoap: Allow PUT/POST with empty payload
* suit_update: update IETF draft reference in the README


API Changes
===========
* periph_flashpage: Make pagewise API optional
* net/eui_provider: API cleanup
* sock/dtls: add getter/setter for the remote UDP endpoint of sock_dtls_session_t
* drivers/pn532: use pseudomodules to select i2c or spi
* GNRC: fix in-band signaling of no RSSI


Deprecations
============

Removals
--------
- Remove deprecated features:
    - gnrc_nettype: remove GNRC_NETTYPE_IOVEC
    - gnrc_sixlowpan_rb: remove GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE
    - pkg/nordic-softdevice: remove deprecated package
    - boards/native: remove all-debug deprecated target
    - gnrc_pktbuf: drop gnrc_pktbuf_replace_snip()
    - sys/irq_handler: Drop module
    - sock/dtls: remove sock_dtls_session_create due to deprecation
    - gcoap: remove deprecated gcoap_add_qstring
    - pkg/tinydtls: remove deprecation message about some CFLAGS


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

Networking related issues (43)
------------------------------
#15867: Address registration handling inappropriate
#14962: LoRaWan node ISR stack overflowed
#14689: dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC
#13997: ping6 is failing when testing with cc2538dk
#13745: ethos: Unable to choose global source address.
#13493: ethernet: Missing multicast addr assignment
#13280: nrf52: Not able to add global or ULA address to interface
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
#12857: examples/gnrc_networking_mac broken on ATmega
#12761: samr30 xpro doesn't seem to use its radio ok
#12642: Emcute cannot create a double-byte name
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
        packet buffer
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
#12210: stale border router does not get replaced
#11988: ethos: fails to respond to first message.
#11860: send data with UDP at 10HZ, the program die
#11852: scan-build errors found during 2019.07 testing
#11405: nrfmin: communication not possible after multicast ping with no interval
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
        address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64
       chars
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address

Timer related issues (16)
-------------------------
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
#13321: Sleep mode for Arduino
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
       time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8251: MSP430: periph_timer clock config wrong
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
       _xtimer_now()  and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck on native

Drivers related issues (14)
---------------------------
#15121: PWM: Single-phase initialization creates flicker
#14506: mdt_erase success, but vfs_format resets board (esp32-heltec-lora32-v2)
#14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until
        timeout
#14424: adc is not a ADC-Driver but a analog pin abstraction
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
#13444: Potential security and safety race conditions on attached devices
#13079: drivers/srf04: incorrect values on ATmega based platforms
#12445: driver/hts221: Temperature and Humidity readings incorrect
#12371: fail to send data to can bus
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
#12045: floats and doubles being used all over the place.
#11104: STM32: SPI clock not returning to idle state and generating additional
        clock cycles
#9419: cpu/msp430: GPIO driver doesn't work properly
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
       supported

Native related issues (5)
-------------------------
#15878: examples/ccn-lite: floating point exception while testing on native
#15888: tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3
#13501: SDL2 does not work due to missing getpid
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe

Other platforms related issues (19)
-----------------------------------
#14822: MPU doesn't work on cortex-m0+
#14728: stm32f7: Large performance difference between stm32f746 and stm32f767
#14679: examples/gnrc_border_router: esp_wifi crashes on disconnect
#14572: tests/mpu_noexec_ram: fails on  i-nucleo-lrwan1
#14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated
#14237: esp32-wroom-32: tests/netstats_l2 failing sometimes
#14015: stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after
        __WFI()
#13606: gcoap/esp8266: Stack overflow with gcoap example
#13390: Cannot use LLVM with Cortex-M boards
#13104: boards/hifive1: flashing issue
#13086:  Failing tests on FE310 (Hifive1b)
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
#12168: pkg/libb2: blake2s doesn't work on AVR
#11885: arm7: printf() with float/double not working
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
        (not previous)
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
       CS

Build system related issues (14)
--------------------------------
#15185: build: info-build doesn't work with boards without port set
#14504: BUILD_IN_DOCKER ignores USEMODULE
#14288: pkg/ccn-lite: unable to `make -j -C examples/ccn-lite-relay`
#14264: make: ccache leads to differing binaries
#13492: make -j flash broken on esp* (will always flash the previous binary)
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
#10850: Tracking: remove harmful use of `export` in make and immediate
        evaluation
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
       image
#8913: make: use of immediate value of variables before they have their final
       value
#8122: doxygen: riot.css modified by 'make doc'
#6120: Windows AVR Mega development makefile Error
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers

Other issues (41)
-----------------
#15870: examples/micropython: floating point exception while testing on native
#15814: usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial
        ports
#15528: Conflict between nimble and uwb-core packages
#15072: periph_timer: Test coverage & broken on STM32F767ZI
#15066: tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
        LLVM
#15006: Two bugs may lead to NULL dereference.
#14929: cpu/sam0: flashpage write / read cycle produces different results
        depending on code layout in flash
#14635: File systems report names with leading slashes
#14578: tests/cpp11_*: failing on i-nucleo-lrwan1
#14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails
#14548: edbg: long lines flooded over serial become garbled
#14520: examples / tests: LoRa tests fail on platforms that don't support LoRa
#14390: gcoap: Suspected crosstalk between requests (possible NULL call)
#14315: DTLS examples cannot send message to localhost
#14167: Gcoap drops long packages instead of gracefully erring out
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
#13541: Order of auto_init functions
#13285: Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
        esp32-wroom-32
#13120: tests: broken with stdio_rtt if auto_init is disabled
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
        shell after flashing with J-Link
#12897: Can't build relic with benchmarks or tests
#12889: CC2538DK board docs: broken links
#12732: tests: some tests don't work with `newlib` lock functions.
#12621: Potential race condition in compile_and_test_for_board.py
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
#12105: [TRACKING] sys/shell refactoring.
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
        10
#9371: assert: c99 static_assert macro doesn't function for multiple
       static_asserts in the same scope
#7365: scheduler: priority inversion problem
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
       everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables

There are 152 known issues in this release

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

#15765: GitHub: Typo in WIP label
#15691: examples/posix_socket: doesn't work between 2 iotlab-m3
#15649: Posix Sockets - UDP not going out while using GNRC
#15626: vera++: reports "warning: keyword 'new' not followed by a single space"
#15574: Fix for #15353 is incomplete
#15538: Crash on context switch on Cortex-M
#15521: Missing error check of clist_foreach(), mbox_try_put() and
        msg_try_send()
#15517: pkg/tinydtls: async event SOCK_ASYNC_CONN_FIN does not indicate which
        session has been finished
#15495: C++ compile error with gnrc_lorawan
#15457: RIOT OS and Relic Segmentation fault
#15447: w5100 driver's bug
#15434: stm32: cmsis: spurious build issues
#15406: There are unsatisfied feature requirements: periph_adc
#15357: Link failures since 81cb769
#15353: uhcp: Incorrect handling of uhcp_push_t prefix
#15311: Arduino's Serial.print(float) doesn't work
#15102: Add whole linked list of gcoap_listener_t to coap listener
#15028: Suspicious code in emCute
#14568: tests/pkg_libfixmath_unittests: failing on multiple platforms
#13277: Y2038 tracking issue / strategy

20 fixed issues since last release (2020.10)

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 and Forum
------------
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
* Join the RIOT Matrix room at: #riot-os:matrix.org
* Join the RIOT Forum at: forum.riot-os.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.



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)
------------------------------
#14962: LoRaWan node ISR stack overflowed
#14689: dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC
#13997: ping6 is failing when testing with cc2538dk
#13745: ethos: Unable to choose global source address.
#13493: ethernet: Missing multicast addr assignment
#13280: nrf52: Not able to add global or ULA address to interface
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
#12857: examples/gnrc_networking_mac broken on ATmega
#12761: samr30 xpro doesn't seem to use its radio ok
#12642: Emcute cannot create a double-byte name
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
        packet buffer
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
#12210: stale border router does not get replaced
#11988: ethos: fails to respond to first message.
#11860: send data with UDP at 10HZ, the program die
#11852: scan-build errors found during 2019.07 testing
#11405: nrfmin: communication not possible after multicast ping with no interval
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
        address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64
       chars
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address

Timer related issues (15)
-------------------------
#13321: Sleep mode for Arduino
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
       time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8251: MSP430: periph_timer clock config wrong
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
       _xtimer_now()  and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck on native

Drivers related issues (14)
---------------------------
#15121: PWM: Single-phase initialization creates flicker
#14506: mdt_erase success, but vfs_format resets board (esp32-heltec-lora32-v2)
#14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until
        timeout
#14424: adc is not a ADC-Driver but a analog pin abstraction
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
#13444: Potential security and safety race conditions on attached devices
#13079: drivers/srf04: incorrect values on ATmega based platforms
#12445: driver/hts221: Temperature and Humidity readings incorrect
#12371: fail to send data to can bus
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
#12045: floats and doubles being used all over the place.
#11104: STM32: SPI clock not returning to idle state and generating additional
        clock cycles
#9419: cpu/msp430: GPIO driver doesn't work properly
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
       supported

Native related issues (3)
-------------------------
#13501: SDL2 does not work due to missing getpid
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe

Other platforms related issues (19)
-----------------------------------
#14822: MPU doesn't work on cortex-m0+
#14728: stm32f7: Large performance difference between stm32f746 and stm32f767
#14679: examples/gnrc_border_router: esp_wifi crashes on disconnect
#14572: tests/mpu_noexec_ram: fails on  i-nucleo-lrwan1
#14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated
#14237: esp32-wroom-32: tests/netstats_l2 failing sometimes
#14015: stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after
        __WFI()
#13606: gcoap/esp8266: Stack overflow with gcoap example
#13390: Cannot use LLVM with Cortex-M boards
#13104: boards/hifive1: flashing issue
#13086:  Failing tests on FE310 (Hifive1b)
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
#12168: pkg/libb2: blake2s doesn't work on AVR
#11885: arm7: printf() with float/double not working
#10258: Incorrect defaultPORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
        (not previous)
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
       CS

Build system related issues (14)
--------------------------------
#15185: build: info-build doesn't work with boards without port set
#14504: BUILD_IN_DOCKER ignores USEMODULE
#14288: pkg/ccn-lite: unable to `make -j -C examples/ccn-lite-relay`
#14264: make: ccache leads to differing binaries
#13492: make -j flash broken on esp* (will always flash the previous binary)
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
#10850: Tracking: remove harmful use of `export` in make and immediate
        evaluation
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
       image
#8913: make: use of immediate value of variables before they have their final
       value
#8122: doxygen: riot.css modified by 'make doc'
#6120: Windows AVR Mega development makefile Error
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers

Other issues (41)
-----------------
#15072: periph_timer: Test coverage & broken on STM32F767ZI
#15066: tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
        LLVM
#15006: Two bugs may lead to NULL dereference.
#14929: cpu/sam0: flashpage write / read cycle produces different results
        depending on code layout in flash
#14635: File systems report names with leading slashes
#14578: tests/cpp11_*: failing on i-nucleo-lrwan1
#14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails
#14568: tests/pkg_libfixmath_unittests: failing on multiple platforms
#14548: edbg: long lines flooded over serial become garbled
#14520: examples / tests: LoRa tests fail on platforms that don't support LoRa
#14390: gcoap: Suspected crosstalk between requests (possible NULL call)
#14315: DTLS examples cannot send message to localhost
#14167: Gcoap drops long packages instead of gracefully erring out
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
#13541: Order of auto_init functions
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
#13285: Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto
#13277: Y2038 tracking issue / strategy
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
        esp32-wroom-32
#13120: tests: broken with stdio_rtt if auto_init is disabled
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
        shell after flashing with J-Link
#12897: Can't build relic with benchmarks or tests
#12889: CC2538DK board docs: broken links
#12732: tests: some tests don't work with `newlib` lock functions.
#12621: Potential race condition in compile_and_test_for_board.py
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
#12105: [TRACKING] sys/shell refactoring.
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
        10
#9371: assert: c99 static_assert macro doesn't function for multiple
       static_asserts in the same scope
#7365: scheduler: priority inversion problem
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
       everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables

There are 148 known issues in this release

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

#15256: Kconfig file/folder name collision on case-insensitive filesystem
#15255: Repository 'broken' on macOS due to case-insensitive names
#15171: Failed assertion when using gnrc_minimal with SLIP
#15137: ESP8266 does not respond
#15130: cpu/cc26xx_cc13xx: CPU gets stuck on sched_arch_idle
#15123: esp32: mtd tests failing on CI
#15118: make: target `info-objsize` broken
#15085: failing assert in core/msg.c:386 when `ping6` on Nucleo-F767ZI
#15065: pkg_utensor: Hard fault with LLVM
#15060: ztimer tests fail on efm32
#15045: Some I2C devices are not working on iotlab-m3
#15041: 2020.07-branch bug:RIOT/cpu/stm32/include/vendor/stm32f103xe.h
#15023: gnrc: all iotlab-m3 nodes have identical short HW addresses
#15016: Possible memory leak in cpu/native/syscalls.c
#15015: Is there a buffer overflow bug in drivers/at86rf2xx/at86rf2xx_getset.c?
#14988: tests/mtd_flashpage is broken on iotlab-m3 and b-l072z-lrwan1
#14980: hifive1b: sys/ztimer/core.c:159 => *** RIOT kernel panic: FAILED
        ASSERTION.
#14958: nucleo-f303k8 no longer work since PR #14892
#14957: Return value of gnrc* calls not checked for -1
#14939: puf_sram not used when included as a feature
#14773: Can't read SD cards filled with more then 4 GiB data
#14752: Return value of gnrc_netif_ipv6_addr_idx is not checked for negative
#14735: Global Address remains in state TNT[3] forever
#14667: Undefined behavior in `pkg/semtech-loramac/contrib/`
#14636: native: reboot exits instance with TAP interface
#14514: Uncrustify enforces deviation of coding convention
#14466: Linking C++
#14217: tests/periph_timer_periodic is failing
#14169: Gcoap does not handle separate responses
#13838: Global Address remains in state TNT[3] forever
#13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)
        after debug break
#13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails
        sometimes
#13267: Failing tests on MSP430 (z1)
#13204: xtimer problem with nucleo32 boards
#11390: gnrc networking crashes on nRF51dk
#9882: sys/tsrb is not thread safe
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#9518: periph/i2c: tracking bugs and untested acks
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
       boards
#6650: GPIO Port shift in cc2538 is inconsistent
#4954: chronos: compiling with -O0 breaks

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.



RIOT-2020.07.1 - Release Notes
==============================
This is a bug fixing release for the RIOT 2020.07 release.
The following bugs were fixed:

#14670: tests/lwip_sock_tcp: fix -EADDRINUSE test

#14671: pkg/lwip: Use IS_ACTIVE() and bugfix
    - pkg/lwip: Compatibility with IS_USED()
    - pkg/lwip: Use IS_ACTIVE() & NETCONNTYPE_ISIPV6()

#14686: gnrc_sixlowpan_frag_vrb: fix cppcheck warning

#14693: cpu/msp430_common: fix thread_yield_higher() when called in isr

#14685: gnrc/nib: fix _idx_dsts() calculation

#14817: gnrc_sixlowpan_frag_rb: Check possibly uninitialized pointers


RIOT-2020.07 - 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.07 release puts a focus on the improvement of automated testing. In
that vein, various new CI integrations such as CircleCI for documentation
building and online presentation, and Github Actions to check the tooling of
RIOT when merged. The `riotctrl_shell` python module allows to abstract shell
commands as python methods for testing using the newly created `riotctrl`
python package [1]. Kconfig migration reached phase 2 with various board
features being exposed to Kconfig. New network protocols were ported for RIOT
such as MQTT (in form of the `paho-mqtt` package) and the lookup client
component for CoRE RD `cord_lc`. The OpenWSN network stack with 6TiSCH support
was reintegrated into RIOT. Support for several new boards and new sensors was
added. Additionally, this release contains a number of bug fixes and test
improvements.

546 pull requests, composed of 10452 commits, have been merged since the
last release, and 84 issues have been solved. 64 people contributed with
code in 106 days. 2371 files have been touched with 822149 (+) insertions and
700313 deletions (-).

[1]: https://pypi.org/project/riotctrl/

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

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

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

Core
----
* core: make idle thread optional
+ macros/units: add unit conversion helper macros
+ msg: add message bus
* panic: launch USB bootloader on crash for easy recovery

System libraries
----------------
* auto_init: automatically determine auto_init_*.c
* base64: Clean up / improve implementation
+ hashes: add sha224 and reuse sha256 code
+ luid: provide luid_get_lb()
+ phydat: added phydat to JSON converter
+ posix: initial import of select() function (only support sockets for now)
* ps: show free stack space in addition to used and total
* shell:
  + add optional hooks for shell commands
  * native: stop RIOT when the shell reads EOF
  * refactor readline function
  * refactor tokenizer code
+ shell_commands:
  * alias ping=ping6
  + provide command to reboot to bootloader
+ stdio_semihosting: Initial include of Semihosting-based STDIO
+ touch_dev: add generic API for touch device
+ trace: add trace module
+ pm: Add pm_get_blocker()
* random:
  + add option to use HWRNG as source of randomness
  * optimize sha1prng
* usb:
  * allow for boards to define default custom VID/PID
  * warn on test-ID usage in a unified location
+ xtimer: xtimer_rmutex_lock_timeout
* ztimer:
  + add power management for ztimer clocks
  * expose ZTIMER_MSEC/USEC_BASE

Networking
----------
+ cord: add CoRE RD lookup client implementation
+ gcoap: add CoAP ping request
* gnrc:
  + gnrc_ipv6_ext_opt: initial import of hop-by-hop and destination option
    handling
  * gnrc_netif:
    + add IPv6 event bus
    + add option for non-std 6lo MTU
    + add support for internal event loop
    * use gnrc_netif-submodules to pull in upper-layer struct members
  * gnrc_nettype: indirect NETTYPE definition via pseudo-modules
  * gnrc_pktdump: fix dependencies
  * gnrc_tcp:
    + add retransmission timer
    * rewrite API internal messaging
    * rewrite recv buffer allocation/returning
  * use exponent to configure message queue sizes
* nanocoap: allow coap_opt_add_string() for non-zero-terminated strings
+ netif: add functions to get and get by identifier
+ sock_dtls: provide getter function for UDP sock
* sock_util: add interface descriptor parsing to str2ep

Packages
--------
* pkg: rework checkout process
  * avoid copying Makefiles in package source when possible
  * store packages sources in a global package directory
* pkg: cleanup build system integration for
  - cryptoauthlib, openthread, semtech-loramac, tinydtls, wakaama, u8g2,
    ucglib, wolfssl
* pkg: tools: ensure cmake based packages/tools are built out-of-source
+ cryptoauthlib: wake pulse implementation for CPUs supporting
  `periph_i2c_reconfigure`
+ emlearn: add support to RIOT
* gecko_sdk: update to v2.7.6
* lwip:
  * add IPv4 support for `netdev_tap`
  * add support for nrf802154
  * enable IPv4/IPv6 dual stack mode
  + lwip_sock: provide implementation for `sock_*_recv_buf()`
- lua: remove unnecessary patch
+ paho-mqtt: add package and example
* nimble:
  + add static connection manager `statconn`
  * netif:
    * set host thread prio to 1
    * simplify mbuf pool initialization
  * update NimBLE ver (cd7d7aa286) + timing param cleanup
+ openwsn: re-integrate the network stack as a package
* tinydtls:
  + add `sock_async` support for `sock_dtls`
  + use latest development version (eda63f000c)
* ucglib: refactoring and fixes

Boards
------
+ cc1352p-launchpad: add support
* common/blxxxpill:
  + provide periph_rtt
  * improve adc
+ dwm1001: add support to Decawave DWM1001 dev board
+ mcb2388: misc enhancements
+ nrf52840-dongle: add support
+ nrf52840dk: Add MTD configuration
+ nucleo-g474re: add support
* pic32-clicker: rename to 6lowpan-clicker
+ samr30-xpro: add SPI dev for ext pin header
+ samr3x-xpro: add riotboot feature
+ serpente: add support
+ sltb001a: enable CCS811 sensor
+ sodaq-sff: add support for SODAQ SFF
+ stm32f429i-disco: add support
+ weact-f411ce: add support
+ wemos-zero: add support

CPU
---
* arm7_common: Update to inlineable IRQ API
* atmega_common: Update to inlineable IRQ API
* cortexm:
  + allow to define reserved fields in CortexM vector table
  * "free" SVC
* cc26x2_cc13x2:
  * add oscillator switching functions
  * add periph_i2c implementation
  * trim device registers on `cpu_init`
* esp32:
  * support of multiple heaps for newlib malloc
  * replace RTC implementation by RTT implementation
* fe310: migrate to inlined IRQ API
+ kinetis: implement power modes for pm_layered
* lpc2387:
  * pm: enable SLEEP & POWERDOWN mode
  * timer: use lpc2387_pclk_scale()
+ mips_pic32_common: Implement GPIO IRQ
+ native:
  + add periph_eeprom driver implementation
  * rename trace -> backtrace
+ nrf52:
  + add black magic probe config
  + add missing vendor files
  + implement EasyDMA-based SPI peripheral implementation
+ nrf52811: initial support
* nrf5x_common:
  * add configurable RTT_FREQUENCY
  * enable bias correction in hwrng
* sam0_common:
  + add DMA peripheral driver
  + add PWM support for saml21, samd5x
  + implement periph/dac
  * make SPI peripheral DMA compatible
  * move PWM to common code
  * spi: move clk pin muxing into spi_acquire / spi_release
  + UART: implement inverted RX & TX
* samd21: PWM don't hard-code number of channels to 3
* samd5x: allow to use XOSC as clock source
* saml1x: pm: set deep flag
+ stm32:
  + add QDEC support for CPU_FAM_STM32F1
  + add non-blocking UART
  * decrease latency in SPI DMA path
  + implement reset to bootloader
  * filter availability of RNG by CPU not by board
  * stm32_common: make RTT_FREQUENCY configurable
  + stm32f4: Add DMA config for SPI
  + stm32g4: add support

Device Drivers
--------------
+ atwinc15x0: add WiFi netdev driver
+ at: Add at_urc_isr module to process URCs upon arrival
+ at24cxxx: MTD wrapper for at24cxxx
+ at86rf215:
  + implement MR-O-QPSK
  + implement MR-OFDM
+ at86rf2xx: add support for high data rates
+ dfplayer: New driver for the DFPlayer Mini MP3 player
* ethos: use luid_get_eui48()
+ edbg_eui: add driver to get MAC address from Atmel EDBG
+ mhz19: initial support
+ mrf24j40: add Turbo Mode
+ mtd_spi_eeprom: add MTD wrapper for AT25XXX EEPROMs
+ pca9633: add new driver
+ periph/timer: add timer_set_periodic()
+ periph/i2c: add periph_i2c_reconfigure feature & implementation for sam0
+ periph/rtt: introduce RTT_MIN_OFFSET
+ periph/spi: add periph_spi_reconfigure feature & implementation for sam0
* pulse_counter: Use C11 atomics & bugfix
+ sdp3x : Add driver for sdp3x sensor

Build System / Tooling
----------------------
+ make:
  + add code generator targets
  + add JLink support for stm32
  * docker.inc.mk: add and use generic docker_run_make
  + allow multiple external board dirs
  + info-global.inc.mk: add info-boards-features-blacklisted
  * resolve dependencies before Makefile.include
+ riotctrl_shell:
  + initial import of shell interaction spawn
  + provide ipv6_nib interactions and parsers
  + provide netif interactions and parsers
+ tools:
  + add script to run radvd on a tun interface
  + provide tool to parse `pktbuf` output
  * kconfiglib:
    * add riot_kconfig to override default behaviours
    * kconfiglib: bump to v14.1.0

Testing
-------
+ fuzzing framework:
  + add AFL-based fuzzing setup for network modules
  + add fuzzing application for gcoap
+ ci: setup github actions
+ sys/test_utils/dummy_thread: initial commit
+ tests/irq_disable_restore: Add test for irq_disable() / irq_restore()
+ tests/periph_spi: add benchmark for acquire / release
+ tests/periph_spi_dma: Add test for SPI with DMA
+ uncrustify: add auto uncrustify with blacklist

Kconfig migration
-----------------
+ armv7_m/cortexm: declare CPU_ARCH and CPU_CORE
+ boards: Model features in Kconfig
  + arduino-leonardo, arduino-mega2560, atmega128x-based, atmega256rfr2-based,
    atmega328p-based, cc2538-based, cc26xx_cc13xx-based, efm32-based, esp-based,
    fe310-based, kinetis-based, msp430-based, samr21-xpro, slwstk6220a
* kconfig: Declare common feature symbols
+ drivers: Expose Configurations to Kconfig
  + ads101x, at, at86rf215, bmx055, cc110x, dose.h, fxos8700, hdc1000, isl29020,
    l3g4200d, lpsxxx, mag3110, mma8x5x, motor_driver, mtd_sdcard, opt3001,
    pn532, rn2xx3, slipdev, sps30, tcs37727, tmp00x
+ networking: Expose configurations to Kconfig
  + asymcute, coap, csma
  + gnrc:
    + gomach, lwmac, mac, pktdump, pktbuf, rpl, tcp
+ usbus/cdc/ecm: Expose configurations to Kconfig

API Changes
===========
- cpu/sam0_common: drop prescaler from timer config
- cpu/sam0_common: PWM config now requires GCLK source
- drivers/mtd: Change API to return 0 on success
- drivers/mtd_mapper: count offset in sectors
- net/sock_dtls: provide getter function for UDP sock
- net/sock_dtls: add timeout to sock_dtls_send and add sock_dtls_session_init

    diff --git a/sys/include/net/sock/dtls.h b/sys/include/net/sock/dtls.h
    index 96569723fc..6e66048bd4 100644
    --- a/sys/include/net/sock/dtls.h
    +++ b/sys/include/net/sock/dtls.h
    @@ -476,6 +485,13 @@
     extern "C" {
     #endif

    +#ifndef DTLS_HANDSHAKE_BUFSIZE
    +#define DTLS_HANDSHAKE_BUFSIZE  (256)   /**< Size buffer used in handshake to
    +                                             hold credentials */
    +#endif
    +
    +#define SOCK_DTLS_HANDSHAKE     (EXDEV) /**< Return value for a successful
    +                                             handshake */
    +
     /**
      * @brief DTLS version number
    @@ -546,26 +564,26 @@ void sock_dtls_init(void);
     int sock_dtls_create(sock_dtls_t *sock, sock_udp_t *udp_sock,
                          credman_tag_t tag, unsigned version, unsigned role);

    +
     /**
    - * @brief Creates a new DTLS session
    + * @brief Initialize session handshake.
      *
    - * Initializes handshake process with a DTLS server  at @p ep.
    - *
    - * @param[in]  sock     DLTS sock to use
    - * @param[in]  ep       Remote endpoint of the session
    - * @param[out] remote   The created session, cannot be NULL
    + * Sends a ClientHello message to initialize the handshake. Call
    + * @ref sock_dtls_recv() to finish the handshake.
      *
    - * @return  0 on success
    - * @return  -EAGAIN, if DTLS_HANDSHAKE_TIMEOUT is `0` and no data is available.
    - * @return  -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
    - * @return  -EINVAL, if @p remote is invalid or @p sock is not properly
    - *          initialized (or closed while sock_udp_recv() blocks).
    - * @return  -ENOBUFS, if buffer space is not large enough to store received
    - *          credentials.
    - * @return  -ETIMEDOUT, if timed out when trying to create session.
    + * @param[in] sock      DTLS sock to use
    + * @param[in] ep        Remote endpoint to start a handshake with
    + * @param[out] remote   Resulting session
    + *
    + * @return 1, if new handshake is started
    + * @return 0, if there is an existing session
    + * @return -ENOMEM, not enough memory to allocate for new peer
    + * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
    + * @return -EINVAL, if @p remote is invalid or @p sock is not properly
    + *         initialized (or closed while sock_udp_recv() blocks).
      */
    -int sock_dtls_session_create(sock_dtls_t *sock, const sock_udp_ep_t *ep,
    -                             sock_dtls_session_t *remote);
    +int sock_dtls_session_init(sock_dtls_t *sock, const sock_udp_ep_t *ep,
    +                           sock_dtls_session_t *remote);

     /**
      * @brief Destroys an existing DTLS session
    @@ -578,7 +596,7 @@ int sock_dtls_session_create(sock_dtls_t *sock, const sock_udp_ep_t *ep,
     void sock_dtls_session_destroy(sock_dtls_t *sock, sock_dtls_session_t *remote);

     /**
    - * @brief Decrypts and reads a message from a remote peer.
    + * @brief Receive handshake messages and application data from remote peer.
      *
      * @param[in] sock      DTLS sock to use.
      * @param[out] remote   Remote DTLS session of the received data.
    @@ -593,7 +611,8 @@ void sock_dtls_session_destroy(sock_dtls_t *sock, sock_dtls_session_t *remote);
      *
      * @note Function may block if data is not available and @p timeout != 0
      *
    - * @return The number of bytes received on success
    + * @return  The number of bytes received on success
    + * @return  -SOCK_DTLS_HANDSHAKE when new handshake is completed
      * @return  -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
      * @return  -EAGAIN, if @p timeout is `0` and no data is available.
      * @return  -EINVAL, if @p remote is invalid or @p sock is not properly
    @@ -657,28 +676,32 @@ ssize_t sock_dtls_recv_buf(sock_dtls_t *sock, sock_dtls_session_t *remote,
      *                      if no session exist between client and server.
      * @param[in] data      Pointer where the data to be send are stored
      * @param[in] len       Length of @p data to be send
    + * @param[in] timeout   Handshake timeout in microseconds.
    + *                      If `timeout > 0`, will start a new handshake if no
    + *                      session exists yet. The function will block until
    + *                      handshake completed or timed out.
    + *                      May be SOCK_NO_TIMEOUT to block indefinitely until
    + *                      handshake complete.
      *
    - * @note Function may block until a session is created if there is no
    - *       existing session with @p remote.
    - *
    - * @note Initiating a session through this function will require
    - * @ref sock_dtls_recv() called from another thread to receive the handshake
    - * messages.
    + * @note    When blocking, we will need an extra thread to call
    + *          @ref sock_dtls_recv() function to handle the incoming handshake
    + *          messages.
      *
      * @return The number of bytes sent on success
    + * @return  -ENOTCONN, if `timeout == 0` and no existing session exists with
    + *          @p remote
      * @return  -EADDRINUSE, if sock_dtls_t::udp_sock has no local end-point.
      * @return  -EAFNOSUPPORT, if `remote->ep != NULL` and
      *          sock_dtls_session_t::ep::family of @p remote is != AF_UNSPEC and
      *          not supported.
    - * @return  -EHOSTUNREACH, if sock_dtls_session_t::ep of @p remote is not
    - *          reachable.
      * @return  -EINVAL, if sock_udp_ep_t::addr of @p remote->ep is an
      *          invalid address.
      * @return  -EINVAL, if sock_udp_ep_t::port of @p remote->ep is 0.
      * @return  -ENOMEM, if no memory was available to send @p data.
    + * @return  -ETIMEDOUT, `0 < timeout < SOCK_NO_TIMEOUT` and timed out.
      */
     ssize_t sock_dtls_send(sock_dtls_t *sock, sock_dtls_session_t *remote,
    -                       const void *data, size_t len);
    +                       const void *data, size_t len, uint32_t timeout);

     /**
      * @brief Closes a DTLS sock
    @@ -694,6 +717,47 @@ ssize_t sock_dtls_send(sock_dtls_t *sock, sock_dtls_session_t *remote,
      */
     void sock_dtls_close(sock_dtls_t *sock);

    +/**
    + * @brief Creates a new DTLS session
    + *
    + *  Initiates a handshake with a DTLS server at @p ep and wait until it
    + * completes or timed out.
    + *
    + * @deprecated Will not be available after the 2020.10 release.
    + *             Please use @ref sock_dtls_session_init() and
    + *             @ref sock_dtls_recv() instead.
    + *
    + * @param[in]  sock     DLTS sock to use
    + * @param[in]  ep       Remote endpoint of the session
    + * @param[out] remote   The created session, cannot be NULL
    + * @param[in]  timeout  Timeout to wait for handshake to finish.
    + *                      Returns immediately if 0.
    + *                      May be SOCK_NO_TIMEOUT to wait indefinitely until
    + *                      handshake complete.
    + *
    + * @return  0 on success
    + * @return  -ENOMEM, if no memory to allocate for new peer
    + * @return  -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
    + * @return  -EINVAL, if @p remote is invalid or @p sock is not properly
    + *          initialized (or closed while sock_udp_recv() blocks).
    + */
    +static inline int sock_dtls_session_create(sock_dtls_t *sock, const sock_udp_ep_t *ep,
    +                                    sock_dtls_session_t *remote, unsigned timeout)
    +{
    +    int res;
    +    uint8_t buf[DTLS_HANDSHAKE_BUFSIZE];
    +
    +    assert(sock);
    +    assert(remote);
    +
    +    res = sock_dtls_session_init(sock, ep, remote);
    +    if (res <= 0) {
    +        return res;
    +    }
    +
    +    return sock_dtls_recv(sock, remote, buf, sizeof(buf), timeout);
    +}
    +
     #include "sock_dtls_types.h"

     #ifdef __cplusplus


Deprecations
============

Warnings
--------
- GNRC_MAC_ENABLE_DUTYCYCLE_RECORD: Will be removed after 2021.01 release. Use
  inverse CONFIG_GNRC_MAC_DISABLE_DUTYCYCLE_RECORD instead.
- saul_reg_rm(): will be removed at a future date
- sock_dtls_session_create(): will be removed after 2020.10 release. Please
  use sock_dtls_session_init() and sock_dtls_recv() instead
- pkg/nordic_softdevice_ble: will be removed after the 2020.10 release

Removals
--------
- netdev: remove NETOPT_IPV6_IID support for network devices


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

Networking related issues (44)
------------------------------
#13997: ping6 is failing when testing with cc2538dk
#13745: ethos: Unable to choose global source address.
#13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)
        after debug break
#13493: ethernet: Missing multicast addr assignment
#13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails
        sometimes
#13280: nrf52: Not able to add global or ULA address to interface
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
#12857: examples/gnrc_networking_mac broken on ATmega
#12761: samr30 xpro doesn't seem to use its radio ok
#12642: Emcute cannot create a double-byte name
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
        packet buffer
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
#12210: stale border router does not get replaced
#11988: ethos: fails to respond to first message.
#11860: send data with UDP at 10HZ, the program die
#11852: scan-build errors found during 2019.07 testing
#11405: nrfmin: communication not possible after multicast ping with no interval
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
        address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64
       chars
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address

Timer related issues (17)
-------------------------
#14217: tests/periph_timer_periodic is failing
#13321: Sleep mode for Arduino
#13204: xtimer problem with nucleo32 boards
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
       time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8251: MSP430: periph_timer clock config wrong
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
       _xtimer_now()  and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck on native

Drivers related issues (13)
---------------------------
#14506: mdt_erase success, but vfs_format resets board (esp32-heltec-lora32-v2)
#14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until
        timeout
#14424: adc is not a ADC-Driver but a analog pin abstraction
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
#13444: Potential security and safety race conditions on attached devices
#13079: drivers/srf04: incorrect values on ATmega based platforms
#12445: driver/hts221: Temperature and Humidity readings incorrect
#12371: fail to send data to can bus
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
#12045: floats and doubles being used all over the place.
#11104: STM32: SPI clock not returning to idle state and generating additional
        clock cycles
#9419: cpu/msp430: GPIO driver doesn't work properly
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
       supported

Native related issues (3)
-------------------------
#13501: SDL2 does not work due to missing getpid
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe

Other platforms related issues (19)
-----------------------------------
#14572: tests/mpu_noexec_ram: fails on  i-nucleo-lrwan1
#14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated
#14237: esp32-wroom-32: tests/netstats_l2 failing sometimes
#14015: stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after
        __WFI()
#13606: gcoap/esp8266: Stack overflow with gcoap example
#13390: Cannot use LLVM with Cortex-M boards
#13267: Failing tests on MSP430 (z1)
#13104: boards/hifive1: flashing issue
#13086:  Failing tests on FE310 (Hifive1b)
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
#12168: pkg/libb2: blake2s doesn't work on AVR
#11885: arm7: printf() with float/double not working
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
        (not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
       boards
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
       CS
#4954: chronos: compiling with -O0 breaks

Build system related issues (13)
--------------------------------
#14504: BUILD_IN_DOCKER ignores USEMODULE
#14288: pkg/ccn-lite: unable to `make -j -C examples/ccn-lite-relay`
#14264: make: ccache leads to differing binaries
#13492: make -j flash broken on esp* (will always flash the previous binary)
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
#10850: Tracking: remove harmful use of `export` in make and immediate
        evaluation
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
       image
#8913: make: use of immediate value of variables before they have their final
       value
#8122: doxygen: riot.css modified by 'make doc'
#6120: Windows AVR Mega development makefile Error
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers

Other issues (41)
-----------------
#14578: tests/cpp11_%: failing on i-nucleo-lrwan1
#14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails
#14568: tests/pkg_libfixmath_unittests: failing on multiple platforms
#14548: edbg: long lines flooded over serial become garbled
#14520: examples / tests: LoRa tests fail on platforms that don't support LoRa
#14514: Uncrustify enforces deviation of coding convention
#14466: Linking C++
#14390: gcoap: Suspected crosstalk between requests (possible NULL call)
#14315: DTLS examples cannot send message to localhost
#14169: Gcoap does not handle separate responses
#14167: Gcoap drops long packages instead of gracefully erring out
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
#13541: Order of auto_init functions
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
#13285: Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto
#13277: Y2038 tracking issue / strategy
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
        esp32-wroom-32
#13120: tests: broken with stdio_rtt if auto_init is disabled
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
        shell after flashing with J-Link
#12897: Can't build relic with benchmarks or tests
#12889: CC2538DK board docs: broken links
#12732: tests: some tests don't work with `newlib` lock functions.
#12621: Potential race condition in compile_and_test_for_board.py
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
#12105: [TRACKING] sys/shell refactoring.
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
        10
#9882: sys/tsrb is not thread safe
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
       static_asserts in the same scope
#7365: scheduler: priority inversion problem
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
       everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables

There are 150 known issues in this release

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

#14521: tests/test_tools: fails on `iotlab-m3` due to `core`/`cpu` regression
#14415: Flashing nrf52dk with bmp breaks board
#14409: doc/search: hitting return while searching on api.riot-os.org reloads
        current page
#14407: gnrc/RPL: instance ID not updated on reconnect
#14399: cord_ep example timed out when registering to a resource directory
#14380: dist/tools/flatc: cloning of the tool sporadically fails on the CI
#14361: Bug : bad assertion in cpu/stm32/periph/pwm.c
#14330: Improve driver implementation documentation
#14328: sam0_common: make debug broken for boards using EDBG
#14184: Part of puts/printf output is skipped
#14164: Failed assertion when using netdev_ieee802154_mr_fsk
#14158: kconfig is broken on case-insensitive file systems
#14074: Memory read beyond input buffer boundaries in nanocoap packet parser
#14035: I can't use w5100 to work on Release-2020.04 by using
        RIOT/examples/emcute_mqttsn/.
#14034: gcoap server breaks or becomes very unresponsive (sock_async related?)
#13984: tests/pkg_ubasic: failing on esp32-wroom-32
#13920: stm32: ztimer RTT backend overflow
#13838: Global Address remains in state TNT[3] forever
#13834: DHCPv6 client ends up in busy loop after a while
#13419: Can't use nimble as prefix for modules
#13209: examples/gnrc_border_router is crashing after some time
#12909: Bug: Unexpected behavior with xtimer_periodic_wakeup() for large periods
        on Nucleo-f401re
#12858: KW2XRF: Broken network communication without netstats-l2
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
#11795: gnrc_tftp: string functions on non-null terminated input
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
#11472: Warnings from objcopy and size (binutils 2.32)
#11388: SD card initialization: timeouts effectively blocking
#11212: POSIX sockets + lwIP: bad file descriptor
#11149: xtimer: hang on xtimer_spin_until (corner case)
#10367: sam0.inc.mk: Did not find a device with serial ATML21xxxxxxxx
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
       configured prefix
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#7753: pic32-wifire: race-condition when linking in concurrent build
#5775: cpu: cortex-m: compiling vectors.c with LTO triggers compiler bug
#5774: cpu: cortexm_common: context switching code breaks when compiling with
       LTO
#5769: Possible problem in scheduler
#5748: gnrc: nodes crashing with too small packet buffer

42 fixed issues since last release (2020.04)


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
---
* 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.



RIOT-2020.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 2020.04 release includes:

- Add support for 6LoWPAN IPv6 extension header next header compression
- Add support for DHCPv6 prefix delegation client
- Add support for kw41zrf and at86rf215 IEEE 802.15.4 radios
- Improvements on power management for ESP32
- Improvements and extensions in support of fe310 and lpc2387
- lwIP: provide support for asynchronous sock
- Improvements on xtimer module and testing
- Initial addition of the new timer subsystem: ztimer
- Migration to Kconfig - phase I: add multiple GNRC and system modules
- +10 new boards, +11 new drivers, +7 new packages


555 pull requests, composed of 1514 commits, have been merged since the
last release, and 22 issues have been solved. 60 people contributed with
code in 102 days. 3346 files have been touched with 358398 (+) insertions and
184720 deletions (-).

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

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

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

System libraries
----------------
* core:
    + add optional support for executable space protections
    * sched: sched.h: remove not needed bitarithm include to avoid conflict
    + turn kernel_init.c and panic.c into submodules of core
+ sys/auto_init: allow delayed initialization of SAUL & gnrc_netif
* sys/base64: implement Base 64 Encoding with URL and Filename Safe Alphabet
* sys/crypto: define cipher using a module instead of CFLAGS
* sys/crypto/modes/ccm: handle input_len = 0
* sys/ecc: fix assertion in golay2412
* sys/event:
    + add event_wait_timeout64()
    + add shared event threads
* sys/newlib:
    + enable multiple heaps in _sbrk_r()
    * syscalls_default: update heap_stats for multiple heaps
* sys/puf_sram: counter based seed after soft reset
* sys/phydat: improvement of phydat_dump including test application
* sys/shell:
    + add rtt command
    * correctly detect and handle long lines
+ sys/shell_commands: + provide command to print version
* sys/spp: randomize canary value on each build
* sys/suit:
    * cleanup of TinyCBOR to NanoCBOR refactor
    * coap: make use of exposed tree handler function
    * update to draft-ietf-v3
+ sys/uri_parser: initial import of a minimal and non-destructive URI parsing
* sys/usb: use default VID/PID for RIOT-included peripherals
* sys/xtimer:
    * set now pointer correctly in _update_short_timers() loop
    + add xtimer_set_timeout_flag64()
    * xtimer_mutex_lock_timeout fix with short timeout
+ sys/ztimer: initial import

Networking
----------
* net/coap:
    * deprecate gcoap_add_qstring() and update uses
    + Packet API function to add Uri-Query option
+ net/dhcpv6: initial implementation of a client (with IA_PD support)
* net/dns: fix DNS resolution in ping6
* net/gcoap:
    + add canonical uri query function names
    + allow proxied client requests
    * use sock_async and events
+ net/gnrc_dhcpv6_client_6lbr: initial import of a 6LBR DHCPv6 client
+ net/gnrc_ipv6_ext_frag: initial import of statistics module
* net/gnrc_ipv6_nib:
    * do not ignore prefix list for route resolution
    * fix border router with DNS & Context Compression
    * only route to prefix list entry if on-link
* net/gnrc_lorawan:
    * fix the handling of downlink frames without payload
    * remove netdev layer from MAC
* net/gnrc_netif:
    + add gnrc_netif_send and gnrc_netif_highlander functions
    * implementation of dynamic GNRC_NETIF_NUMOF approach
* net/gnrc_nettype: deprecate IOVEC type
* net/gnrc_pktbuf: deprecate gnrc_pktbuf_replace_snip()
+ net/gnrc_sixlowpan_iphc: add support for IPv6 extension header compression
+ net/gnrc_sock: provide implementation for `sock_*_recv_buf()`
* net/gnrc_sock_udp: choose random ephemeral port
- net/gnrc_tftp: remove module
* net/gnrc_uhcpc:
    * ensure compression context is managed by the ABR
    * only configure 6Lo-ND features if wireless-interface is 6LN
    * update compression context with new prefix
* net/nanocoap:
    + add coap_opt_add_uquery2() with parameter key value length
    + add convenience function for adding path elements
    * add uquery improvements
    * make separate tree handling function
    - remove obsolete functions for addition of Uri-Query option
+ net/netdev: add netdev_trigger_event_isr() function
- net/nhdp: remove module
+ net/sock:
    * async: add optional callback argument
    + amend with zero-copy receive functions
    + amend API to iterate over stack-internal buffer chunks

Packages
--------
+ pkg/cmsis-nn: add support
+ pkg/cryptoauthlib: add support
+ pkg/libbase58: add support
- pkg/libcose: remove monocypher crypto mode
+ pkg/littlefs2: add support for LittleFS v2.x.y
+ pkg/lvgl: add initial support for LittlevGL
* pkg/lwip:
    + add auto-init support for transceiver ENC28J60
    + provide sock_async support
* pkg/micropython: bump version for FreeBSD fix
* pkg/monocypher: bump to version 3.0.0
* pkg/nanopb: bump version to 0.4.1
* pkg/nimble/autoconn: various improvements
- pkg/oonf_api: remove support
+ pkg/qcbor: add support
* pkg/tinydtls: remove receive buffer indirection via mbox
* pkg/wolfssl: bump version to 4.3.0
+ pkg/yxml: add support Yxml XML parser library package

Boards
------
* boards: include common dfu logic where applicable
+ boards/adafruit-clue: add initial support
* boards/arduino-mkr: feather-m0: sodaq-*: provide stdio over USB and
  setup automatic flash with bossa
+ board/arduino-nano-33-ble: add initial support
+ boards/cc1312-launchpad: add support and documentation
* boards/feather-nrf52840:
    * use CDC ACM as default STDIO
    * fix LED macros
+ boards/esp32-heltec-lora32-v2: add support
+ boards/im880b: add support
+ boards/kw41z-mini: add support
* boards/mega-xplained: fix ADC line definitions
* boards/nrf51: fix UART hardware flow-control configuration
* boards/nucleo-l152re: fix uart1 pinout config
+ boards/nucleo-l412kb: add initial support
* boards/sam[r/d]21-xpro: prefer XOSC32K for RTC/RTT (GCLK2)
* boards/same54-xpro:
    * configure remaining EXT connectors
    * don't source peripheral clocks from main clock
* boards/samr30: add helper for antenna switch
* boards/stm32l4: add common clock configuration
+ boards/olimexino-stm32: add support
+ boards/openlabs-kw41z-mini-256kib: add support
* boards/openmote-b: add SAUL configuration and note about flashing
+ boards/p-nucleo-wb55: add initial support
+ boards/pic32*: add GPIO SAUL configuration
* boards/pinetime:
    * add defines for controlling the backlight pin
    * update mtd_spi_nor config
    * fix battery ADC line define
* doc/doxygen:
    + add 'Creating boards' section
    * improvements on various board's documentation

CPU
---
* cpu:
    * add CPU feature for stack smash protections
    + add UART RX implementation on PIC32 devices
    * make default idle/main stacksizes configurable on all archs
    * move cpu level dependencies in dedicated Makefile.dep files
    * unify UART hardware flow control use to a generic module
* cpu/atmega_common: fix reboot issues
* cpu/cc13x2: rename cpu to cc26x2_cc13x2
* cpu/cc2538:
    * fix spi_transfer_bytes()
    + implement periph/pm
    * timer: handle power mode
* cpu/cc26xx_cc13xx: add power common code
* cpu/cortexm:
    + add support for Cortex-M interrupt sub-priorities
    * cleanup dependencies
    * move CPU_ARCH/FAM to Makefile.features
    * only enable MPU during low low level init
* cpu/efm32:
    * cleanup of makefiles
    * fix incorrect ADC status register
* cpu/esp_common:
    * allow WiFi modem sleep mode
    + esp-wifi: allow connecting to open networks
    * fixes in common CPU configurations
    * move dependency resolutions to Makefile.dep
* cpu/esp32:
    * activate automatic XTAL detection
    + add support for light/deep sleep and pm_layered
    * allow external 32 kHz crystal for the RTC hardware time
    + esp_wifi: add WPA2 enterprise mode with IEEE 802.1x/EAP authentication
    * fix wake-up sources for sleep mode
+ cpu/esp8266: add RTT implementation
* cpu/fe310:
    * fix power management configuration
    + implement driver for watchdog
* cpu/lpc2387:
    * fix RTC leap year calculation
    + implement periph/adc
    + implement periph/i2c
    * make SPI configurable
* cpu/native: fix c11_atomic sizes on FreeBSD
* cpu/native/can/candev_linux: add check for real can
+ cpu/nrf52/nRF802154: implement CCA
+ cpu/nrf5x: add and enable configuration for the built-in DC/DC converter
* cpu/sam0:
    + add gpio_disable_mux() function
    + add samd21j17d support
    * enhance power saving by switching EIC clock source during STANDBY mode
    * fix handling of PM_NUM_MODES
    + provide interface to query GCLK frequency
    * use generic exti_config
* cpu/samd21: pwm: allow to use channels > 3
* cpu/samd5x: disable RTC on init to prevent undefined RTC state
* cpu/[saml21/1x]: enable buck voltage regulator when possible
* cpu/stm32_common:
    + add USB OTG FS/HS usbdev peripheral driver
    * enable EXTI interrupt for rtt
    * eth: fix address and multicast filtering
* cpu/stm32f1: make RTC Y2038 safe
+ cpu/stm32wb: add initial support

Device Drivers
--------------
* doc: various fixes in driver documentation
+ drivers/apds99xx: add support for APDS99XX ambient light and proximity sensors
+ drivers/at24cxxx: add support for AT24Cxxx family of EEPROMs
+ drivers/at24mac: add support for unique ID chip
+ drivers/at25xx: add support for AT25xxx family of EEPROMs
+ drivers/at86rf215: add basic support for AT86RF215 dual-band radio
* drivers/at86rf2xx:
    * fix receive before send detection
    + implement basic mode
+ drivers/bh1900nux: add support
+ drivers/bme680: add support
+ drivers/can: add CAN support for nucleo-l476rg
+ drivers/cc110x: add support for promiscuous mode
+ drivers/disp_dev: add generic interface for display drivers
* drivers/ds18: fix temperature conversion
+ drivers/hmc5883l: add support for Honeywell HMC5883L magnetometer
+ drivers/kw41zrf: add support for radio
+ drivers/lis2dh12: add interrupt functionality
* drivers/mtd_spi_nor: erase timings in struct
+ drivers/periph_common/rtc: add rtc_mktime() & rtc_localtime() helper functions
+ drivers/rtt_rtc: add RTT-based RTC implementation, enable it for cpu/cc2538,
  nrf5x_common
* drivers/slipdev: provide stdio multiplexing over SLIP
+ drivers/sps30: add support for particulate matter sensor
* drivers/srf08: cleanup driver configuration scheme
+ drivers/stmpe811: add support for touchscreen controller
* drivers/ws281x:
    + add support for esp32
    + add VT100 backend for native

Build System / Tooling
----------------------
* build system: Restructure dependency resolution
* dist:
    * cc2538-bsl: use upstream version
    + dhcpv6-pd_ia: initial import of a DHCPv6 server bootstrapper
    * edbg: update to latest upstream version
    * factor out static tests from build_and_test
    * packer: update vagrant image to Ubuntu 18.04 + refactoring
    + sliptty: introduce a new SLIP to TUN tool
    * sliptty/start_network.sh: configure global address for SLIP interface
    * testbed-support:
        * fix compatibility with cli-tools v3
        * use BINFILE for flashing on iotlab
+ doc: add section on configuration to 'Getting started'
* make:
    * disable implicit rules
    * remove support for make <4
    * native: turn on creation of debug symbols (CFLAGS += -g)
* Makefile:
    * arch: mips: Allow CFLAGS_DBG and CFLAGS_OPT to be overridden
    * boards: move remaining uses of USEMODULE from Makefile.include to
      Makefile.dep
    * disable stdio_% modules before they are included
    * fix duplicate modules from USEMODULE
    * fix sock_udp deps for stnp
    * include package deps earlier
    * info-global.inc.mk: reset BOARDSDIR
    * Makefile.dep: remove usage of DEFAULT_MODULE += stdio%
    * mips: cleanup include makefile
    * move cpu level dependencies in dedicated Makefile.dep files
    * periph_init based on USEMODULE
    * pkg/local.mk: add FORCE target to .PHONY
    + provide CPU as a feature
    * use simple expansion for widely used variables

Testing
-------
* tests:
    + add check_unittests helper function
    + add interactive_sync adapted to shell
    * fix compilation problems with NDEBUG
    * fix for `GNRC_NETIF_SINGLE`
    * fixes for evtimer_msg and bench_runtime_coreapis
+ tests/bench_xtimer_load: initial commit
* tests/buttons: fix build failure if BTN0_PIN is not declared
+ tests/candev: add initial version with native support
+ tests/driver_netdev_common: add compile-test for network drivers
+ tests/emcute: provide tests
+ tests/gnrc_ipv6_nib_dns: add test of RDNSS option handling
* tests/gnrc_rpl_srh: use AsyncSniffer for sniffing
* tests/periph_rtc: fix system locks in ISR
+ tests/xtimer_overhead: initial commit

Kconfig migration
-----------------
Migration to Kconfig as configuration tool is currently on phase 1. Which means
that we are moving configuration options from modules to Kconfig files, and
leaving its use optional.

+ doc: add Kconfig section
* Kconfig:
    * add CPU and Board common symbols
    * add Drivers menu
    * include application-specific symbols first
    * net/gnrc/ipv6: group IPv6 related Kconfig options
+ Expose configurations to Kconfig of:
    + drivers/periph/wdt
    + drivers/mrf24j40
    + net/gcoap
    + net/gnrc/ipv6/ext/frag
    + net/gnrc/ipv6/nib
    + net/gnrc/sixlowpan
    + net/ieee802154
    + net/nanocoap
    + pkg/tinydtls
    + pkg/wakaama
    + sys/usbus
    + usbus/cdc/acm

API Changes
===========
- SUIT: update to draft-ietf-v3
- Makefile.include: remove support for make <4
- net/gnrc_netif: implementation of dynamic GNRC_NETIF_NUMOF approach

- net/sock: amend with zero-copy receive functions:

+ /**
+  * @brief   Releases the stack-internal buffer space provided by the
+  *          `sock_*_recv_buf()` functions.
+  * @param[in] buf_ctx   Stack-internal buffer context to release.
+  */
+ void sock_recv_buf_free(void *buf_ctx);

+ /**
+  * @brief Decrypts and provides stack-internal buffer space containing a
+  *        message from a remote peer.
+  *
+  */
+ ssize_t sock_dtls_recv_buf(sock_dtls_t *sock, sock_dtls_session_t *remote,
+                            void **data, void **buf_ctx, uint32_t timeout);

+ /**
+ * @brief   Provides stack-internal buffer space containing an IPv4/IPv6
+ *          message from remote end point
+ */
+ ssize_t sock_ip_recv_buf(sock_ip_t *sock, void **data, void **buf_ctx,
+                         uint32_t timeout, sock_ip_ep_t *remote);

+ /**
+  * @brief   Provides stack-internal buffer space containing a UDP message from
+  *          a remote end point
+  */
+ ssize_t sock_udp_recv_buf(sock_udp_t *sock, void **data, void **buf_ctx,
+                           uint32_t timeout, sock_udp_ep_t *remote);

- net/sock/async: add optional callback argument:

+ * @param[in] arg   Argument provided when setting the callback using
+ *                  @ref sock_dtls_set_cb(). May be NULL.
  */
- typedef void (*sock_dtls_cb_t)(sock_dtls_t *sock, sock_async_flags_t flags);
+ typedef void (*sock_dtls_cb_t)(sock_dtls_t *sock, sock_async_flags_t flags,
+                                void *arg);

+ * @param[in] arg   Argument provided when setting the callback using
+ *                  @ref sock_ip_set_cb(). May be NULL.
  */
- typedef void (*sock_ip_cb_t)(sock_ip_t *sock, sock_async_flags_t flags);
+ typedef void (*sock_ip_cb_t)(sock_ip_t *sock, sock_async_flags_t flags,
+                              void *arg);

+ * @param[in] arg   Argument provided when setting the callback using
+ *                  @ref sock_tcp_set_cb(). May be NULL.
  */
- typedef void (*sock_tcp_cb_t)(sock_tcp_t *sock, sock_async_flags_t flags);
+ typedef void (*sock_tcp_cb_t)(sock_tcp_t *sock, sock_async_flags_t flags,
+                               void *arg);

+ * @param[in] arg   Argument provided when setting the callback using
+ *                  @ref sock_tcp_queue_set_cb(). May be NULL.
  */
  typedef void (*sock_tcp_queue_cb_t)(sock_tcp_queue_t *queue,
-                                     sock_async_flags_t flags);
+                                     sock_async_flags_t flags,
+                                     void *arg);

+ * @param[in] arg   Argument provided when setting the callback using
+ *                  @ref sock_udp_set_cb(). May be NULL.
  */
- typedef void (*sock_udp_cb_t)(sock_udp_t *sock, sock_async_flags_t type);
+ typedef void (*sock_udp_cb_t)(sock_udp_t *sock, sock_async_flags_t type,
+                               void *arg);

- net/sock/dns: make sock_dns_query() return the length of the address:

/**
 * @brief Get IP address for DNS name
 *
- * @return      0 on success
- * @return      !=0 otherwise
+ * @return      the size of the resolved address on success
+ * @return      < 0 otherwise
 */
int sock_dns_query(const char *domain_name, void *addr_out, int family);

- mtd_spi_nor: move const params to separate struct:

+ /**
+  * @brief Compile-time parameters for a serial flash device
+  */
+ typedef struct {
+     const mtd_spi_nor_opcode_t *opcode; /**< Opcode table for the device */
+     spi_clk_t clk;           /**< SPI clock */
+     uint16_t flag;           /**< Config flags */
+     spi_t spi;               /**< SPI bus the device is connected to */
+     spi_mode_t mode;         /**< SPI mode */
+     gpio_t cs;               /**< CS pin GPIO handle */
+     uint8_t addr_width;      /**< Number of bytes in addresses, usually 3 for small devices */
+ } mtd_spi_nor_params_t;
+

 typedef struct {
     mtd_dev_t base;          /**< inherit from mtd_dev_t object */
-    const mtd_spi_nor_opcode_t *opcode; /**< Opcode table for the device */
-    spi_t spi;               /**< SPI bus the device is connected to */
-    gpio_t cs;               /**< CS pin GPIO handle */
-    spi_mode_t mode;         /**< SPI mode */
-    spi_clk_t clk;           /**< SPI clock */
-    uint16_t flag;           /**< Config flags */
+    const mtd_spi_nor_params_t *params; /**< SPI NOR params */
     mtd_jedec_id_t jedec_id; /**< JEDEC ID of the chip */
     uint32_t page_addr_mask;
     uint32_t sec_addr_mask;
-    uint8_t addr_width;      /**< Number of bytes in addresses, usually 3 for small devices */
     uint8_t page_addr_shift;
     uint8_t sec_addr_shift;
 } mtd_spi_nor_t;

Deprecations
============

Warnings
--------
- `make all-debug` target will be removed for `native` after the 2020.10 release
- net/gcoap: `gcoap_add_qstring()` will be removed after the 2020.10 release
- net/gnrc/nettype: `GNRC_NETTYPE_IOVEC` type will be removed after 2020.10
    release
- net/gnrc_pktbuf: `gnrc_pktbuf_replace_snip()` will be removed after 2020.10
    release
- net/gnrc/sixlowpan: Configuration macro
    `GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE` will be removed after 2020.10
    release.

Removals
--------
- Makefile.include: remove support for GNU make <4
- pkg/oonf_api: remove package
- pkg/tinydtls: remove TINYDTLS_LOG configuration macro
- sys/net/gnrc_tftp: remove module
- sys/net/nhdp: remove module

Known issues (136)
==================

Networking related issues (48)
------------------------------
#13834: DHCPv6 client ends up in busy loop after a while
#13745: ethos: Unable to choose global source address.
#13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)
        after debug break
#13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails
        sometimes
#13209: examples/gnrc_border_router is crashing after some time
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
#12858: KW2XRF: Broken network communication without netstats-l2
#12857: examples/gnrc_networking_mac broken on ATmega
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
        packet buffer
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
#12210: stale border router does not get replaced
#11988: ethos: fails to respond to first message.
#11860: send data with UDP at 10HZ, the program die
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
#11852: scan-build errors found during 2019.07 testing
#11795: gnrc_tftp: string functions on non-null terminated input
#11405: nrfmin: communication not possible after multicast ping with no interval
#11212: POSIX sockets + lwIP: bad file descriptor
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
        address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
       configured prefix
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64
       chars
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address

Timer related issues (17)
-------------------------
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
#12909: Bug: Unexpected behavior with xtimer_periodic_wakeup() for large periods
        on Nucleo-f401re
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
#11149: xtimer: hang on xtimer_spin_until (corner case)
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
       time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8251: MSP430: periph_timer clock config wrong
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
       _xtimer_now()  and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck on native

Drivers related issues (9)
--------------------------
#13444: Potential security and safety race conditions on attached devices
#12445: driver/hts221: Temperature and Humidity readings incorrect
#12371: fail to send data to can bus
#12045: floats and doubles being used all over the place.
#11388: SD card initialization: timeouts effectively blocking
#11104: STM32: SPI clock not returning to idle state and generating additional
        clock cycles
#9419: cpu/msp430: GPIO driver doesn't work properly
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
       supported

Native related issues (3)
-------------------------
#11472: Warnings from objcopy and size (binutils 2.32)
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe

Other platforms related issues (18)
-----------------------------------
#13606: gcoap/esp8266: Stack overflow with gcoap example
#13408: Bug: PWM test crashes on Arduino Mega 2560
#13390: Cannot use LLVM with Cortex-M boards
#13267: Failing tests on MSP430 (z1)
#13104: boards/hifive1: flashing issue
#13086:  Failing tests on FE310 (Hifive1b)
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
#12168: pkg/libb2: blake2s doesn't work on AVR
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
        (not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
       boards
#7753: pic32-wifire: race-condition when linking in concurrent build
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
       CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with
       LTO
#4954: chronos: compiling with -O0 breaks

Build system related issues (11)
--------------------------------
#13492: make -j flash broken on esp* (will always flash the previous binary)
#13419: Can't use nimble as prefix for modules
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
#10850: Tracking: remove harmful use of `export` in make and immediate
        evaluation
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
       image
#8913: make: use of immediate value of variables before they have their final
       value
#8122: doxygen: riot.css modified by 'make doc'
#6120: Windows AVR Mega development makefile Error
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers

Other issues (30)
-----------------
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
#13277: Y2038 tracking issue / strategy
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
        esp32-wroom-32
#13120: tests: broken with stdio_rtt if auto_init is disabled
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
        shell after flashing with J-Link
#12732: tests: some tests don't work with `newlib` lock functions.
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
#12105: [TRACKING] sys/shell refactoring.
#11885: arm7: printf() with float/double not working
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
        10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
       static_asserts in the same scope
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5769: Possible problem in scheduler
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
       everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables

There are 137 known issues in this release

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

#13920: stm32: ztimer RTT backend overflow
#13680: suit-tool runs on every build - ModuleNotFoundError: No module named
        'cbor' when building anything
#13587: drivers/cc110x: Lost IRQs can lead to driver deadlock
#13471: 6ctx: incorrectly removes 6ctx context when the non-zero part of the
        address matches
#13460: Makefile.dep: DEFAULT_MODULE += stdio_rtt will always load dependencies
        - even if other stdio is selected
#13459: cpu/cortex-m23: gcc 9 bug when compiling c11 atomics
#13447: gnrc_sock_dns is not working
#13442: gnrc_networking not sending packets when hardware has multiple
        interfaces
#13369: native:in file gnrc_rpl_p2p.c function trickle_start() has extra and
        some undeclared variables.
#13358: iotlab-m3: long HW address is in reversed order
#13353: tests/unittests/tests-ecc: segfault with golay, when enabling asserts
#13309: cpu/native/can: Segmentation fault when manipulating vcan's through
        socketcan
#13287: Driver for DS18B20 returns invalid values
#13265: tests: compilation of some test applications fail with NDEBUG
#13015: Quickest start does not build with vagrant
#12854: `pm_reboot()` not working on AVR when compiled with `LTO=1`
#12370: Undocumented uint8_t assumptions in nrf52840 peripherals
#12037: cpu/sam0_common: i2c baudrate calculation fails if CLOCK_CORECLOCK > 51
        MHz
#11026: Recent changes effectively killed modular board designs
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8130: gcoap: can't build with network stacks other than GNRC
#7020: isr_rfcoreerrors while pinging between CC2538DKs

22 fixed issues since last release (2020.01)



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
---
* 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.


RIOT-2020.01 - 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.01 release includes:

 - Initial support for MicroPython
 - Initial support for GNRC based LoRaWAN stack
 - Initial (experimental) asynchronous sock support
 - Extend support for lpc2387 and fe310 cpus
 - Xtimer concurrency/robustness improvement, fixing #8388, #5338 & #5103
 - Complete re-implementation of esp8266 based on ESP8266 RTOS SDK
 - Improvements in automatic tests
 - Introduce and start using Kconfig as a configuration tool
 - +12 new boards, +7 new drivers, +4 new packages

About 527 pull requests, composed of 1367 commits, have been merged since the
last release, and about 29 issues have been solved. 61 people contributed with
code in 111 days. Approximately 3053 files have been touched with 134416 (+)
insertions and 31870 deletions (-).

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

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

System libraries
----------------
    + core/kernel_defines: Introduce 'IS_ACTIVE' macro
    * core/assert: allow multiple static_asserts within a function
    * core/ringbuffer: compensate 'ringbuffer_remove' underflow error
    + core/thread: add zombie thread state
    + sys: basic C++ compatibility with C11 atomics
    + sys/arduino:
        + added Wire (I2C) interface
        + added SPI interface
        * allow use of arduino libraries without need for arduino sketch
        * add implementation for analogWrite
        * fixed frequency selection in SPI
    * sys/bitfield: unify byte order and bit order to both be most significant
        bX first
    * sys/checksum: move crc8 implementation from sht3x to common code
    * sys/color: add color_rgb_set_brightness() and color_rgb_shift()
    * sys/crypto/modes/ccm: support length of AAD > 24
    * sys/crypto/modes/ccm: support plain text length < 2^32
    + sys/frac: add frac library for integer scaling by semi-constant fractions
    + sys/luid: add luid_get_eui48() / luid_get_eui64()
    + sys/progress_bar: add module for managing a progress bar in stdout
    * sys/posix/pthread/pthread.c: fix pthread reaper
    * sys/shell: make shell_run run shell forever
    * sys/shell_commands: make 6Lo compression contexts configurable on non-6LBR
    + sys/stdio_null: add null driver
    * sys/suit: use c25519 instead of hacl
    - sys/suit: remove dependency on tinycbor
    * sys/usbus:
        * add descriptor prefix support
        * unify terminology to use 'descriptor' everywhere
        * cdc_acm: add interface association descriptor, enable Windows
            enumeration and usage of RIOT CDC ACM
        * cdc_acm: fix to avoid lost characters on USBUS CDC ACM STDIO
    * sys/xtimer:
        * concurrency/robustness improvements
        * fix xtimer_mutex_lock_timeout by having _mutex_timeout() check waiting
            list
        - remove dependency to core_msg

Networking
----------
    + sys/gnrc_lorawan: add initial support for GNRC based LoRaWAN stack
    * sys/gnrc_netif: make 6LoENC dynamically configurable
    + sys/gnrc_sock: provide asynchronous event implementation
    * sys/gnrc_ipv6: fix source check for loopback address
    * sys/gnrc_ipv6_ext_frag: remove fragment header when n-th fragment is first
    * sys/gnrc_ipv6_nib: allow for configuration of static link-local addresses
    * sys/gnrc_netif: highest source address scope wins selection
    * sys/gnrc_netif: only use prefix matching as tie-breaker in source
        selection
    * sys/gnrc_sixlowpan_frag_rb: split out classic frag specific code
    * sys/gnrc_sixlowpan_frag_rb: fix memory-leak in _rm_by_datagram() and in
        interval marker inherited from base
    * sys/gnrc_sixlowpan_frag: various optimizations on sending
    * sys/gnrc_sixlowpan_iphc: add fragment forwarding stubs
    * sys/gnrc_sixlowpan_iphc_nhc: determine UDP hdr length from reassembly
        buffer, fix fragmented data size allocation
    * sys/gnrc_tcp: return immediately on gnrc_tcp_recv if connection is closing
    + sys/net/gcoap: add macro to delay initialization of gcoap
    * sys/net/gcoap: do not allocate RX buf on stack
    * sys/pthread: check malloc() return value, prevent NULL pointer deference
    * sys/shell/gnrc_netif: use netif API for ifconfig
    * sys/shell/sc_nimble`_netif: allow connecting by name
    + sys/sock: initial definitions for asynchronous event handling
    + sys/sock_async: initial import of event-based implementation

Packages
--------
    * pkg: cleanup management of dependencies
    * pkg/pkg.mk: use intermediate state files
    * pkg/ccn-lite: bump version
    + pkg/flatbuffers: add support for FlatBuffers serialization library
    * pkg/gecko_sdk: update to version 2.7
    * pkg/libfixmath: several improvements and fixes to support 8bit
    * pkg/littlefs: bump littlefs version to 1.7.2
    * pkg/lora-serialization: bump to latest version and update test for AVR
    * pkg/lwip:
        * add support for esp32 Ethernet device
        * add IPv4 support for LWIP-stm32
        * start DHCP for a netif with lwip_dhcp
        * add stm32 ethernet support
        * enable lwIP for ESP8266
    + pkg/nanopb: add Nanopb protocol buffers library package
    * pkg/nimble:
        * bump version
        + add simple BLE connection manager: autoconn
        + add user event callback to autconn
        + nimble_netif: catch L2CAP connection failures
        + nimble_netif: add additional events
    * pkg/tinydtls: add DTLS sock API implementation
    * pkg/tinydtls: bump version
    + pkg/tensorflow-lite: add support to RIOT
    + pkg/utensor: add support to RIOT
    * pkg/u8g2: refactor the U8g2 package
    * pkg/wakaama: add basic LWM2M client implementation

Boards
------
    - boards: remove RTT_NUMOF/RTC_NUMOF
    - boards: unexport PROGRAMMER
    + boards/adafruit-nrf52840: initial support
    * boards/arduino-zero: configure ADC channels
    + boards/atmega328p: initial support for standalone version
    * boards/atmega328p: support variable xtimer frequencies
    + boards/atmega1284P: initial support for standalone version
    + boards/atmega256rfr2: initial support
    + boards/avr-rss2: initial support
    + boards/cc1252: initial support
    * boards/common: clean up msba2 common files
    + boards/derfmega*: initial support
    + boards/esp32-ttgo-t-beam: initial support
    - boards/frdm: remove support for OpenOCD < v0.10.0
    + boards/mcb2288: initial support
    + boards/microduino-corerf: initial support
    * boards/nucleo-f207zg: add ethernet configuration
    * boards/native: allow for native to be reset via SIGUSR1
    * boards/particle-*: configure PCB antenna for 2.4GHz radio
    * boards/pic32-clicker: cleanup uart configuration and initialization
    * boards/pic32-clicker: use pic32prog as default programmer
    + boards/pinetime: initial support for the PINE64 PineTime smartwatch
    + boards/sodaq-*: add arduino support
    * boards/sodaq-*: refactor common code
    + boards/stm32f030f4-demo: initial support
    * boards/stm32-common:
        * allow SPI signals routed on multiple alternate functions
        * add 54MHz and 108MHz SPI divtable entries
        * common programmer/debugger/serial config
    * boards/thingy: add dependency for on-board hts221/lps22hb sensors

CPU
---
    + cpu/arm7_common: hook up puf_sram
    + cpu/atmega128rfa1: add initial support
    + cpu/atmega256rfr2: symbol counter based RTT support
    + cpu/atmega_common:
        * clean ups and fix code run at end of ISR to behave like
            `thread_yield_higher`
        * fixed atmega_exit_isr
        * uart: use TX_ISR to check uart transmission end
        + cpuid: provide for every device
        + rtt: initial peripheral driver support
        + wdt: initial peripheral driver support
    * cpu/cortexm: fix -mfpu flag value for CortexM7
    * cpu/fe310:
        * several cleanup in implementation and clock setup
        * change default optimization to "-Os"
        * uart: rework driver and fixes
        + i2c: initial peripheral driver support
        + spi: initial peripheral driver support
        + cpp: add feature
    * cpu/esp*: esp_wifi used as default netdev for lwip
    * cpu/esp32:
        * improvements and cleanup of log_module
        * fix lwip + esp_wfi, esp_wifi send buffer should not be on stack
        * use esptool.py from riot tools
        * rtc: fixes, improvements and cleanups
        * spi: fix CS handling in spi_transfer_bytes
        * uart: workaround uart sporadically set to wrong value when the CPU
            clock is changed
        * spi: enable use of SPI flash drive with pkg_littlefs
    * cpu/esp8266:
        * complete re-implementation based on ESP8266 RTOS SDK
        * fix of esp_wifi_send function
        * fix bootloaders and log outputs in vendor code
    * cpu/efm32: fix uart handling of RX when no RX callback is configured
    * cpu/efm32: normalize time in rtc_series1
    * cpu/lpc2387:
        * allow for more flexible clock selection
        + add support for backup RAM
        * uart: update the UART driver
        + pm: initial support
        + dac: initial support
        * rtc: enable RTC on rtc_init(), align with other RTC implementations
        * lpc2387.ld: cleanups and align with cortexm_base.ld
        * lpc2387.ld: provide thread_isr_stack_*() - MicroPython
    + cpu/kinetis: add flashpage for W & K series
    * cpu/msp430_common: add flashpage_raw
    * cpu/native:
        + initial import of stdio_native
        * allow Access to Hardware SPI Bus on Linux
        * fix all-asan Makefile target
    * cpu/stm32:
        * i2c_2: fix read bytes flag
        - i2c_2: do not support repeated start reading
        * stmclk: fix M-factor shift for SAI PLL
        * stcmlk: add functions for low power mode clock config
        + stm32f0: add support for stm32f030cc CPU
        + stm32f1: add rtt peripheral driver
        + stm32l0: add stm32l010c6 support
    * cpu/sam0_common:
        * uart: implement non-blocking uart write
        + uart: add hardware flow control support
        * rtt: enable COUNTSYNC in CTRLA, fixes `rtt_get_counter()` return value
        * spi: power off spi on release, avoid bus errors affecting application
            code
        * adc: fix API to return `-1` on unsupported resolution
    * cpu/samd21: use dedicated 1kHz GCLK4 for RTC and WDT


Device Drivers
--------------
    + doc/doxygen: add device driver guide
    + drivers: add Differentially Operated Serial Ethernet (DOSE) driver
    * drivers/at86rf2xx: add support for ATmegaRF MCUs
    * drivers/at86rf2xx: enable Smart Reduced Power Consumption for AT86RFR2
    * drivers/bmx280: added SPI models
    + drivers/dcf77: add driver for DCF77
    * drivers/hd44780: move params header to the right place
    + drivers/ili9341: initial import of ili9341 LCD driver
    * drivers/ina220: re-worked and added SAUL adaptation
    + drivers/ina3221: add driver for INA3221 current, power & voltage monitor
    + drivers/itg320x: add driver for InvenSense ITG-320X 3-axis gyroscope
    * driver/mpu9x50: make mpu9150 more generic
    * drivers/mrf24j40: allow for basic self-test on init
    * drivers/mrf24j40: fix start up code
    + drivers/qmc588rl: add support for QMC5883L
    + drivers/shtc1: add driver for SHTC1 temperature and humidity sensor
    + drivers/ws281x: add driver for WS281x RGB LED driver for ATmega platform
    * drivers/xbee: fix reference to device from netif in send function
    * periph/adc: change return type of `adc_sample()` to `int32_t`


Build System / Tooling
----------------------
    + dist/tools:
        + add Kconfiglib
        + add helper script for Black Magic Probe
        + add support for miniterm.py
        * fix 'make reset' with bootloader in avrdude
    + dist/testbed-support: add nrf52{840,832}mdk in IOTLAB_NODE targets
    + doc/advanced-build-system-tricks: handle multiple boards
    + doc/doxygen: add build system doc page for BOARD, CPU, FEATURE
    + doc/doxygen: add build-system-basics.md with general build system tips
    + Kconfig:
        + add build system integration and test application
        + makefiles: include configuration symbols to build system
        + makefiles: add symbols for used packages
        + expose gnrc/ipv6/whitelist configurations
        + expose gnrc/lorawan configurations
        + expose usb configurations
        + expose net/sock/util configurations
        + expose gnrc/netif configurations
        + expose gnrc/ipv6 configurations
    + make:
        + introduce 'BOARDSDIR' to support external boards using common code in
            'RIOTBOARD'
        * fail by default when errors are expected
        + add architectures features
        + add features blacklisting
        + add blob utility header
        * enable SECONDEXPANSION for module/application builds
        + add CXXEXT and CXXEXCLUDE variable for customizing C++ builds
    - makefiles:
        - remove use of export with LINKFLAGS variable
        + add possibility to provide board specific application dependencies in
            a separate Makefile
        * generate proper dependency files when using ccache
        * fix LOG_LEVEL handling
        - disable `-Watomic-alignment` on LLVM
        + introduce 'PROG_DEV' to specify programmer device
        * assert CPU is defined by BOARD/Makefile.features
        + add TERMFLASHDEPS to TERMDEPS so it also applies to `test`
        * tools: allow make reset via avrdude
        * tools: set DEBUG_ADAPTER_ID as JLINK_SERIAL

Testing
-------
    - dist/tests/philip: Removed old code and tests
    * dist/tools/testrunner:
        * make interactive test sync retries/delay configurable
        * reset before opening terminal
        - reset after opening terminal only if interactive test sync is not used
        * add variable for customizing a delay before reset
        * make interactive test sync retries/delay configurable
    * dist/tools/compile_and_test_for_board.py: allow use of wildcards for
        applications selection
    + murdock: enable esp32-wroom-32 for CI testing
    * tests:
        + use test_interactive_test_util
        + add automated tests guidelines in README
        - remove APPLICATION definition in tests/*
    + tests/gnrc_sock_neterr: proof of concept test for gnrc_sock + gnrc_neterr
    + tests/bench_xtimer: initial import
    * tests/lwip: enable IPv4
    * tests/malloc: improve application and add an automatic test script
    * tests/memarray: add python script for automatic testing
    * tests/nordic_softdevice: cleanup test script and fix test
    + tests/periph_timer_short_relative_set: initial import
    * tests/periph_cpuid: add automatic test script
    * tests/sys_arduino: fix test synchronization issues
    * tests/unittests: fix `tests-pkt` for non-32bit platforms


API Changes
===========

- drivers/ina220:  changes to comply with RIOT's design goals & SAUL adaption
- usbus: unified terminology within USBUS to match the terminology from the
    specs. `hdr`, `hdrs`, `headers`, etc is replaced everywhere with `descr`
    `descriptors` and `descriptors`.
- Makefile.include: fail by default when errors are expected

```diff
/* change return type of `adc_sample()` to `int32_t` to allow support for ADCs
   with resolution of more than 16 bits on 8 bit and 16 bit platforms*/
- int adc_sample(adc_t line, adc_res_t res)
= int32_t adc_sample(adc_t line, adc_res_t res)

/* pass memo to resp_handler directly */
- typedef void (*gcoap_resp_handler_t)(unsigned req_state, coap_pkt_t* pdu,
-                                      sock_udp_ep_t *remote);
+ typedef void (*gcoap_resp_handler_t)(const gcoap_request_memo_t *memo,
+                                      coap_pkt_t* pdu,
+                                      const sock_udp_ep_t *remote);

/* allow to pass user context to requests */
  size_t gcoap_req_send(const uint8_t *buf, size_t len,
                        const sock_udp_ep_t *remote,
-                       gcoap_resp_handler_t resp_handler);
+                       gcoap_resp_handler_t resp_handler, void *context);

/* assume `netif->ops->init()` to be set to at least a default */
-     _init_from_device(netif);
- #ifdef DEVELHELP
-     _test_options(netif);
+     netif->ops->init(netif);
+ #if DEVELHELP
+     assert(options_tested);
# endif
-     netif->cur_hl = GNRC_NETIF_DEFAULT_HL;
- #ifdef MODULE_GNRC_IPV6_NIB
-     gnrc_ipv6_nib_init_iface(netif);
- #endif
-     if (netif->ops->init) {
-         netif->ops->init(netif);
-     }

/* split the semantic of gnrc_netif_is_6ln() into two check functions */
/* is the interface performing 6Lo-ND as specified in RFC 6775. */
- bool gnrc_netif_is_6ln(const gnrc_netif_t *netif);
+ bool gnrc_netif_is_6lo(const gnrc_netif_t *netif);
+ static inline bool gnrc_netif_is_6ln(const gnrc_netif_t *netif

/* add function to start a shell and exit once EOF is reached. */
+ void shell_run_once(const shell_command_t *commands, char *line_buf, int len);

/* return reassembly buffer entry created or updated */
- void gnrc_sixlowpan_frag_rb_add(gnrc_netif_hdr_t *netif_hdr,
-                                 gnrc_pktsnip_t *frag, size_t offset,
-                                 unsigned page);
+ gnrc_sixlowpan_frag_rb_t *gnrc_sixlowpan_frag_rb_add(gnrc_netif_hdr_t *netif_hdr,
+                                                      gnrc_pktsnip_t *frag,
+                                                      size_t offset, unsigned page);

/* move gnrc_sixlowpan_frag_rb_dispatch_when_complete() out of
   gnrc_sixlowpan_frag_rb_add(). The caller of the latter function is now
   responsible to call it. */
+ int gnrc_sixlowpan_frag_rb_dispatch_when_complete(gnrc_sixlowpan_frag_rb_t *rbuf,
+                                                   gnrc_netif_hdr_t *netif);

/* don't assume interface specifier is an int for splitting, add functions to
   split int and string */
-  * @return          interface number or -1 if none specified
+  * @return          string containing the interface specifier.
+  * @return          NULL if no interface was specified.
+  */
- static inline int ipv6_addr_split_iface(char *addr_str)
+ static inline char *ipv6_addr_split_iface(char *addr_str)

- int ipv6_addr_split(char *addr_str, char separator, int _default);
+ int ipv6_addr_split_int(char *addr_str, char separator, int _default);
+ char *ipv6_addr_split_str(char *addr_str, char separator);

/* change address getter and setter functions to avoid byte order confusion */
- uint16_t at86rf2xx_get_addr_short(const at86rf2xx_t *dev);
+ void at86rf2xx_get_addr_short(const at86rf2xx_t *dev, network_uint16_t *addr);

- void at86rf2xx_set_addr_short(at86rf2xx_t *dev, uint16_t addr);
+ void at86rf2xx_set_addr_short(at86rf2xx_t *dev, const network_uint16_t *addr);

- uint64_t at86rf2xx_get_addr_long(const at86rf2xx_t *dev);
+ void at86rf2xx_get_addr_long(const at86rf2xx_t *dev, eui64_t *addr);

- void at86rf2xx_set_addr_long(at86rf2xx_t *dev, uint64_t addr);
+ void at86rf2xx_set_addr_long(at86rf2xx_t *dev, const eui64_t *addr);
```

Deprecations
============

Warnings
--------

- GNU make <4 will be removed after release 2020.01
- net/gcoap: gcoap_finish() will be removed after release 2020.04
- makefiles/vars.inc.mk: PORT_BSL & AVRDUDE_PORT will be removed after release
    2020.04
- gnrc_nettest: will be removed after release 2020.07

Removals
--------

- sys/ubjson: remove module
- dist/tests/philip: removed unneeded and unused tests and code
- net/gcoap: remove gcoap_req_send2()
- cpu/efm32: remove EFM32_UART_MODES
- boards: remove RTT_NUMOF/RTC_NUMOF

Known issues (130)
==================

Networking related issues (45)
------------------------------
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
#12964: esp32: network devices pull in GNRC dependencies statically
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
#12858: KW2XRF: Broken network communication without netstats-l2
#12857: examples/gnrc_networking_mac broken on ATmega
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
        packet buffer
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
#12210: stale border router does not get replaced
#11988: ethos: fails to respond to first message.
#11860: send data with UDP at 10HZ, the program die
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
#11852: scan-build errors found during 2019.07 testing
#11795: gnrc_tftp: string functions on non-null terminated input
#11405: nrfmin: communication not possible after multicast ping with no interval
#11212: POSIX sockets + lwIP: bad file descriptor
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
        address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
       configured prefix
#8130: gcoap: can't build with network stacks other than GNRC
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
       chars
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address


Timer related issues (17)
-------------------------
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
#12909: Bug: Unexpected behavior with xtimer_periodic_wakeup() for large periods
        on Nucleo-f401re
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
#11149: xtimer: hang on xtimer_spin_until (corner case)
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
       time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8251: telosb: xtimer config wrong when running on a tmote sky
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
       _xtimer_now() and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck on native


Drivers related issues (12)
---------------------------
#12445: driver/hts221: Temperature and Humidity readings incorrect
#12371: fail to send data to can bus
#12370: Undocumented uint8_t assumptions in nrf52840 peripherals
#12045: floats and doubles being used all over the place.
#12037: cpu/sam0_common: i2c baudrate calculation fails if CLOCK_CORECLOCK > 51
        MHz
#11388: SD card initialization: timeouts effectively blocking
#11104: STM32: SPI clock not returning to idle state and generating additional
        clock cycles
#11026: Recent changes effectively killed modular board designs
#9419: cpu/msp430: GPIO driver doesn't work properly
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
       supported


Native related issues (3)
-------------------------
#11472: Warnings from objcopy and size (binutils 2.32)
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe


Other platforms related issues (16)
-----------------------------------
#13267: Failing tests on MSP430 (z1)
#13104: boards/hifive1: flashing issue
#13086: Failing tests on FE310 (Hifive1b)
#12854: `pm_reboot()` not working on AVR when compiled with `LTO=1`
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
#12168: pkg/libb2: blake2s doesn't work on AVR
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
        (not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
       boards
#7753: pic32-wifire: race-condition when linking in concurrent build
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
       CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with
       LTO
#4954: chronos: compiling with -O0 breaks


Build system related issues (9)
-------------------------------
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
#10850: Tracking: remove harmful use of `export` in make and immediate
        evaluation
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
       image
#8913: make: use of immediate value of variables before they have their final
       value
#8122: doxygen: riot.css modified by 'make doc'
#6120: Windows AVR Mega development makefile Error
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers


Other issues (28)
-----------------
#13265: tests: compilation of some test applications fail with NDEBUG
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
        esp32-wroom-32
#13120: tests: broken with stdio_rtt if auto_init is disabled
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
        shell after flashing with J-Link
#13015: Quickest start does not build with vagrant
#12732: tests: some tests don't work with `newlib` lock functions.
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
#12105: [TRACKING] sys/shell refactoring.
#11885: arm7: printf() with float/double not working
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
        10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
       static_asserts in the same scope
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5769: Possible problem in scheduler
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
       everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables

Fixed Issues since the last release (2019.10) (29)
=================================================

#13121: tinydtls package has undeclared dependencies
#13109: fe310: xtimer hardfault
#13083: cpu/atmegaxxxx: i2c driver not fully implemented?
#13069: BrokenPipeError when flashing bluepill with BMP
#13055: PKG_SOURCE_LOCAL override is broken
#13030: pkg: always rebuilt when patches are applied
#12920: kconfiglib: only pull when needed
#12905: Potential buffer overflow in dtls-sock
#12859: lwip: multiple sock_udp_send() return ENOMEM. (possible memory leak?)
#12853: sys\net\gnrc\link_layer\gomach: cast error with avg-gcc
#12834: make: piping STDOUT updates `riotbuild.h.in` and leads to full rebuild
#12807: make: rebuild doesn't apply to header files
#12700: Cannot delete files in SD card. And I can't read more bytes than I ever
        wrote in tests/pkg_fatfs.
#12652: samr21-xpro: Can't use `make debug` anymore
#12578: ATmega256RFR2 / ATmega128RFA1: `periph/cpu_id` provided without HW
        support
#12384: CDC-ACM (serial console) loses characters
#12286: Some tests are failing on STM32F7
#12243: ESP32 programming using BUILD_IN_DOCKER still expects esp-idf toolchain
        on host
#12003: bootloaders|tests/riotboot: broken with BUILD_IN_DOCKER and wrong
        flashfile
#11941: cpu/esp32: instabilities in multiheap memory management
#11908: cpu/lpc2387: periph_rtc completely broken
#11423: cpu/kinetis: features provided not properly defined according to series
#8388: xtimer_periodic_wakeup is not interrupt safe
#8107: crypto/ccm: bugs in the implementation of CCM mode
#8052: mips: several issues
#5338: xtimer: xtimer_now() not ISR safe
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
#3366: periph/i2c: handle NACK


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
---
* 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.

RIOT-2019.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 2019.10 release includes:

 - initial support for SUIT firmware updates
 - USB CDC-ACM serial communication
 - complete rewrite of TI CC110x radio driver
 - initial support for IPv6 fragmentation
 - DTLS support in the sock networking stack
 - complete blockwise messaging for gcoap and nanocoap
 - as always, bug fixes and documentation updates

About 460 pull requests, composed of 950 commits, have been merged since the
last release, and about 60 issues have been solved. 57 people contributed with
code in 105 days. Approximately 2000 files have been touched with 129000
insertions and 25000 deletions.


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

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

System libraries
----------------
    + sys/arduino: Added millis()
    * sys/arduino: make ADC feature optional
    + sys/fmt: Added submodule fmt_table for printing tables
    + sys/log: add module for colorized logging
    + sys/riotboot: add initial image digest verification
    * riotboot: define if building the bootloader
    + sys/shell: add heap command
    + sys/shell: cancel current line on CTRL-C.
    * shell/sc_gnrc_ipv6_nib: list and edit authoritative border router (ABR) list
    + sys/suit: initial support for SUIT firmware updates
    * sys: add schedstatistics module to remove dependency on xtimer
    * can: use memarray for pkt and router allocation
    + sys: single interrupt handler thread for interrupts in modules with blocking
      functions (but likely to be removed -- see Deprecations section below)

Networking
----------
    + sys: Add (CoAP) Link Format module
    + sys: add credman (D)TLS credential management module
    + sys: new sock submodule for DTLS
    + gnrc_ipv6_ext_frag: Initial import of IPv6 fragmentation and reassembly
    + gnrc_netif: allow for wait of minimum time between sends
    * gnrc_netif: add netif setter (part of refactoring to a pointer-based
      approach)
    * gnrc_sixlowpan_frag_vrb: add gnrc_sixlowpan_frag_vrb_from_route()
    + gnrc_sixlowpan_frag_rb: move reassembly buffer functions to their own module
    + gcoap: add Blockwise support
    * nanocoap: complete Blockwise support
    + nanocoap: add coap_opt_get_next() to iterate over options
    + nanocoap: add coap_opt_get_opaque() to retrieve option bytes
    * gnrc_tcp: several small improvements

Packages
--------
    * ccn-lite: version bump
    * pkg/libcose: bump version and update crypto support
    * nimble: adapt to nrf51 family
    + nimble: add IP-over-BLE support via netif/GNRC
    * nimble: bump version to 1.2.0
    * nimble/netif: set max conn explicitly
    * semtech-loramac: add uplink_counter get/set functions
    + Cifra: add AES crypto library
    * cayenne-lpp: bump version to 0.1.1
    + wolfSSL pkg addition with examples

Boards
------
    + board: add support for SAMR34-XPRO
    + boards/arduino-mkrwan1300: add initial support (without LoRa)
    * boards: Split off 128KiB version of bl*pill
    + boards/doc: Add a guide to find physical board pins
    + boards: Initial support for board HiFive1B
    - boards/mips-malta: remove board.
    + boards/nrf52: introduce shared dependencies in common/nrf52 and update
      boards
    * boards/nrf52832-mdk: enable I2C and use default configuration
    * board/nucleo-l031k6: Add i2c to periph_conf
    * board/nucleo-l432kc: Implementing I2C for board
    * boards: move CPU/CPU_MODEL definition to Makefile.features
    + boards/p-l496g-cell02: add support
    - boards: Remove support for the Jiminy-Mega256RFR2
    * boards/sam0: refactor ADC_0 into plain ADC
    * boards/slwstk6000b-*: split one board for each module
    * boards/slwstk6000b: move CPU definition to Makefile.features
    + boards/stm32f723e-disco: add initial support
    * boards/stm32: introduce common timer configurations and use them where
      possible
    + boards/stm32l0538-disco: add initial support
    * pic32-wifire: add support for flashing with pic32prog

CPU
---
    + cpu/esp32: lwIP netdev
    * cpu/esp*: various improvements
    * cpu/kinetis: enable HWRNG for k64f
    - cpu/mips32r2_generic: remove cpu.
    * cpu: Moved stdio_init() prior to periph_init() for ARM targets
    * cpu/nrf5x: declare radio_nrfble feat for all nrfs
    + cpu/nrf5x: implement wdt peripheral driver
    + cpu/sam0_common: add hwrng driver
    * cpu/sam0_common/gpio: don't hard-code number of ports
    * cpu/sam0: update doc.txt with new MCU families
    * cpu/saml21: Make Low-Power SRAM available to programs
    + cpu/stm32_common: add watchdog for stm32
    * stm32-common/spi: allow custom pin modes on spi to minimize power
      consumption
    * cpu/stm32f(2|4|7): add riotboot requirements
    * cpu/stm32l1: optimize power consumption
    * stm32l1/vendor: update vendor files to v2.3.0
    * sam0: allow flashing with JLinkExe
    + sam0: Implement watchdog driver
    * cpu/samr30: update vendor files using ASF 3.35.1
    + cpu/efm32: provide periph_uart_mode

Device Drivers
--------------
    + drivers: add mtd wrapper for periph_flashpage
    + drivers/cc110x: Complete rewrite from scratch, and detailed documentation
    * drivers/include/periph/eeprom: Changed uint8_t* to void* in API
    * drivers/periph/i2c: Updated i2c_release() to return void
    + drivers/ph_oem: support for Atlas Scientific pH OEM sensor
    + drivers: support for NXP PCA9685 I2C 16-channel, 12-bit PWM controller
    + usbus: Add CDC-ACM (Serial console) function
    * periph/timer: Fix return codes of timer API
    + can: add ncv7356 SW transceiver driver
    + drivers/lis2dh12: add I2C mode
    + drivers/periph: add doc on power management aspects
    * drivers/mrf24j40: add pseudomodules for MRF24J40MA/B/C/D/E

Build System / Tooling
----------------------
    * dist/tools/pyterm: drop loglevel from output
    * make: docker: delegate bind mounts to the containers
    * Makefile.base: implement relative path linking without 'realpath'
    * Makefile.base: use thin static archives.
    * Makefile.include: add flash-only as dependency of term
    * Makefile.include: do not build HEXFILE by default anymore
    * Makefile.include: require make version 4.
    * makefiles: add support for sysfs gpio debug adapter
    * Makefiles: add support to generate both `.hex` and `.bin` file and add
      FLASHFILE variable
    * makefiles/docker.inc.mk: various improvements
    * makefiles/murdock.inc.mk: change policy to run tests by default
    * make: introduce $(CLEAN)
    + murdock: introduce 'TEST_ON_CI_BLACKLIST'
    * toolchain/cflags: enable dwarf compression (save 50% HDD)
    * edbg: verify before flash
    + ci: add codespell check script for tracking typos
    + Makefile.include: add cleanterm target and use it for tests
    * arduino/sketches: build sketches as a module
    + github: use stale-bot to mark and close PRs without activity

Testing
-------
    + tests: add distinct test app for nrfmin driver
    + tests: add Nordic SoftDevice test app
    * tests/gnrc_ndp: enhance coverage
    * tests/lua_loader: run the test in CI
    * tests/mcuboot: handle building in docker
    * tests/pkg_u8g2: run the test in CI
    * tests: provide test case for malformed IEEE 802.15.4 packets
    * tests/pthread_rwlock: run the test in CI
    * tests: re-enable utf-8 tests on native
    + tests/riotboot: add automatic test
    + tests/sys_crypto: add RFC3610 and NIST SP 800-38C tests
    * tests/test_tools: add a test for the testing tools environment
    * tools/compile_and_test_for_board: allow setting the flash targets
    * tests/gnrc_tcp: provide regression tests for fixed issues


API Changes
========================

```
/* no error handling possible, so no need to return a value */
- int i2c_release(i2c_t dev)
+ void i2c_release(i2c_t dev)

/* return 0 on success, rather than 1; so like timer_init() */
int timer_set(tim_t dev, int channel, unsigned int timeout)
int timer_set_absolute(tim_t dev, int channel, unsigned int value)
int timer_clear(tim_t dev, int channel)

/* implementations already cast the argument to uint8_t* internally, so not
   a significant semantic change */
- size_t eeprom_read(uint32_t pos, uint8_t *data, size_t len)
+ size_t eeprom_read(uint32_t pos, void *data, size_t len)

- size_t eeprom_write(uint32_t pos, const uint8_t *data, size_t len)
+ size_t eeprom_write(uint32_t pos, const void *data, size_t len)

/* now returns CIPHER_ERR_INVALID_KEY_SIZE on invalid keySize */
int aes_init(cipher_context_t *context, const uint8_t *key, uint8_t keySize)

/* add setter for netif of interface header */
+ void gnrc_netif_hdr_set_netif(gnrc_netif_hdr_t *hdr, const gnrc_netif_t *netif)

```

Deprecations
========================

Warnings
--------
net/emb6
net/nhdp
pkg/oonf_api

As the release was finalized, rough consensus was reached on a system event
thread handler (#12474) that likely will remove the interrupt handler thread
(#10555) just introduced with this release.

Removals
--------
net/coap: remove deprecated COAP_CT_... defines


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

Networking related issues
-------------------------
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
        packet buffer
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
#12210: stale border router does not get replaced
#11988: ethos: fails to respond to first message.
#11860: send data with UDP at 10HZ, the program die
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
#11852: scan-build errors found during 2019.07 testing
#11405: nrfmin: communication not possible after multicast ping with no interval
#11212: POSIX sockets + lwIP: bad file descriptor
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
        address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
       configured prefix
#8130: gcoap: can't build with network stacks other than GNRC
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64
       chars
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address

Timer related issues
--------------------
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
       time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8388: xtimer_periodic_wakeup is not interrupt safe
#8251: telosb: xtimer config wrong when running on a tmote sky
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
       _xtimer_now()  and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck
#5338: xtimer: xtimer_now() not ISR safe
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?

Drivers related issues
----------------------
#12445: driver/hts221: Temperature and Humidity readings incorrect
#12371: fail to send data to can bus
#12370: Undocumented uint8_t assumptions in nrf52840 peripherals
#12045: floats and doubles being used all over the place.
#12037: cpu/sam0_common: i2c baudrate calculation fails if CLOCK_CORECLOCK > 51
        MHz
#11388: SD card initialization: timeouts effectively blocking
#11104: STM32: SPI clock not returning to idle state and generating additional
        clock cycles
#11026: Recent changes effectively killed modular board designs
#9419: cpu/msp430: GPIO driver doesn't work properly
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
       supported
#3366: periph/i2c: handle NACK

Native related issues
---------------------
#11472: Warnings from objcopy and size (binutils 2.32)
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe

Other platforms related issues
------------------------------
#12286: Some tests are failing on STM32F7
#12243: ESP32 programming using BUILD_IN_DOCKER still expects esp-idf toolchain
        on host
#12168: pkg/libb2: blake2s doesn't work on AVR
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
#11941: cpu/esp32: instabilities in multiheap memory management
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
        (not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
       boards
#8052: mips: several issues
#7753: pic32-wifire: race-condition when linking in concurrent build
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
       CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with
       LTO
#4954: chronos: compiling with -O0 breaks

Build system related issues
---------------------------
#12003: bootloaders|tests/riotboot: broken with BUILD_IN_DOCKER and wrong
        flashfile
#10850: Tracking: remove harmful use of `export` in make and immediate
        evaluation
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
       image
#8913: make: use of immediate value of variables before they have their final
       value
#8122: doxygen: riot.css modified by 'make doc'
#6120: Windows AVR Mega development makefile Error
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers

Other issues
------------
-none-  tests/pkg_fatfs: vol_idx print overflow on large negative value
#12384: CDC-ACM (serial console) loses characters
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
#12105: [TRACKING] sys/shell refactoring.
#11908: cpu/lpc2387: periph_rtc completely broken
#11885: arm7: printf() with float/double not working
#11423: cpu/kinetis: features provided not properly defined according to series
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
        10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
       static_asserts in the same scope
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8107: crypto/ccm: bugs in the implementation of CCM mode
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5769: Possible problem in scheduler
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
       everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables

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

#12373: Leds not working on some stm32 based boards
#12311: riotboot: irq not enabled after jumping to slot
#12258: Rebootloop when using esp_now on the ESP32
#12247: esp8266: make flash fails
#12244: Flashing on OSX uses /bin/sh instead of bash, resulting in problems with
        echo -n
#12219: genconfigheader doesn't like defines with spaces
#12213: sys/base64: cannot handle zero length buffers
#12138: boards/common/nucleo32/include/arduino_pinmap.h not correct/complete
#12125: i2c_scan not working on ESP32
#12115: nrfmin: driver not included in buildtest (anymore)
#12110: fe310: handle_trap only handles interrupts
#12090: boards/lobaro-lorabox: blindly sets TERMFLAGS
#12089: boards/msba2: blindly sets TERMFLAGS
#12086: gnrc_tcp: option parsing doesn't terminate on all inputs, potential DOS
#12081: gnrc_tcp leaks memory when gnrc_netapi_send fails
#12058: travis: flake8 not running
#12002: usb: fails to respond ro ping when used with 802.15.4
#11980: Sending a packet to the Multicast Address with multiple interfaces
        causes Segmentation fault
#11978: Loramac Example Kernel Panic
#11948: examples: ccn-lite-relay example broken
#11913: drivers/sx127x: Enforces reset pin to be defined
#11910: TCP lwIP Error Connecting Sock Problem on ESP32
#11842: buildtest with BUILD_IN_DOCKER hides host toolchain errors
#11820: stm32l152re: hard-fault unless power-cycled after flash, or depending on
        optimization
#11763: spi_transfer_reg behavior doesn't follow doc
#11691: murdock and tests using `utf-8` characters
#11631: examples / tests: return value of `gnrc_netif_hdr_build()` not checked
        in udp.c
#11603: NATIVEINCLUDES Does not include USEMODULE_INCLUDES from
        log_printfnoformat
#11519: shell/ping6: Incorrect handling of unexpected pongs
#11499: rn2xx3_cmd_append - Not terminating strings
#11447: frdm-k64f: hwrng support broken, applications using RNG crash
#11390: gnrc networking crashes on nRF51dk
#10878: nrfmin can get stuck and never reach RX (while TX works)
#10842: Preemption of malloc on AVR
#10459: make: `make clean all` does not make sense and should be removed
#10351: sam0_common/periph/rtt: Interrupt flags are not correctly cleared
#10345: frdm-k22f cannot flash after certain firmware flashed
#10175: No error returned from aes_init when a key with a bad size is used
#10047: Make warns to expect errors when disabling optional modules
#9589: application/Makefile: environment settings after inclusion of
       Makefile.include
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAM
       R21
#8975: dist/tools/openocd: cannot debug some stlink based boards
#8664: pkg: doxygen documentation is not fully processed
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
#8028: diskio: failed assertion in send_cmd() on lpc2387
#7918: Usage of GCC extension for binary constants
#7875: "Minor" compiling issues found by clang
#7206: native: race-condition in IPC
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#5848: arduino: Race condition in sys/arduino/Makefile.include
#5776: make: Predefining CFLAGS are parsed weirdly
#5218: some use of asm keyword might be missing volatile
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4490: pkg: tlsf: initialize memory pool early
#4470: Hard fault triggered depending on power supply?
#2175: ubjson: valgrind registers "Invalid write of size 4" in unittests
#1891: newlib-nano: Printf formatting does not work properly for some numeric
       types
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)


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
---
* 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.


RIOT-2019.07 - 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.07 release includes a number of new features including many new
boards and cpu, riotboot added to many new and old boards, USB is now available,
BLE improvements, Ethernet on stm32 platforms, as well as many bug fixes and
documentation updates.  Testing has also improved with both On-Target Testing
increasing and now Hardware Assisted Automated Tests being run.

About 300 pull requests with about 659 commits have been merged since the last
release and about 50 issues have been solved. 26 people contributed with code
in 106 days. Approximately 1377 files have been touched with 181993 insertions
and 19668 deletions.


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

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

System libraries
----------------
    + Add OCB encryption mode
    + sys/shell: add loramac shell command
    * Fletcher16: extend with multi-part functions
    + USBUS: Initial work towards an USB stack
    + usbus: Initial simple auto init structure
    * sys: make uart_stdio RX optional
    + sys/event: add event_wait_until()
    + sys/bluetil: add bluetil_addr_from_str()
    + usbus: Add CDC-ECM (Ethernet Control Model) function
    * usbus: simplify adding entry to list
    * sys/stdio_ethos: replace USE_ETHOS_FOR_STDIO by stdio_ethos pseudomodule

Networking
----------
    * gnrc_ipv6_nib: add address from netif to address validation timer
    + netdev_ieee802154: add txpower and page
    + net/lorawan/hdr: add lorawan header helpers
    + ble/nimble: add support for built-in IPSS service
    * pkg/semtech-loramac: rework interaction with the MAC
    * pkg/semtech-loramac: provide basic persistence for MAC state
    * RPL: API update suggestions
    + ipv6_ext: add fragmentation extension definitions
    * net/sock_util: Accept NULL pointers in urlsplit
    + sys/net: add netopt options for lorawan
    * gnrc_tftp: Fix out-of-bounds memory access when comparing modes
    - gnrc_pktbuf: remove gnrc_pktbuf_duplicate_upto
    - gnrc_ipv6: remove obsolete and harmful reception code
    * gnrc_tftp: set port on server init
    + ble/softdevice: add ble_nordic_softdevice feature
    * net/mqttsn: fix client ID length to comply to the standard
    + gnrc_tftp: Add minimum packet length check

Packages
--------
    * pkg/monocypher: bump version to 2.0.5
    * ble/nimble: bump version to 9d4bda2
    * openthread: update to release 20180926
    * minmea: bump version to current master
    + nanocbor: Initial support for the nanocbor package
    * pkg/lua: Make the module searchers conform to the API

Boards
------
    + boards/stm32l0538-disco: add initial support
    + boards/nucleo-l4r5zi: initial basic support
    + boards/particle-{xenon,argon,boron}: add initial support
    * boards/kw41z: add common configuration and use it with existing
      kw41z boards
    + added SPI support for Nucleo-F767ZI
    + boards: Add support for the Arduino-Leonardo
    * boards/nucleof7*: SPI and refactoring
    + boards/stm32: introduce and use new common rtt configuration header
    + boards/stm32l0/l4: add rtt feature
    + boards: add support for i-nucleo-lrwan1 (Arduino-like shield)
    + boards/nrf52840-mdk: added I2C config
    + boards/lsn50: add support for Dragino LSN50 LoRa Sensor Node
    * boards/stm32l0: introduce common clock configuration and apply it to
      related boards
    * boards/b-l072z-lrwan1: use STM32 common i2C configuration
    + Add usbdev feature to Sodaq boards
    + boards/pba-d-01-kw2x: add riotboot support
    + sensebox: add usbdev feature
    + boards/stm32f429i-disc1: add i2c configuration
    + boards/nucleo-l476rg: add riotboot
    + boards/same54-xpro: add riotboot support
    + boards: Add FLASHFILE support
    + boards/nucleo-l476rg: Add DMA support
    + nrf52: Add suspend/resume detection to usbdev
    + nrf5x: Add UART modecfg feature implementation
    + boards/stm32f3: add support for riotboot feature
    + boards/lobaro-lorabox: add sx1272 radio driver dependency
      to netdev_default
    + boards/stm32l4: add riotboot support
    + boards/microbit: add QEMU emulation
    + boards/frdm-kw41z-k64f: add riotboot
    * boards/sltb001a: reset before flashing

CPU
---
    * cpu/esp8266: added/changed helper functions
    + cpu/cc2538: Add periph_uart_mode implementation
    * saml1x: enable pm_layered by default
    + cpu/cc26x0: implement uart_mode()
    + cpu/sam0: add support for SAMD5x/SAME5x
    + sam0_common: add uart modecfg support
    + cpu/stm32f3: add support for flashpage and flashpage_raw
    * cpu/stm32l{1,4}: refactor flashpage numof macros
    * cpu/stm32: optimize stop mode for stm32f*
    * cpu/nrf5x_common: map hwrng to SoC library if SoftDevice is present

Device Drivers
--------------
    + devfs: add /dev/urandom and /dev/hwrng
    * drivers/mrf24j40 : support of NETOPT_LAST_ED_LEVEL
    + drivers/mrf24j40: add external PA/LNA control on MC/MD/ME devices
    * drivers/at86rf2xx: enable NETOPT_RX_END_IRQ and fix RSSI values
    * drivers/adt7310: Replace binary literal with hex literal
    + drivers/ds75lx: add basic driver for temperature sensor
    + drivers/include: add header definition for wdt
    + drivers/at: Add 'at_recv_bytes_until_string' function
    + sx127x: add several NETOPT for GNRC LoRaWAN
    * drivers/sx127x: fix device reset
    + drivers: stm32 eth peripheral driver
    + drivers/periph/gpio_util: add gpio_util_shiftin()

Build System / Tooling
----------------------
    * makefiles/docker: export BOARDS
    + makefiles: add bootloaders to the list of applications
    * Makefile.include: allow overwriting flash-recipe
    * dist/tools/buildsystem_sanity_check: add an export variable check
    * sys/Makefile.include: include riotboot headers when
      FEATURES_REQUIRED=riotboot
    + make: add print-versions helper target
    + make: add LOG_LEVEL to overridable variables
    * riotboot/Makefile.include: increase RIOTBOOT_HDR_LEN for ARMv7*-M
    * dist/tools/build_system_sanity_check: BUG fix errors being ignored
    * boards/common: use Makefile.features
    + make: add termdeps target
    * periph_common: add as dependency to periph drivers
    + nrf52: Add USB peripheral driver
    + makefiles/boards.inc.mk: list boards variables
    + makefiles/app_dirs.inc.mk: target to list supported applications/boards
    + Makefile.features: add a common file for the features parsing
    + Makefile.features: add declarative FEATURES_ variables definition
    + makefiles/utils/variables: add functions to help managing variables
    * Migrate all boards to define FLASHFILE
    * tools/openocd.sh: try to probe the board for real flash address

Testing
-------
    * tests/periph_flashpage: add RWWEE automatic test if hw supports it
    * tests/pthread_tls: allow negative key values
    * tests/gnrc_udp: include `gnrc_pktbuf_cmd` per default
    + tests/periph_hwrng: add automated python test
    * tests/periph_timer: include kw41z boards in low-power timer boards
    * tests/pkg_c25519: increase timeout for arduino-mega2560
    + tests/xtimer_usleep: fail with negative offsets
    + unittests: add tsrb tests
    + tests/stdin: add non regression test for stdin module
    + tests/xtimer_mutex_lock_timeout: add simple case test
    + Add NimBLE heart rate sensor example (GATT notifications)
    * tests/driver_rn2xx3: fix invalid element index for txmode
    * tests/pkg_semtech-loramac: don't init the mac from main
    * tests/devfs: move tests-devfs out of unittests
    + examples/lorawan: fix semtech_loramac_send TX ret code
    * tests/unittests: split remaining packages tests to different test
                       directory

API Changes
========================
- uart_stdio RX is now optional
- CPU_MODEL declared in boards/Makefile.features


```c
- void isrpipe_init(isrpipe_t *isrpipe, char *buf, size_t bufsize);
+ void isrpipe_init(isrpipe_t *isrpipe, uint8_t *buf, size_t bufsize);

- int isrpipe_write_one(isrpipe_t *isrpipe, char c);
+ int isrpipe_write_one(isrpipe_t *isrpipe, uint8_t c);

- int isrpipe_read(isrpipe_t *isrpipe, char *buf, size_t count);
+ int isrpipe_read(isrpipe_t *isrpipe, uint8_t *buf, size_t count);

- int isrpipe_read_timeout(isrpipe_t *isrpipe, char *buf, size_t count,\
                           int32_t timeout);
+ int isrpipe_read_timeout(isrpipe_t *isrpipe, uint8_t *buf, size_t count,\
                           uint32_t timeout);

- int isrpipe_read_all_timeout(isrpipe_t *isrpipe, char *buf, size_t count,\
                               uint32_t timeout);
+ int isrpipe_read_all_timeout(isrpipe_t *isrpipe, uint8_t *buf, size_t count,\
                               uint32_t timeout);

typedef struct tsrb {
...
-    char *buf;                  /**< Buffer to operate on. */
+    uint8_t *buf;               /**< Buffer to operate on. */
...
} tsrb_t

- int tsrb_get(tsrb_t *rb, char *dst, size_t n);
+ int tsrb_get(tsrb_t *rb, uint8_t *dst, size_t n);

- int tsrb_add_one(tsrb_t *rb, char c);
+ int tsrb_add_one(tsrb_t *rb, uint8_t c);

- int tsrb_add(tsrb_t *rb, const char *src, size_t n);
+ int tsrb_add(tsrb_t *rb, const uint8_t *src, size_t n);

typedef struct {
...
-   uint16_t (*calc_rank)(gnrc_rpl_parent_t *parent, uint16_t base_rank);
-   gnrc_rpl_parent_t *(*which_parent)(gnrc_rpl_parent_t *, gnrc_rpl_parent_t *);
+  uint16_t (*calc_rank)(gnrc_rpl_dodag_t *dodag, uint16_t base_rank);

-   void (*reset)(gnrc_rpl_dodag_t *);    /**< resets the OF */
+  void (*reset)(gnrc_rpl_dodag_t *dodag);
...
-   void (*init)(void);  /**< OF specific init function */
+  void (*init)(gnrc_rpl_dodag_t *dodag);
} gnrc_rpl_of_t;

- thread_state_t
+ thread_status_t

- void sched_set_status(thread_t *process, thread_state_t status);
+ void sched_set_status(thread_t *process, thread_status_t status);

struct _thread {
...
-   thread_state_t status;
+  thread_status_t status;
...
}

- bool mrf24j40_cca(mrf24j40_t *dev);
+ bool mrf24j40_cca(mrf24j40_t *dev, int8_t *rssi);
```

Deprecations
========================

Warnings
--------
`gnrc_tftp` module
`ubjson` module

Removals
--------
`gcoap_req_send()` replaced with `gcoap_req_send2()->gcoap_req_send2()`

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

Networking related issues
-------------------------
#11860: send data with UDP at 10HZ, the program die
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
#11519: shell/ping6: Incorrect handling of unexpected pongs
#11405: nrfmin: communication not possible after multicast ping with no interval
#11390: gnrc networking crashes on nRF51dk
#11212: POSIX sockets + lwIP: bad file descriptor
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
        address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
       configured prefix
#8130: gcoap: can't build with network stacks other than GNRC
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#6018: nRF52 gnrc 6lowpan ble memory leak
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64
       chars
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address

Timer related issues
--------------------
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
       time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8388: xtimer_periodic_wakeup is not interrupt safe
#8251: telosb: xtimer config wrong when running on a tmote sky
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
       _xtimer_now()  and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck
#5338: xtimer: xtimer_now() not ISR safe
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?

Drivers related issues
----------------------
#11763: spi_transfer_reg behavior doesn't follow doc
#11104: STM32: SPI clock not returning to idle state and generating additional
        clock cycles
#10620: rn2xx3: rn2xx3_write_cmd_no_wait can't be correct
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAM
       R21
#9419: cpu/msp430: GPIO driver doesn't work properly
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#8028: diskio: failed assertion in send_cmd() on lpc2387
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
       supported
#3366: periph/i2c: handle NACK

Native related issues
---------------------
#11603: NATIVEINCLUDES Does not include USEMODULE_INCLUDES from
        log_printfnoformat
#7206: native: race-condition in IPC
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe

Other platforms related issues
------------------------------
#10842: Preemption of malloc on AVR
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
        (not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
       boards
#8052: mips: several issues
#7753: pic32-wifire: race-condition when linking in concurrent build
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
       CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with
       LTO
#4954: chronos: compiling with -O0 breaks
#1891: newlib-nano: Printf formatting does not work properly for some numeric
       types

Build system related issues
---------------------------
#10857: frdm-kw41z: requires newer flasher than openocd `0.10` from `ubuntu-
        bionic`.
#10850: Tracking: remove harmful use of `export` in make and immediate
        evaluation
#10459: make: `make clean all` does not make sense and should be removed
#10047: Make warns to expect errors when disabling optional modules
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
       image
#9589: application/Makefile: environment settings after inclusion of
       Makefile.include
#8913: make: use of immediate value of variables before they have their final
       value
#8122: doxygen: riot.css modified by 'make doc'
#7918: Usage of GCC extension for binary constants
#6120: Windows AVR Mega development makefile Error
#5848: arduino: Race condition in sys/arduino/Makefile.include
#5776: make: Predefining CFLAGS are parsed weirdly
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
* buildtest with BUILD_IN_DOCKER hides host toolchain errors

Other issues
------------
#11861: msba2: floating point tests fail
#11842: buildtest with BUILD_IN_DOCKER hides host toolchain errors
#11820: stm32l152re: hard-fault unless power-cycled after flash, or depending on
        optimization
#11691: murdock and tests using `utf-8` characters
#11631: examples / tests: return value of `gnrc_netif_hdr_build()` not checked
        in udp.c
#11447: frdm-k64f: hwrng support broken, applications using RNG crash
#11423: cpu/kinetis: features provided not properly defined according to series
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10175: No error returned from aes_init when a key with a bad size is used
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
        10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
       static_asserts in the same scope
#8975: dist/tools/openocd: cannot debug some stlink based boards
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8107: crypto/ccm: bugs in the implementation of CCM mode
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5218: some use of asm keyword might be missing volatile
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
       everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)

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

#11626: tests/pkg_semtech-loramac: hardfault on lobaro-lorabox
#11605: ruuvitag: Shell test fails without auto_init
#11530: pkg/semtech_loramac: deadlock with UNCONFIRMED messages
#11525: API change, uart input not working anymore on previously working setups
#11508: core: thread_state_t makes RIOT not compilable on MAC OSX
#11498: Cannot compile OpenThread example without the CLI-APP.
#11494: emcute_mqttsn example setup contains invalid steps
#11344: RTT: `make test` not working
#11274: riotboot_flashwrite: Failure on the nrf52
#11091: gnrc_minimal on nRF52DK do not work anymore
#11059: board/sltb001a: cannot flash with JLink when 'hello-world' is running
        and no error
#11043: boards/z1: tests/rng resets board
#10878: nrfmin can get stuck and never reach RX (while TX works)
#10800: iotlab-m3: thread tests failing
#10559: I2C API write_regs does not fit implementation
#10468: Tinycryt upstream rewrote history in master branch
#8653: msba2: default example fails on assert

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!
A special thanks to @fjmolinas, @leandrolanzieri, @cladmi, @jia200x, @miri64
for helping run the release tests

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.

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
-------------------------
#11295: RFC 3306 Unicast-Prefix-based-IPv6 Multicast with BorderRouter
#11212: POSIX TCP API: bad file descriptor
#11091: gnrc_minimal on nRF52DK do not work anymore
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10927: gnrc_tftp: Missing minimum length check
#10878: nrfmin can get stuck and never reach RX (while TX works)
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
        address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
       configured prefix
#8130: gcoap: can't build with network stacks other than GNRC
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#6018: nRF52 gnrc 6lowpan ble memory leak
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address

Timer related issues
--------------------
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall time
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8388: xtimer_periodic_wakeup is not interrupt safe
#8251: telosb: xtimer config wrong when running on a tmote sky
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
       _xtimer_now()  and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck
#5338: xtimer: xtimer_now() not ISR safe
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?

Drivers related issues
----------------------
#11405: nrfmin: communication not possible after multicast ping with no interval
#10559: I2C API write_regs does not fit implementation
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAMR21
#9419: cpu/msp430: GPIO driver doesn't work properly
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#8028: diskio: failed assertion in send_cmd() on lpc2387
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
       supported
#3366: periph/i2c: handle NACK

Native related issues
---------------------
#7206: native: race-condition in IPC
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe

Other platform related issues
-----------------------------
#11447: frdm-k64f: hwrng support broken, applications using RNG crash
#11354: ESP32: `write(STDIO_FILENO, ...)` not working
#11104: STM32: SPI clock not returning to idle state and generating additional
        clock cycles
#11059: board/sltb001a: cannot flash with JLink when 'hello-world' is running
        and no error
#11043: boards/z1: tests/rng resets board
#10979: Missing SPI pre-scalars for STM32F7
#10842: Preemption of malloc on AVR
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
        (not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
       boards
#8052: mips: several issues
#7753: pic32-wifire: race-condition when linking in concurrent build
#7667: sam0 flashpage_write issue
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with LTO
#4954: chronos: compiling with -O0 breaks
#4612: pkg: TLSF does not build for 16 bit platforms
#1891: newlib-nano: Printf formatting does not work properly for some numeric
       types

Build system related issues
---------------------------
#11343: RTT: `make term` without `make debug`
#11344: RTT: `make test` not working
#11179: stm32l4: can't flash bin files
#10857: frdm-kw41z: error with `SLOT_LEN` handling and flasher not working
#10850: Tracking: remove harmfull use of `export` in make and immediate
        evaluation
#10459: make: `make clean all` does not make sense and should be removed
#10047: Make warns to expect errors when disabling optional modules
#9913: Dependencies processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
       image
#9589: application/Makefile: environment settings after inclusion of
       Makefile.include
#8913: make: use of immediate value of variables before they have their final
       value
#8122: doxygen: riot.css modified by 'make doc'
#7918: Usage of GCC extension for binary constants
#6120: Windows AVR Mega development makefile Error
#5848: arduino: Race condition in sys/arduino/Makefile.include
#5776: make: Predefining CFLAGS are parsed weirdly
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers

Other issues
------------
#11274: riotboot_flashwrite: Failure on the nrf52
#11243: sys/riotboot: documentation issues
#10800: iotlab-m3: thread tests failing
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10468: Tinycryt upstream rewrote history in master branch
#10175: No error returned from aes_init when a key with a bad size is used
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
       static_asserts in the same scope
#8975: dist/tools/openocd: cannot debug some stlink based boards
#8653: msba2: default example fails on assert
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8107: crypto/ccm: bugs in the implementation of CCM mode
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6874: SAMD21: possible CMSIS bug ?
#6533: tests/lwip target board for python test is hardcoded to native
#5218: some use of asm keyword might be missing volatile
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
       everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)

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

#11163: netdev: iolist not checked for empty elements on send
#11162: nrfmin is broken when DEVELHELP is activated
#11151: drivers/l3g42000d: scale has wrong data type
#11147: 6LoWPAN over BLE: Device not pingable
#11113: RPL global DODAG repair
#11101: `nib route add` for routing to Raspberry Pi gateway not working
#11052: tests/bloom_bytes does not print float
#11051: NimBLE port should be always building all NimBLE files
#11029: Default example does not work on stm32f4discovery
#11013: hts221: wrong bit for "one-shot enable" register
#10956: tests/gnrc_tcp_*: #2 not working on 6Lo-based boards
#10972: examples/nanocoap_server hangs after > 256 bytes packet
#10463: stm32f4discovery isn't visible as ttyUSB after flashing with tests/leds
#10427: doxygen: *_params.h files are excluded
#10341: driver_my9221 prevents further flashing of nucleo-l073rz
#10294: tests/leds doesn't work on Nucleo-F401RE
#10206: Lua_basic example doesn't flash in b-l072z-lrwan1
#9387: shell `ping6` doesn't display duplicate packages
#8663: /sys/random/seed: why not use hwrng if available?
#8523: tools: need backport script
#6123: gnrc: crash with (excessive) traffic in native


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.

RIOT-2019.01 - 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.01 release includes a number of new features including DMA support on
all STM32 boards, WiFi with IP connectivity on ESP32 and ESP8266, and riotboot,
a simple bootloader supporting multiple firmware slots, compatible with most Arm
Cortex-M boards supported by RIOT. Support for several new boards and new sensors
was added, as well as for the new CPU architecture Armv8-M (Cortex-M23). Last
but not least, this release contains a number of bug fixes and enhances test
automation.

About 387 pull requests with about 912 commits have been merged since the last
release and about 36 issues have been solved. 54 people contributed with code
in 110 days. Approximately 1554 files have been touched with 176241 insertions
and 50593 deletions.


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

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

System libraries
----------------
    + riotboot: initial implementation of a bootloader with multi-slots
      and firmware header management
    + base64: add size estimation functions

Networking
----------
    * gnrc_ipv6: send IPv6 error messages on error
    * gnrc_ipv6: refactor and improve IPv6 message reception
    * gnrc_netif: refactor for easier device type integration
    + pkg_semtech-loramac: added timer calibation
    * nanocoap: fix confirmable retry countdown

Packages
--------
    * gecko_sdk: bumped to version 2.5

Boards
------
    + added support for Kinetic USB-KW41Z
    + added support for Makerdiary nrf52840-mdk
    + added support for Microchip saml10-xpro and saml11-xpro
    + added support for Nordic nrf51-dk
    + added support for Phytec phynode-kw41z
    + added support for SODAQ SARA AFF
    * b-l475e-iot01a: provide RTC and RTT features
    * stm32: factorize common I2C configurations
    * nucleo-l433rc/nucleo-f072rb/nucleo-f767zi: provide I2C configuration
    * nucleo-l433rc: use LPUART (USB port) as stdio
    * nucleo-l496zg: use LPUART (USB port) as stdio
    * frdm-k64f: updated LPTMR configuration
    * sensebox_samd21: add MTD configuration
    * nrf51: factorize files and configurations of nrf51 based boards
    * nrf52: better factorize files and configurations of nrf52 based boards

CPU
---
    + cortexm-common: add FPU support for cortex-m4f and cortex-m7
    + cortexm-common: added support for cortex-m23
    + added support for saml10 and saml11
    + efm32: added support for 32-bit timers
    + esp32: added esp_wifi netdev driver
    + esp8266: added esp_wifi netdev driver
    + stm32-common: add DMA support for all STM32
    + stm32-common: add LPUART driver
    + atmega-common: Add PUF SRAM feature
    * nrf5x: added management of multiple exti pins in gpio driver
    * nrf5x: rework UART driver to allow using multiple UARTs on nrf52840

Device Drivers
--------------
    + added support for CCS811 gas sensor
    + added support for SHT3x temperature and humidity sensor
    + added support for TPS6274x step-down dcdc converter
    * periph_eeprom: added clear and erase functions

Build System / Tooling
----------------------
    + added support for PyOCD programmer
    + added compile_and_test_for_board script + checks
    * updated EDBG version
    * testbed-support: added frdm-kw41z, pba-d-01-kw2x, samr30-xpro to
      supported archis
    * pyterm: correctly catch exception when serial port is busy
    * print_toolchain_version: added 'make' version

Testing
-------
    + periph_dma: added automatic test script
    + periph_rtc: added automatic test script


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

Networking related issues
-------------------------
#10969: net: netdev_driver_t::send() doc unclear
#10956: tests/gnrc_tcp_*: #2 not working on 6Lo-based boards
#10927: gnrc_tftp: Missing minimum length check
#10878: nrfmin can get stuck and never reach RX (while TX works)
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
        address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8859: cc1101 work instability
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
       configured prefix
#8130: gcoap: can't build with network stacks other than GNRC
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#6018: nRF52 gnrc 6lowpan ble memory leak
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#5849: pkg: ccn-lite: rework convenience functions
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address

Timer related issues
--------------------
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall time
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8388: xtimer_periodic_wakeup is not interrupt safe
#8251: telosb: xtimer config wrong when running on a tmote sky
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
       _xtimer_now()  and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck
#5338: xtimer: xtimer_now() not ISR safe
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?

Drivers related issues
----------------------
#10559: I2C API write_regs does not fit implementation
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAMR21
#9419: cpu/msp430: GPIO driver doesn't work properly
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#8028: diskio: failed assertion in send_cmd() on lpc2387
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
       supported
#3366: periph/i2c: handle NACK

Native related issues
---------------------
#10972: examples/nanocoap_server hangs after > 256 bytes packet
#8444: release test 2018.01 RC1: tests/thread_priority_inversion, hangup
#7206: native: race-condition in IPC
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe

Other platforms related issues
------------------------------
#10842: Preemption of malloc on AVR
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
        (not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
       boards
#8052: mips: several issues
#7753: pic32-wifire: race-condition when linking in concurrent build
#7667: sam0 flashpage_write issue
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with LTO
#4954: chronos: compiling with -O0 breaks
#4612: pkg: TLSF does not build for 16 bit platforms
#1891: newlib-nano: Printf formatting does not work properly for some numeric
       types

Build system related issues
---------------------------
#10857: frdm-kw41z: error with `SLOT_LEN` handling and flasher not working
#10850: Tracking: remove harmfull use of `export` in make and immediate
        evaluation
#10459: make: `make clean all` does not make sense and should be removed
#10047: Make warns to expect errors when disabling optional modules
#9913: Dependencies processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
       image
#9589: application/Makefile: environment settings after inclusion of
       Makefile.include
#8913: make: use of immediate value of variables before they have their final
       value
#8122: doxygen: riot.css modified by 'make doc'
#7918: Usage of GCC extension for binary constants
#6120: Windows AVR Mega development makefile Error
#5848: arduino: Race condition in sys/arduino/Makefile.include
#5776: make: Predefining CFLAGS are parsed weirdly
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers

Other issues
------------
#10800: iotlab-m3: thread tests failing
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10468: Tinycryt upstream rewrote history in master branch
#10463: stm32f4discovery isn't visible as ttyUSB after flashing with tests/leds
#10341: driver_my9221 prevents further flashing of nucleo-l073rz
#10206: Lua_basic example doesn't flash in b-l072z-lrwan1
#10175: No error returned from aes_init when a key with a bad size is used
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
       static_asserts in the same scope
#8975: dist/tools/openocd: cannot debug some stlink based boards
#8653: msba2: default example fails on assert
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8107: crypto/ccm: bugs in the implementation of CCM mode
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6874: SAMD21: possible CMSIS bug ?
#6533: tests/lwip target board for python test is hardcoded to native
#5218: some use of asm keyword might be missing volatile
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
       everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
#9: Manual calibration of the CC1100

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

#10947: tests/gnrc_tcp_*: not working on 6Lo-based boards
#10945: net/gnrc_tcp: timeout of connection establishment
#10881: core: `msg_receive()` on native sometimes returns without `msg` being
        re-set
#10875: gnrc_ipv6: crash on heavy network load on native
#10827: boards/nrf51dk: multiple external interrupts not working
#10768: Build is failing with latest RIOT on windows
#10761: iotlab-m3: poor ping6 performance and a possibly broken 6lo
        fragmentation?
#10753: nanocoap: options buffer overflow
#10739: sock_dns: Security issues (including remote code execution)
#10723: gnrc_ipv6_nib: 6Lo-ND EUI-64 checks not portable
#10701: gnrc: packet space in gnrc packet buffer is not released on very heavy
        load
#10672: gnrc: runs full on very heavy load
#10634: pyterm: weird behaviour with long lines.
#10628: Can't read data from BH1750 senseor using STM32F3Discovery
#10614: DEBUG stops shell if used in i2c init
#10611: Board z1: BTN0_IN is not defined
#10598: edbg: not compiling on OS X
#10594: cpu/esp32: esp_eth is not working correctly for packet size > 255 octets
#10531: ESP-now: ESP_NOW_MAX_SIZE < IPv6 minimum MTU?
#10517: Arduino UART cannot set 16 bit baudrate
#10508: tracking issue: bionic compile errors
#10432: ESP32 toolchain linked to in doc.txt is broken
#10419: gnrc_icmpv6_error: Able to bounce up to 64 ICMPv6 error messages between
        2 instances
#10395: stm32f103xx: I2C has no internal pullups and af config
#10353: cpu/nrf5x_common: hwrng hangs
#10352: lorawan-example not working
#10287: docker: docker cannot access /etc/localtime on OS X
#10091: Murdock fails on tests/xtimer_usleep on native
#10079: Codacy: several problems (false positives)
#10068: sam0_common flash write not working at least for SAML21J18B
#9889: ethos: desync between ethos::last_framesize and tsrb content possible
#9619: ATmega platform issues
#9248: __libc_init_array() crash (newlib)
#9191: Logic errors in nanocoap_get()
#7877: SPI connection can't read 16 bit size register.
#6123: gnrc: crash with (excessive) traffic in native


You can get the complete detail in the git history and in the release milestone
[Release 2019.01](https://github.com/RIOT-OS/RIOT/milestone/25?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.


RIOT-2018.10.1 - Release Notes
==============================
This is a bug fixing release for the RIOT 2018.10 release.
The following bugs were fixed:

#10757: sock_dns: fix out-of-bound errors
    - sock_dns: remove out-of-place puts() call
    - sock_dns: remove some magic numbers
    - sock_dns: fix out-of-bound errors

#10759: 2018.10 compile fixes
    - pkg/jerryscript: disable -Wconversion for llvm
    - pkg/nimble: disable -Waddress-of-packed-member for llvm
    - pkg/tinycrypt: update commit hash after upstream rewrote history

#10285: at86rf2xx: release framebuffer on recv with (len > 0) && (buf == NULL)
    - at86rf2xx: correct framebuffer release


RIOT-2018.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 2018.10 release includes new features, like CoAP Resource Directory and
Block2, ESP32 support, rework of I2C interface, EEPROM registry,
Full and Minimal Thread Devices support in OpenThread and compliance of
LoRaWAN 1.0.2 (ABP counters stored in EEPROM). Several boards were introduced.

During the last release the board documentation was migrated from the wiki to
the [RIOT API documentation](https://doc.riot-os.org) to improve the
maintenance of these entries and provide a better user experience when
browsing the documentation. There were also some efforts in grouping some
modules to make them easier to access in the documentation.

There were also some efforts on refactoring, test improvements and bug fixes.

About 392 pull requests with about 914 commits have been merged since the last
release and about 20 issues have been solved. 57 people contributed with code
in 100 days. Approximately 2184 files have been touched with 211964 insertions
and 34806 deletions.


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

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

Community
---------
    + Initial RIOT developer memo + directory structure
    + GitHub feature request template
    + 'testing' in Github PR template
    * Rework and documented labeling system
    * Rework MAINTAINING.md document
    * Rework CONTRIBUTING.md document

Documentation
-------------
    + Add boards `slstk3401a`, `slstk3402a` and `sltb001a`
    + Migrate boards documentation to Doxygen
    + New groups under `sys` (serialization, math, memory management, hashes)
    + `arduino` docs for analog map
    + nanocoap
    + tinycbor pkg
    * Drivers with `saul` support are now also part of the `drivers_saul` group

Core
----
    + Architecture dependent thread information
    * Fix `byteorder` bebuftohs() / htobebufs() on big endian
    * Make `pthread` compilable with g++

System libraries
----------------
    + Add EEPROM registration support
    + Add `arduino` time functions micros() and delayMicroseconds()
    + Add `fmt` hex byte
    + ecc: add golay(24,12) half rate and repetition code
    + tsrb: add drop function
    * Change `base64` api (const + void*)
    * Configure Arduino serial port at compile time
    * Move `hamming256` module to generic `ecc`
    * sys/auto_init: Fixed initialization of `sht1x`
    * crypto/ccm: fix auth_data_len check
    - Remove `cbor` module

Networking
----------
    + cord_ep: Full CoRE Resource Directory endpoint support
    + nanocoap: add server-side Block2 support
    * emb6_sock_udp: copy receive remote correctly
    * ethos: Add drop frame case to recv function
    * examples/gcoap: fix post/put without port number
    * gnrc/6lo: set more data flag on all but last fragment
    * gnrc_ipv6_nib: always configure 802.15.4 long address with IPv6 included
    * gnrc_ipv6_nib: fallback to SLAAC if ARO is ignored by upstream
    * gnrc_ipv6_nib: make automatic NDP packet emission (NS/RS) configurable
    * gnrc_netif: fix l2addr_len > 0, but no l2addr edge-case
    * gnrc_netif: reapply event flags on device reset
    * gnrc_netif_ieee802154: set FCF Frame Pending when more data is expected
    * gnrc_sixlowpan_frag: add page context to reassembly buffer
    * gnrc_sixlowpan: refactored for better interchangability of sub-components
    * gnrc_sock_[udp|ip]: read return value for _recv after release
    * nanocoap: allow empty uri/location path option

Packages
--------
    + libb2: add support (BLAKE2)
    + libhydrogen: add support
    + lora_serialization: LoRa Serialization format support
    + openthread: FTD and MTD support
    + semtech-loramac: add support for RU864 ISM band
    * ccn-lite: update and adapt shell commands
    * jerryscript: bump version
    * littlefs: bump version to v1.6.20
    * lwip: bump to version 2.1.0
    * semtech-loramac: bump to version 4.4.1
    * semtech-loramac: fix uninitialized datarate
    * semtech-loramac: lorawan support is not considered experimental anymore
    * semtech-loramac: use periph_eeprom to store lorawan configuration
    * tiny-asn1: bump version
    * tinycbor: Version bump to 0.5.2

Boards
------
    + i2c configuration for `nucleo-f070`, `nucleo-f091rc`,
      `nucleo-f722ze`, `nucleo-l476rg`, `slstk3402a`.
    + second i2c configuration for `b-l475e-iot01a`
    + esp32-mh-et-live-minikit: add support
    + esp32-olimex-evb: add support
    + esp32-wemos-lolin-d32-pro: add support
    + esp32-wroom-32: add support
    + esp32-wrover-kit: add support
    + esp8266-esp-12x: add support
    + esp8266-olimex-mod: add support
    + esp8266-sparkfun-mod: add support
    + firefly: add support for Zolertia FireFly
    + lobaro_lorabox: add support
    + openmoteb-cc2538: add support
    + samr30-xpro: add support
    + sensebox: add support for `sensebox` and `sensebox_samd21`
    + sodaq_one: add support
    + ublox-c030-u201: add support
    * frdm-k64f: update ADC and `saul` configuration
    * nrf52xxxdk: make reset pin work
    * stm32mindev: rename to `blackpill`

CPU
---
    + efm32: add support for enabling/disabling DC-DC converter
    + esp32: add initial support
    + esp8266: add initial support
    + i2c: introduce and adapt new I2C interface
    + kinetis: add ADC hardware averaging configuration
    + nrf52: add PWM support
    + samr30: add initial support
    + stm32l4: add support for periph_flashpage
    * Add PUF SRAM feature in `nrf5x` and `stm32` families
    * atmega_common: allow defining ROM and RAM length for link
    * cortexm_common/ldscript: simplify generation of firmwares in section of
      the ROM
    * nrf5x_common: fix `gpio` port 1 functionality
    * stm32-common: unified support for periph_i2c. I2C is now supported by
      all stm32 families (F0/1/2/3/4/7, L0/1/4)
    * stm32_common: fix source selection declared as module dependencies

Device Drivers
--------------
    + drivers/ds18: add limited support for Maxim Integrated 1-Wire temperature
      sensor
    + drivers/mma7660: initial support
    + drivers/srf04: add range finder sensor
    + drivers/sx127x: add initial support for multi interrupt pins
    + drivers/tsl4531x: add support for visible light intensity sensor
    + drivers/vcnl40x10: add initial support
    * drivers/*: unify driver initialization parameters scheme
    * drivers/adxl345: fix driver
    * drivers/at86rf2xx: add smart idle listening feature
    * drivers/kw2xrf: Fix ack flag handling
    * drivers/mtd_spi_nor: add 4-byte address flash support
    * drivers/periph_i2c: rework API
    * drivers/sx127x: return correct state when device is receiving

Build System / Tooling
----------------------
    + Makefile.include: Include VERSION file for release
    + dist/tools: add lazysponge tool
    + docker: Use system GIT_CACHE_DIR if available
    + docker: allow using sudo for docker
    + make: introduce periph_gpio_irq
    + make: process include and dep for external modules
    + makefile.iotlab.single.inc.mk: add new supported nodes
    * cflags: use gnu99 only if nothing else is specified (mips, msp430, native)
    * docker/Makefile.include: Fix BUILDRELPATH when RIOTPROJECT is CURDIR
    * docker: export RIOT_CI_BUILD_to docker
    * docker: handle building in git worktree
    * edbg.inc.mk: allow flashing with an offset in rom without erasing all ROM
    * make: add APPDIR to info-build target
    * make: provide support for listing supported and blacklisting toolchains
    * make: unify app folder search (examples/*, tests/*, ...)
    * makefiles/buildtests.inc.mk: fix 'clean-intermediates' not cleaning
    * makefiles/docker.inc.mk: handle building in git worktree
    * openocd.sh: allow flashing binary files without configuration
    * pkg.mk: do not use user identity when applying patches
    * pyterm: handle ctrl+d shortcut nicely

Testing
-------
    + automatic compile tests for LLVM for selected boards
    + shellcheck: add CI check script
    + tests/bench_runtime_coreapis: add benchmark for selected core functions
    + tests/bench_sizeof_coretypes: initial include
    + tests/periph_uart: add automated testing script
    + tests/periph_eeprom: add automated testing script
    + tests/periph_flashpage: add automated testing script
    * murdock: also compile with LLVM/clang
    * murdock: add hook support
    + tests/arduino: add automatic test for arduino module
    + tests/libc_newlib: add test for newlib-nano inclusion
    + tests/periph_uart: add automated testing script
    + tests/gnrc_netif: add test for ULA source selection
    + tests/periph_gpio: add interrupt enable disable command
    + sock_util: Add unittest and fix detected issues


Known Issues
============

Networking related issues
-------------------------

#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up rooting
#5051: Forwarding a packet back to its link layer source should not be allowed
#5230: gnrc_ipv6: multicast packes are not dispatched to the upper layers
#5748: gnrc: nodes crashing with too small packet buffer
#6123: gnrc: crash with (excessive) traffic in native
#7474: 6lo: gnrc fragmentation expects driver to block on TX
#7737: pkg: libcoap is partially broken and outdated
#8086: gnrc_rpl_p2p: not compiling
#8130: gcoap: can't build with network stacks other than gnrc
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
       configured prefix
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#9656: gnrc/netif: various problems after resetting interface a second time
#9889: ethos: desync between ethos::last_framesize and tsrb content possible
#10370: gomach: Resetting netif with cli doesn't return

Timer related issues
--------------------

#5103: xtimer: weird behavior of tests/xtimer_drift
#5338: xtimer: xtimer_now() is not ISR safe
#6052: tests: xtimer_drift_gets_stuck
#7114: xtimer: adds items to the wrong list if the timer overflows between
       _xtimer_now() and irq_disable()
#7347: xtimer_usleep stuck for small values
#8251: telosb: timer config wrong when running o a tmote sky
#9052: misc issues with tests/trickle
#10073: xtimer_usleep wrong delay time

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

#495: native not float safe
#5796 native: tlsf: early malloc will lead to a crash
#6442: cpu/native: timer interrupt issue
#7206: native: race-condition in IPC

Other platforms related issues
------------------------------

#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4612: pkg: TLSF does not build for 16 bit platforms
#4872: at86rf2xx: Simultaneous use of different transceiver types is not
       supported
#4954: chronos: compiling with -O0 breaks
#4866: periph: GPIO drivers are not thread tafe
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#5218: some use of asm keyword might be missing volatile
#5486: at86rf2xx: lost interrupts
#5774: cpu: cortexm_common: context switching code breaks when compiling with
       LTO
#5848: arduino: Race condition in sys/arduino/Makefile.include
#6018: nRF52: gnrc 6lowpan ble memory leak
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
       CS
#6874: SAMD21: possible CMSIS bug
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#7667: sam0 flashpage_write issues
#8028: diskio: failed assertion in send_cmd() on lpc2387
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8444: tests/thread_priority_inversion hangup
#9619: ATmega platform issues.
#9882: sys/tsrb is not thread safe on AVR
#10338: xbee: setting PAN ID sometimes fails
#10341: driver_my9221 prevents further flashing of nucleo-l073rz
#10345: frdm-k22f cannot flash after certain firmware flashed
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
#10353: cpu/nrf5x_common: hwrng hangs

Other issues
------------

#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
#4488: making the newlib thread-safe
#5561: C++11 extensions in header files
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX+SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#6120: Windows AVR Mega development makefile Error
#7220: sys/fmt: Missing tests for fmt_float,fmt_lpad
#7877: SPI connection can't read 16bit size register
#8107: crypto/ccm: bugs in the implementation of CCM mode
#9548: Many i2c bugs found with the i2c api rework but did not reach the release
#9709: examples: failed assertion in dtls-echo example
#9742: `buildtest` uses wrong build directory
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10
#10175: No error returned from aes_init when a key with a bad size is used
#10206: Lua_basic example doesn't flash in b-l072z-lrwan1
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10287: docker: docker cannot access /etc/localtime on OS X
#10367: sam0.inc.mk: Did not find a device with serial ATML21xxxxxxxx

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

#9573: pkg/lwip: assert on samr21-xpro
#9584: drivers/cc2420: add netopt NETOPT_MAX_PACKET_SIZE
#6437: periph/spi: Leftovers from SPI rework in #4780
#6650: GPIO Port shift in cc2538 is inconsistent
#6836: Issuing a reboot on ATmega328p makes the board loop-reboot
#7846: stm32f1: I2C read functions return bogus values with unconnected devices
#9616: at86rf2xx: can not correctly set channel after `NETOPT_STATE_RESET`


You can get the complete detail in the git history and in the release milestone
[Release 2018.10](https://github.com/RIOT-OS/RIOT/milestone/24?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.



RIOT-2018.07 - 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 2018.07 release includes new features, like NimBLE (ble stack),
a MQTT-SN client, SHA-1 based PRNG, an UUID implementation. The RISC-V CPU
architecture support used by the hifive1 board.
Effort was done on refactoring, documentation, test improvements and bug fixes.

During the last release, maintainers contributed by running the automated test
suites on their boards. This gave valuable feedback on the board support state,
test reliability and where to focus effort to make testing easier and more
reliable.

About 380 pull requests with about 675 commits have been merged since the last
release and about 27 issues have been solved. 45 people contributed with code
in 93 days. Approximately 1678 files have been touched with 147122 insertions
and 16060 deletions.


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

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

Community
---------
    + Maintainers guidelines have been written and added to the repository

Documentation
-------------
    + Fix undefined doxygen groups and add a dedicated static check
    + Extend `auto_init` documentation

Core
----
    + core: clist_foreach() now returns break-causing node

System libraries
----------------
    + puf_sram: SRAM PUF feature to seed PRNGs cortex-m platforms
    + random: SHA-1 based PRNG
    + matstat: Integer mathematical statistics library
    + UUID: [RFC4122](https://tools.ietf.org/html/rfc4122) Unique ID library
    * analog_util: Refactor, add unit test
    - cbor: Deprecation of this module, use cn-cbor or tinycbor package
      instead

Networking
----------
    + asymcute: an asynchronous MQTT-SN client
    + gnrc_ipv6: full duplicate address detection support according to
      [RFC4862](https://tools.ietf.org/html/rfc4862)
    + gnrc_ipv6: support to handle RDNSS option in neighbor discovery
    + netif.h: a network-stack agnostic API to network interfaces
    + lorawan: add example application of autonomous class A device
    * sock_udp: allocate ephemeral port on sock creation when port is 0
    * gnrc_netif: Enable RX and TX complete events after netdev initialization
    * net/gcoap: Refine Observe re-registration
    * net/nanocoap: Build message with coap_pkt_t

Packages
--------
    + NimBLE: Bluetooth Low Energy stack used in mynewt
    + TLSF: re-enable original API to have different pools
    + LUA: Add an example with the shell
    + semtech-loramac: add support for link_check MAC command
    * libcose: Use RIOT random_bytes instead of randombytes
    * tweetnacl: Use RIOT random_bytes instead of randombytes
    * hacl: Use RIOT random_bytes instead of randombytes

Boards
------
    + Nucleo boards use their marketing names
    + HiFive1 (RISC-V)
    + slstk3402a
    + stm32f429i-disc1
    + stm32l476-disco
    + nucleo-l496zg
    + stm32mindev
    + frdm-k22f, frdm-k64f, frdm-kw41z: Add bus configuration for onboard FXOS8700CQ sensor
    * mulle: Fix mixed up RX TX pins on UART0

CPU
---
    + E310 (RISC-V)
    * kinetis: GPIO: Enable the correct IRQn on CM0+
    * kinetis: Refactor PIT timer driver implementation
    * kinetis: Refactor RTT driver
    * kinetis: Refactor clock initialization code
    * kinetis: Refactor LPTMR timer implementation
    * kinetis: Clean up SPI module power handling
    * kinetis: Conditionally enable MCG

Device Drivers
--------------
    + periph_eeprom API with support for STM32 L0/L1 and AVR
    + AT commands parser
    + Fix periph_flashpage for iotlab-a8-m3/iotlab-m3/fox boards
    + IO1 Xplained extension: add support for light sensor and SD card, fix
      GPIOs initialization and SAUL support
    + tests/bench_timers: A comprehensive benchmark for periph_timer

Build System / Tooling
----------------------
    + Correctly set the RIOT_VERSION on release archives
    + iotlab-m3/iotlab-a8-m3: fix boards flashing
    + Fix use of non completely initialized BASELIBS variable
    + newlib.mk: extract gcc include search directories for newlib-nano support
    + llvm: many compatibilities issues have been resolved
    * testbed-support: use new iot-lab command names

Testing
-------
    + Address some of the failing tests
    + New tests enabled by default in CI
    + Improve testing automation for release testing

Known Issues
============

Networking related issues
-------------------------

#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up rooting
#5051: Forwarding a packet back to its link layer source should not be allowed
#5230: gnrc_ipv6: multicast packes are not dispatched to the upper layers
#5748: gnrc: nodes crashing with too small packet buffer
#6123: gnrc: crash with (excessive) traffic in native
#7474: 6lo: gnrc fragmentation expects driver to block on TX
#7737: pkg: libcoap is partially broken and outdated
#8086: gnrc_rpl_p2p: not compiling
#8130: gcoap: can't build with network stacks other than gnrc
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
       configured prefix
#8271: app/netdev: application stops working after receiving frames with
       assertion or completely without error
#9616: at86rf2xx: can not correctly set channel after `NETOPT_STATE_RESET`
#9656: gnrc/netif: various problems after resetting interface a second time
#9573: pkg/lwip: assert on samr21-xpro
#9584: drivers/cc2420: add netopt NETOPT_MAX_PACKET_SIZE

Timer related issues
--------------------

#5103: xtimer: weird behavior of tests/xtimer_drift
#5338: xtimer: xtimer_now() is not ISR safe
#6052: tests: xtimer_drift_gets_stuck
#7114: xtimer: adds items to the wrong list if the timer overflows between
       _xtimer_now() and irq_disable()
#7347: xtimer_usleep stuck for small values
#8251: telosb: timer config wrong when running o a tmote sky
#9052: misc issues with tests/trickle

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

#495: native not float safe
#5796 native: tlsf: early malloc will lead to a crash
#6442: cpu/native: timer interrupt issue
#7206: native: race-condition in IPC

Other platforms related issues
------------------------------

#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4612: pkg: TLSF does not build for 16 bit platforms
#4872: at86rf2xx: Simultaneous use of different transceiver types is not
       supported
#4954: chronos: compiling with -O0 breaks
#4866: periph: GPIO drivers are not thread tafe
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#5128: some use of asm keyword might be missing volatile
#5486: at86rf2xx: lost interrupts
#5774: cpu: cortexm_common: context switching code breaks when compiling with
       LTO
#5848: arduino: Race condition in sys/arduino/Makefile.include
#6018: nRF52: gnrc 6lowpan ble memory leak
#6437: periph/spi: Leftovers from SPI rework in #4780
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
       CS
#6650: GPIO Port shift in cc2538 is inconsistent
#6838: Issuing a reboot on ATmega328p makes the board loop-reboot
#6874: SAMD21: possible CMSIS bug
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#7667: sam0 flashpage_write issues
#7846: stm32f1: I2C read functions return bogus values with unconnected devices
#8028: diskio: failed assertion in send_cmd() on lpc2387
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8444: tests/thread_priority_inversion hangup
#9616: ATmega platform issues.

Other issues
------------

#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
#4488: making the newlib thread-safe
#5561: C++11 extensions in header files
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX+SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#6120: Windows AVR Mega development makefile Error
#7220: sys/fmt: Missing tests for fmt_float,fmt_lpad
#7877: SPI connection can't read 16bit size register
#8107: crypto/ccm: bugs in the implementation of CCM mode
#9548: Many i2c bugs found with the i2c api rework but did not reach the release
#9709: examples: failed assertion in dtls-echo example

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

#8112 crypto/ccm: fix input_len checking with length_encoding
#8532 kinetis: timer_set_absolute randomly misses its target
#8778 sys/random: random_uint32_range is only uniform if range is a power of 2
      bug quality defect
#9065 flashpage_write broken on iotlab-m3
#9154 cpu/lpc2387: Fixed broken SPI driver
#9451 Makefile.include: fully define BASELIBS before using its value
#9579 stm32_common: fix ram length for MCUs with non-contiguous ram regions
#9675 tests: gnrc_netif: fix group join iteration macro


You can get the complete detail in the git history and in the release milestone
[Release 2018.07](https://github.com/RIOT-OS/RIOT/milestone/23?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.



RIOT-2018.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 2018.04 release includes major progress in support for current crypto
libraries.  A lot of work has gone into updating drivers to RIOT's unified
configuration scheme.  Support for ten new boards has been added.  In our quest
to improve and automate testing, many test scripts have been fixed and
improved, and RIOT's CI now runs many tests on real hardware during its nightly
build testing. And as usual, many tiny fixes and improvements have been merged.

About 390 pull requests with about 1073 commits have been merged since the last
release and about 54 issues have been solved. 44 people contributed with code
in 98 days. Approximately 1491 files have been touched with 208426 insertions.


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

New features and changes
========================
System libraries
----------------
    - cbor: deprecated in favour of cn-cbor
    + hashes: add sha-3 implementation

Networking
----------
    * netdev: replaced "struct iovec" with iolist_t
    + nanocoap: added server-side block1 support
    + skald: a BLE advertising stack

Packages
--------
    + cayenne-lpp: A Cayenne LPP library written in C
    + HACL*: a formally verified cryptographic library written in F*
    + qDSA: Small and Secure Digital Signatures with Curve-based
            Diffie--Hellman Key Pairs
    + libcose: Constrained node COSE library
    + cn-cbor: A constrained node implementation of CBOR in C
    + ucglib

Boards
------
    + arduino-mkrfox1200
    + frdm-kw41z
    + jiminy-mega256rfr2
    + mega-xplained
    + nucleo-l433rc
    + nucleo-l452re
    + slstk3401a
    + slwstk6000b
    + stk3600
    + stk3700

CPU
---
    + atmega1284p
    + NXP Kinetis KW41Z

Device Drivers
--------------
    + bmx055: Bosch bmx055 9-axis IMU
    + ata8520e: Microchip ATA8520E Sigfox(tm) transceiver

Build System / Tooling
----------------------
    + ci: initial on-hardware test support

Known Issues
===========

Please refer to the issue tracker at https://github.com/RIOT-OS/RIOT/issues.

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.



RIOT-2018.01 - 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 2018.01 release includes major progress in RIOTs network communication
capabilities, i.e., rewrite of GNRC's neighbour discovery, confirmable messages
in (g)CoAP, LoRa, and GoMacH as well as updates on CCN-lite and LWIP.
Furthermore, RIOT contributes to _IKEA-Hacking_ by bringing support for
the smart home lighting system TRADFRI (note: this will void the warranty).
Needless to say that this release also adds and updates support for several
platforms, drivers, and of course lots of enhancements to the documentation
as well as numerous bug fixes. Last but not least, RIOT now has an official
code of conduct (https://github.com/RIOT-OS/RIOT/blob/master/CODE_OF_CONDUCT.md)

More than 442 pull requests with about 865 commits have been merged since the
last release and about 96 issues have been solved. 54 people contributed with code
in 96 days. Approximately 2370 files have been touched with 223970 insertions
and 181409 deletions.


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


New features and changes
========================
System libraries
----------------
    + event: event queue framework like libevent

Networking
----------
    + gcoap: confirmable messages
    + nanocoap: no external package anymore
    * GNRC: major rewrite of neighbour discovery
    * GNRC: new API for network interface handling

Packages
--------
    + gecko_sdk: library for EFM/EFR/EZR32 MCUs
    * libcoap: git patching fixed
    + littlefs: filesystem for constraint devices
    - nanocoap: now part of RIOT
    * openthread: updated
    + semtech-loramac: LoRa MAC
    + umorse: morse encoder

Boards
------
    + acd52832
    * common: restructured shared code for boards
    + b-l475e-iot01a
    + bluepill
    + ikea-tradfri
    - pca10000
    - pca10005
    - qemu-i386
    + ruuvitag
    + sltb001a
    + teensy31
    + thingy52
    - x86

CPU
---
    + efm32
    * kinetis: unified all MCU variants
    - x86

Device Drivers
--------------
    + socket_zep: emulated IEEE 802.15.4 device over a UDP for native
    + hts221
    + lc709203f
    + lis2dh12
    + rn2xx3
    + soft_spi
    + tja1042

Build System / Tooling
----------------------
    + flake8: python code checker
    * make: set `-Wall -Wextra` as default for all compilers and platforms
    - sniffer: moved to applications repository
    + tests: add automated test scripts for many apps


Fixed Issues from the last release (2017.10)
============================================
#2143: unittests: tests-core doesn't compile for all platforms
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle
#4822: kw2xrf: packet loss when packets get fragmented
#5005: ndp: router advertisement sent with global address
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while
#5656: Possible Weakness with locking in the GNRC network stack
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR
#5944: msp430: ipv6_hdr unittests fail
#6451: Wrong value in SRF08 driver
#6502: cpu/stm32l1: RTC broken


Known Issues
============
Networking related issues
-------------------------
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame
       gets lost the reassembly state machine might get out of sync
#7035: lwIP: hangs due to sema change after a while

Timer related issues
--------------------
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly
       jumps a few seconds on nrf52
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
#6052: tests: xtimer_drift gets stuck: application freezes after ~30-200 seconds
#7114: xtimer: add's items to the wrong list if the timer overflows between
       _xtimer_now() and irq_disable()

native related issues
---------------------
#495:  native not float safe: When FPU is used and an asynchronous context
       switch occurs, either the stack gets corrupted or a floating point
       exception occurs.
#6442: cpu/native: timer interrupt does not yield thread

other platform related issues
-----------------------------
#1891: newlib-nano: Printf formatting does not work properly for some numeric
       types: PRI[uxdi]64, PRI[uxdi]8 and float are not parsed in newlib-nano
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic
       operations in the drivers some pin configurations might get lost.
#5848: Arduino: Race condition in sys/arduino/Makefile.include
#6018: nRF52 gnrc 6lowpan ble memory leak
#6261: SAMD21: TC3 & TC4 issue when using TCC2
#6379: nrf52dk/nordic_soft_device: not working anymore
#6437: periph/spi: Leftovers from SPI rework
#6526: atmega based boards freeze when main thread is over
#6836: Issuing a reboot on ATmega328p makes the board loop-reboot
#7753: pic32-wifire: race-condition when linking in concurrent build

other issues
------------
#1263: TLSF implementation contains (a) read-before-write error(s).
#3366: periph/i2c: handle NACK
#4488: Making the newlib thread-safe: When calling puts/printf after
       thread_create(), the CPU hangs for DMA enabled UART drivers.
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX + SAMR21-xpro: shell cannot handle inputs of length >64 chars
#5962: Makefile: UNDEF variable is not working as documented


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.



RIOT-2017.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 microcontrollers, 16-bit
microcontrollers and 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:
===================
Most notable, this release is bringing RIOT a step closer to supporting
over-the-air-updates by containing initial support for MCUBoot.
Furthermore, it adds support for some new platforms (e.g. arduino-mkzero,
nucleos, and frdm-k22f), drivers (e.g. my9221, apa102, ds1307), and of course
a large number of bug fixes (e.g. `make buildtest` now working properly,
various fixes to `xtimer`).

About 390 pull requests with about 500 commits have been merged since the last
release and about 60 issues have been solved. 39 people contributed with code
in 113 days. 1825 files have been touched with 223454 insertions and 66146 deletions.

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

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

Bootloader
-----------
+ MCUBoot: A secure bootloader for ARM MCUs is now supported. This initial support
includes only the nrf52dk board. For more information about it refer to the mcuboot github
page at https://github.com/runtimeco/mcuboot/blob/master/README-RIOT.rst

System libraries
----------------
+ bcd: binary coded decimal en/decoder

Networking
----------
+ gcoap: Add URI-query strings for requests + various fixes

Packages
--------
* lwip: Updated to v2.0.3

Boards
------
+ NXP frdm-k22f
+ STM nucleo144-f722
+ Arduino arduino-mkzero
+ ti CC2650 LaunchPad
- weio

CPU
---
+ NXP k22f
+ cc2538: ADC
+ stm32l4: RTC
+ samr21e18a
+ msp430: added flashpage driver
- lpc11u34
* stm32: unified stmclk implementations, reworked RTC
* sam0: heavy unification and refactoring, updated vendor headers
+ sam_common: started unification of sam0 and sam3
* cortexm: interrupt vector cleanup

Device Drivers
--------------
+ my9221 - LED controller + Seeed Studio Grove LED bar
+ apa102 - RGB LED
+ ds1307: RTC
+ SAUL support: lps331ap
* SAUL gpio: allow configuration of initial state and low-active signals
* sdcard_spi: added mtd interface
* PM: fixed selection of default implementations for `pm_off` and `pm_set_lowest`

Build System / Tooling
------------
+ make: added pkt-prepare target
* gcc: enabled `-fdiagnostics-color` per default for `arm` and `native` targets
* edbg: use as default flash tool for sam0-based boards
+ added LOSTANDFOUND.md for listing removed features

Fixed Issues from the last 3 releases (known issues missing in 2017.04 and 2017.07)
===================================================================================
#2006: cpu/nrf51822: timer callback may be fired too early
#4841: xtimer: timer already in the list:
#4590: pkg: building relic with clang fails.
#4694: drivers/lm75a: does not build
#4902: xtimer: xtimer_set: xtimer_set does not handle integer overflows well
#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var
#5207: make: buildest fails with board dependent application Makefiles
#5361: cpu/cc26x0: timer broken
#5460: cpu/samd21: i2c timing with compiler optimization
#5489: cpu/lpc11u34: ADC broken
#5799: kw2x: 15.4 duplicate transmits
#5928: xtimer: usage in board_init() crashes: some boards use the xtimer in there board_init()
       function. The xtimer is however first initialized in the auto_init module which is executed
       after board_init()
#6022: pkg: build order issue
#6331: RTC alarm triggered with 1s delay
#6419: cpu/cc2538: timer broken
#6427: xtimer: infinite loop with xtimer_mutex_lock_timeout
#6501: boards/nucleo: Pin usage collision (SPI clk vs. LED0)
#6542: boards/nucle-f0xx: misconfigured timer configuration
#6904: cpu/saml21: cannot use several EXTI

Known Issues
============
Networking related issues
-------------------------
#3075: nhdp: unnecessary microsecond precision: NHDP works with timer values of microsecond precision
       which is not required. Changing to lower precision would save some memory.
#4048: gnrc: potential racey memory leak
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5656: Possible Weakness with locking in the GNRC network stack: For some operations mutexes to the
       network interfaces need to get unlocked in the current implementation to not get deadlocked.
       Recursive mutexes as provided in #5731 might help to solve this problem.
#5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of size ~512 B might lead
       to crashes. The issue describes this for several hundred nodes, but aggressive flooding with
       just two nodes was also shown to lead to this problem.
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame gets lost the reassembly
       state machine might get out of sync
#6123: gnrc: crash with (excessive) traffic
#7035: lwIP: hangs due to sema change after a while
#7737: pkg: libcoap is partially broken and outdated

NDP is not working properly
---------------------------
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle: Reception of a router solicitation might lead
       to invalid zero-length link-layer addresses in neighbor cache.
#5005: ndp: router advertisement sent with global address: Under some  circumstances a router might
       send RAs with GUAs. While they are ignored on receive (as RFC-4861 specifies), RAs should have
       link-local addresses and not even be send out this way.
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while: Several issues
       (also see #5760) lead to a global unicast address effectively being banned from the network
       (disappears from neighbor cache, is not added again)
#5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by outdated ncache at router
#5539: Border Router: packet not forwarded from ethos to interface 6
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR

Timer related issues
--------------------
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
#6052: tests: xtimer_drift gets stuck: xtimer_drift application freezes after ~30-200 seconds
#6502: cpu/stm32l1: RTC broken
#7114: xtimer: add's items to the wrong list if the timer overflows between _xtimer_now() and irq_disable()

native related issues
---------------------
#495:  native not float safe: When the FPU is used when an asynchronous context switch occurs, either
       the stack gets corrupted or a floating point exception occurs.
#2175: ubjson: valgind registers "Invalid write of size 4" in unittests
#5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be initialized (which is
       currently expected to be done in an application). If a malloc is needed before an application's
       main started (e.g. driver initialization) the node can crash, since no pool is allocated yet.
#6145: native: system reboots on SIGTRAP
#6442: cpu/native: timer interrupt does not yield thread
#7206: native: race-condition in IPC

other platform related issues
-----------------------------
#1891: newlib-nano: Printf formatting does not work properly for some numeric types: PRI[uxdi]64,
       PRI[uxdi]8 and float are not parsed in newlib-nano
#2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins were used in the
       unittests which are not available with msp430-gcc
#2300: qemu unittest fails because of a page fault
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4560: make: clang is more pedantic than gcc oonf_api is not building with clang (partly fixed by #4593)
#4822: kw2xrf: packet loss when packets get fragmented
#4876: at86rf2xx: Simultaneous use of different transceiver types is not supported
#4954: chronos: compiling with -O0 breaks
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic operations in the drivers
       some pin configurations might get lost.
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly jumps a few seconds on nrf52
#5405: Erratic timings on iotlab-m3 with compression context activated
#5486: at86rf2xx: lost interrupts
#5678: at86rf2xx: failed assertion in _isr
#5944: msp430: ipv6_hdr unittests fail
#5848: arduino: Race condition in sys/arduino/Makefile.include
#6018: nRF52 gnrc 6lowpan ble memory leak
#6261: SAMD21 TC3 & TC4 issue when using TCC2
#6379: nrf52dk/nordic_soft_device: not working anymore
#6437: periph/spi: Leftovers from SPI rework
#6526: atmega based boards freeze when main thread is over
#6836: Issuing a reboot on ATmega328p makes the board loop-reboot
#7347: xtimer_usleep stuck for small values on nucleo-l1
#7753: pic32-wifire: race-condition when linking in concurrent build
#7846: stm32f1: I2C read functions return bogus values with unconnected devices

other issues
------------
#1263: TLSF implementation contains (a) read-before-write error(s).
#3256: make: Setting constants on compile time doesn't really set them everywhere
#3366: periph/i2c: handle NACK
#4488: Making the newlib thread-safe: When calling puts/printf after thread_create(), the CPU hangs
       for DMA enabled uart drivers.
#5561: C++11 extensions in header files
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#5962: Makefile: UNDEF variable is not working as documented
#6451: Wrong value in SRF08 driver
#7800: CBOR is broken

Special Thanks
==============
We would like to give our special thanks to all the companies that provided us
with their hardware for porting and testing, namely the people from (in alphabeticalorder):
Atmel, Freescale, Imagination Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO,
and Zolertia;
and also companies that directly sponsored development time:
Cisco Systems, Eïsox, Eistec, Ell-i, Engineering Spirit, Mesotic, Nordic, OTA keys and Phytec.
We also would like to thank people from Inria Chile for their work on
OpenThread integration and Semtech LoRa drivers.

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 pkg are published under a separate license.

All code files contain licensing information.



RIOT-2017.07 - 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 microcontrollers, 16-bit
microcontrollers and 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:
===================
This release provides fixes, code cleanup and improved documentation, as well as
enhancements.
New features brought by this release include:
* CAN support (Controller Area Network)
* Support for CoAP OBSERVE requests
* Basic Thread stack support (initial support for OpenThread)
* radio duty cycling with LwMAC protocol
* LoRa radio drivers supporting Semtech hardware


About 230 pull requests with about 442 commits have been merged since the last
release and about 13 issues have been solved. 45 people contributed with code
in 56 days. 1395 files have been touched with 211720 insertions and 65729 deletions.

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

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


API changes
-----------
- removed conn API

System libraries
----------------
+ AES CMAC encryption
+ GCC's Stack Smashing Protector (SSP) support
- Remove 3-DES crypto


Networking
----------
+ CAN stack
+ CoAP OBSERVE request
+ LwMAC protocol
+ OpenThread
+ Layer 2 filtering (l2filter)
* LwIP port to v2.0.2
* NHDP port to sock API
- removed conn API


Packages
--------
+ OpenThread

Boards
------
+ Arduino MKR1000 (without WiFi)
+ Nucleo144-f412
+ Nucleo144-f746
+ Nucleo144-f767
+ NZ32-SC151 (STM32L1)
+ ST B-L072-LRWAN1 (with LoRa radio)
+ STM32F769 discovery
* Full support for PhyNode

CPU
---
+ lm4120: SPI support
+ SAM3: ADC support, DAC support
+ SAMD21: flashpage, ADC support
+ SAML21: ADC, I2C support
+ STM32F413vg support
+ STM32F7 family (ARM Cortex-M7)
+ STM32L0 family: I2C support
* STM32: unified DAC support
* STM32F1/F2/F4 clock initialization refactoring


Device Drivers
--------------
+ ADCXX1C I2C ADC support
+ BMP280 temperature/pressure sensor
+ DSP0401 4 digits 16 segment alphanumeric display
+ MMA8x5x motion detection sensor
+ Semtech SX1272 and SX1276 LoRa drivers


Build System
------------
+ EDBG support
+ http download with caching (dlcache)
+ Use Coccinelle static code checker in CI


Special Thanks
==============
We would like to give our special thanks to all the companies that provided us
with their hardware for porting and testing, namely the people from (in alphabeticalorder):
Atmel, Freescale, Imagination Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO,
and Zolertia;
and also companies that directly sponsored development time:
Cisco Systems, Eïsox, Eistec, Ell-i, Engineering Spirit, Mesotic, Nordic, OTA keys and Phytec.
We also would like to thank people from Inria Chile for their work on
OpenThread integration and Semtech LoRa drivers.

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 pkg are published under a separate license.

All code files contain licensing information.





RIOT-2017.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 microcontrollers, 16-bit
microcontrollers and 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:
===================
This release provides a lot of new features, fixes and enhancements. Among
these has been a huge cleanup regarding cppcheck and documentation, and we're
pleased to announce that all remaining doxygen and cppcheck warnings have been
fixed.  We're also proud to present a Virtual File System layer and integration
of the SPIFFS file system.  A lot of work has gone into support for
STMicroelectronics's Nucleo family, with RIOT now supporting 28 (up from 13)
Nucleo boards.  And as always, there was a lot of under-the-hood cleanup, bug
fixing and documentation work.

About 200 pull requests with about 562 commits have been merged since the last release and about 23
issues have been solved. 32 people contributed with code in 91 days. 2697 files have been touched with
716950 insertions and 492623 deletions.

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

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

Core
----
+ full C11 atomics support
+ rmutex, a recursive mutex implementation

API changes
-----------
* renamed NTOH*() -> ntoh*(), HTON*() -> hton*()
- removed gpioint API, which was unnused and obsoleted by periph/gpio
* renamed uuid module to luid

System libraries
----------------
+ VFS: virtual file system layer
+ fmt: add print_byte_hex(), fmt_lpad()
- 3DES: removed support as 3DES is considered legacy crypto

Networking
----------
+ emCute - a small MQTT-SN implementation
+ sock_dns: a simple DNS resolver

Packages
--------
+ SPIFFS, the first file system supported by RIOT's VFS layer
+ jerryscript, a Javascript interpreter

Drivers
-------
- added dynamixel server motor driver
- removed ltc4150 driver
- removed smb380 driver

Build System
------------
+ Experimental distributed building using Murdock
+ most makfiles moved from root into makefiles/
+ added submodule support

Special Thanks
==============
We like to give our special thanks to all the companies that provided us with their hardware for
porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination
Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly
sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, OTAkeys and Phytec.

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
=======
* Most of 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 are published under a separate, LGPL compatible license
  (e.g. some files developedby SICS).

All code files contain licensing information.






RIOT-2017.01 - 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 microcontrollers,
16-bit microcontrollers and 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:
===================
This release provides a lot of new features, fixes and enhancements. Among others these features
contain an initial - still experimental - TCP implementation based on the GNRC network stack, support
for reading from and writing to SD cards, a new power management architecture as well additional third
party packages such as TweetNaCl, a cryptographic library, and Heatshrink a data compression library
optimized for embedded real-time systems.
We added support for new platforms including the Calliope mini, Maple mini, and a couple of STMs
Nucleo boards. Device support was extended by several new drivers, e.g., for NXP PN532 NFC, Microchip
MRF24J40 802.15.4 radio (experimental), or Bosch BME280 pressure/humidity/temperature sensor.
We completely refactored the SPI interface, allowing for internally handled hardware or software chip
select lines and shared bus usage for multiple devices with different SPI configurations.

About 278 pull requests with about 606 commits have been merged since the last release and about 84
issues have been solved. 44 people contributed with code in 87 days. 2230 files have been touched with
220275 insertions and 159840 deletions.


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

New features and changes
========================
General
-------
+ New power management architecture

Core
----
+ Initial (experimental) OpenOCD/GDB thread support
* Make Semaphore implementation IPC independent

API changes
-----------
* SPI driver interface (rework)
* Add Mutex lock with timeout parameter
* Xtimer allow for arbitrary frequency & additional convenience functions
* HDC1000 driver remodeling
* MMA8652 driver remodeling (MMA8x5x now)

System libraries
----------------
+ Lightweight CRC16 implementation
- Remove Twofish and RC5 implementation

Networking
----------
+ Initial (experimental) GNRC TCP implementation
* Provide sock-port for POSIX SOCKETS
* Provide sock-port for GCOAP
* Provide sock-port for UHCPC
* Provide sock_ip wrapper for LWIP
* Native: allow for multiple netdev_tap devices

Packages
--------
+ TweetNaCl: cryptographic library
+ Heatshrink: compression/decompression library
- Removed: OpenWSN

Platforms
---------
+ Support for Maple mini board
+ Support for ST Nucleo-32 F303 board
+ Support for ST Nucleo-32 F042 board
+ Support for Calliope mini board
- Drop support for PTTU platform

Drivers
-------
* Rework SPI driver interface
+ Peripheral flashrom driver interface
+ SD Card driver (SPI)
+ NXP PN532 NFC driver
+ Initial (experimental) Microchip MRF24J40 radio driver
+ JEDEC JC42.4 temperature sensors
+ Bosch BME280 pressure, humidity and temperature sensor
* NXP MMA8x5x accelerometer (previously MMA8652)
* Unified STM32 RTC driver
* Unified STM32 UART driver
* Unified STM32 PWM driver
* Unified STM32 timer driver
* Unified NRF5x low power modes
+ Low power modes for the STM32F1 family
* Unified Kinetis low power modes
* Xbee port to netdev API
* W5100 port to netdev API
* NRF5x/'nrfmin' port to netdev API (w/o 6LoWPAN support currently)
* Refactor synchronous UART by new 'isrpipe' module

Build System
------------
+ Experimental Jenkins CI
* Python3 support for compile script (compile_test.py)

Other
-----
+ UUID module for central ID/address generation

Fixed Issues from the last release
==================================
#4388: POSIX sockets: open socket is bound to a specific thread
#4737: cortex-m: Hard fault after a thread exits
#4874: Using single RSSI_BASE_VALUE for all Atmel radios
#5034: gnrc_networking: offers txtsnd, does not print received packets
#5083: AVR8: Reboots after `return 0;`
#5719: cc2538: rf driver doesn't handle large packets
#5954: nRF52 uart_write gets stuck
#6036: tinydtls: DTLS randomly missing functions
#6037: pkg/nanocoap: native build fails on macOS
#6358: arduino uno : xtimer accuracy problem

Known Issues
============
Networking related issues
-------------------------
#3075: nhdp: unnecessary microsecond precision: NHDP works with timer values of microsecond precision
       which is not required. Changing to lower precision would save some memory.
#4048: potential racey memory leak: According to the packet buffer stats, flood-pinging a multicast
       destination may lead to a memory leak due to a race condition. However, it seems to be a rare
       case and a completely filled up packet buffer was not observed.
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5656: Possible Weakness with locking in the GNRC network stack: For some operations mutexes to the
       network interfaces need to get unlocked in the current implementation to not get deadlocked.
       Recursive mutexes as provided in #5731 might help to solve this problem.
#5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of size ~512 B might lead
       to crashes. The issue describes this for several hundred nodes, but aggressive flooding with
       just two nodes was also shown to lead to this problem.
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame gets lost the reassembly
       state machine might get out of sync
#6123: gnrc: crash with (excessive) traffic

NDP is not working properly
---------------------------
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle: Reception of a router solicitation might lead
       to invalid zero-length link-layer addresses in neighbor cache.
#5005: ndp: router advertisement sent with global address: Under some  circumstances a router might
       send RAs with GUAs. While they are ignored on receive (as RFC-4861 specifies), RAs should have
       link-local addresses and not even be send out this way.
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while: Several issues
       (also see #5760) lead to a global unicast address effectively being banned from the network
       (disappears from neighbor cache, is not added again)
#5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by outdated ncache at router
#5539: Border Router: packet not forwarded from ethos to interface 6
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR

Timer related issues
--------------------
#4841: xtimer: timer already in the list: Under some conditions an xtimer can end up twice in the
       internal list of the xtimer module
#4902: xtimer: xtimer_set: xtimer_set does not handle integer overflows well
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
#5928: xtimer: usage in board_init() crashes: some boards use the xtimer in there board_init()
       function. The xtimer is however first initialized in the auto_init module which is executed
       after board_init()
#6052: tests: xtimer_drift gets stuck: xtimer_drift application freezes after ~30-200 seconds
#6331: RTC alarm triggered with 1s delay
#6419: cpu/cc2538: timer broken
#6427: xtimer: infinite loop with xtimer_mutex_lock_timeout
#6502: cpu/stm32l1: RTC broken
#6542: boards/nucle-f0xx: misconfigured timer configuration (fix in #6494)

native related issues
---------------------
#495:  native not float safe: When the FPU is used when an asynchronous context switch occurs, either
       the stack gets corrupted or a floating point exception occurs.
#2175: ubjson: valgind registers "Invalid write of size 4" in unittests
#4590: pkg: building relic with clang fails.
#5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be initialized (which is
       currently expected to be done in an application). If a malloc is needed before an application's
       main started (e.g. driver initialization) the node can crash, since no pool is allocated yet.
#6145: native: system reboots on SIGTRAP
#6442: cpu/native: timer interrupt does not yield thread

other platform related issues
-----------------------------
#1891: newlib-nano: Printf formatting does not work properly for some numeric types: PRI[uxdi]64,
       PRI[uxdi]8 and float are not parsed in newlib-nano
#2006: cpu/nrf51822: timer callback may be fired too early
#2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins were used in the
       unittests which are not available with msp430-gcc
#2300: qemu unittest fails because of a page fault
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4560: make: clang is more pedantic than gcc oonf_api is not building with clang (partly fixed by #4593)
#4694: drivers/lm75a: does not build
#4822: kw2xrf: packet loss when packets get fragmented
#4876: at86rf2xx: Simultaneous use of different transceiver types is not supported
#4954: chronos: compiling with -O0 breaks
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic operations in the drivers
       some pin configurations might get lost.
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly jumps a few seconds on nrf52
#5361: cpu/cc26x0: timer broken
#5405: Erratic timings on iotlab-m3 with compression context activated
#5460: cpu/samd21: i2c timing with compiler optimization
#5486: at86rf2xx: lost interrupts
#5489: cpu/lpc11u34: ADC broken
#5678: at86rf2xx: failed assertion in _isr
#5799: kw2x: 15.4 duplicate transmits
#5944: msp430: ipv6_hdr unittests fail
#5848: arduino: Race condition in sys/arduino/Makefile.include
#6018: nRF52 gnrc 6lowpan ble memory leak
#6261: SAMD21 TC3 & TC4 issue when using TCC2
#6379: nrf52dk/nordic_soft_device: not working anymore
#6437: periph/spi: Leftovers from SPI rework
#6501: boards/nucleo: Pin usage collision (SPI clk vs. LED0)
#6526: atmega based boards freeze when main thread is over

other issues
------------
#1263: TLSF implementation contains (a) read-before-write error(s).
#3256: make: Setting constants on compile time doesn't really set them everywhere
#3366: periph/i2c: handle NACK
#4488: Making the newlib thread-safe: When calling puts/printf after thread_create(), the CPU hangs
       for DMA enabled uart drivers.
#4866: periph: GPIO drivers are not thread safe
#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var
#5207: make: buildest fails with board dependent application Makefiles
#5561: C++11 extensions in header files
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#5962: Makefile: UNDEF variable is not working as documented
#6022: pkg: build order issue
#6451: Wrong value in SRF08 driver
#6519: driver/mrf24j40: broken on stm32f4discovery

Special Thanks
==============
We like to give our special thanks to all the companies that provided us with their hardware for
porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination
Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly
sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, OTAkeys and Phytec.

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
=======
* Most of 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 are published under a separate, LGPL compatible license
  (e.g. some files developedby SICS).

All code files contain licensing information.






RIOT-2016.10 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: 8-bit
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers 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:
===================
This release provides a lot of new features as well as it  fixes several major
bugs. Among these new features are the new simplified network socket API
called sock, the GNRC specific CoAP implementation gcoap and several new
packages: TinyDTLS, the Aversive++ microcontroller library for robotics, the
u8g2 graphic library, and nanocoap.
Using the new sock API an implementation of the Simple Time Network Protocol
(SNTP) was also introduced, allowing for time synchronization between nodes.
New platforms include the Arduino Uno, the Arduino Duemilanove, the Arduino
Zero, SODAQ Autonomo, and the Zolertia remote (rev. B).
The most significant bug fix was done in native which led to a significantly
more robust handling of ISRs and now allows for at least 1,000 native
instances running stably on one machine.

About 263 pull requests with about 398 commits have been merged since the last
release and about 42 issues have been solved. 37 people contributed with code
in 100 days. 1006 files have been touched with 166500 insertions and 26926
deletions.


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

New features and changes
========================
General
-------
* Verbose behavior for assert() macro

Core
----
+ MPU support for Cortex-M


API changes
-----------
+ Socket-like sock API (replacing conn)
* netdev: Add Testmodes and CCA modes
* IEEE 802.15.4: clean-up Intra-PAN behavior
* IEEE 802.15.4: centralize default values
* gnrc_pktbuf: allow for 0-sized snips
+ gnrc_netapi: mbox and arbitrary callback support


System libraries
----------------
No new features or changes


Networking
----------
+ Provide sock-port for GNRC
+ gcoap: a GNRC-based CoAP implementation
+ Simple Network Time Protocol (RFC 5905, section 14)
+ Priority Queue for packet snips
+ IPv4 header definitions


Packages
--------
+ nanocoap: CoAP header parser/builder
+ TinyDTLS: DTLS library
+ tiny-asn1: asn.1/der decoder
+ Aversive++ microcontroller programming library
+ u8g2 graphic library


Platforms
---------
+ Support for stm32f2xx MCU family
+ Low power modes for samd21 CPUs
+ More Arduino-based platforms:
    + Arduino Uno
    + Arduino Duemilanove
    + Arduino Zero
+ More boards of ST's Nucleo platforms:
    + ST Nucleo F030 board support
    + ST Nucleo F070 board support
    + ST Nucleo F446 board support
+ SODAQ Automono
+ Zolertia remote rev. B


Drivers
-------
+ W5100 Ethernet device
+ Atmel IO1 Xplained extension
+ LPD8808 LED strips
* at86rf2xx: provide capability to access the RND_VALUE random value register


Build System
------------
+ static-tests build target for easy local execution of CI's static tests


Other
-----
+ Provide Arduino API to Nucleo boards
+ Packer configuration file to build vagrant boxes
+ CC2650STK Debugger Support
+ ethos: add Ethos over TCP support


Fixed Issues from the last release
==================================
#534:  native debugging on osx fails
#2071: native: *long* overdue fixes
#3341: netdev_tap crashes when hammered
#5007: gnrc icmpv6: Ping reply goes out the wrong interface
#5432: native: valgrind fails

Known Issues
============
Networking related issues
-------------------------
#3075: nhdp: unnecessary microsecond precision: NHDP works with timer values
       of microsecond precision which is not required. Changing to lower
       precision would save some memory.
#4048: potential racey memory leak: According to the packet buffer stats,
       flood-pinging a multicast destination may lead to a memory leak due to
       a race condition. However, it seems to be a rare case and a completely
       filled up packet buffer was not observed.
#4388: POSIX sockets: open socket is bound to a specific thread: This was an
       inherit problem of the conn API under GNRC. Since the POSIX sockets are
       still based on conn for this release, this issue persists
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
       address (might still be fixable for release, see #5729, #5230: gnrc
       ipv6: multicast packets are not dispatched to the upper layers)
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#5055: cpuid: multiple radios will get same EUI-64 Nodes with multiple
       interfaces might get the same EUI-64 for them since they are generated
       from the same CPU ID.
#5656: Possible Weakness with locking in the GNRC network stack: For some
       operations mutexes to the network interfaces need to get unlocked in
       the current implementation to not get deadlocked. Recursive mutexes as
       provided in #5731 might help to solve this problem.
#5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of
       size ~512 B might lead to crashes. The issue describes this for several
       hundred nodes, but aggressive flooding with just two nodes was also
       shown to lead to this problem.
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame
       gets lost the reassembly state machine might get out of sync

### NDP is not working properly
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle: Reception of a router
       solicitation might lead to invalid zero-length link-layer addresses in
       neighbor cache.
#5005: ndp: router advertisement sent with global address: Under some
       circumstances a router might send RAs with GUAs. While they are ignored
       on receive (as RFC 4861 specifies), RAs should have link-local
       addresses and not even be send out this way.
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while:
       Several issues (also see #5760) lead to a global unicast address
       effectively being banned from the network (disappears from neighbor
       cache, is not added again)
#5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by
       outdated ncache at router
#5539: Border Router: packet not forwarded from ethos to interface 6
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR


Timer related issues
--------------------
#4841: xtimer: timer already in the list: Under some conditions an xtimer can
       end up twice in the internal list of the xtimer module
#4902: xtimer: xtimer_set: xtimer_set does not handle integer overflows well
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
#5928: xtimer: usage in board_init() crashes: some boards use the xtimer in
       there board_init() function. The xtimer is however first initialized in
       the auto_init module which is executed after board_init()
#6052: tests: xtimer_drift gets stuck: xtimer_drift application freezes after
       ~30-200 seconds


native related issues
---------------------
#495:  native not float safe: When the FPU is used when an asynchronous context
       switch occurs, either the stack gets corrupted or a floating point
       exception occurs.
#2175: ubjson: valgind registers "Invalid write of size 4" in unittests
#4590: pkg: building relic with clang fails.
#5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be
       initialized (which is currently expected to be done in an application).
       If a malloc is needed before an application's main started (e.g. driver
       initialization) the node can crash, since no pool is allocated yet.

other platform related issues
-----------------------------
#1891: newlib-nano: Printf formatting does not work properly for some numeric
       types: PRI[uxdi]64, PRI[uxdi]8 and float are not parsed in newlib-nano
#2006: cpu/nrf51822: timer callback may be fired too early
#2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins
       were used in the unittests which are not available with msp430-gcc
#2300: qemu unittest fails because of a page fault
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4522: avsextrem: linker sometimes doesn't find `bl_init_clks()`
#4560: make: clang is more pedantic than gcc oonf_api is not building with
       clang. (Partly solved by #4593)
#4694: drivers/lm75a: does not build
#4737: cortex-m: Hard fault after a thread exits (under some circumstances)
#4822: kw2xrf: packet loss when packets get fragmented
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
       supported
#4954: chronos: compiling with -O0 breaks
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic
       operations in the drivers some pin configurations might get lost.
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly
       jumps a few seconds on nrf52
#5361: cpu/cc26x0: timer broken
#5405: Erratic timings on iotlab-m3 with compression context activated
#5460: cpu/samd21: i2c timing with compiler optimization
#5486: at86rf2xx: lost interrupts
#5489: cpu/lpc11u34: ADC broken
#5603: atmega boards second UART issue
#5678: at86rf2xx: failed assertion in _isr
#5719: cc2538: rf driver doesn't handle large packets
#5799: kw2x: 15.4 duplicate transmits
#5944: msp430: ipv6_hdr unittests fail
#5848: arduino: Race condition in sys/arduino/Makefile.include
#5954: nRF52 uart_write get stuck
#6018: nRF52 gnrc 6lowpan ble memory leak


other issues
------------
#1263: TLSF implementation contains (a) read-before-write error(s).
#3256: make: Setting constants on compile time doesn't really set them
       everywhere
#3366: periph/i2c: handle NACK
#4488: Making the newlib thread-safe: When calling puts/printf after
       thread_create(), the CPU hangs for DMA enabled uart drivers.
#4866: periph: GPIO drivers are not thread safe
#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var
#5207: make: buildest fails with board dependent application Makefiles
#5390: pkg: OpenWSN does not compile: This package still uses deprecated
       modules and was not tested for a long time.
#5520: tests/periph_uart not working
#5561: C++11 extensions in header files
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64
       chars
#5962: Makefile: UNDEF variable is not working as documented
#6022: pkg: build order issue


Special Thanks
==============
We like to give our special thanks to all the companies that provided us with
their hardware for porting and testing, namely the people from (in
alphabeticalorder): Atmel, Freescale, Imagination Technologies, Limifrog,
Nordic, OpenMote, Phytec, SiLabs, UDOO,and Zolertia; and also companies that
directly sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering
Spirit, Nordic, FreshTemp LLC, OTAkeys and Phytec.

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
=======
* Most of 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 are published under a separate, LGPL compatible
  license (e.g. some files developed by SICS).

All code files contain licensing information.






RIOT-2016.07 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: 8-bit
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers 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:
===================
This release was focused primarily on fixing bugs, but also adds two new
supported radio transceivers: CC2420 and CC2538.
This new radio support allows to new interoperability tests with other OS,
allowing code size comparison and overall network performance for
platforms based on these radios.

About 198 pull requests with about 325 commits have been merged since the
last release and about 65 issues have been solved. 46 people contributed with
code in 112 days. 632 files have been touched with 19863 insertions and
3682 deletions.


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

New features and changes
========================
General
----------
* No major changes or new features coming on this release.

Core
----
+ Introduced Mailbox IPC API (#4919)
* Improved clist

Network Stack
---
+ Introduction of netstats in several platforms.
* RPL optional auto initialization


Packages
---
+ Added statistics for TLSF package (#5418)
+ Added U8g2 library for monochrome displays (#5549)
* Added on-the-fly content creation for CCN-lite.


Platforms
---
+ nrf52dk: add support for building with Nordic SoftDevice (6lo over BLE)
+ Added support for Libellium's waspmote-pro board.
+ Added support for the iotlab A8/M3 node (https://www.iot-lab.info/hardware/a8/)
+ Added initial and rudimentary port for TI cc2650stk "SensorTag" (#4675)
+ Split Zolertia Remote support into Remote Prototype A (remote-pa) and
Remote Revision A (remote-reva)

Drivers
---
+ Texas Instruments CC2538 RF driver (PR #5291)
+ Texas Instruments CC2420 RF driver (PR #5591)
+ Bosch BM180 sensor.
+ Added XBee optional AES encryption support

System libraries
---
* Several xtimer bug fixes

Build System
---
+ Ubuntu 16.04 packaged gcc-arm-none-eabi toolchain can now be used to compile
RIOT for ARM boards

Other
---
* Reworked UART and code factorisation for ATmega CPUs.

API changes
---
* Unified interface of hashing functions

Fixed Issues from the last release
==================================
#3824: native: gnrc: hardcore pinging crashes.
#4583: cpp11: clang doesn't allow mutex_t to be used with constexpr All
cpp11-* tests fail with clang.
#5388: gnrc_sixlowpan_iphc_nhc: receiving NHC compressed UDP
packets hits assert in IPv6 (Fixed by #5281).


Known Issues
==========
#3075: nhdp: unnecessary microsecond precision NHDP works with timer
 values of microsecond precision which is not required. Changing to lower
 precision would save some memory.
#3086: Max. packet length for AT86RF2XX
#4048: potential racey memory leak According to the packet buffer stats,
flood-pinging a multicast destination may lead to a memory leak due to a
race condition. However, it seems to be a rare case and a completely filled
up packet buffer was not observed.
#5005: ndp: router advertisement sent with global address Under some
circumstances a router might send RAs with GUAs. While they are ignored
on receive (as RFC 4861 specifies), RAs should have link-local addresses
 and not even be send out this way.
#5007: gnrc icmpv6: Ping reply goes out the wrong interface
#5055: cpuid: multiple radios will get same EUI-64 Nodes with multiple
interfaces might get the same EUI-64 for them since they are generated from
 the same CPU ID.
 #5230: gnrc ipv6: multicast packets are not dispatched to the upper layers.
(Fix exists, but was postponed)
#5390: pkg: OpenWSN does not compile This package still uses deprecated
modules and was not tested for a long time.

native related issues
---------------------
#495: native not float safe When the FPU is used when an asynchronous
context switch occurs, either the stack gets corrupted or a floating point
exception occurs.
#534: native debugging on osx fails Using valgrind or gdb with a nativenet
target in OSX leads to "the network" being stuck (gdb) or the whole process
being stuck (valgrind).
#334: nativenet crashes when hammered Flood-pinging a native instance
from more than one host (either multiple threads on the host system or multiple
other native instances), leads to a SEGFAULT.
#2071; WIP: native: overdue fixes
#4590: pkg: building relic with clang fails.
#5432: native: valgrind fails

other platform related issues
-----------------------------
#4560: make: clang is more pedantic than gcc oonf_api is not building with
clang.
(Partly solved by #4593)
#4866: not all GPIO driver implementations are thread safe Due to non-atomic
 operations in the drivers some pin configurations might get lost.
 #5486: at86rf2xx: lost interrupts

other issues
------------
#1263: TLSF implementation contains (a) read-before-write error(s).
#2761: core: define default flags If a thread is created without the
corresponding flag (CREATE_STACKTEST), the ps command will yield wrong
numbers for the stack usage.
#2927: core: Automatically select the lowest possible LPM mode Not all
available low power modes (LPMs) are implemented for each platform and the
concept of how the LPM is chosen needs some reconsideration.
#2967: Makefile.features: location is not relevant for all features Provided
features for the build system should be split up into a board and cpu specific part
#4488: Making the newlib thread-safe When calling puts/printf after
thread_create(), the CPU hangs for DMA enabled uart drivers.
#4841: xtimer: timer already in the list Under some conditions an xtimer can end
 up twice in the internal list of the xtimer module.
#5338: xtimer: xtimer_now() not ISR safe For non-32-bit platforms.

Special Thanks
===============
We like to give our special thanks to all the companies that provided us with their
hardware for porting and testing, namely the people from (in alphabeticalorder):
Atmel, Freescale, Limifrog, Nordic, OpenMote, Phytec, SiLabs, UDOO,and Zolertia;
 and also companies that directly sponsored development time:Cisco Systems,
Eistec, Ell-i, Enigeering Spirit, Nordic, FreshTemp LLC, and Phytec.

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
=======
* Most of 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 are published under a separate, LGPL compatible license
  (e.g. some files developed by SICS).

All code files contain licensing information.





RIOT-2016.04 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: 8-bit
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers 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:
===================
This release adds support for two additional network stacks: lwIP and emb6.
A bunch of additional protocols are now available, P2P-RPL in the GNRC
network stack, Ethernet-over-Serial (ethos). Murdock, the new, blazing fast
RIOT CI is now available to significantly speed up code merging procedures.

This release also adds support for a number of new boards and sensors and a new
tool for automated border router setup is now provided which greatly simplifies
that setup for newbies as well as for old-timers. Last but not least: this
release includes a number of bug fixes, mostly about stabilizing and enhancing
the networking capabilities of RIOT.

About 470 pull requests with about 1196 commits have been merged since the last
release and 127 additional issues have been solved. 55 people contributed code
in 124 days. 1521 files have been touched with ~91700 insertions and ~42200
deletions.

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

New features and changes
========================
General
----------
+ added Makefile support for creating a "binary distribution", making it easier to create closed source applications while still complying to LGPL

Testing
---
+ Murdock, the new RIOT CI
+ unified pexpect code
+ added various new unittests and test applications

Core
----
+ added thread flags, a new method to signal events in an efficient and thread safe manner
+ messaging is now compile-time optional, shaving off some bytes off each thread's state struct for projects not requiring it
+ new, simpler list implementation increases mutex and msg performance

Network Stack
---
+ P2P-RPL (RFC6997)
+ netdev_test: test framework for users of the netdev API

Packages
---
+ emb6 network stack
+ jsmn (minimal JSON parser)
+ lwIP network stack
+ unified and streamlined git package source handling
+ added support for caching git repositories

Platforms
---
+ reworked existing peripheral drivers and added SPI driver for arduino-mega2560
+ added support for nRF52dk
+ added support for nucleo-f072 and nucleo-f103
+ unified LED macros for all boards

Drivers
---
+ ethos "ethernet over serial" driver, enabling shared uart + network communication over one serial connection
+ RHOM BH1750FVI ambient light sensor
+ ST LIS3MDL three-axis magnetic sensor
+ Silicon Labs Si70xx low-power temperature + humidity sensor
+ simplified GPIO driver interface
+ AES encryption for xbee radio driver
+ added ADC mapping to SAUL

System libraries
---
- vtimer support was dropped completely and removed

Build System
---
+ made build system safe for concurrent building of multiple applications
+ desvirt integration into the RIOT build system

Other
---
- simplified border router setup tool (single UART and automation script)

API changes
---
* at86rf2xx was moved from gnrc_netdev to the netdev API
* genrand_* -> random_*
* xtimer_remove() no longer returns whether a timer was actually removed
* disableIRQ(), enableIRQ(), restoreIRQ(), inISR() -> irq_disable(), irq_enable(), irq_restore(), irq_is_in()
* renamed periph/random to periph/hwrng

Fixed Issues from the last release
==================================
* #3109: periph/random: random_read should return unsigned int
* #3970: RPL: Advertise DODAG only over the assigned interface
* #4462: IPHC/NHC broken between Linux and a RIOT node with a RIOT-based border router in between.
* #4608: tests/xtimer_usleep_until: unstable behaviour

Known Issues
==========
----------------------
* #3075: nhdp: unnecessary microsecond precision
    NHDP works with timer values of microsecond precision which is not required. Changing
    to lower precision would save some memory.
* #3086: Max. packet length for AT86RF2XX
    The size of the link-layer header is not dynamically calculated, but instead the maximum
    size is always assumed.
* #4048: potential racey memory leak
    According to the packet buffer stats, flood-pinging a multicast destination may lead to a
    memory leak due to a race condition. However, it seems to be a rare case and a
    completely filled up packet buffer was not observed.
* #5005: ndp: router advertisement sent with global address
    Under some circumstances a router might send RAs with GUAs. While they are ignored
    on receive (as RFC 4861 specifies), RAs should have link-local addresses and not even
    be send out this way.
* #5007: gnrc icmpv6: Ping reply goes out the wrong interface
* #5055: cpuid: multiple radios will get same EUI-64
    Nodes with multiple interfaces might get the same EUI-64 for them since they are generated
    from the same CPU ID
* #5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
* #5388: gnrc_sixlowpan_iphc_nhc: receiving NHC compressed UDP packets hits assert in IPv6
    Fix already provided in #5281, but did not made it into the release due to its complexity
* #5390: pkg: OpenWSN does not compile
    This package still uses deprecated modules and was not tested for a long time

native related issues
---------------------
* #495: native not float safe
    When the FPU is used when an asynchronous context switch occurs, either the
    stack gets corrupted or a floating point exception occurs.
* #534: native debugging on osx fails
    Using valgrind or gdb with a nativenet target in OSX leads to "the network"
    being stuck (gdb) or the whole process being stuck (valgrind).
* #3341 and #3824: nativenet crashes when hammered
    Flood-pinging a native instance from more than one host (either multiple threads on the
    host system or multiple other native instances), leads to a SEGFAULT

other platform related issues
-----------------------------
* #4560: make: clang is more pedantic than gcc
    oonf_api is not building with clang.
* #4583: cpp11: clang doesn't allow `mutex_t` to be used with `constexpr`
    All cpp11-* tests fail with clang.
* #4866: not all GPIO driver implementations are thread safe
    Due to non-atomic operations in the drivers some pin configurations might get lost

other issues
------------
* #1263: TLSF implementation contains (a) read-before-write error(s)
* #2761: core: define default flags
    If a thread is created without the corresponding flag  (CREATE_STACKTEST),
    the ps command will yield wrong numbers for the stack usage
* #2927: core: Automatically select the lowest possible LPM mode
    Not all available low power modes (LPMs) are implemented for each platform and the
    concept of how the LPM is chosen needs some reconsideration
* #2967: Makefile.features: location is not relevant for all features
    Provided features for the build system should be split up into a board and cpu specific
    part
* #4488: Making the newlib thread-safe
    When calling puts/printf after thread_create(), the CPU hangs for DMA enabled uart drivers.
* #4841: xtimer: timer already in the list
    Under some conditions an xtimer can end up twice in the internal list of the xtimer module.
* #5338: xtimer: xtimer_now() not ISR safe
    For non-32-bit platforms

Special Thanks
===============
We like to give our special thanks to all the companies that provided us with
their hardware for porting and testing, namely the people from (in alphabetical
order): Atmel, Freescale, Limifrog, Nordic, OpenMote, Phytec, SiLabs, UDOO,
and Zolertia; and also companies that directly sponsored development time:
Cisco Systems, Eistec, Ell-i, Enigeering Spirit, FreshTemp LLC, and Phytec.

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
=======
* Most of 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 are published under a separate, LGPL compatible license
  (e.g. some files developed by SICS).

 All code files contain licensing information.





RIOT-2015.12 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: 8-bit
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers 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).

About this release:
===================
This release is mostly a clean-up and bug-fixing release. Besides that, it introduces SAUL,
the [S]ensor [A]ctuator [U]ber [L]ayer, which offers a unified API to interact with all
different types of sensors and actuators on RIOT supported hardware. Furthermore, it re-enables
the support for ICN by integrating CCN-Lite as a package. A lot of new overall documentation was
added and existing documentation was improved (http://riot-os.org/api/). In addition,
a Vagrant (https://www.vagrantup.com/) configuration file was added to the RIOT repository in
order to create reproducible and portable environments that contain all necessary toolchains.

About 222 pull requests with about 631 commits have been merged since the last release and 48
additional issues have been solved. 37 people contributed code in 102 days. 980 files have been
touched with ~59779 insertions and ~12115 deletions.

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


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

General
-------

Device support
--------------
+ SAUL [S]ensor [A]ctuator [U]ber [L]ayer

Core
----
* replaced deprecated dINT()/eINT() calls by up-to-date disableIRQ()/enableIRQ()/restoreIRQ()
  calls throughout the whole core

Network Stack
-------------
+ TFTP support
+ 6LoWPAN: Next Header Compression
+ leaf mode for RPL nodes
* RPL: refactoring of instances and dodags (saved 1kB ROM and 0,5kB RAM)
* FIB: initial source route support
* change to non-blocking 6LoWPAN fragmentation
* POSIX sockets: various fixes
* periodic stats printing for ping6 command
* convert all vtimer into xtimer calls
* send router advertisements without PIOs

Packages
--------
+ CCN-Lite as a ICN network stack
+ RELIC: efficient cryptography library
* fix TLSF to compile with -pedantic

Supported platforms
-------------------
Additional support for the following boards:
+ weio board with  NXP LPC11U34 (ARM Cortex-M0)
+ Silicon Labs Wireless Eval Kit SLWSTK6220A (Wonder Gecko)
+ STM32 Nucleo-F401

Drivers
-------
+ Arduino-mega2560 GPIO
+ Arduino pin mapping for Mega2560 and Due

Network drivers
---------------
+ enc28j60 Ethernet chip
+ at86rf2xx: Add support for channel page
* at86rf2xx: fix LQI reading
* implement sleep mode for at86rf2xx

Sensors drivers
---------------
+ AT30TSE75x temperature sensor
+ TCS3772 Color Light-to-Digital converter

System libraries
----------------
+ partial support for the Arduino API
+ lightweight semaphores
+ fmt: simple string formatting library
+ xtimer: 32-bit version of msg_recv_timeout
* implicit socket binding for POSIX connect() and sendto()
* posix_semaphore: make API POSIX compliant

Examples
--------
+ microcoap/conn example
+ minimal GNRC networking example

Build System
------------
* split the Cortex-M0 buildtest group to avoid timeout issues with Travis
* split the Cortex-M4 buildtest group to avoid timeout issues with Travis

Other
-----
+ vagrant configuration
+ documentation: various high-level descriptions of crucial features
+ IoT-LAB: create and connect to debug server
* pyterm: fix problems with German umlauts as input

Fixed Issues from the last release
==================================

#2724: Add support for serial number passing to CMSIS boards, document it
    Documentation about how to discover and set the serial number of CMSIS-DAP chips is missing
#3201: Odd length packet snips cause invalid check sum
    If an odd length packet snip occurs in a packet and is not the last snip
    (in the order the packet is supposed to be, not in the list's order)
    in a packet it will generate a wrong check sum.

Known Issues
============

network related issues
----------------------
#3075: nhdp: unnecessary microsecond precision
    NHDP works with timer values of microsecond precision which is not required. Changing
    to lower precision would save some memory.
#3086: Max. packet length for AT86RF2XX
    The size of the link-layer header is not dynamically calculated, but instead the maximum
    size is always assumed.
#3970: RPL: Advertise DODAG only over the assigned interface
     gnrc_rpl seems to multicast DIOs over all interfaces, though gnrc_rpl_init expects an
     interface as parameter and sets the RPL-nodes multicast address only for that interface.
#4048: potential racey memory leak
     According to the packet buffer stats, flood-pinging a multicast destination may lead to a
     memory leak due to a race condition. However, it seems to be a rare case and a
     completely filled up packet buffer was not observed.
#4462: IPHC/NHC broken between Linux and a RIOT node with a RIOT-based border router in between.

native related issues
---------------------
#495: native not float safe
    When the FPU is used when an asynchronous context switch occurs, either the
    stack gets corrupted or a floating point exception occurs.
#534: native debugging on osx fails
    Using valgrind or gdb with a nativenet target in OSX leads to "the network"
    being stuck (gdb) or the whole process being stuck (valgrind).
#3341 and #3824: nativenet crashes when hammered
    Flood-pinging a native instance from more than one host (either multiple threads on the
    host system or multiple other native instances), leads to a SEGFAULT.
#4608: tests/xtimer_usleep_until: unstable behaviour
    The test starts to output "too large difference" and fails after a random period of time.

other platform related issues
-----------------------------
#4560: make: clang is more pedantic than gcc
    oonf_api is not building with clang.
#4583: cpp11: clang doesn't allow `mutex_t` to be used with `constexpr`
    All cpp11-* tests fail with clang.

other issues
------------
#2761: core: define default flags
    If a thread is created without the corresponding flag  (CREATE_STACKTEST),
    the ps command will yield wrong numbers for the stack usage
#2927: core: Automatically select the lowest possible LPM mode
    Not all available low power modes (LPMs) are implemented for each platform and the
    concept of how the LPM is chosen needs some reconsideration
#2967: Makefile.features: location is not relevant for all features
    Provided features for the build system should be split up into a board and cpu specific
    part
#3109: periph/random: random_read should return unsigned int
    The documentation of this function does not match corresponding implementation.
#4488: Making the newlib thread-safe
    When calling puts/printf after thread_create(), the CPU hangs for DMA enabled uart drivers.

Special Thanks
--------------
We like to give our special thanks to all the companies that provided us with their hardware
for porting and testing, namely the people from (in alphabetical order):
Atmel, Freescale, Limifrog, Phytec, SiLabs, and Zolertia; and also companies that directly
sponsored development time:
Cisco Systems, Google, Eistec, Ell-i, Engineering Spirit, FreshTemp LLC, and Phytec.

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

* Most of 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 are published under a separate, LGPL compatible license
  (e.g. some files developed by SICS).

All code files contain licensing information.





RIOT-2015.09 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: devices based on
8-bit microcontrollers, 16-bit microcontrollers and light-weight 32-bit
processors.

RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers 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).

About this release:
============
This release introduces the GNRC network stack, a completely new, highly
modularized and configurable IPv6/6LoWPAN stack. It also includes xtimer as a
new timer subsystem for accurate short- and long-term timers. Moreover,
peripheral drivers, board, and CPU support has been tidied up and contains
about 50% less duplication in the build system.

About 580 pull requests with about 2,500 commits have been merged since the
last release and 120 additional issues have been solved. 62 people contributed
code in 278 days. 2578 files have been touched with ~320,000 insertions and
~134,000 deletions.

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



New features
============

General
-------
+ complete codebase now compiles with -Werror on all platforms

Device support
--------------
+ vastly improved hardware abstraction, unified over all devices
+ unified most common code
* complete refactoring of MSP430 and ARM7 code

Core
----
+ new timer subsystem: xtimer
+ extended atomic API by compare-and-swap, increase/decrease and
  set-to-one/set-to-zero functions
+ introduced a more energy-saving assert macro

Network Stack
-------------
+ RFC compliant gnrc network stack (6LoWPAN, IPv6, UDP, RPL) major refactoring
+ 6LoWPAN ND (including SLAAC)
+ example applications working out of the box (gnrc_networking for the full
  gnrc experience, gnrc_border_router for a 6LoWPAN border router, and default
  for simple link layer connectivity)
+ explicit support for border router
+ auto-init for the network stack
+ introduction of generic interfaces (netdev, netapi)
+ introduction of a protocol-independent FIB
+ introduction of a central packet buffer
+ wireshark-supported protocol ZEP to send IEEE 802.15.4 frames over UDP on
  non-IEEE-802.15.4 devices
+ support for SLIP and link-layers without addresses
+ new low-level driver model
+ new nativenet based directly on ethernet
+ conn: general stack-independent transport layer API
+ POSIX sockets ported for conn
+ NHDP support

Packages
--------
+ support for microCoAP
+ CMSIS DSP

Supported platforms
-------------------
Additional support for the following boards:
+ Zolertia ReMote
+ Atmel SAML21 Xplained Pro (saml21-xpro)
+ ST Nucleo L1
+ ST Nucleo F334
+ ST Nucleo F091
+ Phytec phyWAVE KW22
+ Eistec Mulle
+ Freescale Freedom FRDM-K64F
+ TI Stellaris Launchpad LM4F120
+ LimiFrog V1
+ Silabs EZR32WG

Drivers
-------
+ various peripheral drivers (ADC, UART, timer, SPI, I²C, RTC, RTT, DAC, PWM...)
+ basic NVRAM driver (interface)

Network drivers
+ native ethernet driver
+ ENCx24J600 ethernet driver

Sensors drivers
+ ISL29125 RGB light sensor
+ PDC8544 LCD display
+ INA220 current and power monitor
+ MPU-9150 9-DOF motion sensor
+ LIS3DH accelerometer
+ TMP006 temperature sensor
+ MAG3110 magnetometer
+ MMA8652 accelerometer
+ DHT11/DHT22 temperature-humidity sensor
+ ADT7310 temperature sensor

System libraries
----------------
+ MD5
+ Fletcher's checksum
+ Unified Cipher API and Block cipher operation modes: ECB, CBC, CTR and CCM
+ Bitfield operations
+ thread safe ringbuffer
+ vtimer compatibility layer

Build System
------------
+ support for the FIT IoT-LAB testbed by direct integration into the Make build
  system
+ integrated Docker support
+ integration of llvm's clang static analyzer
+ added target for the address sanitizer
+ indicating possible feature conflicts at compile time
+ unified OpenOCD script


Changes
=======

Core
----
* improved documentation
* fixed several IPC message queue initializations
- removed hwtimer

Drivers
-------
* optimized/remodeled GPIO interface
* optimized/remodeled TIMER interface
- temporarily removed CC2420 driver (awaiting last bug fixes for a rewrite)
* re-implementation of the CC110x driver against the peripheral interface

Network Stack
-------------
* temporarily removed and currently being refactored:
 - TCP support
 - CCN-lite
 - AODVv2

System libraries
----------------
* new high level UART/stdio interface
* better modularisation of POSIX wrapper modules
- removed skipjack crypto library

Packages
--------
* updated CMSIS HAL to version 4.3

Other
-----
* clean-up of deprecated system and network libraries
* clean-up of deprecated boards and drivers

Selected Issues Fixed since the Last Release
============================================
#21: Deal with stdin in bordermultiplex.c
    A completely new border router implementation is in place
#715: test_hwtimer_wait fails on native
    Fixed by @benoit-canet in #2870
#861: neighbor discovery for 6LoWPAN not working
    GNRC implements 6LoWPAN ND in a RFC6775 compliant way
#1753: vtimer_msg test crashes after ~49'20" and
#1449: a removed vtimer might still get called back by hwtimer
    vtimer has been replaced by xtimer which does not have these issues
#1870: IPv6 neighbor advertisements are malformed
    According to Wireshark (and reference implementations) GNRC sends
    well-formed neighbor advertisements
#1964 and #1955: eventual problems with IoT-LAB M3 nodes in the testbed
    Solved by new driver versions for UART and radio
#2228: samd21 stack sizes are too small
    The stacksize has been adapted in #2229

Known Issues
============

network related issues
----------------------
#3075: nhdp: unnecessary microsecond precision
    NHDP works with timer values of microsecond precision which is not
    required. Changing to lower precision would save some memory.
#3086: Max. packet length for AT86RF2XX
    The size of the link-layer header is not dynamically calculated, but
    instead the maximum# size is always assumed.
#3201: Odd length packet snips cause invalid check sum
    If an odd length packet snip occurs in a packet and is not the last snip
    (in the order the packet is supposed to be, not in the list's order) in  a
    packet it will generate a wrong check sum.
#4048: potential racey memory leak
    According to the packet buffer stats, flood-pinging a multicast destination
    may lead to a memory leak due to a race condition. However, it seems to be
    a rare case and a completely filled up packet buffer was not observed.

native related issues
---------------------
#495: native not float safe
    When the FPU is used when an asynchronous context switch occurs, either the
    stack gets corrupted or a floating point exception occurs.
#499: native is segfaulting on heavy network usage
    Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
#534: native debugging on osx fails
    Using valgrind or gdb with a nativenet target in OSX leads to "the network"
    being stuck (gdb) or the whole process being stuck (valgrind).
#3341 and #3824: nativenet crashes when hammered
    Flood-pinging a native instance from more than one host (either multiple
    threads on the host system or multiple other native instances), leads to a
    SEGFAULT.

other platform related issues
-----------------------------
#2724: Add support for serial number passing to CMSIS boards, document it
    Documentation about how to discover and set the serial number of CMSIS-DAP
    chips is missing

other issues
------------
#2761: core: define default flags
     If a thread is created without the corresponding flag  (CREATE_STACKTEST),
     the ps command will yield wrong numbers for the  stack usage
#2927: core: Automatically select the lowest possible LPM mode
    Not all available low power modes (LPMs) are implemented for each platform
    and the concept of how the LPM is chosen need some reconsideration
#2967: Makefile.features: location is not relevant for all features
    Provided features for the build system should be split up into a board and
    cpu specific part
#3109: periph/random: random_read should return unsigned int
    The documentation of this function does not match corresponding
    implementation.

Special Thanks
--------------------
We like to give our special thanks to all the companies that provided us with
their hardware for porting and testing, namely the people from (in alphabetical
order): Atmel, Freescale, Limifrog, Phytec, SiLabs, and Zolertia; and also
companies that directly sponsored  development time: Cisco Systems, Eistec,
Ell-i, FreshTemp LLC, and Phytec.

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

* Most of 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 are published under a separate, LGPL compatible license
  (e.g. some files developed by SICS).

All code files contain licensing information.





RIOT-2014.12 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: from 8-bit
microcontrollers to light-weight 32-bit processors.

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

New features
============
Core
----
+ introduced new thread_yield() and renamed the old implementation to thread_yield_higher()

Supported platforms
-------------------
Additional support for the following boards:
+ Arduino Mega 2560 (first-time support of an 8-bit platform)
+ HikoB Fox
+ Atmel samr21-Xplained Pro
+ OpenMote
+ cc2538 Developer Kit
+ Spark-Core
+ f4vi1
+ Airfy-Beacon
+ STMF0Discovery Board
+ STMF3Discovery Board
+ STMF4Discovery Board
+ nrf51822 Development Kit
+ yunjia-nrf51822
+ MSB-IoT
+ native on ARM platforms

Drivers
-------
+ various peripheral drivers (ADC, UART, timer, SPI, I²C, RTC, RTT, DAC, PWM...)
+ MQ-3 alcohol sensor
+ ISL29020 light sensor
+ LPS331AP pressure sensor
+ LSM303DLHC accelerometer
+ L3G4200D gyroscope
+ servo motor
+ TI HDC 1000 low power humidity and temperature digital sensor
+ SRF02/SRF08 ultrasonic range sensors
+ PIR motion sensor
+ RGB LED

Network Stack
---------------
+ AODVv2
+ RPL non-storing mode
+ OF manager for RPL
+ Source Routing Header support
+ introduced netapi
+ introduced netdev, a general interface for network device drivers
+ introduced global packet buffer

System libraries
----------------
+ CBOR
+ UBJSON
+ color module for PWM

Packages
--------
+ libfixmath

Other
-----
+ C++ support for most platforms
+ PCAP based wireless sniffer

Changes
=======
Core
----
* PIDs begin with 1
* mamximum 16 priority levels for every platform
* fixed sched_switch()
* simplified mutex signatures
* minimized size of TCB
* allow hwtimer to run with more than 1MHz
* imported ringbuffer from sys

Supported platforms
-------------------
* improved iotlab-m3 support
* major improvements on the mbed LPC1768
* improved at86rf231 radio driver
* fixed hwtimer for MSP430
* added support for timer B for MSP430
* fixed thread_yield() for MSP430
* several fixes for the cc2420
* improved interrupt handling on ARM
* adjusted stack sizes for Cortex platforms

Network Stack
---------------
* refactored CCN-lite
* refactored RPL
* renamed destiny to transport_layer and socket_base
* several fixes for TCP
* split UDP and TCP

System libraries
----------------
- removed hashtable implementation

Packages
--------
* updated and simplified OpenWSN

Other
-----
* Improved and cleaned up build system
* various new helper targets (like debug, distclean, reset, objdump...)
* use newlib's nano specs if available
* various new features and added Python 3 compatibility for pyterm
* major reduction of warnings in doxygen and improved html layout

Fixed Issues from the last release
==================================
#426: Interrupt handling on MSP430 is buggy
    Several fixes by @rousselk
#1798: core: first thread on runqueue is scheduled twice
    Was fixed along with the thread_yield() refactoring
#1127: Random build fails on OSX
    native is building stable also on OSX now

Known Issues
============
network related issues
----------------------
#21: Deal with stdin in bordermultiplex.c
    Not all supported platforms provide a stdin in the current release.
    However, the implementation of the 6LoWPAN border router won't work
    without stdin.
#861: neighbor discovery for 6LoWPAN not working
    Duplicate address detection according to RFC 6775 is also missing.
#1577: ccn-lite: populate does not work with disabled cache
    If cache is set to zero, the chunks cannot be loaded and therefore also not get populated.
#1870: IPv6 neighbor advertisements are malformed
    According to Wireshark, ICMPv6 neighbor advertisements are malformed (wrong
    checksum or other reasons).

native related issues
---------------------
#495: native not float safe
    When the FPU is used when an asynchronous context switch occurs, either the
    stack gets corrupted or a floating point exception occurs.
#499: native is segfaulting on heavy network usage
    Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
#534: native debugging on osx fails
    Using valgrind or gdb with a nativenet target in OSX leads to "the network"
    being stuck (gdb) or the whole process being stuck (valgrind).
#715: test_hwtimer_wait fails on native
    The problem appears to be lost signals and depends on the CPU speed.
#787: reboot not working with open file descriptors on native
    If for example a tap device is in use, the reboot command fails.
#862: sometimes the tap bridge does not work in native
    Sometimes (rather suddenly) packages are not received by a TAP and won't be
    received even if I reconfigure the bridge.


other platform related issues
-----------------------------
#1232: x86 doesn't build on OS X with clang
    Current version of the x86 port doesn't build for OS X with clang.
#1442: setting channel is not persistent cc2420
    After changing the channel via a shell command, the channel reverts back to an arbitrary
    value. However, this might be only a shell problem.
#1753: vtimer_msg test crashes after ~49'20"
    dependent on the platform, vtimer stops working after some time.
#1891: printf formatting does not work properly on some Cortex platforms for 64 bit numbers
    This problem happens mostly for the Newlib nano, which does not support 64 bit integer
    printing, but sometimes happens also with other toolchains.
#1964 and #1955: eventual problems with IoT-LAB M3 nodes in the testbed
    The shell is sometimes not properly working after a reboot and the PDR is sometimes
    worse than expected.
#2143: tests.core doesn't compile for all platforms
    For some missing GCC compiler builtins, the unittests do not compile for MSP430
    platforms.
#2228: samd21 stack sizes are too small
    The application examples/default for example will crash when issuing the txtsnd command

other issues:
--------------
#1449: a removed vtimer might still get called back by hwtimer
    The timer callback might still fire even after vtimer_remove() was called.
#2175: valgrind registers "Invalid write of size 4" in unittests for ubjson
     According to valgrind the stack gets corrupted in UBJSON.

For all issues and open pull requests please check the RIOT issue tracker:
https://github.com/RIOT-OS/RIOT/issues

Special Thanks
--------------------
We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabetical order): airfy, Atmel, ELL-i, Intel, IoT-Lab, mbed, Phytec, and Udoo


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)

License
=======
* All sources and binaries that have been developed at Freie Universität Berlin
  and most of the other code are licensed under the GNU Lesser General Public
  License version 2 as published by the Free Software Foundation.
* Some external sources, especially files developed by SICS are published under
  a separate license.

All code files contain licensing information.


RIOT-2014.05 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: from 16-bit
microcontrollers to light-weight 32-bit processors.

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

New features
============
Core
----
+ introduced explicit core/cpu interface through a set of header files
+ added reboot and panic functions
+ added a node name to the sysconfig struct
+ added the ability to send a message to the current thread's message queue

Supported platforms
-------------------
Additional support for the following boards:
+ Arduino Due
+ UDOO board
+ X86 via qemu
+ Zolertia Z1

Network stack
-------------
+ added net_if as abstraction layer between transceiver module and L3 protocol
+ added support for auto initializing of the 6LoWPAN network stack
+ added support for RFC5444 via oonf_api (from OLSR.org)
+ added a Wireshark dissector for nativenet packets
+ introduced low-level radio driver interface
+ added a default transceiver for all boards
+ common IEEE 802.15.4 radio driver API definition
+ added standard way to query CCA (Clear Channel Assessment) status
+ enabled nonces in interests for CCN-lite (Content Centric Networking)
+ added a route shell command

System libraries
----------------
+ added quad-precision math library (quad_math)

Automated Testing
-----------------
+ added Travis CI based build tests
+ added support for a Jenkins CI server
+ added a unittest framework (based on embunit)
+ added unittests for most core functions

POSIX compliance
----------------
+ pthread support including
    + dynamic memory pool and cleanup handlers
    + mutexes
    + condition variable implementation
    + reader/writer lock
    + pthread_barrier_* functions

Native
------
+ added a valgrind and cachegrind targets
+ added profiling support

Changes
=======
Core
----
* initialize hwtimer automatically
* optimized thread status field usage
* moved oneway_malloc to sys
* prefixed API functions correctly

Network stack
-------------
* major refactoring and decoupling
* refactor use of vtimer
* fixed forwarding
* added IoT-LAB M3 Open Node support and dropped TelosB support temporarily for OpenWSN
* moved ETX beaconing to a module on its own
* various byte order and other bug fixes

Drivers
-------
* added low-level driver interface for unified CPU peripheral abstraction for
  GPIO, ADC, PWM, Timer and UART
* handle race conditions preventing timers to be set correctly on MSP430 MCUs
* several CC2420 fixes

System libraries
----------------
* auto_init is used by default
* changed function prototype for shell handlers

Other
-----
* cleaned up Makefile system and simplified binary directory
* improved documentation for core and sys
* build system uses PKG dependency
* build system sets include paths automatically
* black and white lists for applications and tests
* add stacksize checker for DEBUG macro
* styling corrections
* fixed license boiler plates
* set lpc2k_pgm return value correctly
* various bug fixes and cleanups

Fixed Issues from the last release
==================================
#45: bit field order in the fcf may be wrong
    The CC2420 FIFO expects the IEEE802.15.4 FCF field in reversed bit order.
    With this release the byte order is now handled by the net_if module and
    all device specific handling is done by the driver.
#82: Setting STATUS_REPLY_BLOCKED thread to STATUS_PENDING though it is not
     handled yet
    In some rare cases the status of a thread might falsely change to
    STATUS_PENDING instead of STATUS_REPLY_BLOCKED.
#455: sha256 is broken on MSP430
    Fixed.
#498: native is segfaulting at startup
    Fixed by several PRs (#501, #583, and #588).
#505: native on FreeBSD is broken
    Fixed by PR #1022.

Known Issues
============
network related issues
----------------------
#21: Deal with stdin in bordermultiplex.c
    Not all supported platforms provide a stdin in the current release.
    However, the implementation of the 6LoWPAN border router won't work
    without stdin.
#861: neighbor discovery for 6LoWPAN not working
    Duplicate address detection according to RFC 6775 is also missing.

native related issues
---------------------
#495: native not float safe
    When the FPU is used when an asynchronous context switch occurs, either the
    stack gets corrupted or a floating point exception occurs.
#499: native is segfaulting on heavy network usage
    Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
#534: native debugging on osx fails
    Using valgrind or gdb with a nativenet target in OSX leads to "the network"
    being stuck (gdb) or the whole process being stuck (valgrind).
#715: test_hwtimer_wait fails on native
    The problem appears to be lost signals and depends on the CPU speed.
#787: reboot not working with open file descriptors on native
    If for example a tap device is in use, the reboot command fails.
#862: sometimes the tap bridge does not work in native
    Sometimes (rather suddenly) packages are not received by a TAP and won't be
    received even if I reconfigure the bridge.
#1127: Random build fails on OSX
    Building for native on OSX often fails - Workaround: build using  -B  flag,
    e.g.:  make -B clean all

other platform related issues
-----------------------------
#426: Interrupt handling on MSP430 is buggy
    UART and timer handling is currently unstable on MSP430 based platforms
#1232: x86 doesn't build on OS X with clang
    Current version of the x86 port doesn't build for OS X with clang.

For all issues and open pull requests please check the RIOT issue tracker:
https://github.com/RIOT-OS/RIOT/issues

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)

License
=======
* All sources and binaries that have been developed at Freie Universität Berlin
  and most of the other code are licensed under the GNU Lesser General Public
  License version 2 as published by the Free Software Foundation.
* Some external sources, especially files developed by SICS are published under
  a separate license.

All code files contain licensing information.


RIOT-2014.01 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: from 16-bit
microcontrollers to light-weight 32-bit processors.

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

New features
============
Core
----
+ msg_receive() with timeout
+ LPM support for MSP430 based platforms
+ introduced a version string

Supported platforms
-------------------
Additional support for the following boards:
+ TelosB
+ mbed LPC1768

Sensor drivers
---------------
+ drivers for the LM75A Digital temperature sensor and thermal watchdog
+ SRF02 and SRF08 ultrasonic range finders

Native port
-----------
+ implemented UART via I/O redirection or TCP and UNIX socket

System libraries
----------------
+ Mersenne twister pseudorandom number generator
+ crypto libraries
  + 3des
  + aes
  + rc5
  + skipjack
  + twofish
+ BSD-like package system for easy integration of external libraries

Network stack
-------------
+ port of CCN lite
+ POSIX socket wrapper
+ integration of libcoap
+ integration of OpenWSN

Further Changes
===============
* boards and projects repositories have been integrated and are now part of
  the RIOT repository itself
* full refactoring of the network stack and introducing a substructure
  according to the modules' functionalities
* cleaned up Makefile system and simplified binary directory
* more documentation
* various bug fixes and cleanups

Fixed Issues from the last release
==================================
#45: bit field order in the fcf may be wrong
    The CC2420 FIFO expects the IEEE802.15.4 FCF field in reversed bit order.
    With this release the byte order is now handled by the net_if module and
    all device specific handling is done by the driver.
#82: Setting STATUS_REPLY_BLOCKED thread to STATUS_PENDING though it is not
     handled yet
    Pull Request #569 fixed this bug by checking for STATUS_REPLY_BLOCKED in
    msg_receive().
#455: sha256 is broken on MSP430
    The problem was caused

Known Issues
============
#21: Deal with stdin in bordermultiplex.c
    Not all supported platforms provide a stdin in the current release.
    However, the implementation of the 6LoWPAN border router won't work
    without stdin.
#426: Interrupt handling on MSP430 is buggy
    UART and timer handling is still unstable on MSP430 based platforms.
#495: native not float safe
    When the FPU is used when an asynchronous context switch occurs, either the
    stack gets corrupted or a floating point exception occurs.
#498: native is segfaulting at startup
    In some cases (about 5-10%) a RIOT native process crashes with a SEGFAULT
    at startup.
#499: native is segfaulting on heavy network usage
    Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
#505: native on FreeBSD is broken
    Due to different parameter handling in FreeBSD, native is currently not
    working there.

For all issues and open pull requests please check the RIOT issue tracker:
https://github.com/RIOT-OS/RIOT/issues

Release 2013.08
===============
Kernel
------
- Microkernel with a powerful messaging system
- Multi-Threading with low overhead
- an energy-efficient, real-time capable scheduler
- small memory footprint

Userspace
---------
- 6LoWPAN according to RFC 4944, RFC 6282, and RFC 6775
- TCP and UDP
- RPL according to RFC 6550 and RFC 6719
- High resolution and long-term timers
- POSIX IO and BSD socket API
- Bloom filter
- SHA256

Hardware Support
----------------
- various ARM and MSP430 MCUs
    * ARM7 NXP LPC2387
    * TI MSP430F1612
    * TI CC430F6137
    * ARM7 Freescale MC13224v (preliminary)
    * ARM Cortex-M4 STM32f407vgt6 (preliminary)
    * ARM Cortex-M3 STM32f103rey6 (preliminary)
- radio drivers
    * TI CC1100 and CC1101
    * TI CC2420
    * Atmel AT86RF231
- sensor drivers
    * Sensirion SHT11
    * Linear Technology LT4150


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)

License
=======
* All sources and binaries that have been developed at Freie Universität Berlin are
  licensed under the GNU Lesser General Public License version 2 as published by the
  Free Software Foundation.
* Some external sources, especially files developed by SICS are published under
  a separate license.

All code files contain licensing information.
