Loading...
Searching...
No Matches
Changelog

Release 2024.01

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 2024.01 release includes:

- Breaking change for board definition due to XFA for pointers to defined MTD.
  This means users will need to:
    - remove the `MTD_NUMOF` definition from `board.h`
    - add `MTD_XFA_ADD(<mtd_dev>, <idx>);` to the definition of `<mtd_dev>`.
    - `MTD_0`, `MTD_1`, … defines are no longer needed. Use `mtd_dev_get(0)`,
      `mtd_dev_get(1)`, … instead.
- Many fixes to peripherals due to the periph testing shield
- The AVR-8 now has power management
- The ESP32 family is now supported by the SDMMC peripheral driver
- `native` now is supported in pyterm
- `tests/periph/uart_locate_pins` helps discover which pins are where
- the `periph_timer` API supports `periph_timer_query_freqs`
- The GNRC boarder router application supports ZEP topology
- Removal of Kconfig dependency modelling (but still configurations supported)

194 pull requests, composed of 475 commits, have been merged since the
last release, and 4 issues have been solved. 30 people contributed with
code in 64 days. 1083 files have been touched with 36196 (+) insertions and
4976 deletions (-).

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

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

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

Core
----

* core, sys, drivers: 64-bit support preparations (#20257)
* core: Express -1 as ~0 in thread_status_t cast (#19976)

System Libraries
----------------

+ Fletcher32: Add incremental API (#19981)
+ sys/event/timeout: add event_timeout_is_pending() (#19963)
+ sys/hashes: add SHA-512 support (#19969)
+ sys/suit: introduce suit_worker_done_cb() (#20237)
* riotboot: fix build errors (#20210)
* sys/benchmark: fix integer overflow in benchmark_print_time() (#20220)
* sys/psa_crypto: allow repeated initialization (#19990)
* sys/shell/gnrc_netif: Fix a few blockers for sharing ifconfig shell (#19971)
* sys/shell: fix getopt() support (#20209)
+ sys/busy_wait: add busy wait helper (#20241)

Networking
----------

* gnrc: make message queues static (#19998)
+ nanocoap: implement coap_find_uri_query() (#20273)
+ pkg/lwip: add support for slipdev (#20022)
* coap: create typedef for CoAP methods (#20003)
* gcoap_dns: Housekeeping with regards to draft status (#20015)
* gnrc/ipv6/nib: allow for predictable static link-local addresses (#20224)
* gnrc/nib: allow prefix to be on-link without being used for address (#20243)
* nanocoap: fix incorrect uses of coap_get_code() (#20028)
* nanocoap_sock: implement FETCH methods (#20238)
* print: Missing size_t print format specifiers (#20249)

Packages
--------

* Bump nanopb to 0.4.8 (#20132)
* mjson: Initial include of package (#20129)
* pkg/ccn-lite: Bump version (#20248)
* pkg/flashdb: bump to 2.1.0 (#20155)
* pkg/nanocbor: Bump to latest commit (#19975)
* pkg/tinydtls: bump version (#20159)
* pkg: micropython: bump version (#20208)
* pkg: 64-bit support preparations (#20271)

Boards
------

+ boards/feather-nrf52840-sense: Add bootloader info (#20034)
+ boards/gd32vf103c-start: new board (#20270)
+ boards/generic-cc2538-cc2592-dk: add board support (#20226)
+ boards/nucleo-l4r5zi : add PWM configuration (#20036)
+ boards/nucleo-l552ze: add PWM configuration (#20032)
+ boards/p-nucleo-wb55: add PWM configuration (#20120)
+ boards: add support for Adafruit Feather nRF52840 Sense (#20027)
+ drivers/include/periph: add FREQM peripheral driver (#20020)
+ drivers/ws281x: Add gpio_ll and timer based driver (#19891)
+ pyterm: add native support (#20172)
+ sys/shell: add firmware version to version cmd (#20244)
* AVR-8: Implement Power Management (#19784)
* boards/nrf52dk: Minimal Arduino pinout support (#20286)
* boards/same54-xpro: configure pins for UART HW flow control &
  ethernet LED (#20183)
* boards: remove `extern mtd_dev_t *mtd<n>` declarations from board
  definitions (#20104)
* makefiles/tests/tests.inc.mk: use native term for tests (#20215)
* treewise: typo "or RAM" (#20219)

CPU
---

* cpu/msp430: rework MSP430 x1xx periph drivers (#19835)
* cpu/nrf5x: clean up periph_uart (#20102)
* cpu/stm32: FMC used for low-level LCD parallel interface (#19943)
+ cpu/esp32/periph: add low-level SDMMC peripheral driver for ESP32 and
  ESP32-S3 (#19786)
+ cpu/msp430: improve periph_timer (#20160)
+ cpu/stm32/periph: add low-level SDMMC peripheral driver (#19540)
+ cpu/*: implement periph_timer_query_freqs (#20142) (#20143) (#20144) (#20145)
  (#20146) (#20147) (#20148)
+ cpu/stm32: add ADCAL operation (#20044)
+ drivers/periph/uart: add periph_uart_tx_ondemand feature (#20108)
* cpu/avr8_common: allow to build with !periph_pm (#20247)
* cpu/avr8_common: fix build with !core_thread (#20240)
* cpu/nrf5x_common: clean up UART implementation (#20111)
* cpu/sam0/uart: implement uart_pin_cts()/uart_pin_rts() (#20171)
* cpu/sam0_common: implement periph_gpio_ll and periph_gpio_ll_irq (#20189)
* cpu/stm32/periph_spi: only perform DMA transfer above threshold (#20214)
* cpu/stm32: uart: don't do DMA for small transfers (#20230)

Device Drivers
--------------

+ driver/mtd: mtd_init add documentation for return value (#20033)
+ drivers/periph_timer: add timer_query_freqs() (#16349)
* drivers/mtd_flashpage: improve _write_page (#20173)
* drivers/mtd: improve doc consistency (#20184)
* drivers: make use of busy_wait() (#20258)

Documentation
-------------

* boards/nucleo-l433rc: doc update - image and MCU table (#20098)
* boards/nucleo-l452re: doc update (#20207)
* boards/p-nucleo-wb55: documentation update (#20115)
* doc/mainpage: don't claim to be a microkernel (#20246)
* doc: Move and update roadmap in from the wiki (#20122, #20123)

Build System / Tooling
----------------------

+ dist/testbed-support: Add openmote board (#19979)
+ dist/tools/riotboot_gen_hdr/genhdr: add update command (#20239)
* Bump version of UF2 package (#20035)
* examples/gnrc_border_router: enable setting ZEP topology (#20006)
* make all: document targets for RIOT base module (#20187)
* make help: show generate-Makefile.ci (#20186)
* tools/zep_dispatch: enhancements and fixes (#19996)

Kconfig
-------

* tests/build_system: drop Kconfig tests (#20229)

Examples
--------

* examples/dtls-sock: Enable non 32-bit architectures (#20196)
* examples/dtls-sock: make use of helper functions (#20125)

Testing
-------

+ tests/periph/uart_locate_pins: new test/utility app (#20253)
+ tests/pkg/minmea: adding GGA, GSA and RMC sentences to test
  application (#20005)
+ tests/unittests: add a unit test for ztimer (#20011)
* .murdock: drop Kconfig compile check (#20211)
* ci: ensure "xxx succeeded" properly fail (#20288)
* ci: make native tests show up in "tests" (#20269)
* tests/drivers/at: fix device table overflow (#20025)
* tests/net/gnrc_sixlowpan_frag_sfr_congure_impl: disable test on
  native (#20151)
* tests/periph/uart: allow to set line ending (#20128)
* tests/pkg/minmea: fixing RMC timestamp (#20018)
* tests/sys/psa_crypto*: Fix failing tests (#20178)
* tests/sys/psa_crypto_se_cipher: disable test on esp32-wroom-32 (#20152)
* tests/sys/psa_crytpo_se: disable test on esp32-wroom-32 (#20150)
* tests/unittests: blacklist LLVM on native (#19958)
* tests: Slightly increase coverage of fmt unittests (#20272)

API Changes
-----------

+ print: Added size_t print format specifier (#20194)
* drivers/mtd: use XFA for pointers to defined MTDs (#19465)
* drivers/periph/gpio_ll: shrink gpio_conf_t (#20236)
* hashes/sha2{24,56}: Remove static variables from sha256 (#20116)
* nanocoap: defuse footgun in coap_get_uri_query() (#20195)
* nanocoap: rename coap_get_code() -> coap_get_code_decimal() (#20004)

Uncategorized
-------------
* Fix labeler action (#20137)
* roadmap: extend peripheral drivers section (#20136)

And 52 minor changes.

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

None

Removals (1)
------------

- mtd/*: drop .write() if .write_page() is implemented (#15380)

Bug fixes (26)
==============

* dist/tools/uf2: add target to also copy families.json file (#20042)
* backport_pr.py: increase entries per page for branches GET (#19985)
* boards/esp32s3-usb-otg: fix the table of contents in documentation (#20156)
* boards/native: only use pyterm wrapper with term target (#20264)
* boards/nucleo-f413zh: Fix DMA mapping (#20225)
* ci: fix murdock tests after dwq change (#20268)
* cpu/cc2538: fix EUI provider (#20228)
* cpu/cortexm_common: work around bug on WFI for STM32 (#20149)
* cpu/stm32/periph_spi: Fix /CS handling (#20084)
* cpu/stm32: fix periph_i2c for F1, F2, L1 and F4 families (#20100)
* drivers/mtd: fix the order of entries in the MTD pointer XFA
  `mtd_dev_xfa` (#20113)
* drivers/mtd_sdmmc: always enable the erase function (#20180)
* drivers/slipdev: make use of chunked ringbuffer (#18066)
* fatfs_vfs: fix the Memory leak: work (#20206)
* gcoap: fix underflow when correcting ETag from cache (#19968)
* gnrc/ipv6/nib: rejoin ipv6_addr_all_nodes_link_local on interface up (#20259)
* gnrc_ipv6_nib: fix config for mixed 6lo/classic setup (#20167)
* nanocoap: prevent integer underflow in coap_opt_put_uri_pathquery() (#19994)
* net/gnrc/netif: set 6LN flag for ethernet if gnrc_sixloenc is used (#20139)
* pkg/nanocbor: Update for fixed nanocbor_skip_simple() (#19983)
* sock/udp: work around gnrc_sock_recv() returning early timeout (#19965)
* sys/psa_crypto: Fix build problems (#19992)
* sys/psa_crypto: fix compile bug for certain configuration (#20193)
* sys/psa_crypto: Fix macro for public key max size and SE example (#19995)
* wasm: fix the memory leak: wasm_buf (#20205)

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

Network related issues (52)
---------------------------

* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* example/gnrc_border_router cannot answer after some time (#19578)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* Global IPv6 addresses remain deprecated after receiving RA (#19846)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_border_router: Kconfig and C disagree about number of addresses
  per interface (#19947)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_netif_pktq leaks memory (#17924)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
* gnrc_rpl: old routes are not deleted (#19423)
* gnrc_rpl: takes unusually long time to start routing packets (#19147)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
* gomach: Resetting netif with cli doesn't return (#10370)
* ieee802154_submac: IPv6 fragmentation broken (#16998)
* LoRaWan node ISR stack overflowed (#14962)
* LWIP TCP Communication Error (#19676)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* pkg/tinydtls: DTLS handshake does not work (#19595)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* stale border router does not get replaced (#12210)
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
  behavior (#18097)
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
* two nodes livelock sending neighbor solicitations back and forth
  between each other (#16670)
* xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (7)
------------------------

* misc issues with tests/trickle (#9052)
* MSP430: periph_timer clock config wrong (#8251)
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
* periph_timer: systematic proportional error in timer_set (#10545)
* saml21 system time vs rtc (#10523)
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
* sys/newlib: gettimeofday() returns time since boot, not current wall
  time. (#9187)

Drivers related issues (12)
---------------------------

* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* PWM: Single-phase initialization creates flicker (#15121)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)

Native related issues (4)
-------------------------

* examples/micropython: floating point exception while testing on
  native (#15870)
* native getchar is blocking RIOT (#16834)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)

Other platforms related issues (13)
-----------------------------------

* Failing tests on FE310 (Hifive1b) (#13086)
* boards/hifive1: flashing issue (#13104)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* examples/gnrc_border_router: esp_wifi_init failed with return value
  257 on ESP32-C3 with nimble_rpble (#19319)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* Interrupt callback function is instantly called on samd51 after
  setting it from within interrupt callback function (#19861)
* MPU doesn't work on cortex-m0+ (#14822)
* newlib-nano: Printf formatting does not work properly for some
  numeric types (#1891)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)

Build system related issues (7)
-------------------------------

* `buildtest` uses wrong build directory (#9742)
* Build dependencies - processing order issues (#9913)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* EXTERNAL_MODULE_DIRS silently ignores non-existent entries (#17696)
* make: ccache leads to differing binaries (#14264)
* make: use of immediate value of variables before they have their
  final value (#8913)
* missing build dependencies in the rust build (#19714)

Other issues (63)
-----------------

* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* at86rf215 stops receiving until sending a packet (#19653)
* b-l072z-lrwan1: tests/ztimer_overhead: test failure (#19224)
* backport_pr: Only works for when fork is in user (not in
  organization) (#18486)
* benchmark_udp: hammering with low interval causes issues (#16808)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* Builds fail when different execstack options are around in objects (#18522)
* Can't build relic with benchmarks or tests (#12897)
* CC2538-CC2592EM has a very weak transmit power (#17543)
* CC2538DK board docs: broken links (#12889)
* cpp: Exception handling undefined (#17523)
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
* doc/boards: information concerning access to RIOT shell (#17453)
* doc/LOSTANDFOUND: not rendered as expected (#17063)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* examples/gcoap: client broken (#19379)
* feather-m0: `make flash` reports "device unsupported" (#17722)
* flashing issue on frdm-k64f (#15903)
* frdm-k22f failing tests/periph_flashpage (#17057)
* frdm-k22f fails tests/periph_timer (#19543)
* Freeze into semtech_loramac_send call (pkg/semtech-loramac) (#18790)
* gcoap: gcoap_req_send and related should return negative for errors (#19393)
* gnrc_ipv6_nib: Neighbor Solicitation ping-pong (#18164)
* I2C not working under RIOT with U8G2 pkg (#16381)
* ieee802154_security: Nonce is reused after reboot (#16844)
* kconfiglib.py choice override of menuconfig bug (#19069)
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
  disconnect (#17209)
* lwip: invalid state transition on ieee802154_submac users (#17208)
* Making the newlib thread-safe (#4488)
* mcuboot: flashes but no output (#17524)
* MTD is confusing (#17663)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* Order of auto_init functions (#13541)
* periph_rtt: rtt_set_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
* pkg/tinydtls: Multiple issues (#16108)
* Potential race condition in compile_and_test_for_board.py (#12621)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
  gracefully (#17874)
* rust-gcoap example is incompatible with littlefs2 (#17817)
* Samr30/gpio: Erasing then write mux can generate spurious IRQ (#19993)
* samr34-xpro: some tests failing (#19223)
* sock_dtls: unable to send big messages (#17996)
* spurious IRQs in `periph_timer` (#18976)
* stdio_ethos: infinite shell loop (#17972)
* stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
* STM32 Nucleo boards improperly clocked (#19778)
* sys/riotboot: documentation issues (#11243)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/periph_flashpage: failing on stm32l475ve (#17280)
* tests/pkg/relic is failing on samr21-xpro when built using llvm (#19903)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* Types in `byteorder.h` need a cleanup (#14737)
* USB identifiers with funny characters create mojibake (#17776)
* usbus/msc: wrong error handling and behavior after usb reset (#19478)
* Use of multiple CAN bus on compatible boards (#14801)
* ztimer is incompatible with real-time requirements (#18883)

There are 158 known issues in this release

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

- make debug broken on `native` (#20265)
- Bug in drivers/lpsxxx sensor (#20093)
- stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
- cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)

4 fixed issues since last release (2023.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

Matrix and Forum
================
* 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.

Release 2023.10

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 2023.10 release includes:

- PSA Crypto API implementation, one step closer to a secure IoT!
- A bunch of default drivers for boards
- Improved clang support

116 pull requests, composed of 318 commits, have been merged since the
last release, and 2 issues have been solved. 23 people contributed with
code in 95 days. 1109 files have been touched with 437877 (+) insertions and
3189 deletions (-).

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

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

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

System Libraries
----------------

+ drivers/periph_sdmmc: define a High-level SDIO/SD/MMC API and low-
  level SDMMC peripheral driver interface (#19539)
+ sys/event: add event_is_queued() (#19966)
* sys/shell/gnrc_netif: fix ifconfig set language issue (#19970)
* sys/shell/gnrc_txtsnd: Move to separate module (#19973)
* sys: PSA Crypto API implementation (#18547)

Networking
----------

+ coap: add missing Content-Format definitions (#19875)
+ coap: add missing option numbers (#19874)
+ drivers/atwinc15x0: support dynamic scanning and connection to AP (#19387)
+ sys/net/sock: add sock_aux_ttl (#19836)
* cmds_gnrc_netif: Support enabling/disabling lwIP netifs from
  gnrc_netif shell (#19972)

Packages
--------

+ mcufont: Initial addition of MCUFont package (#19726)
* pkg/driver_cryptocell_310: Fix Makefile (#19959)
* pkg/flashdb: bump to 2.0.0 (#19863)
* pkg/littlefs2: bump to v2.8 (#19942)
* pkg/lvgl: bump to v8.3.9 (#19901)
* lwip: bump to v2.2.0 (#19780)

Boards
------

+ boards/stm32f723e-disco: enable ST7789 display (#19939)
+ boards/stm32f769i-disco: enable FMC with SDRAM support (#19851)
+ boards/stm32l496g-disco: enable ST7789 display and touch panel (#19938)
+ boards: add Silabs EFM32 Giant Gecko GG11 Starter Kit (#19923)
+ boards: add support for ESP32-S3 WT32 SC01 Plus board (#19917)
* boards/adafruit-itsybitsy-m4: configure littleFS on external flash (#19355)
* boards/nucleo64: fix SPI Arduino mapping for most boards (#19935)
* boards/sipeed_longan_nano: separate board definition for Sipeed
  Longan Nano TFT (#19824)
* boards/stm32f469i-disco: enable FMC with SDRAM support (#19910)
* boards: complete SD Card MTD definition for several bords (#19914)

CPU
---

+ cpu/stm32/periph: add FMC/FSMC support for STM32 (#19843)
+ cpu/sam0_common/periph: add low-level SDMMC peripheral driver for SDHC (#19760)
+ cpu/efm32/periph: add DAC support for EFM32 Series 1 (VDAC) (#19887)
* cpu/atmega_common: hook up BAT LOW irq to power bus (#19822)
* cpu/riscv_common: remove picolibc from blacklisting in CI (#19862)
* cpu/stm32/periph/eth: Disable hardware checksums (#19952)
* cpu/stm32: bump cmsis packages version (#19904)
* cpu/stm32: fix ld script for SRAM4 (#19842)
* dist/tools/esptools: upgrade ESP32x toolchains to GCC version 12.2 (#19452)
* sys/psa_crypto: Ed25519 (EdDSA) support (#19954)

Device Drivers
--------------

+ drivers/ft5x06: introduce conversion for X and Y coordinates (#19867)
+ drivers/st77xx: introduce rotation defines (#19919)
+ drivers/lcd: add MCU 8080 16-bit parallel mode support (#19937)
+ drivers/lcd: add MCU-driven low-level parallel interface (#19941)
+ drivers/lcd: support MCU 8080 8-bit parallel mode (#19915)
+ drivers/touch_dev_gestures: add gesture recognition for touch devices (#19884)
* drivers/ft5x06: use a pointer to config parameters instead of copying
  them (#19866)
* drivers/sdmmc: store SDMMC device descriptor references in XFA (#19899)
* drivers/stmpe811: changes for interrupt-driven touch handling and
  gesture recognition (#19885)

Documentation
-------------

+ tests/pkg/lwip: Add README.md (#19949)
+ drivers/periph: Add documentation on thread safety and initialization (#19794)
* boards/sltb009a: complete and fix documentation (#19888)
* doc: fix references and inches unit (#19948)

Build System / Tooling
----------------------

+ compile_and_test_for_boards: Add no-compile flag (#19817)
+ dist/testbed-support: Add openmote board [backport 2023.10] (#19984)
* dist/tools/jlink: fix DBG_PID assignment (#19960)
* dist/tools/usb-serial: call ttys.py with its path (#19823)
* make: COMPILE_COMMANDS_PATH adapt for external apps (#19869)

Examples
--------

+ examples/gcoap: add saml11-xpro to CI boards with insufficient memory (#19933)

Testing
-------

+ tests/drivers/touch_dev: allow to test a touch device in polling mode (#19882)
* .github/test-on-iotlab: prefer Toulouse site for dwm1001 board (#19950)
* .github: drop test-on-ryot workflow (#19847)
* clang floating point handling fix (#19852)
* gh-actions: remove reporting release tests to Matrix (#19879)
* tests/gcoap_fileserver: only enable test with GCC (#19870)
* tests/net/gcoap_fileserver: disable test on CI (#19898)
* tests/net/gcoap_fileserver: Fix failing nightlies (#19856)
* tests/pkg/relic: skip CI testing with samr21-xpro and llvm toolchain (#19902)

And 13 minor changes.

Bug fixes (37)
==============

* tree-wide: mixed box of compilation fixes with clang (#19634)
* drivers/stmpe811: introduce conversion for X and Y coordinates (#19883)
* pkg/tinyusb: add missing include (#19893)
* release-test.yml: Add strasbourg creds [backport 2023.10] (#20013)
* tests/gcoap_fileserver: add zep_dispatcher to TEST_DEPS (#19864)
* boards/esp32-wt32-sc01-plus: fix I2C driver selection in Kconfig (#19945)
* boards/esp32s3-wt32-sc01-plus: fix Kconfig (#19953)
* boards/msb-430: Fix periph config & improve doc (#19922)
* boards: fix documentation for GD32V boards and doxygen 1.9.4 (#19931)
* cpu/efm32: fix DAC configuration (#19886)
* cpu/esp32: fix heap definition for ESP32-S2 and ESP32-S3 (#19956)
* cpu/esp32: fix Octal SPI RAM for ESP32-S3 (#19957)
* cpu/esp32: fix RISC-V ISA for ESP32-C3 with GCC 12.2 (#19962)
* cpu/sam0_common/periph/sdhc: busy waiting and clock fixes (#19815)
* drivers/at86rf215: switch example config to use EXT3 on same54-xpro (#19912)
* drivers/enc28j60: disable flow control (#19845)
* drivers/ft5x06: fix initialization if callback function parameter is
  NULL (#19880)
* drivers/ft5x06: fix vendor ID for FT6xx6 and FTxxxx register
  addresses (#19860)
* drivers/mtd_default: fix for boards that define MTD_NUMOF (#19907)
* drivers/mtd_spi_nor: fix init when only ztimer_msec is used (#19908)
* drivers/st77xx: implement initialization (#19827)
* drivers/stmpe811: fix initialization if callback function parameter
  is NULL (#19881)
* drivers: rename st7735 to more generic st77xx (#19825)
* gcoap: fix underflow when correcting ETag from cache [backport
  2023.10] (#19987)
* gnrc_ipv6_nib: disable router advertisements on interface startup (#19920)
* gnrc_ipv6_nib: fix for border router with non-6lo interfaces (#19900)
* nanocoap: prevent integer underflow in coap_opt_put_uri_pathquery()
  [backport 2023.10] (#20038)
* netdev/ieee802154_submac: support setting promiscuous mode option (#19906)
* nib/_nib-6ln: bail out early if address is no longer assigned
  [backport 2023.10] (#20037)
* pkg/nanocbor: Update for fixed nanocbor_skip_simple() [backport
  2023.10] (#19988)
* pkg/tinydtls: allow to set buffer size from application again (#19892)
* posix_sockets.c: Fix 2 byte int compilation errors (#19946)
* sys/psa_crypto: Fix macro for public key max size and SE example
  [backport 2023.10] (#20039)
* sys/shell/ping: fix ping packet size overflow (#19927)
* tests/drivers/disp_dev: fix off by one in display area (#19844)
* tests/pkg/lvgl*: fix the main thread stack size for ESPs (#19865)
* ztimer/periodic: reinit remove from right clock and handle acquired
  ztimer (#19826)

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

Network related issues (52)
---------------------------

* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* example/gnrc_border_router cannot answer after some time (#19578)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* Global IPv6 addresses remain deprecated after receiving RA (#19846)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_border_router: Kconfig and C disagree about number of addresses
  per interface (#19947)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_netif_pktq leaks memory (#17924)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
* gnrc_rpl: old routes are not deleted (#19423)
* gnrc_rpl: takes unusually long time to start routing packets (#19147)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
* gomach: Resetting netif with cli doesn't return (#10370)
* ieee802154_submac: IPv6 fragmentation broken (#16998)
* LoRaWan node ISR stack overflowed (#14962)
* LWIP TCP Communication Error (#19676)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* pkg/tinydtls: DTLS handshake does not work (#19595)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* stale border router does not get replaced (#12210)
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
  behavior (#18097)
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
* two nodes livelock sending neighbor solicitations back and forth
  between each other (#16670)
* xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (7)
------------------------

* misc issues with tests/trickle (#9052)
* MSP430: periph_timer clock config wrong (#8251)
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
* periph_timer: systematic proportional error in timer_set (#10545)
* saml21 system time vs rtc (#10523)
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
* sys/newlib: gettimeofday() returns time since boot, not current wall
  time. (#9187)

Drivers related issues (12)
---------------------------

* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* PWM: Single-phase initialization creates flicker (#15121)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)

Native related issues (4)
-------------------------

* examples/micropython: floating point exception while testing on
  native (#15870)
* native getchar is blocking RIOT (#16834)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)

Other platforms related issues (16)
-----------------------------------

* Failing tests on FE310 (Hifive1b) (#13086)
* boards/hifive1: flashing issue (#13104)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* examples/gnrc_border_router: esp_wifi_init failed with return value
  257 on ESP32-C3 with nimble_rpble (#19319)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* Interrupt callback function is instantly called on samd51 after
  setting it from within interrupt callback function (#19861)
* MPU doesn't work on cortex-m0+ (#14822)
* newlib-nano: Printf formatting does not work properly for some
  numeric types (#1891)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)

Build system related issues (7)
-------------------------------

* `buildtest` uses wrong build directory (#9742)
* Build dependencies - processing order issues (#9913)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* EXTERNAL_MODULE_DIRS silently ignores non-existent entries (#17696)
* make: ccache leads to differing binaries (#14264)
* make: use of immediate value of variables before they have their
  final value (#8913)
* missing build dependencies in the rust build (#19714)

Other issues (67)
-----------------

* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* at86rf215 stops receiving until sending a packet (#19653)
* b-l072z-lrwan1: tests/ztimer_overhead: test failure (#19224)
* backport_pr: Only works for when fork is in user (not in
  organization) (#18486)
* benchmark_udp: hammering with low interval causes issues (#16808)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* Builds fail when different execstack options are around in objects (#18522)
* Can't build relic with benchmarks or tests (#12897)
* CC2538-CC2592EM has a very weak transmit power (#17543)
* CC2538DK board docs: broken links (#12889)
* cpp: Exception handling undefined (#17523)
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
* doc/boards: information concerning access to RIOT shell (#17453)
* doc/LOSTANDFOUND: not rendered as expected (#17063)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* examples/gcoap: client broken (#19379)
* feather-m0: `make flash` reports "device unsupported" (#17722)
* flashing issue on frdm-k64f (#15903)
* frdm-k22f failing tests/periph_flashpage (#17057)
* frdm-k22f fails tests/periph_timer (#19543)
* Freeze into semtech_loramac_send call (pkg/semtech-loramac) (#18790)
* gcoap: gcoap_req_send and related should return negative for errors (#19393)
* gnrc_ipv6_nib: Neighbor Solicitation ping-pong (#18164)
* I2C not working under RIOT with U8G2 pkg (#16381)
* ieee802154_security: Nonce is reused after reboot (#16844)
* kconfiglib.py choice override of menuconfig bug (#19069)
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
  disconnect (#17209)
* lwip: invalid state transition on ieee802154_submac users (#17208)
* Making the newlib thread-safe (#4488)
* mcuboot: flashes but no output (#17524)
* MTD is confusing (#17663)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* Order of auto_init functions (#13541)
* periph_rtt: rtt_set_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
* pkg/tinydtls: Multiple issues (#16108)
* Potential race condition in compile_and_test_for_board.py (#12621)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
  gracefully (#17874)
* rust-gcoap example is incompatible with littlefs2 (#17817)
* Samr30/gpio: Erasing then write mux can generate spurious IRQ (#19993)
* samr34-xpro: some tests failing (#19223)
* sock_dtls: unable to send big messages (#17996)
* spurious IRQs in `periph_timer` (#18976)
* stdio_ethos: infinite shell loop (#17972)
* stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
* STM32 Nucleo boards improperly clocked (#19778)
* sys/riotboot: documentation issues (#11243)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/periph_flashpage: failing on stm32l475ve (#17280)
* tests/pkg/relic is failing on samr21-xpro when built using llvm (#19903)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* Types in `byteorder.h` need a cleanup (#14737)
* USB identifiers with funny characters create mojibake (#17776)
* usbus/msc: wrong error handling and behavior after usb reset (#19478)
* Use of multiple CAN bus on compatible boards (#14801)
* ztimer is incompatible with real-time requirements (#18883)

There are 161 known issues in this release

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

- at86rf215 stops receiving when sam0_eth is in use (#19911)
- drivers/st7735: faulty driver initialization (#19818)

2 fixed issues since last release (2023.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

Matrix and Forum
================
* 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.

Release 2023.07

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

This release sees the addition of the openDSME IEEE 802.15.4 MAC.
So far it is limited to 2.4 GHz O-QPSK and drivers that have been converted
to the new sub-MAC architecture yet.

We also have two new supported MCUs: nRF53 and ATmega8. They share common
peripherals with their siblings, for nRF53 only the application core is
supported so far.

Finally, all tests live in subdirectories now, so the tests/ directory is much
more orderly.

288 pull requests, composed of 661 commits, have been merged since the
last release, and 35 issues have been solved. 26 people contributed with
code in 96 days. 6844 files have been touched with 251875 (+) insertions and
224148 deletions (-).

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

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

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

Core
----

+ core/compiler_hints: add assume() hint (#19354)
+ core: add core_mutex_debug to aid debugging deadlocks (#18620)
* core/lib: make the use of DEBUG_BREAKPOINT on assert optional (#19766)
* gnrc/ipv6_auto_subnets: allow to configure minimal prefix length (#19656)

System Libraries
----------------

+ shell/cmds: add genfile command (#19401)
+ sys: add common imath module mv isin() form test/driver_dac_dds (#19378)
+ usbus: Add support for endpoint halt condition (#17090)
* buildsystem: Always expose CPU_RAM_BASE & SIZE flags (#19746)
* cpp11-compat: thread::sleep_for in microseconds (#19436)
* Rust: Update dependencies (#19495)
* SUIT: Prepared manifests (#19601)
* sys /cpp11-compat: remove pseudo anonymous namespaces (#19477)
* sys/isrpipe: Replace xtimer with ztimer_usec (#19645)
* sys/posix/sockets: fix code style & set sin6_scope_id in
  _ep_to_sockaddr() (#19658)
* sys: partly refactor make dependency resolution (#19492)
* usbus: Implement USB_FEATURE_DEVICE_REMOTE_WAKEUP handling (#19800)
* ztimer/periodic: remove timer on init if already running (#19806)

Networking
----------

+ pkg/opendsme: add initial support for IEEE 802.15.4 DSME time-slotted
  MAC (#18156)
+ sys/string_utils: add memchk() (#19686)
* drivers/sx127x: reduce use of floats (#19697)
* gnrc/gnrc_netif_hdr_print: printout timestamp if enabled (#19589)
* gnrc/ipv6/nib: fix 6Lo ND options on non 6Lo interface (#19604)
* gnrc/rpl: fix incorrect addition overflow check (#19739)
* gnrc_ipv6_nib: include RIO with all subnets in downstream RA (#19644)
* nanocoap: allow to define CoAP resources as XFA (#19296)
* nanocoap: clean up coap_iterate_option(), make it public (#19713)
* nanocoap: implement extended tokens (RFC 8974) (#19487)
* nanocoap_sock: defuse nanocoap_sock_get() API footgun (#19535)
* pkg/openthread: remove deprecated functions (#19685)
* semtech-loramac: extend list of supported radio with sx1261, sx1262
  and sx1268 (#19525)

Packages
--------

* pkg/littlefs2: bump version to 2.7 (#19812)
* pkg/lvgl: bump to 8.3.7 (#19542)
* pkg/lvgl: Change all references of LittlevGL to LVGL (#18788)
* pkg/ndn-riot: drop unmaintained pkg (#19612)
* pkg/qcbor: bump to v1.2 (#19494)

Boards
------

+ board: add Adafruit Grand Central M4 Express support (#19580)
+ boards,sys/arduino: major clean up (#19759)
+ boards/b_u585i_ iot02a/periph usbdev (#19796)
+ boards/nucleo-l432k: provide three periph_timer instances (#19677)
+ boards/olimex-msp430-h2618: add new board (#19706)
+ boards: add ESP32-S3-Box support (#19811)
+ boards: add ESP32-S3-USB-OTG support (#19808)
+ boards: add stm32l496g-disco support (#19576)
+ boards: support for Olimex MSP430-H1611 board (#19558)
+ cpu/gd32v: add riotboot support (#19411)
+ cpu/native: add host fs access via VFS (#19315)
+ cpu/nrf53: add I2C and SPI support (#19798)
+ cpu/nrf53: add initial support with nRF5340DK-APP board (#19769)
+ cpu/nrf53: add usbdev support (#19809)
+ cpu/nrf{53,9160}: add periph_rtt support (#19804)
+ cpu/nrf{53,9160}: add pwm support (#19781)
+ cpu/rpx0xx: add initial ADC support (#19516)
+ drivers/usbdev_synopsys_dwc2: add GD32V support (#19389)
* boards/adafruit-clue: use shared usb_board_reset.mk for
  flash/reset/term targets (#19616)
* boards/arduino-mkrwan1300: update board name to correct one (#19526)
* boards/atmega8: new board (#19754)
* boards/esp32: deduplication in common ESP32x board definitions (#19432)
* boards/frdm-k22f: fixes long lines in periph_conf.h (#19774)
* boards/nrf9160dk: use all available CC timer channels (#19771)
* boards/nucleo-f429zi: Provide 2nd timer (#19447)
* boards/rpi-pico: specify needed args when using jlink flasher (#19537)
* boards/rpi-pico: update openocd.cfg file (#19717)
* cpu/msp430: reorganize code (#19733)
* cpu/nrf5x/periph/wdt: enable support for nRF53/nRF9160 (#19789)
* cpu/nrf5x_common: rework LFCLK source selection (#19803)
* cpu/rpx0xx: implement periph_spi (#19440)
* cpu/rpx0xx: initial PIO support (#17425)
* makefiles/tools/jlink.inc.mk: use ELF file for flashing (#19541)

CPU
---

+ cpu/avr8 common: added avr4.ld script (#19751)
+ cpu/riscv: Add PMP driver (#19712)
+ cpu/stm32/periph_dac: small improvements (#19573)
+ cpu/stm32/periph_pwm: support of complementary timer outputs (#19572)
+ debug: add DEBUG_BREAKPOINT() macro, set breakpoint on failed
  assertion (#19368)
* build-system: Allow out of tree BUILD_DIR (#19600)
* cpu/arm7: Fix undefined behavior based on invalid assembly (#19619)
* cpu/atmega8: new cpu (#19753)
* cpu/atmega_common: checking features instead of CPU models (#19752)
* cpu/avr8_common: Prepare for rework ISR (#19777)
* cpu/esp32: fix compilation issues with GCC 12.2 (#19450)
* cpu/esp32: fix remaining compilation errors for GCC 12.2 (#19577)
* cpu/nrf53: enable flashpage support (#19802)
* cpu/nrf5x_common: reset all available CC channels (#19770)
* cpu/nrf{52,9160}: remove duplicate sevonpend bit (#19773)
* cpu/sam0_eth: interrupt based link detection/auto-negotiation (#19703)
* cpu/samd5x: enable FDPLL1 at 200MHz (#19581)
* cpu/stm32/periph/adc: fix setting ADC clock (#19629)
* cpu/stm32/periph/dac: optimize setting DAC (#19529)
* cpu/stm32: stm32f4 BRR from BSRR (#19670)
* drivers/at86rf2xx: setting rx timestamp based on symbol counter for
  ATmega*RFR2 (#19605)
* drivers/periph/rtc: improve doc on rtc_set_alarm (#19610)
* Fix periph clk (#19628)
* makefiles/arch/msp430.inc.mk: Fix compilation issues with GCC 12 (#19484)
* native/syscalls: rename real_clock_gettime to clock_gettime (#19476)
* pkg/cmsis: use unique package for CMSIS headers, DSP and NN modules (#18056)
* pkg/tinydtls: allow build for AVR (#19346)

Device Drivers
--------------

+ drivers/mtd: add support for MTDs emulated in RAM (#19443)
+ drivers/mtd_default: add external declarations for mtd* (#19538)
* driver/lc709203f: remove unnecessary use of float (#19662)
* drivers/lcd: code deduplication for st7735 and ili9341 (#19816)
* drivers/mpu9x50: clean up code (#19657)
* drivers/mrf24j40: cleanup function (#19635)
* drivers/pcf857x: allow to define PCF857x_BASE_ADDR at compile time (#19734)
* drivers/sdcard_spi: small cleanup (#19527)

Documentation
-------------

+ doc: add board selection guide (#19606)
+ SUBSYSTEMD.md: add @kaspar030 to core, Rust, build system, CI &
  timers (#19727)
+ SUBSYSTEMS.md: add @maribu (#19732)
+ SUBSYSTEMS.md: add jia200x to subsystems (#19512)
* README.md: Remove HiL Badge (#19453)
* gnrc_sixlowpan_frag_sfr: mark as experimental + doc fixes (#19682)

Build System / Tooling
----------------------

+ buildsystem: add target debug-client (#19725)
+ dist/tools/openocd: add OPENOCD_SERVER_ADDRESS variable (#19724)
+ dist/tools/openocd: add RTT port variable (#19723)
+ tools/build_system_sanity_check: add check to verify test
  applications are at the right place (#19673)
* dist/testbed-support: remove obsolete boards from iotlab archi (#19514)
* dist/tools/insufficient_memory: fix collection of app folders (#19598)
* dist/tools/openocd: fix parsing of flash bank base (#19620)
* dist/tools/openocd: start debug-server in background and wait (#19737)
* dist/tools/usb-serial: call ttys.py with its path [backport 2023.07] (#19831)
* dist/tools: Use `/usr/bin/env` to lookup Python. (#19448)
* make/usb_board_reset: define {preflash,term}-delay when necessary (#19617)
* Makefile.include: don't use target lstfile implicitly (#19797)
* Makefile.include: Generate lst file using objdump (#19745)

Kconfig
-------

+ pkg/libbase58: add kconfig support (#19623)
+ sys: add Kconfig support for clif (#19621)
+ sys: add some missing kconfig + adapt related tests when possible (#19622)
* boards/esp32s3-pros3: Fix stdio kconfig model (#19708)
* cpu/esp32: deduplication in Kconfig for ESP32x SoCs (#19433)
* cpu/rpx0xx: Fix kconfig model (#19660)
* drivers/nrf24l01p: model in kconfig (#19650)
* periph/timer: fix Kconfig menu title (#17830)
* pkg/micropython: model in Kconfig (#19672)
* pkg/openthread: Fix Kconfig and broken example (#19700)
* pkg/openthread: model in kconfig (#19671)
* Remodel the USB in Kconfig (#19086)
* sys/stdio_semihosting: model in Kconfig (#19651)
* sys/usb/Kconfig: Fix default PID (#19701)
* sys: model ecc, evtimer, pipe and shell_lock in kconfig (#19636)

Examples
--------

* examples/suit_update: some test fixes (#19643)

Testing
-------

+ tests/net/gnrc_mac_timeout: add automated test (#19639)
+ tests/README.md: Add directory overview (#19587)
* tests: move all periph applications to their own periphs/ folder (#19552)
* tests: move all pkg applications to their own pkgs/ folder (#19551)
* treewide: fix remaining broken paths to test applications (#19592)
* tests/drivers: move all driver tests into own folder (#19435)
* tests: move all bench applications to their own tests/bench/ folder (#19564)
* tests: move build system applications to tests/build_system (#19567)
* tests: move core related applications to their own tests/core/ folder (#19565)
* tests: move cpu related applications to tests/cpu (#19583)
* tests: move net related applications to test/net (#19586)
* tests: move nimble and lwip related to test applications to tests/pkg (#19582)
* tests: move sys related applications to their own tests/sys/ folder (#19566)
* treewide: replace occurrences of tests/driver_ with new path (#19555)
* tests/core: remove Makefile.sys_common copy past mistake (#19783)
* tests/drivers_at24cxxx: make it easier to select other EEPROMS (#19457)
* tests/lua_loader: move to tests/pkg/lua_loader (#19569)
* tests/periph_rtt: Fix for tick conversion test (#19522)
* tests/pkg/lvgl: avoid using floats (#19698)
* tests/unittests: remove old workaround for SAML1X and gcc9.X bug (#19687)
* tests: move leftover sys related tests to test/sys + move
  tests/sys/candev to tests/drivers (#19585)
* tests: move remaining driver related applications to tests/drivers (#19568)

And 65 minor changes.

Removals (6)
------------

- makefiles/pseudomodules: remove deprecated event_thread_lowest module (#19627)
- nanocoap_sock: remove nanocoap_get() (#19553)
- pkg/tensorflow-lite: remove deprecated package (#19624)
- sys/gnrc_lorawan: remove deprecated tx port option (#19626)
- sys/hashes: remove deprecated aes cmac hashing (#19625)
- usbus: remove deprecated USBUS_HANDLER_FLAG_TR_FAIL flag (#19488)

Bug fixes (53)
==============

* cpu/stm32/periph_adc: fixes and improvements for L4 support (#19571)
* all/gnrc: fix null pointer dereference (#19756)
* boards/esp32: small documentation fixes (#19810)
* boards/esp32s2-lilygo-ttgo-t8: fix display configuration (#19807)
* boards/iotlab-m3: enable l3g4200d_ng (#19523)
* boards/qn9080dk: fix periph conflict (#19730)
* boards/sipeed-longan-nano: fix TFT display config and documentation (#19793)
* boards/sipeed-longan-nano: revert default to variant with TFT (#19814)
* boards/z1: fix broken clock configuration (#19705)
* boards: fix documentation for GD32V boards (#19790)
* buildsystem: fix kconfig mismatches (#19813)
* core/lib: drop read only XFA's `const volatile` modifiers (#19544)
* core: fix null pointer dereference (#19757)
* cpu/cc26x0_cc13x0: Drop feature cortexm_mpu (#19507)
* cpu/esp32: define RAM_START_ADDR and RAM_LEN (#19763)
* cpu/esp8266: fix region overflow with '*periph' directory in app path (#19785)
* cpu/msp430: fix for ti's msp430-gcc-opensource package ld version (#19782)
* cpu/qn908x/periph_i2c: allow internal pull-up on SCL (#19729)
* cpu/stm32/periph_gpio: reset PU/PD for ADC channels (#19574)
* cpu/stm32/usbdev_fs: fix ep registration and EP_REG assignments (#19460)
* cpu/stm32: Fix periph_gpio_ll_irq (#19446)
* cpu/stm32: fix riotboot settings for L4 and WB (#19618)
* drivers/at86rf2xx: fix default page being ignored (#19467)
* drivers/dht: busy wait reimplementation (#19718)
* drivers/enc28j60: fix ISR routine and bth (#19461)
* drivers/hih6130: avoid using floats (#19695)
* drivers/periph_usbdev: fix set device address (#19471)
* drivers/servo: Fix missing dep (#19515)
* drivers/slipdev: fix logic bug (#19633)
* drivers/usbus_synopsys_dwc2: fix interrupt handling in DMA mode (#19459)
* gnrc/ipv6/nib: reset rs_sent counter also for not-6LN interfaces (#19747)
* gnrc_sixlowpan_frag_rb: fix OOB write in _rbuf_add (#19680)
* gnrc_sixlowpan_frag_sfr: fix ARQ scheduler race-condition (#19679)
* gnrc_sixlowpan_iphc: fix NULL pointer dereference (#19678)
* gnrc_sixlowpan_iphc: prefix bits outside context must be zero (#19649)
* ipv6/nib: 6LBR should not send RS on their downstream interface (#19335)
* makefiles/arch/riscv.inc.mk: speed up toolchain detection (#19791)
* makefiles/tools/serial.inc.mk: Handle new miniterm versions (#19444)
* nrf5x_common: Clear I2C periph shorts (#19735)
* pkg/openthread: set event callback before netdev init (#19547)
* sys/color: extend unittest and fix module (#19693)
* sys/net/rpl: fix missing assignment operator (#19749)
* sys/net/rpl: fix possible NULL dereference (#19611)
* sys/shell: fix missing generic lora settings in ifconfig (#19466)
* sys/usb/usbus_msc: fix typo in C expression (#19637)
* sys/usbus/msc: fix EP sizes for USB HS and buffer alignment in DMA-
  mode (#19458)
* sys/xtimer: improve documentation (#19681)
* tests/build_system/external_board_dirs: fix broken symlinks (#19584)
* tests/drivers/l3gxxxx: fix used sensor version for iotlab boards (#19550)
* tools/mspdebug: fix `make debug` and `make debugserver` (#19556)
* tools/openocd: Fix handling of OPENOCD_CMD_RESET_HALT (#19506)
* usbus/msc: fixes for synopsys dwc2 driver (#19455)
* usbus: don't trigger assertion in usbus_urb_submit() (#19664)

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

Network related issues (51)
---------------------------

* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* example/gnrc_border_router cannot answer after some time (#19578)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* Global IPv6 addresses remain deprecated after receiving RA (#19846)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_netif_pktq leaks memory (#17924)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
* gnrc_rpl: old routes are not deleted (#19423)
* gnrc_rpl: takes unusually long time to start routing packets (#19147)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
* gomach: Resetting netif with cli doesn't return (#10370)
* ieee802154_submac: IPv6 fragmentation broken (#16998)
* LoRaWan node ISR stack overflowed (#14962)
* LWIP TCP Communication Error (#19676)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* pkg/tinydtls: DTLS handshake does not work (#19595)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* stale border router does not get replaced (#12210)
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
  behavior (#18097)
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
* two nodes livelock sending neighbor solicitations back and forth
  between each other (#16670)
* xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (7)
------------------------

* misc issues with tests/trickle (#9052)
* MSP430: periph_timer clock config wrong (#8251)
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
* periph_timer: systematic proportional error in timer_set (#10545)
* saml21 system time vs rtc (#10523)
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
* sys/newlib: gettimeofday() returns time since boot, not current wall
  time. (#9187)

Drivers related issues (13)
---------------------------

* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* drivers/st7735: faulty driver initialization (#19818)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* PWM: Single-phase initialization creates flicker (#15121)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)

Native related issues (4)
-------------------------

* examples/micropython: floating point exception while testing on
  native (#15870)
* native getchar is blocking RIOT (#16834)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)

Other platforms related issues (15)
-----------------------------------

* Failing tests on FE310 (Hifive1b) (#13086)
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
* boards/hifive1: flashing issue (#13104)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* examples/gnrc_border_router: esp_wifi_init failed with return value
  257 on ESP32-C3 with nimble_rpble (#19319)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* MPU doesn't work on cortex-m0+ (#14822)
* newlib-nano: Printf formatting does not work properly for some
  numeric types (#1891)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)

Build system related issues (7)
-------------------------------

* `buildtest` uses wrong build directory (#9742)
* Build dependencies - processing order issues (#9913)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* EXTERNAL_MODULE_DIRS silently ignores non-existent entries (#17696)
* make: ccache leads to differing binaries (#14264)
* make: use of immediate value of variables before they have their
  final value (#8913)
* missing build dependencies in the rust build (#19714)

Other issues (64)
-----------------

* [TRACKING] sys/shell refactoring. (#12105)
* [tracking] unnecessary use of floating point arithmetic (#19614)
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* at86rf215 stops receiving until sending a packet (#19653)
* b-l072z-lrwan1: tests/ztimer_overhead: test failure (#19224)
* backport_pr: Only works for when fork is in user (not in
  organization) (#18486)
* benchmark_udp: hammering with low interval causes issues (#16808)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* Builds fail when different execstack options are around in objects (#18522)
* Can't build relic with benchmarks or tests (#12897)
* CC2538-CC2592EM has a very weak transmit power (#17543)
* CC2538DK board docs: broken links (#12889)
* cpp: Exception handling undefined (#17523)
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
* doc/boards: information concerning access to RIOT shell (#17453)
* doc/LOSTANDFOUND: not rendered as expected (#17063)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* examples/gcoap: client broken (#19379)
* feather-m0: `make flash` reports "device unsupported" (#17722)
* flashing issue on frdm-k64f (#15903)
* frdm-k22f failing tests/periph_flashpage (#17057)
* frdm-k22f fails tests/periph_timer (#19543)
* Freeze into semtech_loramac_send call (pkg/semtech-loramac) (#18790)
* gcoap: gcoap_req_send and related should return negative for errors (#19393)
* gnrc_ipv6_nib: Neighbor Solicitation ping-pong (#18164)
* I2C not working under RIOT with U8G2 pkg (#16381)
* ieee802154_security: Nonce is reused after reboot (#16844)
* kconfiglib.py choice override of menuconfig bug (#19069)
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
  disconnect (#17209)
* lwip: invalid state transition on ieee802154_submac users (#17208)
* Making the newlib thread-safe (#4488)
* mcuboot: flashes but no output (#17524)
* MTD is confusing (#17663)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* Order of auto_init functions (#13541)
* periph_rtt: rtt_set_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
* pkg/tinydtls: Multiple issues (#16108)
* Potential race condition in compile_and_test_for_board.py (#12621)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
  gracefully (#17874)
* rust-gcoap example is incompatible with littlefs2 (#17817)
* samr34-xpro: some tests failing (#19223)
* sock_dtls: unable to send big messages (#17996)
* spurious IRQs in `periph_timer` (#18976)
* stdio_ethos: infinite shell loop (#17972)
* stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
* STM32 Nucleo boards improperly clocked (#19778)
* sys/riotboot: documentation issues (#11243)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/periph_flashpage: failing on stm32l475ve (#17280)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* Types in `byteorder.h` need a cleanup (#14737)
* USB identifiers with funny characters create mojibake (#17776)
* usbus/msc: wrong error handling and behavior after usb reset (#19478)
* Use of multiple CAN bus on compatible boards (#14801)
* ztimer is incompatible with real-time requirements (#18883)

There are 161 known issues in this release

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

- Not able to flash binary on samr21-xpro boards choosing serial number (#19805)
- STM32F4-discovery + mrf24j40 not working (#19711)
- Deprecated documentation? (#19667)
- usbus_cdc_ecm: failed assertion when host reboots (#19663)
- Bug: _ep_to_sockaddr() does not update in6_addr->sin6_scope_id (#19486)
- SPI access in LoRa-e5 and im880b? (#19025)
- qn9080 I2C driver spins in endless loop (#19021)
- pkg_libhydrogen tests fail / update libhydrogen (#18508)
- [gcoap-dtls] Posting a message yields a stack overflow on the
  `samr21-xpro` with ECC (#18292)
- driver/sx126x:sx1268 spreading factor support LORA_SF5 (#17861)
- Bug: BUILD_IN_DOCKER=1 doesn't work when running make compile-
  commands (#17507)
- newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
- cpu/stm32/periph/rtc overflow error (#16574)
- `make -j flash` fails due to missing make dependencies or `make
  flash-only` rebuilds the .elf (#16385)
- Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
- Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
- build: info-build doesn't work with boards without port set (#15185)
- Two bugs may lead to NULL dereference. (#15006)
- tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
- BUILD_IN_DOCKER ignores USEMODULE (#14504)
- adc is not a ADC-Driver but a analog pin abstraction (#14424)
- ethos: Unable to choose global source address. (#13745)
- Potential security and safety race conditions on attached devices (#13444)
- Cannot use LLVM with Cortex-M boards (#13390)
- Sleep mode for Arduino (#13321)
- Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto (#13285)
- Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
- floats and doubles being used all over the place. (#12045)
- send data with UDP at 10HZ, the program die (#11860)
- Tracking: remove harmful use of `export` in make and immediate
  evaluation (#10850)
- sys/stdio_uart: dropped data when received at once (#10639)
- CC2538 RF overlapping PIN usage (#8779)
- doxygen: riot.css modified by 'make doc' (#8122)
- cpu/native: timer interrupt issue (#6442)
- macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)

35 fixed issues since last release (2023.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

Matrix and Forum
================
* 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.

Release 2023.04

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 2023.04 release includes:

- Mass Storage Class Support in USBUS
- Initial support for libSCHC
- FlashDB support
- BLE downlink in GNRC Border Router
- DTLS support for nanoCoAP in client mode
- Congestion control for 6LoWPAN Selective Fragment Recovery
- avr/flash_utils: strings (and other const data) no longer needs to be copied
  to RAM
- New boards:
  - esp32c3-wemos-mini
  - esp32s2-lilygo-ttgo-t8
  - esp32s2-wemos-mini
  - esp32s3-pros3
  - rpi-pico-w
  - sipeed-longan-nano
- New device drivers:
  - Black/white e-Paper/e-Ink display
  - RFID reader (MFRC522)
  - ST VL53L1X Time-of-Flight sensor

280 pull requests, composed of 595 commits, have been merged since the
last release, and 3 issues have been solved. 27 people contributed with
code in 83 days. 1246 files have been touched with 177090 (+) insertions and
36429 deletions (-).

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

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

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

Core
----

+ core/compiler_hints: add likely() / unlikely() hints (#19156)
* core/xfa: disable asan on llvm (#19271)
* pkg/libfixmath: bump version (#19182)

System Libraries
----------------

+ drivers/wdt: add periph_wdt_auto_start for early watchdog (#18257)
+ fuzzing: Add uri_parser setup (#19057)
+ Revert "sys/pm_layered: pm_(un)block add attribute optimize(3)" (#19155)
+ sys/coding: add XOR based coding module (#17045)
+ sys/event: add event sources (#18758)
+ sys/irq: Add C++ wrapper using RAII (#17066)
+ sys/phydat: add functions for Unix time conversion to phydat (#19080)
+ sys/trickle: cleanup deps (#19404)
+ sys/vfs: add force option to vfs_umount() (#19320)
+ usbus/msc: add CONFIG_USBUS_MSC_AUTO_MTD option to create LUNs on
  init (#19356)
+ usbus/msc: add initial Mass Storage Class support (#19242)
+ USBUS: Add URB support (#17091)
+ ztimer: add ztimer_stopwatch convenience functions (#19343)
* bootloaders: fix bootloader button logic (#19365)
* makefiles/suit: make it possible to accept multiple SUIT keys (#18459)
* sys/bitfield: don't touch unrelated bits in bf_{set, clear}_all() (#19400)
* sys/cpp11-compat: Remove xtimer deps (#19369)
* sys/fmt: optimize scn_u32_dec scn_u32_hex (#19027)
* sys/fmt: use `fflush(); stdio_write()` instead of `fwrite()` (#19250)
* sys/shell_lock: do not call strlen, less jumpy (#19157)
* sys/tiny_strerror: make use of flash_utils.h (#19332)
* test_utils/print_stack_usage: use thread.h API (#19226)
* usbus/dfu: do not create alt interface if NUM_SLOTS=1 (#19386)

Networking
----------

+ gcoap/fileserver: add event callbacks (#18414)
+ gnrc_sixlowpan_frag_sfr_congure: optional congestion control support
  (#16171, #16159, #16170, #16158)
+ gnrc_static: add static network configuration (#18477)
+ nanocoap_link_format: add helper function to parse Link Format (#18134)
+ pkg/tinyusb: add tinyUSB netdev driver (#18903)
* cord: bump reference from draft to rfc (#19367)
* cord: convert to ztimer (#19391)
* gnrc_ipv6_nib: clean up _resolve_addr() (#18939)
* nanocoap_sock: ensure response address is the same as request address (#19361)
* nanocoap_sock: implement DTLS socket (#18724)
* nanocoap_sock: implement nanocoap_sock_delete() (#18738)
* nanocoap_sock: store message ID in nanocoap_sock_t (#19178)
* pkg/tinydtls: Reduce default verbosity, increase default sizes when CoAP is
  used (#19331)
* shell/cmds: GNRC: replace puts() with printf() (#19327)
* shell/gnrc_icmpv6_echo: separate ICMPv6 echo sending / parsing from
  shell command (#18934)
* sock_dtls: move common code into sock_dtls_establish_session() (#19142)
* sys/net/gnrc/netif: fixing no global address wait (#19402)
* sys/net/grnc/netreg: avoid creating an infinite loop (#19238)

Packages
--------

+ libschc: initial import as package (#18515)
+ pkg/arduino_adafruit_sensor: add Adafruit Unified Sensor Driver as
  package (#17460)
+ pkg/wolfssl: Update wolfSSL to 5.5.4 and add DTLS 1.3 support (#19302)
+ pkg: add FlashDB (#17612)
* pkg/fatfs: bump to r0.15 (#19347)
* pkg/lz4: bump version to 1.9.4 (#19180)
* pkg/minmea: bump version (#19183)
* pkg/nanopb: bump version to 0.4.7 (#19179)
* pkg/tinydtls: bump version (#19184)
* pkg/tinydtls: drop libc_gettimeofday dependency (#19247)
* pkg/tinyusb: bump to 0.15 (#19276)
* pkg/u8g2: bump version (#19285)
* pkg/wolfssl: Fix memory leaks in wolfSSL sock_tls (#19190)
* tests/pkg_nanors: use static allocation (#19382)
+ pkg/tinyusb: add GD32VF103 support (#19256)
+ pkg/lwext4: add lightweight implementation of the ext2/3/4 filesystem (#18682)

Boards
------

+ boards/esp32c3-wemos-mini: add support for Wemos ESP32-C3 mini (#19417)
+ boards/esp32s2-mini: add definition for ESP32 S2 Mini (#18863)
+ boards/nucleo64: Add pinout diagrams from UM1724 (#19406)
+ boards/seeedstudio-gd32: add mtd_sdcard_default (#19293)
+ boards/seeedstudio-gd32: complete and improve board definition (#19166)
+ boards/sipeed-longan-nano: add BOOT as user button (#19419)
+ boards/sipeed-longan-nano: add definition for the Sipeed Longan Nano
  GD32VF103 board (#19170)
+ boards: add esp32s3-pros3 support (#19088)
+ boards: support for the LILYGO TTGO T8 ESP32-S2 board (#19284)
+ cpu/native: implement periph_rtc_ms (#19340)
+ drivers/mrf24j40: add support for IEEE 802.15.4 Radio HAL (#18472)
+ drivers/mtd_sdcard: add mtd_sdcard_default module (#19216)
+ makefiles/tools/serial.inc.mk: Allow detection of debug adapter (#19119)
* boards/adafruit-itsybitsy-m4: turn off APA102 LED on startup (#19357)
* boards/esp*: complete SD Card MTD config (#19255)
* boards/esp32: enable RGB LED support (#19408)
* boards/gd32v: improve board definitions (#19249)
* boards/rpi-pico-w: fix too large board image (#19159)
* boards/rpi-pico-w: initial support for rpi pico W board (#19071)
* boards/sipeed-longan-nano: default to flashing via DFU (#19204)
* boards/stm32f4discovery: default to stdio via CDC ACM (#19259)
* boards: common: stdio_cdc_acm: let tests wait a bit for serial port (#19128)
* cpu/rpx0xx/cmsis: Update vendor header files (#19416)

CPU
---

+ bootloaders/riotboot: add tinyUSB DFU support (#19010)
+ core/init: add early_init() (#19082)
+ cpu/esp32: add periph_flashpage support (#19079)
+ cpu/gd32v: add periph_adc support (#19188)
+ cpu/gd32v: add periph_dac support (#19248)
+ cpu/gd32v: add periph_gpio_irq support (#19185)
+ cpu/gd32v: add periph_gpio_ll and periph_gpio_ll_irq support (#19243)
+ cpu/gd32v: add periph_i2c support (#19201)
+ cpu/gd32v: add periph_pwm support (#19209)
+ cpu/gd32v: add periph_rtc support (#19186)
+ cpu/gd32v: add periph_rtc_mem support (#19254)
+ cpu/gd32v: add periph_rtt support (#19202)
+ cpu/gd32v: add periph_spi support (#19214)
+ cpu/gd32v: add pm_layered support in periph_pm (#19187)
+ cpu/stm32/periph: Add GPIO LL IRQ support for STM32F1 (#19412)
+ cpu/stm32/periph: Implement GPIO LL for STM32F1 without IRQ support
  (yet) (#19407)
+ picolibc: add support for picolibc >= 1.8 (#19341)
+ sys/stdio_udp: add stdio over UDP (#19081)
* cpu/esp32: cleanup of ESP-IDF interface API (module `esp_idf_api`) (#19426)
* cpu/esp_common: use generic WIFI_SSID/WIFI_PASS defines (#19286)
* cpu/gd32v/periph_i2c: interrupt based driver (#19269)
* cpu/native: Switch to ztimer for gettimeofday (#19349)
* cpu/riscv_common: convert to uword_t usage (#19345)
* cpu/sam0_common: adc: implement 16 bit mode by oversampling (#19165)
* cpu/stm32/periph/i2c: export PERIPH_I2C_MAX_BYTES_PER_FRAME (#19279)
* cpu/stm32/periph/timer: don't stop counter (#19263)
* cpu/stm32/periph/timer: fix clobered IRQ flag (#19385)
* cpu/stm32/usbdev_fs: fix ep registration and EP_REG assignments
  [backport 2023.04] (#19462)
* drivers/at24cxxx: implement _mtd_at24cxxx_read_page (#19270)
* Fix stm32 timer periodic (#19363)
* sam0/usbdev: partial revert of #17086 (#19384)
* sys/usbus: check for the number of required and provided EPs in
  static configurations (#19371)

Device Drivers
--------------

+ black/white e-Paper/e-Ink display driver (#12509)
+ drivers/mfrc522: add new driver (#16782)
+ drivers/servo: reimplement with high level interface (#18392)
+ drivers/usbdev_synopsys_dwc2: add ESP32x power management (#19399)
+ drivers: add driver for ST VL6180X ranging and ambient light sensor (#10462)
* drivers/at24cxxx: merge mtd driver with at24cxxx.c (#19281)
* drivers/periph_common/flashpage: fix silent error (#19175)
* drivers/slipdev: implement sleep states (#17810)
* drivers/ws281x: improve timing for ESP32x (#19422)
+ drivers/ws281x: add RMT hardware support for ESP32x SoCs (#19424)

Documentation
-------------

+ doc: Add out of tree RIOT app documentation (#19324)
* blobs: include documentation in doxygen (#19200)
* doc/porting-boards.md: fix code snippets in md view (#19206)
* Doc: document generate-makefile.ci (#19239)
* doccheck: avoid generating dot or html (#19228)

Build System / Tooling
----------------------

+ tools/compile_like_murdock: Add features (#19351)
+ tools/doccheck: add simple exclude to doccheck (#19240)
+ tools/renode: add support for target reset (#19375)
* build system: Fix linker feature test with newlib 4.3.0 (#19232)
* ci/print_versions: print all ESP32 toolchains (#19309)
* dist/tools/doccheck: Fix grep warning (#19220)
* dist/tools/insufficient_memory: Improve and clean up script (#19291)
* esptools/install.sh: Fix shellcheck issues (#19325)
* Fix `compile_like_murdock.py` when board is empty (#19370)
* make: pass make jobserver to cargo (#19203)
* Makefile.dep: pull in FEATURES_REQUIRED for periph (#19234)
* toolchain/gnu.inc.mk: don't check version if CC is not installed (#19137)

Kconfig
-------

* drivers/sx126x: make MODULE_SX126X_RF_SWITCH hidden in kconfig (#19194)
* Fix SX126X-STM32WL module in Kconfig (#19191)

Examples
--------

+ examples/gnrc_border_router: add BLE as downlink option (#19321)

Testing
-------

+ bors.yaml: re-activate labels check + add block_labels (#19161)
+ CI: re-add "synchronize" event to check-labels (#19136)
+ gh-actions: report release-tests result to Matrix (#19102)
* CI: .murdock: fix bors fast build (#19241)
* CI: .murdock: use build checkout for ccache tmp (#19274)
* CI: separate check-labels and check-commits workflows (#19120)
* CI: update check-labels-action (#19101)
* test/periph_rtc: reset struct tm time between tests (#19344)
* tests/gnrc_rpl: Disable CI test for native (#19171)
* tests/periph_flashpage_unittest: enable periph_flashpage (#19215)

API Changes
-----------

+ usbdev: Add dedicated stall functions (#17086)
* drivers/mtd_flashpage: implement pagewise API, don't use raw
  addresses (#19258)
* gcoap: Finish the gcoap_get_resource_list_tl ->
  gcoap_get_resource_list renaming (#19295)
+ drivers/servo: reimplement with high level interface (#18392)
* cpu/esp_common: use generic WIFI_SSID/WIFI_PASS defines (#19286)
+ sys/vfs: add force option to vfs_umount() (#19320)

Uncategorized
-------------
+ MAINTAINING.md: add some notes on Bors (#19329)
+ RDM: The 802.15.4 Radio HAL (#13943)
* SECURITY: Describe that declassification is an option (#19149)
* SUBSYSTEMS.md: migrate subsystem list from wiki (#19060)

And 57 minor changes.

Bug fixes (53)
==============

* boards/common: add common timer config for GD32VF103 boards (#19205)
* cpu/esp_common: Add missing disconnect reasons (#19381)
* Make: Add generate-Makefile.ci (#19244)
* usbus: Add support for full speed with high speed phy (#19438)
* boards/common/cc26xx cc13xx: clean up and fix flash configs (#19050)
* boards/esp32s2-lilygo-ttgo-t8: fix STDIO selection in Kconfig (#19287)
* boards/remote-*: drop custom led_init() (#19348)
* boards/seeedstudio-gd32: fix HXTAL clock in Kconfig (#19129)
* boards/stm32f4discovery: use default port to access stdio via cdc acm (#19376)
* boards: fix USB configuration for stm32f429i-disco (#19437)
* cord: include gcoap_req_send returning 0 in error (#19383)
* cpu/esp32: fix and improve UART initialization (#19146)
* cpu/esp32: fix stdio_usb_serial_jtag for ESP32-C3 (#19415)
* cpu/esp32: fixes for boot issues and crashes on ESP32 (#19192)
* cpu/esp32: use ets_printf instead of puts in startup (#19420)
* cpu/gd32v: fix gpio_read in periph_gpio (#19418)
* cpu/gd32v: move board dependent RTT configs to board config (#19211)
* cpu/stm32: Fix periph_spi operation in non-DMA mode (#19431)
* dist/tools/esptools/export.sh: fixes IDF_TOOLS_PATH default setting (#19125)
* dist/tools/openocd: fix problems with riotboot caused by _flash_addr
  function for OpenOCD v0.12 (#19409)
* driver/usbdev_synopsys_dwc2: use correct number of EPs (#19380)
* drivers/at86rf2xx: fix default page being ignored [backport 2023.04] (#19473)
* drivers/usbdev_synopsys_dwc2: disable DMA mode (#19388)
* drivers/usbdev_synopsys_dwc2: fix and re-enable DMA mode (#19397)
* drivers/usbus_synopsys_dwc2: fix interrupt handling in DMA mode
  [backport 2023.04] (#19472)
* efm32/dac: Shift instead of masking (#19318)
* gcoap: Do not send responses from multicast addresses (#19272)
* gh-actions: check-labels: move to upstream fix (#19160)
* gnrc_netif: set lower bound for IEEE802154_STACKSIZE_DEFAULT (#19339)
* gnrc_static: don't parse address as prefix (#19313)
* makefiles/boards/stm32: fix DFU_USB_ID handling (#19374)
* makefiles/tools/serial.inc.mk: Handle new miniterm versions [backport
  2023.04] (#19489)
* matrix keypad: Fix memcpy bug in initialization (#19162)
* nanocoap_sock: don't include token in empty ACK response (#19366)
* native/stdio: Explicitly provide getchar (#19330)
* pkg/esp8266_sdk: fix version string generation (#19123)
* pkg/nimble/autoadv: fix flag comparisons (#19235)
* pkg/tinyusb: fix default VID/PID configuration (#19377)
* release-tests: fix PASSED chat message (#19145)
* security fixes [backport 2023.04] (#19497)
* shell/gnrc_icmpv6_echo: acquire ZTIMER_USEC clock for time
  measurement (#19055)
* socket_zep: only report size of single datagram (#19121)
* sys/clif: Fixing out of bounds read under certain conditions (#18746)
* sys/net/dhcpv6: include IA Prefix Option in SOLICIT (#19225)
* sys/phydat: Fix unit confusion (#19292)
* sys/shell: don't include suit command by default (#19294)
* sys/suit: Ensure previous thread is stopped before reusing its stack (#19199)
* sys/usbus/cdc/ecm: fix High-Speed mode (#19358)
* sys/usbus: handle exceeding number of endpoints (#19362)
* sys/ztimer: ztimer_mock: guard ztimer_ondemand static functions (#19118)
* tests/driver_dac_dds: fix output of sine and saw functions (#19251)
* tests/{sys_fido2_ctap/usbus_board_reset}: fix stdio_usb_serial_jtag
  dependency (#19261)
* usbus/msc: fixes for synopsys dwc2 [backport 2023.04] (#19456)

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

Network related issues (52)
---------------------------

* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* [gcoap-dtls] Posting a message yields a stack overflow on the
  `samr21-xpro` with ECC (#18292)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* CC2538 RF overlapping PIN usage (#8779)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to choose global source address. (#13745)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_netif_pktq leaks memory (#17924)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
* gnrc_rpl: takes unusually long time to start routing packets (#19147)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
* gomach: Resetting netif with cli doesn't return (#10370)
* ieee802154_submac: IPv6 fragmentation broken (#16998)
* LoRaWan node ISR stack overflowed (#14962)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* send data with UDP at 10HZ, the program die (#11860)
* stale border router does not get replaced (#12210)
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
  behavior (#18097)
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
* two nodes livelock sending neighbor solicitations back and forth
  between each other (#16670)
* xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (9)
------------------------

* cpu/native: timer interrupt issue (#6442)
* misc issues with tests/trickle (#9052)
* MSP430: periph_timer clock config wrong (#8251)
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
* periph_timer: systematic proportional error in timer_set (#10545)
* saml21 system time vs rtc (#10523)
* Sleep mode for Arduino (#13321)
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
* sys/newlib: gettimeofday() returns time since boot, not current wall
  time. (#9187)

Drivers related issues (16)
---------------------------

* adc is not a ADC-Driver but a analog pin abstraction (#14424)
* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* floats and doubles being used all over the place. (#12045)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* Potential security and safety race conditions on attached devices (#13444)
* PWM: Single-phase initialization creates flicker (#15121)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
* Two bugs may lead to NULL dereference. (#15006)

Native related issues (4)
-------------------------

* examples/micropython: floating point exception while testing on
  native (#15870)
* native getchar is blocking RIOT (#16834)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)

Other platforms related issues (16)
-----------------------------------

* Failing tests on FE310 (Hifive1b) (#13086)
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
* boards/hifive1: flashing issue (#13104)
* Cannot use LLVM with Cortex-M boards (#13390)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* examples/gnrc_border_router: esp_wifi_init failed with return value
  257 on ESP32-C3 with nimble_rpble (#19319)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* MPU doesn't work on cortex-m0+ (#14822)
* newlib-nano: Printf formatting does not work properly for some
  numeric types (#1891)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)

Build system related issues (11)
--------------------------------

* `buildtest` uses wrong build directory (#9742)
* `make -j flash` fails due to missing make dependencies or `make
  flash-only` rebuilds the .elf (#16385)
* Build dependencies - processing order issues (#9913)
* build: info-build doesn't work with boards without port set (#15185)
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* doxygen: riot.css modified by 'make doc' (#8122)
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
* make: ccache leads to differing binaries (#14264)
* make: use of immediate value of variables before they have their
  final value (#8913)
* Tracking: remove harmful use of `export` in make and immediate
  evaluation (#10850)

Other issues (48)
-----------------

* 2023.04 release bug tracking (#19469)
* [TRACKING] sys/shell refactoring. (#12105)
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto (#13285)
* Can't build relic with benchmarks or tests (#12897)
* CC2538DK board docs: broken links (#12889)
* cpu/stm32/periph/rtc overflow error (#16574)
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
* doc/LOSTANDFOUND: not rendered as expected (#17063)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* feather-m0: `make flash` reports "device unsupported" (#17722)
* flashing issue on frdm-k64f (#15903)
* frdm-k22f failing tests/periph_flashpage (#17057)
* I2C not working under RIOT with U8G2 pkg (#16381)
* ieee802154_security: Nonce is reused after reboot (#16844)
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
  disconnect (#17209)
* lwip: invalid state transition on ieee802154_submac users (#17208)
* Making the newlib thread-safe (#4488)
* mcuboot: flashes but no output (#17524)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
* Order of auto_init functions (#13541)
* pkg/tinydtls: Multiple issues (#16108)
* pkg_libhydrogen tests fail / update libhydrogen (#18508)
* Potential race condition in compile_and_test_for_board.py (#12621)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
  gracefully (#17874)
* rust-gcoap example is incompatible with littlefs2 (#17817)
* SPI access in LoRa-e5 and im880b? (#19025)
* stdio_ethos: infinite shell loop (#17972)
* stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
* sys/riotboot: documentation issues (#11243)
* sys/stdio_uart: dropped data when received at once (#10639)
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/periph_flashpage: failing on stm32l475ve (#17280)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* usbus/msc: wrong error handling and behavior after usb reset (#19478)
* Use of multiple CAN bus on compatible boards (#14801)

There are 156 known issues in this release

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

- bootloader: BTN_BOOTLOADER_INVERTED doesn't work as expected. (#19364)
- Race condition in SUIT around threads terminating (#19195)
- socket_zep: fragmentation broken if destination is multicast /
  ACK_REQ not set (#19117)

3 fixed issues since last release (2023.01)

Boards tested during this release
=================================

- `esp32-wroom-32`    PASS
- `nrf52840dk`        PASS
- `nucleo-f429zi`     PASS
- `samr21-xpro`       PASS
- `arduino-mega2560`  FAIL
- `b-l072z-lrwan1`    FAIL
- `b-l475e-iot01a`    FAIL
- `dwm1001`           FAIL
- `frdm-kw41z`        FAIL
- `iotlab-m3`         FAIL
- `nrf52dk`           FAIL
- `nucleo-l452re`     FAIL
- `nucleo-wl55jc`     FAIL
- `remote-revb`       FAIL
- `saml10-xpro`       FAIL
- `samr34-xpro`       FAIL

See the release tracking issue (#19469) for more details.

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

Matrix and Forum
================
* 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.

Release 2023.01

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

We are proud to announce the release of RIOT 2023.01, marking the tenth
anniversary of the project. Over the past decade, RIOT has become a thriving
open-source community, delivering cutting-edge technology for Internet of
Things (IoT) devices. This release builds on top of the hard work and
dedication of our developers, users, and contributors, and we would like to
extend a heartfelt thank you to everyone who has been a part of our journey.
Here's to another decade of innovation and growth!

Noteworthy changes the 2023.01 release includes, among many fixes and little
things:

- ztimer_ondemand: The next step towards seamless and automatic power management.
- The Rust examples now default to stable Rust.

187 pull requests, composed of 570 commits, have been merged since the
last release, and 13 issues have been solved. 37 people contributed with
code in 58 days. 1248 files have been touched with 516544 (+) insertions and
12047 deletions (-).

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

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

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

Core
----

* core/lib: define MAYBE_UNUSED (#18884)
* core/marco: fix DIV_ROUND (#18858)

System Libraries
----------------

+ congure_abe: initial import of TCP Alternative Backoff with ECN for
  CongURE (#15968)
+ congure_quic: initial import of QUIC congestion control (#15952)
+ pkg/tinyusb: add common USB descriptors implementation (#18835)
+ sys/bitfield: add bf_find_first_{set, unset}() (#18833)
+ sys/bitfield: add bf_popcnt() (#18879)
+ sys/malloc_tracing: add module to trace dyn memory management (#18912)
+ sys/stdio_uart: add stdio_uart_onlcr (pseudo-) module (#18731)
+ sys/tiny_strerror: add tiny_strerror_minimal (#18768)
+ ztimer: add ztimer_ondemand module for implicit power management (#17607)
* rust: Use stable Rust (#18839)
* suit: start worker thread on demand, make suit_handle_url() public (#18551)
* sys/pm_layered: align pm_blocker_t for speed (#18846)
* sys/print_stack_usage: update MIN_SIZE (#18917)
* sys/shell: drop ping6 alias (#18931)
* sys: preprocessor successor module (#18299)
* tests/pbkdf2: de-flanky-fy test (#18932)
* usbus/hid: fix buffer overflow in hid_io (#18860)

Networking
----------

+ examples/gcoap: add IPv4 support (#17763)
+ gnrc/ipv6_auto_subnets: add CONFIG_GNRC_IPV6_AUTO_SUBNETS_STATIC
  option (#17429)
+ gnrc_sixlowpan_frag_sfr: add support for queue-based ECN (#16175)
+ gnrc_sixlowpan_frag_sfr: provide CongURE support (#16156)
+ nanocoap: add support for no-response option (#18154)
+ sys/net/nanocoap: introduce Accept option helper (#18772)
+ sys/net: add Size1 and Size2 option numbers (#18799)
* drivers/at86rf2xx: migrate to ztimer (#18822)
* gnrc: make pseudo-modules explicit + documentation improvements (#18727)
* gnrc_sock_udp: accept response from any address if remote is
  multicast (#18854)
* gnrc_udp: use small stack-size (#18709)
* net/nanocoap: remove coap_pkt token ptr (#17983)
* paho: use GNRC instead of lwip (#18982)
* sys/include: remove kernel_defines.h where not needed (#18887)

Packages
--------

* pkg/arduino_sdi_12: bump version, fix patches (#18796)
* pkg/lvgl: bump to 8.3.3 (#18794)
* pkg/tinyusb: support for multiple configuration descriptors (#18983)
* pkg/wamr: Update to WAMR-1.1.1 (#18994)

Boards
------

+ boards/cc1350: add info concerning shell access (#18808)
+ boards/dwm1001: add saul_gpio support (#18818)
+ boards/lora-e5-dev: add arduino feature (#18792)
+ boards/nucleo-l496zg: add ADC support (#18940)
+ boards: add support for EFM32GG12 Thunderboard Kit (SLTB009A) (#18755)
+ cpu/efm32: add periph_adc support for Gecko Series 2 (#18933)
+ cpu/efm32: add periph_uart_modecfg support for Gecko Series 2 (#18946)
+ drivers/usbdev_synopsys_dwc2: add support for internal UTMI HS PHY (#18714)
+ EFM32: add cpu family EFR32ZG23 and board xG23-PK6068A (#18780)
+ pkg/tinyusb: add nrf52 support (#18781)
+ pkg/tinyusb: add STM32 USB FS device driver (#18786)
+ pkg/tinyusb: add ULPI and UTMI+ HS PHY support for STM32 USB OTG HS
  ports (#18776)
* boards/blxxxpill-128kib: default to CDC ACM for stdio (#18743)
* boards/common/nrf52: improve default clock config (#18811)
* boards/im880b: refactor code (#18451)
* boards/nucleo-f207zg:  support for ADC (#18847)
* boards/nucleo-l* and g*: update doc concerning Vbat (#18984)
* cpu/stm32: Fix stm clock configuration (#18797)

CPU
---

+ cpu/saml21: add interaction with pm_layered for peripheral drivers (#18821)
+ cpu/stm32: add unused backup RAM as extra heap (#18921)
+ debug_irq_disable: add module to debug time spent in irq_disable (#18795)
* boards/native: Remove macOS as native target (#18735)
* cpu/efm32: preparing introduction of Gecko Series 2 (#18764)
* cpu/saml21/pm: allow blocking IDLE mode (#18825)
* cpu/stm32: improvement of USB device driver selection (#18787)
* makefiles/cflags.inc.mk: don't include absolute path in __FILE__
  macro (#18913)
* makefiles/gnu.inc.mk: set flags based on compiler version (#18935)
* pkg/gecko_sdk: Bump to version 4.1.2 (#18739)
* pkg/tinyusb: implement stdio via CDC ACM (#18804)
* sam0/rtc_rtt: optimizations to get around the painful long syncwaits (#18920)
* socket_zep: make use of crc16_ccitt_false_update() (#18779)
* treewide: replace RIOT_FILE_RELATIVE with __FILE__ (#18936)

Device Drivers
--------------

+ drivers/at: add a function read a response plus the OK (#18753)
+ matrix_keypad: Add matrix-style keypad module (#18733)
* drivers/at86rf2xx: isolate netdev logic (#18988)
* drivers/sdcard_spi: make use of crc16_ccitt_false_update() (#18778)

Documentation
-------------

* boards/cc13xx_cc26xx: remove broken HTML links and headings in doc (#18809)
* boards/nucleo-l4r5zi: doc improvements (#18747)
* docs/kconfig: "not longer" -> "no longer" typo (#18922)
* pkg/tinyusb: update doc for tusb_app_config.h and common descriptor
  handling (#18901)

Build System / Tooling
----------------------

+ .vscode: import initial RIOT-OS style (#18945)
+ build-system: add capability to execute scripts with custom executor (#18770)
+ dist/tools: add "RESET_PIN" value for the dwm1001 (#18815)
+ examples/gnrc_border_router: add option to reuse existing TAP
  interface (#18836)
+ makefiles/tools/serial.inc.mk: add support for bootterm (#18749)
+ tapsetup: add --loss & --delay option (#18885)
+ tools/cpy2remed: add support for NOD_xxxx removable media (#18824)
* build system: fix compilation with LLVM (#18845)
* CI: can_fast_ci_build.py unittests fix (#18996)
* dist/tools/pyterm: avoid deprecated .setDaemon (#18754)
* utils/uncrustify: display warning instead of error (#18877)

Kconfig
-------

+ pkg/tinyusb: add Kconfig support for stdio_tinyusb_cdc_acm (#19007)

Examples
--------

* examples/gcoap: replace _parse_endpoint by sock_udp_name2ep (#17870)
* examples/timer_periodic_wakeup: switch to ztimer (#19001)
* examples: Remove macOS references in README (#18850)

Testing
-------

+ tests/pkg_tinyusb*: add a BOARD to make make build (#18888)
* CI: drop obsolete murdock note (#18905)
* CI: update murdock yml (#19022)
* test/unittest: cleanup most vera++ complains (#18807)
* tests/bitarithm_timings: shorten timeout from 5s to 200ms (#18894)
* tests/periph_timer: also test for spurious IRQs (#18963)
* unittests/uri_parser: Rework tests to be more verbose (#18734)

API Changes
-----------

+ nanocoap: add request context to coap_handle_req() (#18816)

Uncategorized
-------------
+ release-notes.txt: add 2022.10 release notes (#18947)
* .drone: Remove unmaintained .drone file (#18832)
* README.md: update CI badge (#18685)
* README.md: update features (#18777)

And 38 minor changes.

Bug fixes (44)
==============

* pkg/tinyusb: add usb_board_reset support (#19006)
* boards/common/blxxxpill: Fix pin conflicts in periph_conf (#18785)
* boards/common/nrf52: fix timer config (#18948)
* boards/dwm1001: use lis2dh12_i2c instead of lis2dh12_spi (#18857)
* bootloaders/riotboot_dfu: fixes including sys/usb/usbus/dfu (#18964)
* core/mbox: fix race condition (#18955)
* cpu/atmega_common/periph_timer: fix spurious IRQs (#18978)
* cpu/efm32/pm: fix blocking EM1 (#18775)
* cpu/efm32/timer_series2: fix interaction with pm_layered (#18814)
* cpu/esp32: set bootloader XTAL frequency configuration to automatic (#18829)
* cpu/esp{32,8266}/periph_timer: allow changing callback or freq (#18971)
* cpu/nrf5x/timer: fix high current consumption in powered off state (#18953)
* cpu/nrf5x/uart: run STOPTX task after finished tx (#18954)
* cpu/nrf5x_common/periph_timer: fix spurious IRQs (#18970)
* cpu/qn908x: use bitarithm_test_and_clear() & fix cb (#18989)
* cpu/stm32/periph_timer: fix spurious IRQs and race conditions (#18969)
* cpu/stm32: fix periph_dma (#18711)
* cpu/stm32: fix RAM_LEN for F427, F429, F437, F439 models (#18919)
* dist/tools/usb-serial: fix exception on missing entries (#19011)
* drivers/atwinc15x0: don't disable interrupts (#18800)
* drivers/ethos: Fix off-by-one bug (#18823)
* drivers/slipdev: fix off-by-one error in _recv() (#18826)
* drivers/usbdev_synopsys_dwc2: small fixes (#18759)
* Fix kconfig mismatch breaking nightlies (#18805)
* gnrc: Fix unused function error when using LLVM (#18852)
* gnrc_sixlowpan: Various hardening fixes (#18817)
* makefiles/libc/picolibc.mk: fix compilation with modern binutils (#18893)
* nanocoap_sock: don't store entire sock in coap_block_request_t (#18827)
* nanocoap_sock: only re-transmit CON messages (#18819)
* pkg/nimble: signal LINK_UP on initialisation (#18979)
* pkg/tinyusb: fix the reset of the USB connection for STM32 boards
  without internal D+ pullup (#18992)
* pkg/utensor: fix uninitialized variable (#18862)
* sam0_common: use size_t len for I2C transfers (fixes #19008) (#19009)
* sys/clif: Fixing out of bounds read under certain conditions (#18744)
* sys/net/gnrc/pkt: fix gnrc_pkt_delete() (#18874)
* sys/net/grnc/netreg: avoid freeing wild pointers (#18951)
* sys/stdio_uart: fix undefined behavior (#18774)
* sys/uri_parser: fixing potential out of bounds read when consuming
  ports (#19016)
* sys/ztimer: model ztimer_periph_lptimer for Kconfig (#18783)
* test-on-iotlab: several fixes to make it runnable again (#18722)
* tests/congure_abe: reset node before starting terminal (#18769)
* tests/pkg_utensor: increase main threads stack size (#18952)
* tests/shell: fix failure on samr21-xpro (#18891)
* tests: set netdev `event_callback` before calling init (#18745)
* tools/backport_pr: finally fix running outside of repo's root (#18881)

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

Network related issues (52)
---------------------------

* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* [gcoap-dtls] Posting a message yields a stack overflow on the
  `samr21-xpro` with ECC (#18292)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* CC2538 RF overlapping PIN usage (#8779)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to choose global source address. (#13745)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_netif_pktq leaks memory (#17924)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
* gnrc_rpl: takes unusually long time to start routing packets (#19147)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
* gomach: Resetting netif with cli doesn't return (#10370)
* ieee802154_submac: IPv6 fragmentation broken (#16998)
* LoRaWan node ISR stack overflowed (#14962)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* send data with UDP at 10HZ, the program die (#11860)
* stale border router does not get replaced (#12210)
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
  behavior (#18097)
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
* two nodes livelock sending neighbor solicitations back and forth
  between each other (#16670)
* xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (9)
------------------------

* cpu/native: timer interrupt issue (#6442)
* misc issues with tests/trickle (#9052)
* MSP430: periph_timer clock config wrong (#8251)
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
* periph_timer: systematic proportional error in timer_set (#10545)
* saml21 system time vs rtc (#10523)
* Sleep mode for Arduino (#13321)
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
* sys/newlib: gettimeofday() returns time since boot, not current wall
  time. (#9187)

Drivers related issues (16)
---------------------------

* adc is not a ADC-Driver but a analog pin abstraction (#14424)
* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* floats and doubles being used all over the place. (#12045)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* Potential security and safety race conditions on attached devices (#13444)
* PWM: Single-phase initialization creates flicker (#15121)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
* Two bugs may lead to NULL dereference. (#15006)

Native related issues (4)
-------------------------

* examples/micropython: floating point exception while testing on
  native (#15870)
* native getchar is blocking RIOT (#16834)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)

Other platforms related issues (15)
-----------------------------------

* Failing tests on FE310 (Hifive1b) (#13086)
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
* boards/hifive1: flashing issue (#13104)
* Cannot use LLVM with Cortex-M boards (#13390)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* MPU doesn't work on cortex-m0+ (#14822)
* newlib-nano: Printf formatting does not work properly for some
  numeric types (#1891)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)

Build system related issues (11)
--------------------------------

* `buildtest` uses wrong build directory (#9742)
* `make -j flash` fails due to missing make dependencies or `make
  flash-only` rebuilds the .elf (#16385)
* Build dependencies - processing order issues (#9913)
* build: info-build doesn't work with boards without port set (#15185)
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* doxygen: riot.css modified by 'make doc' (#8122)
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
* make: ccache leads to differing binaries (#14264)
* make: use of immediate value of variables before they have their
  final value (#8913)
* Tracking: remove harmful use of `export` in make and immediate
  evaluation (#10850)

Other issues (44)
-----------------

* [TRACKING] sys/shell refactoring. (#12105)
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto (#13285)
* Can't build relic with benchmarks or tests (#12897)
* CC2538DK board docs: broken links (#12889)
* cpu/stm32/periph/rtc overflow error (#16574)
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
* doc/LOSTANDFOUND: not rendered as expected (#17063)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* feather-m0: `make flash` reports "device unsupported" (#17722)
* flashing issue on frdm-k64f (#15903)
* frdm-k22f failing tests/periph_flashpage (#17057)
* I2C not working under RIOT with U8G2 pkg (#16381)
* ieee802154_security: Nonce is reused after reboot (#16844)
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
  disconnect (#17209)
* lwip: invalid state transition on ieee802154_submac users (#17208)
* Making the newlib thread-safe (#4488)
* mcuboot: flashes but no output (#17524)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
* Order of auto_init functions (#13541)
* pkg/tinydtls: Multiple issues (#16108)
* pkg_libhydrogen tests fail / update libhydrogen (#18508)
* Potential race condition in compile_and_test_for_board.py (#12621)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
  gracefully (#17874)
* rust-gcoap example is incompatible with littlefs2 (#17817)
* SPI access in LoRa-e5 and im880b? (#19025)
* stdio_ethos: infinite shell loop (#17972)
* sys/riotboot: documentation issues (#11243)
* sys/stdio_uart: dropped data when received at once (#10639)
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/periph_flashpage: failing on stm32l475ve (#17280)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* Use of multiple CAN bus on compatible boards (#14801)

There are 151 known issues in this release

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

- Race condition in SUIT around threads terminating (#19195)
- socket_zep: fragmentation broken if destination is multicast /
  ACK_REQ not set (#19117)
- sam0_sdhc: SDXC cards are not detected / handled properly (#18458)
- semtech_loramac_init blocking (#17907)
- tests/thread_float: crashes on avr-rss2 (#16908)
- esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
- SIGFPE on native architecture when printing double floats on Ubuntu
  21.04 (#16282)
- I found stm32 DMA periph driver bugs!  when I tested stm32l431rc
  board. (#16242)
- pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
- Unclear how Router Solicitations are (or should be) handled (#15926)
- examples/ccn-lite: floating point exception while testing on native (#15878)
- usb-serial/list-ttys.sh: Broken when a debugger offers multiple
  serial ports (#15814)
- tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
  esp32-wroom-32 (#13133)

13 fixed issues since last release (2022.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

Matrix and Forum
================
* 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.

Release 2022.10

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 2022.10 release includes, among many many bug fixes and improvements, the
following prominent contributions:

### Security Fixes

The GNRC network stack has received a number of security fixes. All users of
GNRC are advised to update to the new release. Given that no user facing
breaking API changes are included, we are hopeful that the update is painless
and quickly possible.

### ESP32 family

RIOT has been ported to the ESP32-C3, ESP32-S2, and the ESP32-S3 MCUs. In
addition driver support for the integrated BLE transceiver of the ESP32 MCUs
has been added.

### Major CI Upgrade

While the CI is developed in an independent repository, it is still a noteworthy
change that our CI software, Murdock, was updated since the last release. In
addition to changes under the hood the web front end got a major revamp. You
will directly notice the improvements in page load time and clarity/structure of
the interface. If you haven't already, please check out https://ci.riot-os.org
to take a look.

### Support for Priority Inheritance in `core_mutex`

If a shared resource guarded by a mutex is used by a high priority and a low
priority thread, the high priority thread may end up waiting on the low priority
thread to return the resource. If medium priority threads now interrupt the
low priority thread while working with the shared resource, the high priority
thread ends up waiting on both medium and low priority threads. This effect is
called priority inversion.

Priority inversion can in most cases be solved by carefully assigning priorities
and resources. In some cases however, this cannot be avoided: Let's consider
a scenario in which an I2C temperature sensor and an I2C IMU are used. Since
temperature changes are slow in frequency, the temperature readings are
assigned the lowest priority, while the IMU readings are assigned the highest
priority. The sensible approach here is to have both sensors on distinct I2C
buses. However, if e.g. only a single I2C bus is available by the hardware
priority inversion cannot be prevented by careful resource and priority
assignment alone. In these cases the module `core_mutex_priority_inheritance`
can be used to lend the low priority thread the priority of the high priority
thread while the high priority thread is waiting for the mutex hold by the
low priority thread.

After RIOT has already [been launched into space](https://github.com/thingsat)
it is now ready to for
[Mars](https://www.cs.unc.edu/~anderson/teach/comp790/papers/mars_pathfinder_long_version.html).

### USB Support for STM32F1 MCUs

While RIOT has longstanding USB support for many STM32 MCU families, the F1
family was not supported due to some peculiarities in the memory layout. The
driver has now been extended to handle them correctly. With this, the popular
STM32F103 bluepill board now supports stdio via USB, which however still
has to be manually enabled e.g. by:

```sh
USEMODULE=stdio_cdc_acm BOARD=bluepill make -C examples/default
```

### Support for podman

Just add an `export DOCKER=podman` to your `~/.profile` (or `~/.bashrc`, or ...)
and an `make BUILD_IN_DOCKER=1` will use [podman](https://podman.io/) instead of
docker to run the RIOT build container. Two major advantages of using `podman`
over `docker` is the support of rootless containers and not depending on a
central background daemon.

### Support for Sharing nRF52 combined I2C/SPI Peripherals

The nRF52 MCUs have a limited number of combined I2C/SPI peripherals.
Previously, each such peripheral could either provide a single I2C or a
single SPI bus. A board configuration that used the same combined peripheral
to provide both an SPI and an I2C bus previously resulted in bad surprises at
run-time.

The I2C/SPI drivers have now been reworked so that they can be shared in
round-robin fashion between multiple I2C and SPI buses. This is especially
useful for the upcoming support of the Bangle.js 2 watch that uses more I2C
buses than combined I2C/SPI peripherals available on the used nRF52840 MCU.
Thanks to the sharing of peripherals, all I2C buses can now be provided by a
single peripheral.

### Support for GCC 12.2.0

Many fixes for compilation and runtime issues that only started to surface
with GCC 12.2.0 have been fixed. This allows our users to confidentially choose
the current release with little to no fear that toolchain updates in the near
future will break the precious projects. In addition, we hope that the next
CI update will also cause less friction.

### Release Statistics

312 pull requests, composed of 819 commits, have been merged since the
last release, and 29 issues have been solved. 47 people contributed with
code in 84 days. 1799 files have been touched with 56827 (+) insertions and
108634 deletions (-).

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

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

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

Core
----

+ core/macros: add math helper macros (#17702)
* core/mutex: fix typo in docs (#18605)
* core: implement core_mutex_priority_inheritance (#17040)
* core: Treat stack overflows as an unrecoverable error (#18448)

System Libraries
----------------

+ doc: add deprecation notice on deprecated pseudo-modules (#18698)
+ event_periodic_callback: add convenience wrapper for periodic
  callbacks (#18598)
+ shell/cord_ep: Add user guidance & prevent accidental crash (#18053)
+ sys/bhp_*: add initial support for generic Bottom Half Processor (#18435)
+ sys/bhp_msg: add IPC based implementation of Bottom Half Processor (#18464)
+ sys/checksum: add CRC-16 implementation without lookup table (#18701)
+ sys/checksum: add CRC-32 checksum (#18686)
+ sys/checksum: Adding three new crc16 variations (#18516)
+ sys/string_utils: add strscpy() (#18621)
+ sys/ztimer: add LPTIMER auto init (#17654)
+ vfs: introduce vfs_format_by_path() (#18447)
* doccheck: make the file pattern more match riot.doxyfile (#18431)
* event_periodic_callback: remove unnecessary dependency (#18610)
* fmt: unify and align wording regarding characters, digits, and bytes (#18315)
* littlefs: make block size configurable at compile time (#18141)
* makefiles/tools/serial.inc.mk: Improve PORT selection when RIOT's USB
  CDC ACM is used for stdio (#18525)
* makefiles: Rust fixes and info extensions (#18630)
* rust: Update dependencies (#18642)
* rust: Update dependencies, build and test more on stable (#18678)
* security: Reference CPE used for RIOT (#18574)
* suit: rename worker thread functions (#18549)
* sys/shell/vfs: make output of vfs df human readable (#18550)
* USBUS/cdc_ecm: register with netdev (#18603)
* vfs: drop unused abs_path parameter (#18672)

Networking
----------

+ dns: provide generic dns_query() function (#18378)
+ gcoap/fileserver: add file and directory creation and deletion (#18133)
+ gcoap: add remote sock_udp_ep_t to coap_request_ctx_t (#18519)
+ gcoap_dns: Add DNS cache support (#18329)
+ gnrc/lorawan: add basic LoRaWAN 1.1 features (#17884)
+ gnrc_netif_lorawan: add support for LINK_UP/_DOWN events (#18699)
+ nanocoap_sock: add nanocoap_sock_put() (#18514)
+ net/gnrc_netif: add support for priority queues (#18496)
+ net/sock/dtls: introduce sock_dtls_sendv_aux() (#18363)
+ pkg/lwip: add support for HAL radios that require IRQ offloading (#18465)
+ sock_dodtls: Initial import of a DNS over DTLS client (#16861)
+ sys/net/gnrc_netif: Make use of confirm send (#18139)
+ sys/net/network_layer/ipv4/addr: add ipv4_addr_print function (#18694)
+ sys/shell: ncput: add option to read from stdin (#18639)
+ sys/uri_parser: Adding the port as uint16_t (#18096)
* codespell: fix remaining issues (#18604)
* dhcpv6: don't treat zero option as an end-of-payload marker (#18625)
* gcoap: accept resources in any order (#18651)
* gcoap: Forego IP address comparison in memo finding of multicasts (#17978)
* gcoap: move tl_type to coap_request_ctx_t (#18313)
* gcoap_dns: implement Max-Age-based TTL calculation (#18443)
* gcoap_forward_proxy: send empty ACK when response takes too long (#18386)
* gnrc_ipv6_nib: handle iface_up/iface_down in IPv6 thread (#18708)
* pkg/lwip: fix netdev concurrency issues (#18479)
* pkg/nimble: Replace double quotes with single quotes for two CFLAGS (#18376)
* pkg/nimble:derive peer address type from peer address (#18474)
* sock_dns_cache: move to dns_cache (#18318)
* sys/net: include misplacement inside linkage-specification (#18587)
* treewide:  s/gnrc_pktbuf_cmd/shell_cmd_gnrc_pktbuf/ (#18640)

Packages
--------

+ Add package tiny-vcdiff (#17797)
* pkg/cryptoauthlib: Pass ATCA_NO_HEAP Flag to library (#18705)
+ pkg/esp32_sdk: additional patches required for ESP32-C3 (#18339)
+ pkg/esp32_sdk: additional patches required for ESP32-S3 (#18408)
* lvgl/contrib: allow for SDL display driver height/width to be
  adjusted (#18463)
* pkg/libhydrogen: bump version (#18564)
* pkg/lvgl: bump version to 8.3.1 (#18366)
* pkg/nanocbor: bump version (#18543)
* pkg/tinydtls: bump version (#18368)
* remove version comment fixing build issue (#18489)
+ pkg/tinyusb: add tinyUSB as package (#18592)

Boards
------

+ boards/nucleo-f446ze: add support for ADC (#18647)
+ boards/nucleo-f767zi: add PWM config (#18393)
+ boards/samr21-xpro: add a note about EDBG UART limitation (#18567)
+ boards/stm32f746g-disco: add LD1 as LED0 definition (#18673)
+ boards: add support for the Waveshare nRF52840 Eval Kit (#13860)
+ cpu/esp32: add support for ESP32-C3 (#18345)
+ cpu/esp32: add support for ESP32-S2 (#18506)
+ cpu/esp32: add support for ESP32-S3 (#18421)
+ cpu/stm32/periph/usbdev_fs: add support for STM32F3 family (#18680)
+ drivers/usbdev_synopsys_dwc2: add USB OTG HS peripheral support for
  external ULPI HS PHYs (#18679)
+ drivers: add driver for Synopsys DWC2 that is used as USB OTG
  peripheral on STM32 and ESP32x SoCs (#18644)
+ pkg/tinyusb: add support for SAM0-based boards (#18689)
* boards/blxxxpill: configure usbdev_fs (#17812)
* boards/common/stm32: clean up LED definitions (#18415)
* boards/nucleo-l4r5zi:  support for ADC (#18676)
* boards/remote-revb: define default MTD device (#18611)
* boards/samr34-xpro: configure SPI NOR flash (#18492)
* cpu/atxmega: fix building with avr-libc 2.1.0 (#18626)
* cpu/esp32: use CPU_FAM and CPU_ARCH for ESP32x SoC variant dependent
  compilation (#18316)
* cpu/mips: Remove all mips (#18562)
* cpu/{esp8266,esp32}: cleanup of SPI Flash configuration (#18387)
* doc: fix unbalaced grouping (#18444)

CPU
---

+ cpu/avr8_common: add strings.h for compatibility (#18623)
+ cpu/esp32: add Bluetooth LE and NimBLE host support (#18439)
+ cpu/esp32: add ESP32-C3 support in makefiles (#18341)
+ cpu/esp32: add ESP32-S2 support to makefiles (#18503)
+ cpu/esp32: add ESP32-S3 support to makefiles (#18410)
+ cpu/esp32: add linker scripts for ESP32-C3 (#18340)
+ cpu/esp32: add linker scripts for ESP32-S2 (#18509)
+ cpu/esp32: add linker scripts for ESP32-S3 (#18409)
+ cpu/esp32: add platform code for RISC-V based ESP32x SoCs (#18260)
+ cpu/esp32: add some sanity checks in peripheral drivers (#18332)
+ cpu/esp32: enable BLE and NimBLE host support for ESP32-S3 (#18517)
+ cpu/esp32: extend file names of CPU specific files by CPU family (#18326)
+ cpu/esp32: implement periph/gpio_ll and periph/gpio_ll_irq (#17442)
+ cpu/esp32: split cpu_conf.h into ESP32x common and ESP32 specific
  parts (#18323)
+ cpu/esp32: split periph_cpu.h into ESP32x common and ESP32 specific
  parts (#18324)
+ cpu/esp32: split sdkconfig.h into ESP32x common and ESP32 specific
  parts (#18322)
+ cpu/sam0_common: adc: add support for differential mode (#18146)
+ cpu/stm32/periph_eth: Add stm32_eth_tracing (#18418)
+ pkg/nimble: add feature ble_adv_ext and cleanup ble_* features (#18449)
+ sys/tiny_strerror: add tiny `strerror()` implementation (#18571)
* core/mutex: clean up (#18619)
* cpu/cortexm: clear FPU state in `cpu_switch_context_exit()` (#18697)
* cpu/esp*: cleanups mainly to reduce the vera++ warnings (#18333)
* cpu/esp32: cleanup of esp_log_write (#18335)
* cpu/esp32: enable BLE and NimBLE host support for ESP32-C3 (#18510)
* cpu/esp32: extend GPIO wake-up from deep sleep (#18405)
* cpu/esp32: implement periph_spi_reconfigure (#18710)
* cpu/esp32: make esp_hw_counter feature dependent on ESP32x SoC family (#18317)
* cpu/esp32: move common ESP-IDF configurations to common files (#18406)
* cpu/esp32: move linker scripts to a ESP32x variant specific directory (#18325)
* cpu/esp: improve thread safety in newlib locking functions (#18544)
* cpu/esp_common: MODULE_XTENSA has to depend on HAS_ARCH_ESP_XTENSA (#18319)
* cpu/native: get mtd size from file size (#18669)
* cpu/nrf5x: allow multiple I2C and SPI buses on a shared periph (#18478)
* cpu/sam0/timer: supply all clocks before accessing any regs (#18527)
* cpu/sam0_common: spi: limit clock to source clock (#18223)
* cpu/stm32/periph/usbdev_fs: support for STM32F1 family (#18729)
* cpu/stm32/periph_eth: optimize IRQ handler (#18417)
* cpu: cpu_print_last_instruction() -> cpu_get_caller_pc() (#18226)
* cpu: make use of `cortexm.ld` (#18636)
* gnrc_netif: handle NETDEV_EVENT_LINK_UP/DOWN events (#17893)
* pkg/lwip: Set netdev callback before driver init (#18548)
* socket_zep: ignore packets sent on the wrong radio channel (#18594)
* sys/net/gnrc/netif: allow checking if a netdev is legacy or new API (#18426)
* treewide: Ubuntu jammy build fixes (#18652)

Device Drivers
--------------

* drivers/wx281x: fix DEBUG format string for ESP32x SoCs (#18336)
* usbdev_synopsys_dwc2: Mask RX FIFO irq when using DMA (#18726)

Documentation
-------------

+ cpu/esp32: add ESP32-S2 support in documentation (#18505)
+ cpu/esp32: add ESP32-S3 support to documentation (#18412)
+ cpu/esp32: split the doc into ESP32x common and ESP32 specific parts (#18321)
+ cpu/esp32: update documentation for ESP32-C3 (#18350)
+ doc: Add high-level documentation on flashing boards (#18455)
* boards/nucleo64: doc update - usage of cpy2remed programmer and short
  board overview (#18419)
* boards/remote-revb: fix pinout image in doc.txt (#18615)
* dist/tools/edbg: bump version (and update SAML11 documentation) (#18384)
* doc/doxygen: use DuckDuckGo for search (#18358)
* doc: change protocol for git clone in docs (#18531)
* gnrc/ipv6_auto_subnets: improve documentation about subnet generation
  and RIO (#18398)
* tests/doc: some additions and reorganization of doc page (#18190)

Build System / Tooling
----------------------

+ Add podman support (#18671)
+ codespell: add false positives for v2.2.1 (#18675)
+ dist/tools/esptools: add ESP32-C3 toolchain (#18337)
+ dist/tools/esptools: add ESP32-S2 toolchain support to
  {install,export}.sh (#18502)
+ dist/tools/esptools: add ESP32-S3 toolchain support to
  {install,export}.sh (#18407)
+ dist/tools/esptools: add macOS support to install/export scripts (#18385)
+ dist/tools: add DOSE Linux tool (#18163)
+ makefiles/tools/dfu-util: add option to pass DFU_SERIAL id (#18521)
+ makefiles: Add openocd-rtt (#18526)
+ tools/openocd: add generic FTDI adapter (#18628)
+ tools/zep_dispatch: add Wireshark capture support (via
  mac802154_hwsim) (#18230)
* .circleci: remove directory (#18674)
* dist/tools/suit: encrypt an existing key (#18499)
* doccheck: remove exclude_patterns not needed (#18597)
* makefiles/arch/avr8.inc.mk: Fix compilation with GCC 12.2.0 (#18533)
* makefiles/boards/stm32.inc.mk: improve stm32flash support (#18452)
* makefiles: Select suitable terminal when stdio_rtt is used (#18528)
* pseudomodules: document gnrc_netif_cmd_lora as deprecated (#18706)

Kconfig
-------

+ cpu/esp32: add ESP32-S2 support in Kconfig (#18504)
+ cpu/esp32: add ESP32-S3 support in Kconfig (#18411)
+ cpu/esp32: split Kconfig into ESP32x common and ESP32 specific parts (#18320)
+ drivers: model IEEE 802.15.4 devices in Kconfig (#17789)
+ drivers: model kconfig for Ethernet drivers (#17739)
+ Kconfig/ieee802154: fix typo in HAL selector and add missing radios (#18430)
* .murdock: disable hash checks of kconfig/make (#18423)
* cpu/esp_{common,32,8266}: improve Kconfig submenu structure (#18314)
* drivers/kw2xrd/Kconfig: fix kconfig model (#18497)
* Fix kconfig models breaking nightlies (#18718)

Examples
--------

+ examples/gcoap_dtls: Add coap-client example (#18660)
* examples/filesystem: drop manual mounts (#18495)
* examples: Move in RIOT/applications (#18602)

Testing
-------

+ .murdock.yml: Add preview link to documentation to comment (#18677)
+ release-tests: add capability to run on PR comment (#18713)
+ Revert "release-tests: add capability to run on PR comment" (#18736)
+ tests/external_boards: add esp32c3-ci board for optional modules (#18404)
+ tests/external_boards: add esp32s2-ci board for optional modules (#18507)
+ tests/external_boards: add esp32s3-ci board for optional modules (#18422)
+ tests/gcoap_fileserver: add integration test for GCoAP fileserver (#18199)
* CI: improve makefile broken handling (#18595)
* ci: teach github-labeler about .murdock.yml (#18666)
* gh-actions: move actions/checkout to main (#18730)
* murdock: honour RUN_TESTS setting (#18546)
* murdock: make available boards instance dependent (#18659)
* riotctrl_shell.cord_ep: remove regif parameter (#18716)
* tests/ieee802154_*: fix tx_done handler on ACK_TIMEOUT and improve
  tests (#18382)
* tests/periph_gpio_ll: drop core dump merged by accident (#18541)
* tests/periph_timer_short_relative_set: clarify outcome (#18513)
* tests/pkg_lvgl_touch: randomize button position on click (#18481)
* tests/pkg_tinyvcdiff: Initialize mtd->write_size (#18529)
* tests/thread_priority_inversion: blacklist esp32 (#18535)
* tests/ztimer_periodic: improve output and relax on native (#18491)
* tests/{periph_gpio_ll,pkg_fff}: change CPU_FAM to MCU for ESP32x SoCs (#18356)

API Changes
-----------

+ drivers/kw2xrf: add support for IEEE 802.15.4 Radio HAL (#18383)
    - Applications using the proper network stack APIs (such as the SOCK API or
      POSIX sockets) will not notice any chances, except for e.g. the better
      packet reception rate
+ sys/shell: make cmds submodules and add KConfig modeling (#18355)
    - Shell commands can now be individually selected by using the corresponding
      `shell_cmd_<name>` module. What previously was called `shell_commands` now
      is `shell_cmds_default` and will automagically select shell commands based
      on the set of modules used. Users can keep using `shell_commands` for now,
      but the build system will inform them that `shell_commands` is deprecated.
* cpu/sam0_common: adc: drop pin from adc_conf_chan_t (#18658)
    - Application developers will not have to change their code. However, out of
      tree SAM0 boards that contain an ADC configuration will need to remove the
      `.pin` member and rename the existing `.muxpos` member to `.inputctrl`
* hashes_cmac: rename to hashes_aes128_cmac (#18539)
    - Existing C call sides will continue to work due to compatibility wrappers.
      However, applications should migrate before the deprecated wrappers are
      dropped.
* nanocoap_sock: constify remote (#18588)
    - This will  not break any existing C call sides
* gnrc_netreg: Use locks around netreg (#18740)
    - calls to `gnrc_netreg_lookup()` and `gnrc_netreg_getnext()` now need to be
      guarded
* sys/hash/pbkdf2: Accept passwd as `void *` instead of `uint8_t *` (#18941)
    - This is not breaking any existing C call sides, but new code no longer
      needs to cast `char *` to `uint8_t *`

Uncategorized
-------------
+ .murdock.yml: add footer comment about production stage (#18667)
+ .murdock.yml: add new Murdock configuration (#18084)
+ pkg/lwip: add missing initialization for async_cb (#18693)
* bootloader/riotboot_dfu: move ztimer_init() prior to usbus start (#18538)
* murdock: fix bors branch name (testing -> trying) (#18665)
* Release notes 2022.07 (#18512)

And 40 minor changes.

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

- The module `shell_commands` is now deprecated. User should use
  `shell_cmds_default`. For now, `shell_commands` is an alias of
  `shell_cmds_default`
- Shell commands that were individually selectable even before this release were
  renamed to match the pattern `shell_cmd_<name>`, while they previously where
  often called `<name>_cmd`. The previous names are aliases of the new names
  and the build system will list any deprecated modules used.
- Users of `hashes_cmac` should update to `hashes_aes128_cmac` before the legacy
  wrappers now in place for backward compatibility will be removed.

Bug fixes (107)
==============

* .murdock: Fix kconfig hash check (#18364)
* asymcute: Compare request message type when matching acknowledgement (#18434)
* asymcute: fix one byte out-of-bounds access in _len_get (#18433)
* boards/common/stm32: Fix LED configuration (#18568)
* boards/nrf52dk: fix doc (#18646)
* core/mbox: fix race condition (#18960)
* core/msg.c: irq was not restored properly (#18606)
* core/mutex: fix priority inheritance on AVR (#18584)
* core/sched.c: fix undefined behavior on 8-bit/16-bit (#18573)
* cpu/arm7_common: align stacks correctly (#18641)
* cpu/arm7_common: fix compilation with 12.2.0 (#18638)
* cpu/atmega_common/periph_timer: fix spurious IRQs (#18981)
* cpu/esp32/periph_timer: allow changing callback or freq (#18973)
* cpu/esp32: fix dependency for periph/rtt and module esp_rtc_timer_32k (#18334)
* cpu/esp32: fix provided features and Kconfig for esp_eth (#18394)
* cpu/esp8266/periph_timer: allow changing callback or freq (#18973)
* cpu/esp: fix netdev register (#18391)
* cpu/esp_common/periph_uart: fix call to _uart_set_mode (#18720)
* cpu/nrf5x_common/periph_timer: fix spurious IRQs (#18974)
* cpu/qn908x: use bitarithm_test_and_clear() & fix cb (#18990)
* cpu/qn909x/periph_timer: make clangd happy (#18990)
* cpu/stm32/periph_eth: fix typo in initialization code (#18416)
* cpu/stm32/periph_timer: fix race conditions (#18972)
* cpu/stm32/periph_timer: fix spurious IRQs (#18972)
* cpu/stm32: fix KConfig modeling for STM32F1 / usbdev_synopsys_dwc2 (#18741)
* dist/tools/flatc: Fix compilation on musl (#18864)
* dns_cache: handle TTL=0 properly (#18441)
* dns_cache: synchronize access with mutex (#18330)
* drivers/atwinc15x0: reset device if m2m_wifi_handle_events() fails (#18476)
* drivers/ethos: Fix off-by-one in ETHOS driver (#18831)
* drivers/lis2dh12: release instead of acquire (#18353)
* drivers/mtd: fix module name for mtd_sdcard in Kconfig (#18395)
* drivers/nrf802154: do not filter broadcast PAN ID (#18283)
* drivers/sdcard_spi: make 8-bit safe (#18572)
* drivers/shtcx: I2C-line is not released properly (#18347)
* drivers/slipdev: fix off-by-one error in _recv() (#18830)
* drivers/{dose, slipdev, sam0_eth}: generate RX event for queued packets (#18201)
* examples/dtls-echo: set address family for sessions (#18369)
* examples/wasm/wasm_sample: fix linking with new wasm-ld (#18867)
* gcoap: fixes around empty ACKs (#18429)
* gcoap_dns: various fixes (#18367)
* gcoap_fileserver: bugfix recursive delete (#18536)
* gcoap_forward_proxy: copy Max-Age from forwarded Valid if it exists (#18471)
* gnrc_ipv6_nib: make configurable via Kconfig again (#18360)
* gnrc_netif: don't allocate message queue on the stack (#17905)
* gnrc_netif_conf: fix auto-6ctx switch (#18370)
* gnrc_netif_ieee802154: Ignore packets without source address (#18820)
* gnrc_sixlowpan_frag_rb: fix integer underflow in _6lo_frag_size() (#18820)
* gnrc_sixlowpan_frag_vrb: Assert no usage of a vrb with src_len == 0 (#18820)
* gnrc_sixlowpan_iphc.c: dereference ipv6_hdr in DEBUG() after assignment (#18820)
* gnrc_sixlowpan_iphc: fix buffer overflow in gnrc_sixlowpan_iphc_recv() (#18820)
* gnrc_sixlowpan_iphc: fix integer underflow in gnrc_sixlowpan_iphc_recv() (#18820)
* gnrc_sixlowpan_iphc: fix null pointer dereference in _iphc_encode() (#18820)
* gnrc_sixlowpan_iphc: fix packet type confusion in _iphc_encode() (#18820)
* ieee802154: Adjust parsing of IEEE 802.15.4 frame header (#18820)
* kw2xrf/Kconfig: remove netdev_ieee802154 from dependency resolution (#18469)
* makefiles/arch/avr8.inc.mk: fix detection of GCC 12 (#18732)
* makefiles/arch/cortexm.inc.mk: fix ASMFLAGS (#18899)
* makefiles/arch/riscv.inc.mk: Fix with BUILD_IN_DOCKER (#18654)
* makefiles/cflags.inc.mk: add -z noexecstack to link flags (#18928)
* makefiles/libc/picolibc.mk: fix compilation with modern binutils (#18909)
* makefiles/libc: fix wchar_t size warnings on LLVM (#18928)
* makefiles/suit: avoid unwanted key creation trigger (#18344)
* makefiles: quiet messages on CI (#18470)
* nib/_nib-6ln: correct ABR timeout in ABRO (#18661)
* pkg/arduino_sdi_12: bump version, fix patches (#18812)
* pkg/ccn-lite: Fix use after free bug (#18897)
* pkg/ccn-lite: patch to fix use-after-free (#18483)
* pkg/lwip: ease debugging & fix sending from socket bound to anyaddr (#18288)
* pkg/nimble: fix the event queue size for nimble_adv_ext (#18467)
* pkg/nimble: signal LINK_UP on initialisation (#18980)
* pkg/tflite-micro: fix compilation with GCC >= 12.x (#18895)
* pkg/utensor: fix uninitialized variable (#18865)
* pkg/wolfssl: fix compilation with GCC >= 12.x (#18898)
* pkg/{littlefs,littlefs2}: fix unaligned memory accesses (#18473)
* release-tests: use Ubuntu Jammy runner (#18712)
* sys/clif: Fixing out of bounds read under certain conditions (#18810)
* sys/log_*: modularize log into log_color and log_printfnoformat (#18425)
* sys/net/gnrc/pkt: fix gnrc_pkt_delete() (#18880)
* sys/net/sock_util: fix _find_hoststart() (#18723)
* sys/print_stack_usage: update MIN_SIZE (#18924)
* sys/shell/cmds: fix shell_cmd_netif LoRaWAN integration (#18649)
* sys/string_utils : new (header-only) module for string utilities (#18609)
* test-on-iotlab: add missing scapy dependency (#18757)
* test-on-iotlab: several fixes to make it runnable again (#18757)
* test/unittest: initialize ztimer64 is required, use xtimer test-fib (#18365)
* tests/cc2538_rf: set event_callback before init (#18751)
* tests/gcoap_fileserver: add test for PUT (#18725)
* tests/gnrc_rpl: mark the test as only for native in build system (#18757)
* tests/heap_cmd: fix test script (#18634)
* tests/mpu_stack_guard: Fix compilation on modern GCC (>= 12.x) (#18872)
* tests/nrf802154: set event_callback before init (#18751)
* tests/pbkdf2: de-flaky-fy test (#18941)
* tests/periph_gpio_ll: fix the output for GPIO_OUTPUT_OPEN_SOURCE tests (#18331)
* tests/pkg_emlearn: fix compilation (#18902)
* tests/pkg_tinyvcdiff: fix stack overflow (#18896)
* tests/pkg_utensor: increase main threads stack size (#18959)
* tests/shell: fix failure on samr21-xpro (#18908)
* tests/socket_zep: set event_callback before init (#18751)
* tests/sx12xx: set event_callback before init (#18751)
* tests/unittests: Correct typo in documentation (#18438)
* tests/unittests: fix get_frame_hdr_len tests for hardened parsing (#18820)
* tests: call gnrc_ipv6_nib_iface_up() after gnrc_ipv6_nib_init_iface() (#18635)
* tests: set netdev `event_callback` before calling init (#18751)
* treewide: fix conditionals on deprecated module (#18616)
* unittest/main: do not initialize xtimer if ztimer_xtimer_compat (#18352)
* usbus/hid: fix buffer overflow in hid_io (#18889)

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

Network related issues (53)
---------------------------

* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* [gcoap-dtls] Posting a message yields a stack overflow on the
  `samr21-xpro` with ECC (#18292)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* CC2538 RF overlapping PIN usage (#8779)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to choose global source address. (#13745)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_netif_pktq leaks memory (#17924)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
* gomach: Resetting netif with cli doesn't return (#10370)
* ieee802154_submac: IPv6 fragmentation broken (#16998)
* LoRaWan node ISR stack overflowed (#14962)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* nanocoap: problem with [re]transmission behaviour: (some blocks are
  sent twice immediately) (#18217)
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* send data with UDP at 10HZ, the program die (#11860)
* stale border router does not get replaced (#12210)
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
  behavior (#18097)
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
* two nodes livelock sending neighbor solicitations back and forth
  between each other (#16670)
* Unclear how Router Solicitations are (or should be) handled (#15926)
* xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (9)
------------------------

* cpu/native: timer interrupt issue (#6442)
* misc issues with tests/trickle (#9052)
* MSP430: periph_timer clock config wrong (#8251)
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
* periph_timer: systematic proportional error in timer_set (#10545)
* saml21 system time vs rtc (#10523)
* Sleep mode for Arduino (#13321)
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
* sys/newlib: gettimeofday() returns time since boot, not current wall
  time. (#9187)

Drivers related issues (16)
---------------------------

* adc is not a ADC-Driver but a analog pin abstraction (#14424)
* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* floats and doubles being used all over the place. (#12045)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* Potential security and safety race conditions on attached devices (#13444)
* PWM: Single-phase initialization creates flicker (#15121)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
* Two bugs may lead to NULL dereference. (#15006)

Native related issues (6)
-------------------------

* examples/ccn-lite: floating point exception while testing on native (#15878)
* examples/micropython: floating point exception while testing on
  native (#15870)
* native getchar is blocking RIOT (#16834)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)
* SIGFPE on native architecture when printing double floats on Ubuntu
  21.04 (#16282)

Other platforms related issues (17)
-----------------------------------

* Failing tests on FE310 (Hifive1b) (#13086)
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
* boards/hifive1: flashing issue (#13104)
* Cannot use LLVM with Cortex-M boards (#13390)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* I found stm32 DMA periph driver bugs!  when I tested stm32l431rc
  board. (#16242)
* MPU doesn't work on cortex-m0+ (#14822)
* newlib-nano: Printf formatting does not work properly for some
  numeric types (#1891)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)

Build system related issues (11)
--------------------------------

* `buildtest` uses wrong build directory (#9742)
* `make -j flash` fails due to missing make dependencies or `make
  flash-only` rebuilds the .elf (#16385)
* Build dependencies - processing order issues (#9913)
* build: info-build doesn't work with boards without port set (#15185)
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* doxygen: riot.css modified by 'make doc' (#8122)
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
* make: ccache leads to differing binaries (#14264)
* make: use of immediate value of variables before they have their
  final value (#8913)
* Tracking: remove harmful use of `export` in make and immediate
  evaluation (#10850)

Other issues (49)
-----------------

* semtech_loramac_init blocking (#17907)
* [TRACKING] sys/shell refactoring. (#12105)
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto (#13285)
* Can't build relic with benchmarks or tests (#12897)
* CC2538DK board docs: broken links (#12889)
* cpu/stm32/periph/rtc overflow error (#16574)
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
* doc/LOSTANDFOUND: not rendered as expected (#17063)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* feather-m0: `make flash` reports "device unsupported" (#17722)
* flashing issue on frdm-k64f (#15903)
* frdm-k22f failing tests/periph_flashpage (#17057)
* I2C not working under RIOT with U8G2 pkg (#16381)
* ieee802154_security: Nonce is reused after reboot (#16844)
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
  disconnect (#17209)
* lwip: invalid state transition on ieee802154_submac users (#17208)
* Making the newlib thread-safe (#4488)
* mcuboot: flashes but no output (#17524)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
* Order of auto_init functions (#13541)
* pkg/tinydtls: Multiple issues (#16108)
* pkg_libhydrogen tests fail / update libhydrogen (#18508)
* Potential race condition in compile_and_test_for_board.py (#12621)
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
  gracefully (#17874)
* rust-gcoap example is incompatible with littlefs2 (#17817)
* sam0_sdhc: SDXC cards are not detected / handled properly (#18458)
* stdio_ethos: infinite shell loop (#17972)
* sys/riotboot: documentation issues (#11243)
* sys/stdio_uart: dropped data when received at once (#10639)
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/periph_flashpage: failing on stm32l475ve (#17280)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
  esp32-wroom-32 (#13133)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests/thread_float: crashes on avr-rss2 (#16908)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
  serial ports (#15814)
* Use of multiple CAN bus on compatible boards (#14801)

There are 161 known issues in this release

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

- tests/thread_priority_inversion: Fails on AVR (#18545)
- `tests/thread_priority_inversion` failing with `esp32-wroom-32` (#18534)
- (almost solved) SPI SD-Card driver: SPI initialisation freeze until
  timeout (#14439)
- MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
- `make term` output is inconsistent between boards, `ethos` and
  `native` (#12108)
- ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
- arm7: printf() with float/double not working (#11885)
- net: netdev_driver_t::send() doc unclear (#10969)
- openthread: does not build on current Arch (#10809)
- Possible memset optimized out in crypto code (#10751)
- xtimer_set_msg: crash when using same message for 2 timers (#10510)
- Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
- RIOT cannot compile with the latest version of macOS (10.14) and
  Xcode 10 (#10121)
- cpu/cortexm_common: irq_enable returns the current state of
  interrupts (not previous) (#10076)
- xtimer_usleep wrong delay time (#10073)
- assert: c99 static_assert macro doesn't function for multiple
  static_asserts in the same scope (#9371)
- xtimer mis-scaling with long sleep times (#9049)
- 6lo gnrc fragmentation expects driver to block on TX (#7474)
- scheduler: priority inversion problem (#7365)
- xtimer_usleep stuck for small values (#7347)
- General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
- sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
- xtimer: add's items to the wrong list if the timer overflows between
  _xtimer_now()  and irq_disable() (#7114)
- Windows AVR Mega development makefile Error (#6120)
- tests: xtimer_drift gets stuck on native (#6052)
- C++11 extensions in header files (#5561)
- at86rf2xx: lost interrupts (#5486)
- make: Setting constants on compile time doesn't really set them
  everywhere (#3256)
- Tracker: Reduce scope on unintended COMMON variables (#2346)

29 fixed issues since last release (2022.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

Matrix and Forum
================
* 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.

Release 2022.07

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 2022.07 release includes many changes, some highlights of which are:

### GPIO Low-level drivers

A new API, `gpio_ll`, has been introduced for highly efficient access to GPIO
pins grouped in ports.

The API is limited to internal use for the time being, but still paves the way
towards using port multipliers like local GPIO pins, and for improved
bit-banging implementations (e.g. around WS281x-style LEDs).

### Improved serial port selection

When using multiple boards simultaneously, a new serial port selection
algorithm can be activated by setting `MOST_RECENT_PORT=1`. Of all serial ports
whose metadata matches the board's known properties, it selects the most
recently connected one.

### ESP support

The ESP IDF (IoT Development Framework; the vendor's provided tools) has been
upgraded to version 4.4, and many peripheral drivers are now implemented using those.

343 pull requests, composed of 767 commits, have been merged since the
last release, and 5 issues have been solved. 38 people contributed with
code in 107 days. 1684 files have been touched with 43451 (+) insertions and
82174 deletions (-).

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

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

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

Core
----

* provide dummy implementation of thread and mutex for riotboot (#17959)
* kernel_defines: drop CONST definition (#18212)

System Libraries
----------------

+ sys/event: Add documentation and enforce waiter on wait (#17952)
  sha256sum shell commands (#18040)
+ sys/shell: new module shell_lock (#13082)
* Fido2: Enhance flash persistence (#17096)
* pkg/fatfs, shell: enable RTC support if rtt_rtc is used (#17912)
* pm: don't (un)block IDLE mode (#17974)
* sys/posix/include/arpa: use `__restrict` instead of `restrict` (#18034)
* sys/quad_math: remove unused module for quad arithmetic (#18032)
* sys/shell: drop `_builtin_cmds` define (#18075)
* sys/shell_commands: convert to SHELL_COMMAND() (#18152)
* sys/ztimer: no log for stdio_rtt/semihosting (#18176)

### SUIT

+ suit/transport/vfs: add VFS as source for firmware updates (#18045)
+ sys/sc_suit: add seq_no command (#17941)
* examples/suit_update/test: use 'suit seq_no' to get version (#17973)
* sys/suit/storage/vfs: initial import (#17943)
* sys/suit/storage: change log to LOG_DEBUG (#18020)
* sys/suit: avoid installing payload twice (#17984)
* sys/suit: save seq_number when parsing manifest (#17939)

### VFS

+ sys/shell/vfs: add umount, rmount and mkdir commands (#18112)
+ sys/vfs: add vfs_unmount_by_path() (#18109)
+ sys/vfs_util: add VFS helper functions (#18038)
+ sys/vfs_util: add vfs_file_<hash>() functions and md5sum, sha1sum and

### Rust

+ Add some Rust library building infrastructure (#16833)
* makefiles/rust: Err early on setup issues, provide suggestions (#18220)
* rust: Build from git branches (#18151)
* rust: Explicitly select nightly (#18243)
* rust: Update versions (#18181)

Networking
----------

+ congure_reno: initial import of TCP Reno congestion control (#15953)
+ drivers/sx1280: add driver for SX1280 transceiver v2 (#18033)
+ gnrc/ipv6_auto_subnets: init RPL root when adding a prefix (#17350)
+ ieee802154: add default max frame retransmissions config (#18264)
+ pkg/lwip: Add basic version of netif_get/set_opt (#18069)
+ pkg/lwip: Add netif_t struct, register all netifs (#16974)
+ pkg/nimble/autoadv: add support for ext_adv (#17774)
+ sys/iolist: add helper functions (#18044)
+ sys/net/gnrc: add gnrc_tx_sync for gnrc_sixlowpan_frag_sfr (#16090)
+ sys/net/gnrc_pktbuf_static: add use-after-free detection (#18227)
+ sys/net/netif: add convenience functions for getting/printing IPv6
  addresses (#18161)
* gnrc/ipv6_auto_subnets: allow to join multiple subnets (#17547)
* gnrc_ipv6_nib: fix inconsistent ABR valid lifetime representation (#18126)
* gnrc_netif: make auto-config of compression context optional (#17678)
* gnrc_netif: use event loops by default to process ISR (#16748)
* gnrc_sock: implicitly set netif if there is only a single one (#18065)
* gnrc_sock: warn about non-zero receive timeouts with sock_async (#17691)
* net/ble/skald: make advertising interval configurable per context (#17834)
* net/gnrc: Fixing whitespace in the documentation (#18036)
* net/sock/udp: designated initializer, C++ compatibility (#18035)
* sock_dns: implement DNS cache (#17680)
* sock_dns_cache: move to dns_cache (#18318)
* sock_dns_cache: move to dns_cache [backport 2022.07] (#18327)
* sys/include/net/af: fix doc comment (#17946)
* sys/net/gnrc_pktbuf_static: fix documentation of use-after-free
  detection (#18244)
* tests: rework ieee802154 drivers (#17838)

### GCoAP

+ Add file server (#17956)
+ add helper function to get request header from a request memo (#18095)
+ add nanocoap_cache support for clients (#17888)
+ DNS: initial import of a DNS over CoAP (DoC) client (#16705)
+ Forward prxy: provide cache validation mechanism (#17801)
* ensure response address is the same as request address (#18026)
* small dependencies fixes (#17944)

### Nanocoap

+ add coap_get_token() (#17976)
+ Add handler for resource-based subtrees (#13698)
+ cache for CoAP responses (#13889)
+ add nanocoap_sock_block_request() (#17958)
+ add nanocoap_sock_url_connect() (#17960)
+ add nanocoap_vfs_get() (#17937)
+ add nanocoap_vfs_put() (#17962)
* follow-up fixes (uncontroversial parts) (#17977)
* clean up state management (#18047)
* deprecate coap_pkt token ptr (#18013)
* refactor to remove work-buffer requirement (#17509)

Packages
--------

+ drivers/atwinc15x0: add timeout to init (#18214)
+ pkg/libcose: add RIOT as crypto backend (#17701)
+ pkg/pkg: add GIT_QUIET (#17987)
+ tests/pkg_cmsis-dsp: add kconfig configuration + cleanup package
  modules (#18001)
* makesystem: speedup pkg cloning if no git-cache is available (#16316)
* pkg/littlefs2: bump version to 2.5.0 (#18049)
* pkg/lv_drivers: cleanup Makefile (#18302)
* pkg/lvgl: bump to v8.3.0 (#18301)
* pkg/minmea: bump version (#18166)
* pkg/nanopb: bump version to 0.4.6 (#18149)
* pkg/pkg.mk: silence info if QUIETER (#18031)
* pkg/uwb-core: adjust holdoff time when rxdiag_enabled (#17999)
* pkg/uwb-core: reduce default stacksize (#18022)
* pkg/uwb-core: remove uwbcfg (#17998)
* pkg/uwb-dw1000: fix default group delay, use OTP values when possible (#18000)
* pkg/wamr: update to tagged release WAMR-05-18-2022 (#18119)

Boards
------

+ boards/nucleo-f401re: add riotboot (#17948)
+ boards/stm32f7508-dk: add support (#17954)
+ cpu/samd5x: add SD Host Controller implementation (#17863)
* boards/adafruit-pybadge: enable ST7735 display (#17903)
* boards/common/arduino-atmega: fix issue with wrong port for LED0 (#18245)
* boards/esp32: cleanup board_init_common (#18238)
* boards/esp32: cleanup CI compilation for esp_wifi_enterprise (#18218)
* boards/nucleo-X: enable cpy2remed programmer (#18057)
* boards/stm32f469i-disco: enable cpy2remed programmer (#18039)
* boards/{thingy52,ruuvitag}: allow OpenOCD as programmer (#18237)
* build system: improve serial port selection (#18167)
* cpu/esp32: Upgrade to ESP-IDF v4.4 (#17601)
* cpu/esp32: use ESP-IDF i2c HAL for ESP32 periph/i2c (#18279)
* cpu/esp32: use ESP-IDF ledc HAL for periph/pwm (#18276)
* drivers/lcd: rework rotation management and enable it for st7735 (#17930)
* drivers/lcd: slightly rework params to expose offset values to
  ili9341 driver (#17925)
* periph_can,candev: socketcan pkg for native, candev test cleanup (#17533)
* pkg/cryptoauthlib: Update package to latest version (#18137)
* unittests: enable ASAN on native (#18099)

CPU
---

* netdev_tap: make 'wired' property configurable (#17709)
* pkg/nimble: version bump to NimBLE 1.5.0 RC1 (#18029)

### AVR

+ atmega_common: implement periph/gpio_ll{,_irq} (#17982)

### Cortex-M

* cortexm_common: allow to overwrite nmi_handler (#18232)
* cortexm_common: enable FPU on cortexm33 (#18064)
* cortexm_common: remove breakpoint from hard_fault_handler (#17781)

+ efm32: Minimal support for gpio_ll (#18023)
+ nrf5x_common: implement periph/gpio_ll{,_irq} (#17980)
+ stm32: Implement periph/gpio_ll{,_irq} except for STM32F1 (#17981)
* sam0_common: adc: Automatically configure external reference pin (#18042)
* stm32: support for B subfamily of g0 to determine the ram length (#18296)

### ESP32

+ add ESP-IDF API (#18253)
* use ESP-IDF ...
  * adc/dac HAL for periph/adc and periph/dac (#18271)
  * function esp_efuse_mac for CPU ID (#18273)
  * gpio HAL for periph/gpio (#18270)
  * interrupt HAL for periph/uart (#18274)
  * interrupt handling API (#18261)
  * random API for ESP32 (#18277)
  * sleep API for periph/pm (#18280)
  * spi HAL for periph/spi (#18281)
  * spli_flash_* funcs in periph/flash (#18250)
  * startup function (#18268)
  * timer HAL for system timer and watchdog (#18267)
  * timer/interrupt HAL for periph/timer (#18282)
  * twai HAL for periph/can (#18278)
* ESP32x SoC variant independent syscalls (#18266)
* always include libc_gettimeofday (#18027)
* ESP32 SoCx variant independent bootloader makefile (#18246)
* ESP32x SoC variant independent makefiles (#18249)
* invert MCU_* and CPU* conditionals (#18248)
* move platform code for Xtensa-based ESP32x SoCs to module esp_xtensa (#18259)
* Remove dependency on module libc_gettimeofday (#18202)
* split module esp_wpa supplicant into several modules (#18239)
* FreeRTOS adaptation layer changes/extension required for ESP-IDF HAL/LL
  (#18224)
* use LittleFS2 as default FS (#18159)
* pkg/esp32_sdk: Update version to 4.4.1 (#18165)

Device Drivers
--------------

+ periph/gpio_ll: New Peripheral GPIO API (#16787)
+ driver/lcd: add common lcd base driver (#16176)
+ sys/mtd: Introduce write granularity (#17683)
* drivers/mtd_mapper: inherit physical properties (#18113)
* drivers/netdev_ieee802154: drop duplicate struct member (#17979)
* drivers/periph_common/cpuid: disable false positive warnings (#17909)

* drivers/hd44780: PCF857x I2C interface added (#12665)
* drivers/ir_nec: NEC remote receiver implementation (#17935)
* drivers/mcp2515: enable filtering (#18062)
* drivers/mcp2515: apply filters to target mailbox (#18131)
* drivers/mcp2515: fixes and cleanups (#17945)
* drivers/scard_spi: _dyn_spi_rxtx_byte return void (#17968)
* drivers/ws281x: update ESP32 driver to use ESP-IDF CPU HAL (#18252)
* pkg/driver_atwinc15x0: bump version to 1.6.1 (#18215)

Documentation
-------------

* boards/nucleo144: doc update - usage of cpy2remed programmer and
  short overview of board (#18291)
* boards/nucleo32: doc update - usage of cpy2remed programmer and short
  overview of board (#18225)
* cpu/esp32: small doc fixes (#18240)
* doc/rust: Update texts (#18208)
* doc: fix broken link/footnote in using-rust.md/maintenance (#17961)
* Documentation: Renaming OS X to macOS (#18256)
* native/periph_can: usability improvements and documentation updates (#17949)
* pkg/hacl: documentation link update (#18002)

Build System / Tooling
----------------------

+ dist/tools/suit: add support for password protected private keys (#18130)
+ examples/gnrc_border_router: allow to use gnrc_ipv6_auto_subnets for
  prefix configuration (#16993)
* .murdock: print hash input when hashes mismatch (#18236)
* buildsystem: Improve RISC-V compilation handling with newer toolchain (#18098)
* buildsystem: split default modules include early and late (#17662)
* dist/tools/compile_and_test_for_board: fix lint (#18160)
* dist/tools/cosy: allow to specify port (#18194)
* make: create cargo folders for Docker images (#18086)
* makefiles/tools/uf2conv.inc.mk: partial riotboot support (#16323)
* makefiles: allow to override suit manifest payloads (#16771)
* makefiles: Reject `2>&1 >/dev/null`, and weed out remaining offenders (#16806)
* tools/edbg: bump version (#18076)
* tools/zep_dispatch: allow to pin nodes to MAC address (#17338)
* tools/zep_dispatch: run dispatch with custom topology (#18170)

Kconfig
-------

+ drivers/cst816s: add touch_dev interface + add Kconfig + migrate to
  ztimer (#17459)
+ pkg/tflite-micro: add kconfig support (#17985)
+ sys/cpp11-compat: add kconfig support and add Kconfig for cpp11 test
  applications (#17992)
* pkg/cmsis-nn: model in Kconfig (#17997)
* pkg/corejson: fix missing kconfig import + model test application
  configuration (#18008)
* pkg/cryptoauthlib: model in kconfig (#18011)
* pkg/jerryscript: model in Kconfig (#18012)
* pkg/lua: model in kconfig (#18017)
* pkg/nanors: model in kconfig (#18024)
* sys/random/kconfig: remove HWRNG default in backend choice (#18025)
* tests/pkg_utensor: model in Kconfig + fix utensor package
  dependencies (#17995)
* tests/{cpp_ext, cpp_exclude}: model in kconfig (#17994)

Examples
--------

+ examples/telnet_server: add support for LWIP (#17899)
* example/twr_aloha: fixes (#17988)
* examples/lorawan/main: use auto_init_loramac (#17695)
* examples/suit_udpate: update check suit command (#17963)

Testing
-------

+ cpu/esp: add compilation tests for optional ESP modules (#18158)
+ unittest/sock_util: add test for missing addr variants (#18061)
* CI: disable microbit testing (#17933)
* gh_action/test-on-iotlab: update available boards (#18303)
* murdock: don't do both "clean" and "test-input-hash" targets (#18254)
* test/pbkdf2: enlarge stdio rx buffer (#17928)
* tests/pkg_tflite-micro: update list of low memory boards (#18101)
* tests/{cpp_ext, cpp_exclude}: cleanup HAS_* (#18082)
* tests: move riot_logo.h to tests base directory (#17917)
* unittest/sock_util: move test_strings to their tests (#18067)

API Changes
-----------

* drivers/disp_dev: use struct to store display area coordinates (#17921)
* makefiles/suit: place keys in $XDG_DATA_HOME (#18157)
* nanocoap: define and use coap_request_ctx_t for request handlers (#17957)
* sys/shell/gnrc_netif: List netifs in registration order (#17078)

And countless minor changes.

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

Deprecations (1)
----------------

* ztimer: deprecate ztimer_now64 and ztimer_now_t (#18054, #18105)

Removals (2)
------------

- net/netopt: drop NETOPT_RX_END_IRQ (#18089)
- pkg/lvgl7: remove deprecated package (#18304)

Bug fixes (64)
==============

* cpu/stm32/include/periph/f7: add missing ADC_DEVS (#17923)
* dist/tools/kconfiglib: add configuration evaluation function (#18192)
* drivers/periph/timer: add TIM_FLAG_SET_STOPPED flag (#17723)
* drivers/st7735/kconfig: add hardware feature symbol (#18135)
* gnrc/nib: don't add routers from WPAN as default router on the 6LBR (#18127)
* [Backport] asymcute: Compare request message type when matching
  acknowledgement (#18446)
* [Backport] asymcute: fix one byte out-of-bounds access in _len_get (#18453)
* asymcute: Fix deadlocks in REGACK, SUBACK and UNSUBACK handler (#18289)
* bitarithm: Move `extern const` out of static inline functions (#18140)
* boards/common/nrf52: fix compilation of thingy52 and ruuvitag (#18180)
* boards/im880b: im880b board clock definition (#18295)
* boards/stm32f469i-disco: LEDX_ON LEDX_OFF mismatch (#18041)
* build system: Fix compilation for RISC-V with newer GCC (#17951)
* core/assert: print last instruction in assert() (#18195)
* core/msg: yield after thread_flags_wake() in queue_msg() (#16899)
* cpu/atmega_common: Fix atmega_port_addr() (#18265)
* cpu/esp32: fix malloc thread safety (#18209)
* cpu/esp32: fix pm_reboot function (#18207)
* cpu/esp32: fixes for gcc 8.4.0 (#18104)
* cpu/sam0_common: mtd_sdhc: ensure source address alignment (#18222)
* cpu/samd21: handle NVM block errata (#18188)
* cpu/stm32/periph_eth: fix typo in initialization code [backport
  2022.07] (#18420)
* cpu/{atmega_common,atxmega}: increase idle thread stack size (#18263)
* dirvers/mtd: fix documentation of mtd_write_page_raw() and
  mtd_read_page() (#18231)
* dist/tools/compile_commands: don't adds -nostdinc (#18080)
* dist/tools/compile_commands: fix clangd linting (#18063)
* dns_cache: synchronize access with mutex [backport 2022.07] (#18342)
* docker: don't export KCONFIG_ADD_CONFIG variable (#17993)
* drivers/at86rf2xx: fix NETOPT_RANDOM (#18305)
* drivers/at86rf2xx: Switch SRT mode to get random values. (#18290)
* drivers/atwinc15x0: disconnect when sleeping (#17889)
* drivers/mcp2515: fix set bittiming (#18019)
* drivers/rtt_rtc: normalize tm struct in rtc_set_alarm (#18197)
* examples/dtls-echo: set address family for sessions [backport
  2022.07] (#18371)
* examples/lorawan: disable loramac state persistence on EEPROM (#17969)
* gcoap: fixes around empty ACKs [backport 2022.07] (#18436)
* gcoap_dns: various fixes [backport 2022.07] (#18373)
* gnrc/ipv6_auto_subnets: always send RIO to upstream network (#18187)
* gnrc/nib: only enable RTR_ADV on RA if MULTIHOP_P6C is enabled (#17600)
* gnrc_dhcpv6_client: Fix out-of-bounds access during option parsing (#18307)
* gnrc_ipv6_nib: make configurable via Kconfig again [backport 2022.07] (#18362)
* gnrc_netif_conf: fix auto-6ctx switch [backport 2022.07] (#18375)
* gnrc_netif_pktq: protect against concurrent access (#18153)
* gnrc_netreg: drain mbox on unregister (#18143)
* ipv6/nib: bugfix handle SLLAO on 6LR if ARO is not present (#17814)
* makefiles/boot/riotboot: set DEBUG_ELFFILE to slot0.elf (#18138)
* nanocoap: follow-up fixes (#17950)
* nanocoap_sock: fix wrong assertion (#18221)
* net/eui_provider: provide netif index to EUI provider function (#18251)
* pkg/ccn-lite: patch to fix use-after-free [backport 2022.07] (#18488)
* pkg/emlearn: fix kconfig model (#18306)
* pkg/emlearn: Remove unused emlearn module (#18287)
* pkg/mynewt-core: fix timer configuration for nrf51 (#18136)
* release-tests: install libasan as native dependency (#18124)
* sys/fmt: disarm footgun (#18162)
* sys/fmt: fix output on native (#18186)
* sys/net/gnrc/rpl: sync access to netstats (#18275)
* sys/net/netopt: change NETOPT_STATS semantics (#18269)
* sys/rtc_utils: small doc fix of rtc_mktime (#18196)
* sys/uri_parser: check port length (#18092)
* tests/thread_float: fix test script (#18255)
* unittest: fix ztimer(64)_initilization #18352 #18365 [backport
  2022.07] (#18377)
* unittests: fix assertion for nanocoap_cache_key_compare() (#18125)
* vfs: fix dir detection in vfs_sysop_stat_from_fstat() (#18050)

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

Network related issues (58)
---------------------------

* 6lo gnrc fragmentation expects driver to block on TX (#7474)
* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* [gcoap-dtls] Posting a message yields a stack overflow on the
  `samr21-xpro` with ECC (#18292)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* at86rf2xx: lost interrupts (#5486)
* CC2538 RF overlapping PIN usage (#8779)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to choose global source address. (#13745)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_netif_pktq leaks memory (#17924)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
* gomach: Resetting netif with cli doesn't return (#10370)
* ieee802154_submac: IPv6 fragmentation broken (#16998)
* LoRaWan node ISR stack overflowed (#14962)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* nanocoap: problem with [re]transmission behaviour: (some blocks are
  sent twice immediately) (#18217)
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
* net: netdev_driver_t::send() doc unclear (#10969)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* openthread: does not build on current Arch (#10809)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* send data with UDP at 10HZ, the program die (#11860)
* stale border router does not get replaced (#12210)
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
  behavior (#18097)
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
* two nodes livelock sending neighbor solicitations back and forth
  between each other (#16670)
* Unclear how Router Solicitations are (or should be) handled (#15926)
* xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (16)
-------------------------

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

Drivers related issues (18)
---------------------------

* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
  timeout (#14439)
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* floats and doubles being used all over the place. (#12045)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* Potential security and safety race conditions on attached devices (#13444)
* PWM: Single-phase initialization creates flicker (#15121)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
* Two bugs may lead to NULL dereference. (#15006)

Native related issues (6)
-------------------------

* examples/ccn-lite: floating point exception while testing on native (#15878)
* examples/micropython: floating point exception while testing on
  native (#15870)
* native getchar is blocking RIOT (#16834)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)
* SIGFPE on native architecture when printing double floats on Ubuntu
  21.04 (#16282)

Other platforms related issues (21)
-----------------------------------

* Failing tests on FE310 (Hifive1b) (#13086)
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
* arm7: printf() with float/double not working (#11885)
* boards/hifive1: flashing issue (#13104)
* Cannot use LLVM with Cortex-M boards (#13390)
* cpu/cortexm_common: irq_enable returns the current state of
  interrupts (not previous) (#10076)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* I found stm32 DMA periph driver bugs!  when I tested stm32l431rc
  board. (#16242)
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
* MPU doesn't work on cortex-m0+ (#14822)
* newlib-nano: Printf formatting does not work properly for some
  numeric types (#1891)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)

Build system related issues (13)
--------------------------------

* `buildtest` uses wrong build directory (#9742)
* `make -j flash` fails due to missing make dependencies or `make
  flash-only` rebuilds the .elf (#16385)
* Build dependencies - processing order issues (#9913)
* build: info-build doesn't work with boards without port set (#15185)
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* doxygen: riot.css modified by 'make doc' (#8122)
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
* make: ccache leads to differing binaries (#14264)
* make: Setting constants on compile time doesn't really set them
  everywhere (#3256)
* make: use of immediate value of variables before they have their
  final value (#8913)
* Tracking: remove harmful use of `export` in make and immediate
  evaluation (#10850)
* Windows AVR Mega development makefile Error (#6120)

Other issues (57)
-----------------

* semtech_loramac_init blocking (#17907)
* [TRACKING] sys/shell refactoring. (#12105)
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* `make term` output is inconsistent between boards, `ethos` and
  `native` (#12108)
* assert: c99 static_assert macro doesn't function for multiple
  static_asserts in the same scope (#9371)
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto (#13285)
* C++11 extensions in header files (#5561)
* Can't build relic with benchmarks or tests (#12897)
* CC2538DK board docs: broken links (#12889)
* cpu/stm32/periph/rtc overflow error (#16574)
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
* doc/LOSTANDFOUND: not rendered as expected (#17063)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* feather-m0: `make flash` reports "device unsupported" (#17722)
* flashing issue on frdm-k64f (#15903)
* frdm-k22f failing tests/periph_flashpage (#17057)
* I2C not working under RIOT with U8G2 pkg (#16381)
* ieee802154_security: Nonce is reused after reboot (#16844)
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
  disconnect (#17209)
* lwip: invalid state transition on ieee802154_submac users (#17208)
* Making the newlib thread-safe (#4488)
* mcuboot: flashes but no output (#17524)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
* Order of auto_init functions (#13541)
* pkg/tinydtls: Multiple issues (#16108)
* pkg_libhydrogen tests fail / update libhydrogen (#18508)
* Possible memset optimized out in crypto code (#10751)
* Potential race condition in compile_and_test_for_board.py (#12621)
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
* RIOT cannot compile with the latest version of macOS (10.14) and
  Xcode 10 (#10121)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
  gracefully (#17874)
* rust-gcoap example is incompatible with littlefs2 (#17817)
* sam0_sdhc: SDXC cards are not detected / handled properly (#18458)
* scheduler: priority inversion problem (#7365)
* stdio_ethos: infinite shell loop (#17972)
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
* sys/riotboot: documentation issues (#11243)
* sys/stdio_uart: dropped data when received at once (#10639)
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/periph_flashpage: failing on stm32l475ve (#17280)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
  esp32-wroom-32 (#13133)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests/thread_float: crashes on avr-rss2 (#16908)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* Tracker: Reduce scope on unintended COMMON variables (#2346)
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
  serial ports (#15814)
* Use of multiple CAN bus on compatible boards (#14801)

There are 188 known issues in this release

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

- core: "Invalid read of size 4" (#7199)
- Use-after-free in ccnl-core (#18480)
- [puf_sram] Hardfault (#18468)
- esp32: gnrc_networking crashing (#18083)
- boards/saml11-xpro: second UART is broken (#17206)

5 fixed issues since last release (2022.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

Matrix and Forum
================
* 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.

Release 2022.04

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 2022.04 release includes the following new features and improvements:

Core:
-----
The scheduler allows for changing the priority of a thread at runtime.

System libraries:
-----------------
The module `ztimer64_xtimer_compat` was added, providing the complete xtimer
API on top of ztimer64_usec. This is now the default implementation when using
the `xtimer` module.
Most modules use ztimer instead of xtimer now.

The sequence of modules during auto initialization can be customized via
statically assigned numbers now. This feature is experimental, so use it with
caution. Priorities may change in the future.

SenML implementation: supports CBOR encoding, Phydat to SenML encoding and
basic SAUL integration.

Various improvements have been made to the file system modules:
VFS supports automatic mount (and formatting) at startup and reliable disk
enumeration, and mount_by_path. Default mount points can be provided by the
board configuration. exFAT support was added to FATFS.

Using Rust in RIOT no longer requires a nightly version of Rust, but can be
built on the latest stable on Rust instead.

Boards:
-------
Boards no longer have to provide a `board_init()` function. LEDs are
initialized automatically if they follow the `LED<x>_PIN` naming scheme.

Networking:
-----------
gcoap now provides a simple forward-proxy and allows for switching between
plain CoAP and CoAP-over-DTLS at runtime.

The NimBLE module supports the new PHY modes that have been introduced with
Bluetooth 5.

A Telnet server module is available now.

Packages:
---------
The build system now allows for package directories to reside outside the RIOT
tree.

Various new packages have been added:
 * the C++ Embedded Template Library (ETL)
 * nanors, a tiny, performant implementation of reed solomon codes
 * tflite-micro as a replacement for tensorflow-lite
 * WAMR adds Web assembly (WASM) support

Hardware support:
-----------------
New support for the boards Adafruit-PyBadge and STM32 Nucleo-F439ZI as well as
for the LPS22CH nano pressure sensor and MCP47xx DAC. The DOSE bus now supports
baud rates of 1 MHz and above.

Summary:
-------
328 pull requests, composed of 810 commits, have been merged since the
last release, and 6 issues have been solved. 40 people contributed with
code in 83 days. 1851 files have been touched with 50235 (+) insertions and
18701 deletions (-).

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

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

Core
----
+ core/sched: add sched_change_priority() (#17093)
+ core: add functionality to check queue state of another thread (#16174)
* core: split out library code (#17652)
* core/rmutex: use atomic utils (#16919)

System Libraries
----------------
* drivers: migrate xtimer64 and xtimer/ticks users to ztimer (#17367)
+ drivers/mtd_flashpage: add mtd_flashpage_t type (#17627)
+ sys/bitfield: add support for bit-wise bitfield operations (#17710)
+ sys/senml: add SenML modules (#16384)
+ sys/vfs: add vfs_mount_by_path() (#17661)
+ sys/xtimer: introduce `xtimer_is_set()` (#17630)
+ sys/ztimer: add ztimer64_xtimer_compat complete xtimer replace module (#17670)
+ vfs: Introduce reliable disk enumeration (#17660)
* rust: test on stable (#17805)
* sc_vfs: print file size (#17622)
* sys/auto_init: custom auto-initialization sequence (simple) (#17794)
* sys/event/timeout: remove alternative xtimer implementation (#17689)
* sys/evtimer: remove deprecated evtimer_now_min (#17655)
* sys/fido2: use ztimer instead of xtimer (#17753)
* sys/posix/pthread: newlib compatibility (#17734)
* sys/test_utils/print_stack_usage: work with small stacks (#17891)
+ sys/vfs: add file-system auto-mount (#17341)
* sys/vfs: provide vfs_fsync() (#17621)
* sys/xtimer: make xtimer_ztimer_compat default backend (#17721)
* sys/ztimer doc: List prerequisites for successful use of ztimer_now (#17614)
* sys/ztimer64/util.c: fix ztimer64_set_timeout_flag (#17561)
+ sys/ztimer: add auto_adjust module (#17633)
* sys/ztimer: cleanup xtimer_compat.h for 32Bit only (#17690)
* sys/ztimer: Name callback types (#17758)
* sys: some simple xtimer->ztimer conversions (#17892)
* sys/*timer: rework dependencies to ease backend switch, prefer
  ztimer_xtimer_compat over xtimer_on_ztimer (#17811)
* sys/syscalls: make gettimeofday() implementation optional (#17733)
* sys/ztimer: auto-select ztimer_no_periph_rtt only for samd21 (#17786)
* sys: sort out ztimer_xtimer_compat and ztimer64_xtimer_compat depes (#17732)
+ tests: add stack usage metrics (#17706)
* {examples,tests}/rust: Rust updates (-sys/-wrappers version, stable) (#17761)

Networking
----------
+ gcoap: add simple forward-proxy (#13790)
+ gnrc_pktbuf_cmd: add od dependency with gnrc_pktbuf_static (#17228)
+ nanocoap: add nanocoap_get_blockwise_url_to_buf() function (#17833)
+ nanocoap: introduce coap_opt_remove() (#17881)
+ nimble/netif: add support for BT5 PHY modes (#16860)
+ sys,examples,tests,fuzzing: add missing includes (#17714)
+ sys/net/application_layer/sock_dns: add pseudomodule
  auto_init_sock_dns (#17493)
+ sys/net/application_layer/sock_dns_mock: add module for mocking
  sock_dns (#17871)
+ sys/net/application_layer: add telnet server module & example (#16723)
+ sys/net/dsm: add missing dependencies (#17685)
+ sys/net/nanocoap: introduce `nanocoap_sock_*()`, use in
  suit/transport/coap (#17474)
+ sys/net/netutils: add netutils_get_ipv4() (#17764)
+ sys/net/sock: add sock_udp_sendv() API (#17485)
+ sys/net/sock_util: add sock_tl_name2ep() to optionally perform DNS
  lookups (#17510)
+ sys/stdio_nimble: add new stdio module using nimble (#12012)
* drivers/encx24j600: define default parameters (#17747)
* gcoap: multi-transport support (#16688)
* gnrc/ipv6nib: remove the need for evtimer-minutes (#17411)
* gnrc/netif: convert to ztimer (#17354)
* ipv6/nib: bugfix of 6CO length checking (#17850)
* ipv6/nib: fix memcpy() bug in _handle_rtr_timeout() (#17741)
* lwip: enable LWIP_SO_RCVTIMEO if sock layer is used (#17779)
* pkg/lwip: use ztimer_msec instead of xtimer (#17115)
* pm: don't (un)block IDLE mode (#17975)
* sys/gnrc/sixlowpan/frag/fb: guard sfr_types.h header include (#17730)
* sys/net/gnrc/sock: use ztimer_usec or xtimer for timeout (#17852)
* sys/net/gnrc/sock_types: guard tcp.h header inclusion (#17743)
* sys/net/gnrc: ztimer_no_periph_rtt if gomach (#17729)
* sys/net/gnrc_sixlowpan_frag_sfr: use xtimer_set (#17668)
* sys/net/link_layer/csma_sender: use public xtimer_now() (#17731)
* sys/net/sock_util: fix compilation for IPv4-only mode (#17766)

Packages
--------
+ buildsystem: add EXTERNAL_PKG_DIRS functionality (#17211)
+ pkg/etl: Add the embedded template library (etl) (#17477)
+ pkg/lvgl: add extra widget dependency (#17760)
+ pkg/nanors: add reed solomon codec implementation (#17703)
+ pkg/tflite-micro: add support and deprecate tensorflow-lite (#17908)
+ pkg/tinydtls: add IPv4 support (#17765)
+ pkg/uwb-dw1000: add patch for rf_txctrl value (#17724)
+ pkg/wamr: add WAMR to provide WASM support in RIOT (#15329)
* buildsystem/pkg: expand packages from USEPKG early as path into
  PKG_PATHS (#17551)
* make: pkg.mk: don't call `git am` if there are no patches (#17858)
* pkg/edhoc-c: bump version (#17777)
+ pkg/fatfs: fatfs_vfs: wire up format() (#14430)
* pkg/fatfs: enable exFAT support (#17798)
* pkg/fatfs: implement statvfs() (#17634)
* pkg/littlefs2: bump version to 2.4.2 (#17837)
* pkg/lv_drivers: initial commit (#17713)
* pkg/lvgl: bump to 8.2.0 (#17681)
* pkg/lvlgl: allow customizing LV_MEM_SIZE (#17759)
+ pkg/mbedtls: initial pkg import to use entropy module (#15671)
* pkg/mynewt-core: fix semaphore (#17771)
* pkg/semtech-loramac: enable setting channels mask (#17824)
* pkg/tinycbor: bump version (#17604)
* pkg/tinydtls/sock_dtls: use ztimer_usec (#17677)
* pkg/tinydtls: migrate to ztimer64_msec (#17564)

Boards
------
+ boards/adafruit-pybadge: add support (#17807)
+ boards/b-l475e-iot01a: Add SPI2 and SPI3 buses (#17885)
+ boards/nucleo-f429zi: add support for ethernet (#17828)
+ boards: add support for nucleo-f439zi (#17827)
+ cpu/esp32: update to Espressif's precompiled ESP32 vendor toolchain
  with gcc 8.4.0 (#17769)
+ cpu/stm32: add backup battery monitoring (VBAT) (#16989)
+ sys/auto_init: add auto_init_leds, drop LED init code from boards (#17584)
+ sys/board_common: add generic board_init() function (#17008)
+ sys/vfs: add vfs_default, configure default fs for same54-xpro (#17643)
+ tests/external-boards: add esp compile test boards (#17525)
+ vfs_default: add compile test and add default mount for more boards (#17656)
* boards/native: select MTD defaults for FAT (#17653)
* boards/nucleo-f334r8 f429zi and f446ze: enable cpy2remed programmer (#17708)
* boards/nucleo-f767zi: fix adc_config indentation (#17682)
* boards/same54-xpro: support for board variation with SST26VF064B
  flash (#17613)
* boards/stm32mp157c-dk2: Overwrite mpu_stack_guard in kconfig (#17629)
* boards: drop board_init() from board.h (#17707)
* boards: fix ztimer adjust values for arduino-mega2560 and z1 (#17839)
* drivers/ft5x06: allow multiple device types (#17540)
* kconfig explore all allowed boards on all apps (#17595)

CPU
---
+ cpu/native/netdev_tap: Add to netdev_register (#17635)
+ cpu/nrf52-9160: add periph_spi_init_gpio (#17617)
+ cpu/riscv_common: Enable Rust applications (#17520)
+ cpu/sam0_common: add periph_spi_init_gpio (#17616)
+ cpu/stm32: Add STM32_LINE cases for STM32L1xxx6 (#17727)
+ cpu: add flash_writable section to linker script (#17436)
* cpu/arm7, arch/cortexm: Remove -fno-builtin flag (#17898)
* cpu/cc2538/rtt: fix rtt_set_counter (#17535)
* cpu/efm32: bump Gecko SDK version (#17672)
* cpu/esp*: nvs-flash / cpp dependencies cleanup (#17548)
* cpu/esp32/esp-eth: move GNRC auto_init to init_devs (#17745)
* cpu/esp32: changes for toolchain update to gcc version 8.4.0 (#17546)
* cpu/esp32: download Espressif SDK ESP-IDF as package (#17455)
* cpu/esp32: enable puf_sram feature (#17671)
* cpu/esp32: use macros/units (#16341)
* cpu/lpc23xx-mci: migrate to ztimer_msec (#17363)
* cpu/riscv_common: enable puf_sram feature (#17665)
* cpu/riscv_common: fix undeclared memory region linker error (#17581)
* cpu/sam0_common: implement EXTWAKE for SAM L21 (#17687)
* cpu/sam0_eth: implement SLEEP state (#17886)
* cpu/samd5x: allow to block IDLE mode (#17883)
* cpu/saml21: derive low power SRAM length from model number (#17686)
* cpu/samx21: allow to override PM_BLOCKER_INITIAL (#17793)
* cpu/samd51: allow to support ADC0 and ADC1 in the same configuration (#17819)
* cpu/stm32/i2c: fix wrong speed parameters (#17324)
* cpu/stm32: Fix clock tree (#17609)
* cpu/stm32: Fix CLOCK_CORECLOCK on stm32l0/l1 (#17725)
* cpu/stm32: make backup SRAM available (#16870)
* drivers/periph_spi: spi_init_with_gpio_mode mode by reference (#17531)

Device Drivers
--------------
+ driver/lpsxxx: adding lps22ch support (#17697)
+ drivers/dose: introduce watchdog timer (#17180)
* drivers/dose: make use of ringbuffer for RX (#17210)
+ drivers/mtd_spi_nor: add ztimer_usec alternative (#17836)
+ drivers/shtcx: converted the shtc1 driver into shtcx and added shtc3
  support (#17699)
+ drivers: add driver for L3GD20H 3-axis gyroscope (#10082)
+ drivers: support for Microchip MCP47xx DAC devices added (#10518)
+ mtd doc: Add overview defining terms; link modules (#17666)
* driver/mtd_spi_nor: cleanup sleep timing (#17879)
* drivers/dose: migrate to ztimer_usec (#17565)
* drivers/lis2dh12: use ifdef instead of IS_USED (#17563)
* drivers/mtd_sdcard: support unaligned reads & writes (#17619)
* drivers/periph_common/cpuid: disable false positive warnings (#17910)
* drivers/rtt_rtc: select rtc_utils (#17530)
* drivers/sht3x: ztimer_msec port (#17783)

Documentation
-------------
+ boards/cc1352-launchpad doc: adding information concerning shell
  access (#17522)
+ doc/doxygen: add BUILD_IN_DOCKER extended doc (#17820)
+ doc/doxygen: recommend adding ADJUST ztimer values for new boards (#17846)
+ doc: add RIOT root doxygen example path (#17572)
+ net/ieee802154: Add overview documentation (#16940)
* boards/nucleo-f429zi: improvements to documentation (#17875)
* boards/nucleo-l552ze-q doc: Improvements to documentation (#17639)
* boards/p-nucleo-wb55: update documentation (#17582)
* core (largely doc): Differentiate message types from thread flags (#17472)
* doc/emulator: update qemu doc with unix sockets (#17751)
* doc: small fix of "Getting Started" document structure in section
  docker (#17756)
* doc: Start documenting pseudomodules (#17133)
* tools/zep_dispatch: document topogen usage (#17586)

Build System / Tooling
----------------------
+ dist/tools/genconfig: add error on hidden symbols (#17597)
+ dist/tools/usb-serial/ttys.py: Add regex support (#17876)
+ dist/tools/usb_serial: Add tool for listing and filtering TTY
  interfaces (#17737)
+ make: Add ubsan support (#17278)
+ makefiles/dependency_resolution: add outer loop for DEFAULT_MODULE
  deps (#17632)
+ makefiles/docker.inc.mk: add DOCKER_ENV_VARS_ALWAYS (#17396)
+ testbed/iotlab: add mapping for samr34-xpro and nucleo-wl55jc (#17578)
+ tests/gnrc_rpl: add automated test for gnrc_rpl (#17353)
+ tools/pr_check: add "Update" keyword to "needs squashing" check (#17822)
* make/emulate: use unix sockets with qemu (#17679)
* Makefile.include: pass IOTLAB_NODE to docker (#17545)
* makefiles/docker.ink.mk: do not always pass CFLAGS to docker (#17818)
* makefiles/libc/newlibc: allow toolchains with nano version only (#17553)
* makefiles: socat set tty mode 8N1 (#17853)
* makefiles: use C++14 standard by default for C++ compilations (#17479)
* tools/dhcpv6-pd_ia: create /run/kea on startup (#17674)
* tools/cpy2remed: Addition of new programmer for nucleo boards (#17550)

Kconfig
-------
+ boards/Kconfig: remove wrongfully added MODULE_AUTO_INIT_LED* sym (#17684)
+ cpu/stm32: Add clock config for mp1 to kconfig (#17521)
* board/*/kconfig: Fix boards on kconfig blocklist (#17467)
* boards: Use BOARD.config pattern for kconfig (#17648)
* cpu/stm32/wl: Model kconfig clocks (#17496)
* drivers/*/Kconfig: Cleanup of simple drivers (#17669)
* pkg/littlefs2: model Kconfig (#17882)
* sys/chunked_ringbuffer: model Kconfig (#17744)
* sys/fido2: model Kconfig (#17435)
* {disp,touch}_dev: improve Kconfig at different levels (#17458)

Examples
--------
+ examples/gcoap_block_server: add gcoap block server example (#17843)
+ examples/lorawan: add the possibility to use ABP activation procedure (#11237)
* examples/gcoap_dtls: match Makefile of examples/gcoap (#17552)
* examples/twr_aloha: refactor (#17406)
* examples/twr_aloha: blacklist test on ci (#17557)
* Make example/emcute_mqtt honor radio settings (#17773)

Testing
-------
+ .github/workflows/test-on-iotlab: add dwm1001 (#17558)
+ tests/*: add BOARDs to Makefile.ci (#17754)
+ tests: add default BOARDS (#17715)
* CI: disable microbit testing (#17953)
* murdock: prioritize job collection over build jobs (#17610)
* murdock: support emulated boards (#17434)
* murdock: use json output `$(BINDIR)` size (#17213)
* tests/*: remove unneeded xtimer_init (#17566)
* tests/*xtimer*: remove unneeded timex calls (#17728)
* tests/driver_dfplayer: use event_thread instead of
  event_thread_lowest (#17750)
* tests/periph_uart_nonblocking: migrate to ztimer (#17567)
* tests/pkg_edhoc: handle multiple interfaces (#17534)
* tests/pkg_mbedtls: improve entropy test case and doc (#17606)
* tests/pkg_relic: increase stacksize (#17528)
* tests/senml: do no include saul_default (#17641)
* tests/sys_atomic_utils: use ztimer_usec (#17851)
* tests/sys_crypto: fix potentially uninitialized error (#17718)
* tests/thread_float: use ztimer_usec (#17835)
* tests: multiple fixes (#17840)
* workflow/tool-test:  update prior install (#17738)

API Changes
-----------
+ drivers/periph_common: add periph_init_buttons to init on-board
  buttons (#17711)
* drivers/atwinc15x0: register with netdev (#17887)
* sys/pm_layered: use array representation, get rid of implicit IDLE
  mode (#17895)
* tests: rework eth drivers (#17813)
* ztimer_periodic: make callback function return bool (#17351), i.e., the logic
  of the return value is inverted now (ZTIMER_PERIODIC_KEEP_GOING was 0, now it
  is true).

And 57 minor changes.

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

Deprecations (3)
----------------
* sys/quad_math: this module has been marked as deprecated and will be removed
  for the next release
+ sys/sema: add sema_ztimer64 to implement old api, deprecate sema (#17719)
* periph/flashpage: deprecate *_free functions (#17860)

Removals (3)
------------
- drivers/at: remove deprecated AT_SEND_ECHO define (#17500)
- sys/lora: remove deprecated LORA_PAYLOAD_CRC_ON_DEFAULT define (#17517)
- sys/loramac: remove deprecated LORAMAC_DEFAULT_PUBLIC_NETWORK (#17516)

Bug fixes (39)
==============
* make: add -ffunction-sections -fdata-sections to LINKFLAGS if LTO=1 (#16789)
* pkg/openwsn: add patch to use memmove() instead of memcpy() (#17900)
* [treewide] lora: use int16_t for RSSI value (#17497)
* boards/common/qn908x: perform elf checksum on shadow copy (#17757)
* boards/nucleo-f767zi: Fix adc pin config in periph_conf.h (#17560)
* core/assert: avoid including panic.h with assert.h (#17574)
* cpu/native: fix build with afl-gcc 11.2 (#17583)
* cpu/nrf52 radio: Populate info (#17592)
* cpu/nrf52/radio: fix confirm_op info cast (#17848)
* cpu/sam0_common/eth: expose correct setup function (#17746)
* dist/tools/kconfiglib: avoid rewriting `/dev/null` (#17873)
* drivers/at86rf215: fix disabling individual modulations (#17667)
* drivers/atwinc15x0: join multicast groups (#17880)
* drivers/dose: only disable watchdog when transiting from RECV state (#17716)
* drivers/ethos: fix build without ethos_stdio (#17608)
* drivers/mtd_mapper: fix read_page and write_page backend (#17866)
* examples/lorawan: disable loramac state persistence on EEPROM
 (#17970)
* fs/constfs: omit leading '/' in readdir() (#17626)
* gnrc/ndp: bugfix set O-flag if target is not anycast (#17778)
* gnrc/nib: don't advertise single address for auto-configuration (#17803)
* gnrc_netif: fix potential null pointer dereference (#17856)
* makefiles.kconfig.mk: use EXTERNAL_MODULE_DIRS in Kconfig resolution (#17596)
* murdock: fix exit -> return in subfunction (#17518)
* pba-d-01-kw2x: fix clock init by preceding cpu_init with modem clock
  init (#17857)
* pkg/fatfs: fix missing mutex header (#17865)
* pkg/littlefs*: align readdir() with documentation (#17623)
* pkg/tinydtls/contrib/sock_dtls: fix ep_to_session (#17849)
* pkg/tinydtls: crypto: remove unnecessary usage of malloc() (#17878)
* pkg: fix documentation on includes (#17538)
* shell/sc_gnrc_udp: always use delay in µs (#17657)
* sys/benchmark: fix divide by zero if runs < 1000 (#17624)
* sys/event/callback: in init set list_node.next to NULL (#17625)
* sys/fido2/ctap: fix parsing validation (#17816)
* sys/net/dhcpv6: miscellaneous tweaks (#17736)
* sys/ztimer/xtimer_compat: fix bug introduced in #17690 (#17705)
* sys/ztimer64: fix `ztimer64_remove()` not properly clearing timer
  struct (#17720)
* tests/cpu_avr8_xmega_driver: fix BOARD name (#17749)
* treewide: initialize several stack-allocated, but uninitialized timer
  structs (#17855)
* vfs: Initialize stat buffers so FSs don't have to (#17645)

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

Network related issues (56)
---------------------------
* 6lo gnrc fragmentation expects driver to block on TX (#7474)
* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* at86rf2xx: lost interrupts (#5486)
* CC2538 RF overlapping PIN usage (#8779)
* core: "Invalid read of size 4" (#7199)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to choose global source address. (#13745)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_netif_pktq leaks memory (#17924)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
* gomach: Resetting netif with cli doesn't return (#10370)
* ieee802154_submac: IPv6 fragmentation broken (#16998)
* LoRaWan node ISR stack overflowed (#14962)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
* net: netdev_driver_t::send() doc unclear (#10969)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* openthread: does not build on current Arch (#10809)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* send data with UDP at 10HZ, the program die (#11860)
* stale border router does not get replaced (#12210)
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
* two nodes livelock sending neighbor solicitations back and forth
  between each other (#16670)
* Unclear how Router Solicitations are (or should be) handled (#15926)
* xbee: setting PAN ID sometimes fails (#10338)

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

Drivers related issues (18)
---------------------------
* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
  timeout (#14439)
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* floats and doubles being used all over the place. (#12045)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* Potential security and safety race conditions on attached devices (#13444)
* PWM: Single-phase initialization creates flicker (#15121)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
* Two bugs may lead to NULL dereference. (#15006)

Native related issues (6)
-------------------------
* examples/ccn-lite: floating point exception while testing on native (#15878)
* examples/micropython: floating point exception while testing on
  native (#15870)
* native getchar is blocking RIOT (#16834)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)
* SIGFPE on native architecture when printing double floats on Ubuntu
  21.04 (#16282)

Other platforms related issues (21)
-----------------------------------
* Failing tests on FE310 (Hifive1b) (#13086)
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
* arm7: printf() with float/double not working (#11885)
* boards/hifive1: flashing issue (#13104)
* Cannot use LLVM with Cortex-M boards (#13390)
* cpu/cortexm_common: irq_enable returns the current state of
  interrupts (not previous) (#10076)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* I found stm32 DMA periph driver bugs!  when I tested stm32l431rc
  board. (#16242)
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
* MPU doesn't work on cortex-m0+ (#14822)
* newlib-nano: Printf formatting does not work properly for some
  numeric types (#1891)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)

Build system related issues (13)
--------------------------------
* `buildtest` uses wrong build directory (#9742)
* `make -j flash` fails due to missing make dependencies or `make
  flash-only` rebuilds the .elf (#16385)
* Build dependencies - processing order issues (#9913)
* build: info-build doesn't work with boards without port set (#15185)
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* doxygen: riot.css modified by 'make doc' (#8122)
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
* make: ccache leads to differing binaries (#14264)
* make: Setting constants on compile time doesn't really set them
  everywhere (#3256)
* make: use of immediate value of variables before they have their
  final value (#8913)
* Tracking: remove harmful use of `export` in make and immediate
  evaluation (#10850)
* Windows AVR Mega development makefile Error (#6120)

Other issues (56)
-----------------
* semtech_loramac_init blocking (#17907)
* [TRACKING] sys/shell refactoring. (#12105)
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* `make term` output is inconsistent between boards, `ethos` and
  `native` (#12108)
* assert: c99 static_assert macro doesn't function for multiple
  static_asserts in the same scope (#9371)
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* boards/saml11-xpro: second UART is broken (#17206)
* Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto (#13285)
* C++11 extensions in header files (#5561)
* Can't build relic with benchmarks or tests (#12897)
* CC2538DK board docs: broken links (#12889)
* cpu/stm32/periph/rtc overflow error (#16574)
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
* doc/LOSTANDFOUND: not rendered as expected (#17063)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* feather-m0: `make flash` reports "device unsupported" (#17722)
* flashing issue on frdm-k64f (#15903)
* frdm-k22f failing tests/periph_flashpage (#17057)
* I2C not working under RIOT with U8G2 pkg (#16381)
* ieee802154_security: Nonce is reused after reboot (#16844)
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
  disconnect (#17209)
* lwip: invalid state transition on ieee802154_submac users (#17208)
* Making the newlib thread-safe (#4488)
* mcuboot: flashes but no output (#17524)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
* Order of auto_init functions (#13541)
* pkg/tinydtls: Multiple issues (#16108)
* Possible memset optimized out in crypto code (#10751)
* Potential race condition in compile_and_test_for_board.py (#12621)
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
* RIOT cannot compile with the latest version of macOS (10.14) and
  Xcode 10 (#10121)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
  gracefully (#17874)
* rust-gcoap example is incompatible with littlefs2 (#17817)
* scheduler: priority inversion problem (#7365)
* stdio_ethos: infinite shell loop (#17972)
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
* sys/riotboot: documentation issues (#11243)
* sys/stdio_uart: dropped data when received at once (#10639)
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/periph_flashpage: failing on stm32l475ve (#17280)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
  esp32-wroom-32 (#13133)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests/thread_float: crashes on avr-rss2 (#16908)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* Tracker: Reduce scope on unintended COMMON variables (#2346)
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
  serial ports (#15814)
* Use of multiple CAN bus on compatible boards (#14801)

There are 185 known issues in this release

Fixed Issues since the last release (2022.01)
=============================================
- Kconfig: `genconfig.py` rewrites `/dev/null` (#17862)
- gcoap_dtls: Selecting transport at run time is not possible (#16674)
- LTO broken (binaries too large) (#16202)
- File systems report names with leading slashes (#14635)

4 fixed issues since last release (2022.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

Matrix and Forum
================
* 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.

Release 2022.01

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 2022.01 release brings support for new packages, new boards and drivers,
as well as several package upgrades and bug fixes. Among others, this release
improves the RIOT codebase with:

Rust support
------------

RIOT now offers convenient integration of Rust application programming, with
wrappers interfacing to RIOT modules such as timers, network stack.

Improved timers
---------------

Many modules have migrated from using xtimer to our more power-efficient
alternative ztimer. Also, ztimer64 was introduced, which enables
a drop-in replacement for all of xtimer features.

Kconfig support
---------------

Kconfig modeling coverage is significantly extended. Nearly all supported
boards are now modeled with Kconfig.

Summary:
--------

436 pull requests, composed of 1159 commits, have been merged since the
last release, and 11 issues have been solved. 43 people contributed with
code in 88 days. 2475 files have been touched with 44925 (+) insertions and
14687 deletions (-).

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

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

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

Full list available at https://github.com/RIOT-OS/RIOT/milestone/37?closed=1

Core
----

+ core/include/kernel_defines.h: add index_of() macro (#17142)
+ core: Add IS_CT_CONSTANT() (#17273)
+ core: add WITHOUT_PEDANTIC() and DECLARE_CONSTANT() (#17176)
* core: Warn about using irq_enable (#17433)
* core: make SCHED_TEST_STACK boolean and default to 1 with DEVELHELP (#17132)

System Libraries
----------------

+ sys/architecture: add HAS_ALIGNMENT_OF() helper (#17177)
+ sys/arduino: add assertion to gpio handling (#17443)
+ sys/atomic_utils: add atomic_{load,store}_ptr() (#17256)
+ sys/include/event/periodic: add count (#17276)
+ sys/isrpipe: add isrpipe_write (#17336)
+ sys/sched_rr: Add a round robin scheduler module (#16126)
+ sys/stdio: add optional function stdio_available (#17446)
+ sys/test_utils/result_output: add sort to multiple output check (#17269)
+ sys/tsrb: add peek functions (#17266)
+ sys/tsrb: add tsrb_clear (#17337)
+ sys/ztimer: add 'ztimer_no_periph_rtt' (#17284)
+ sys/ztimer: add some best practices (#17370)
+ sys/ztimer: ztimer_now() add warning regarding comparing now() values (#17404)
+ usb/hid: Add HID report descriptor defines (#17242)
+ sys/arduino: add Serial over stdio support (#17447)
+ sys: introduce sysclk function to retrieve core clock frequency (#17342)
+ sys/new_delete: add malloc/free based new/delete implementation (#17464)
* event/timeout: remove forced ZTIMER_USEC dependency (#16958)
* riotboot_dfu: use ztimer instead of xtimer (#17051)
* riotboot_serial: enter bootloader mode by pin (#17248)
* schedstatistics: Convert to ztimer (#17216)
* stdio_rtt: Convert to ztimer (#17122)
* stdio_semihosting: Convert to ztimer (#17123)
* sys/can: migrate to ztimer (#17366)
* sys/cpp11-compat: use new/delete operators from sys/cpp_new_delete (#17475)
* sys/evtimer: use now returned by set (#17394)
* sys/fmt: make fmt_s32_dfp() string based (#17106)
* sys/Makefile.dep: fix event periodic dependency (#17318)
* sys/picolibc_syscalls_default: support new picolibc stdio globals (#17001)
* sys/random: default to musl LCG instead of TinyMT (#17188)
* sys/suit: adjust dependencies for CoAP transport (#17182)
* sys/test_utils/result_output/json: optional space after symbol (#17034)
* sys/turo: Allow default selection of json (#17039)
* sys/ztimer/xtimer2ztimer.cocci: extend and fix api replacements (#17234)
* sys/ztimer64: default select ztimer64_init (#17414)
* sys/ztimer64: make _del_entry_from_list() safe for uninit ztimer64_t (#17368)
* sys/ztimer: remove double ztimer indirection (#17272)
* sys/ztimer: ztimer_remove report success (#17408)
* usbus/cdc_acm: Return stall on line coding not supported (#17085)
* usbus/hid: fix ep_out readiness (#17230)
* usbus/hid: fix ep_out readiness (#17245)
* usbus: Bind extra USB config (#17380)
* usbus: check received setup request data amount (#17203)
* sys/ztimer64: initial PR (#16928)

Networking
----------

+ gnrc_pktbuf_cmd: add od dependency with gnrc_pktbuf_static (#17228)
+ sys/net/dhcpv6: Add stateless DHCPv6 (#16731)
+ sys/net: Add ipv4/ipv6 pseudomodules (#16966)
+ sys/shell/sc_nimble_netif: add ping subcommand (#16539)
* dsm: rename DTLS_PEER_MAX and make it dependent on
  CONFIG_DTLS_PEER_MAX (#16967)
* gcoap_dtls: destroy session in _tl_send only on connection errors (#16963)
* gnrc_dhcpv6_client / uhcp: delay router advertisements until prefix
  was received (#16755)
* gnrc_gomach: adapt duty recording parameters' namings. (#8954)
* gnrc_netif: move netdev initialization to ops->init (#16918)
* lwip: bump to v2.1.3 (#16774)
* net/gcoap: port to ztimer (#17141)
* nimble/statconn: use errno return values (#17344)
* pkg/lwip: Don't control IPv6 via IPv4 flag (#17175)
* pkg/lwip: Fix dualstack build when only using 6lowpan (#17174)
* pkg/openthread: bump version to 20200818 + adapt to use CMake to
  configure the build (#16948)
* pkg/openthread: migrate to ztimer (#17120)
* pkg/paho-mqtt: migrate to ztimer (#17143)
* pkg/semtech-loramac: fix get/set dr command (#17117)
* sys/evtimer,ztimer: do not depend on ztimer_now64 (#17357)
* sys/net/gnrc: fix compilation with -Wcast-align (#17157)
* sys/shell/gnrc_netif: Allow 'ifconfig help' (#17006)
* test/ieee802154_hal: general cleanup and cosmetic fixes (#16913)
* tests/lwip_sock: Take lock before calling etharp (#17145)
* socket_zep: port to radio HAL (#16932)
* ieee802154/hal: adapt to latest changes of #13943 (#16946)

Packages
--------

+ pkg/lz4: add support for LZ4 compression/decompression (#17178)
+ pkg/uzlib: add support for zlib compression/decompression (#17179)
+ pkg: add support for Elk Tiny Javascript engine (#16887)
+ pkg: add support for FreeRTOS coreJSON library (#16997)
+ pkg/arduino_sdi_12: add SDI-12 for Arduino as package (#16587)
* hacl: Switch git address to RIOT-OS-pkgmirror (#16941)
* make: support package mirrors (#16927)
* pkg/emlearn: bump to 0.12 (#16937)
* pkg/jerryscript: bump to 2.4.0 (#16938)
* pkg/mynewt-core/patches: silence cast-align (#17397)
* pkg/qr-code-generator: bump to 1.7.0 (#16939)
* pkg/uwb-core: fix wrong header include (#17345)
* pkg/uwb-core: enable frame filtering, allow usage of common event thread (#17264)
* pkg/wakaama: use ztimer (#17103)
* pkg/arduino_sdi_12: support the remote-revb board (#17119)
* pkg/fatfs: bump version to r0.14b (#16412)
* Update tiny-asn1 package (#16936)
* pkg/lvgl: use ztimer instead of xtimer (#17031)
* pkg: migrate some packages to ztimer (#17309)

Boards
------

+ boards/feather-m0: add arduino feature (#17401)
+ boards/iotlab-m3: add MTD definition (#17339)
+ boards/nrf9160dk: add riotboot support (#17226)
+ boards/nucleo-g431rb: added PWM configuration (#17030)
+ boards/p-l496g-cell02: add riotboot feature (#17463)
+ boards/stm32f469i-disco: Add DAC (#17214)
+ boards/stm32g031-disco,examples,tests: Added STM32G031-DISCO board (#16959)
+ boards: add board support for Alientek Pandora (#17259)
+ boards: add support for stm32f746g-disco (#17198)
* boards/common/microbit: fix doxygen grouping (#17440)
* boards/esp* and cpu/esp: feature definition cleanup (#17438)
* boards/lora-e5-dev: enable 3.3V and 5V output by default (#17158)
* boards/lora-e5-dev: fix default DARWIN port (#17373)
* boards/stm32f469i-disco: Create  board (#16898)
* boards/{calliope-mini,microbit*}: factorize common microbit module,
  use ztimer (#17124)
* boards: cpu: replace GPIO_UNDEF by SPI_CS_UNDEF in SPI configuration (#17468)
* boards: model nrf52 boards (#17299)
* boards: unify user button defines (#17428)
* tools/elf2uf2: addition of new PROGRAMMER for RPi-pico (#17348)

CPU
---

+ Add some Rust building infrastructure and example (#16274)
+ cpu/esp32: add clear bus during init to the I2C software
  implementation (#17346)
+ cpu/nrf9160: add periph_flashpage support (#17225)
+ cpu/stm32: Add hardening changes to stm32 (#16979)
+ nimble_scanner: rework to enable scanning BLE5 PHYs and extended
  advertisements (#16843)
+ nrf5x_common: Add qdec peripheral implementation (#17201)
+ cpu/esp32: Add openocd programming support (#16911)
+ cpu/stm32: add driver for the LTDC peripheral (#17437)
+ cpu/stm32: add new usbdev FS support (#17281)
+ cpu/stm32: add support for U5 family (#17410)
* boards/common/esp8266: Set RTS and DTR to 0 on pyterm. (#16305)
* cc2538_rf: remove RX Busy detection in request_set_trx_state (#16821)
* cpu/arm7_common: suppress false positives of cppcheck (#17218)
* cpu/atmega_common: make cppcheck happy (#17219)
* cpu/atmega_common: Remember CTC mode with timer_periodic (#17387)
* cpu/atxmega/include/cpu_conf: ztimer64 arithmetic idle stack fix (#17362)
* cpu/cortexm_common: make CI happy (#17220)
* cpu/esp32: make CI happy (#17221)
* cpu/esp32: place freertos and periph in IRAM (#17087)
* cpu/esp32: support CPU clocks 2 MHz and 40 MHz (#17413)
* cpu/esp: change dynamic SSID option handling (#17415)
* cpu/esp: migrate to ztimer (#17386)
* cpu/kinetis/include: fix xtimer backend timer selection (#17393)
* cpu/native/include: other stacksizes based on default (#16956)
* cpu/native: migrate periph_rtc to ztimer (#17125)
* cpu/qn908x: migrate ADC periph to ztimer (#17321)
* cpu/sam0_common: SPI: don't perform DMA transfer for small buffers (#16926)
* cpu/sam0_common: uart: set oversampling based on baud rate (#17186)
* cpu/stm32/include/cpu_conf_stm32_common.h: fix typo in macro (#17187)
* cpu/stm32: bump cmsis repositories to latest releases + extend CPU
  models kconfig (#17293)
* cpu/stm32: duplicated ADC devices definitions (#16968)
* cpu/stm32: migrate adc and eth periphs to ztimer (#17320)
* cpu/stm32: split periph_cpu.h in sub headers (#17441)
* cpu: do not auto-select ztimer_periph_rtt for sam0, fe310 (#17395)
* drivers/periph: use uint_fast8_t as default type (#17191)
* esp8266: Download Espressif RTOS SDK as a new RIOT PKG (#16425)
* periph/flashpage: extend API (#16972)
* periph/flashpage: fix wrong doxygen group (#17202)
* stm32/usbdev: Use ztimer instead of xtimer (#17047)
* cpu/esp: compile optional modules in CI (#17314)
* cpu/stm32/wl: initial periph_adc implementation (#17183)
* cpu/stm32: enable USB OTG FS on high end L4 (#17302)

Device Drivers
--------------

+ drivers/dose: enable standby pin (#16752)
+ drivers/hm330x: initial commit (#16333)
+ drivers: add PCF857X I2C I/O expander driver (#10430)
+ drivers: only build saul interface if saul module is used + add
  saul_drivers test application (#17470)
+ netdev: add netdev_register_signal (#16922)
+ drivers/ft5x06: add support for touch panel controller (#17448)
+ drivers/stmpe811: add spi mode (#17088)
+ drivers/dose: make use of UART collision detection feature (#16681)
* driver/at30tse75x: port to ztimer_usec (#17137)
* drivers/ads101x: migrate to ztimer (#17102)
* drivers/ata8520e: migrate to ztimer (#17105)
* drivers/atwinc15x0: migrate to ztimer (#17381)
* drivers/bmp180: migrate to ztimer (#17101)
* drivers/dose: calculate timeout based on symbol rate (#16768)
* drivers/dsp0401: migrate to ztimer (#17110)
* drivers/mhz19: migrate to ztimer (#17308)
* drivers/rn2xx3: migrate to ztimer (#17112)
* drivers/sdcard_spi: convert to ztimer_usec (#17361)
* drivers/stmpe811: improve interrupt callback management (#17487)
* drivers/xbee: migrate to ztimer_msec (#17114)
* drivers: migrate mpu9x50 and si70xx to ztimer (#17358)
* drivers: migrate some drivers to ztimer (#17315)
* drivers: remove some useless xtimer includes (#17303)
* drivers: several cleanups related to xtimer + some ztimer migration (#17375)
* makefiles: remove PCF857x pseudomodule definitions (#17343)
* drivers/periph_common: build periph module selectively (#17418)

Documentation
-------------

+ boards/lora-e5-dev: add warning in doc (#17185)
+ doc/getting-started.md: added beginner friendly instructions (#17050)
+ doc/rust: Add maintenance guidance (#17505)
* boards/lora-e5-dev: extended documentation (#17244)
* boards/stm32f746g-disco: extend documentation (#17310)
* doc/.../getting-started.md: update software requirements (#17002)
* doc/boards/rpi-pico: Addition of section concerning shell access (#17454)
* doc: fix libcoap removal commit (#17378)
* pkg/openwsn: update doc (#17131)
* tools/zep_dispatch: document foren6 usage (#17326)
* doc: fix missing or non matching arguments in Doxygen documentation (#17461)

Build System / Tooling
----------------------

+ dist/tools/ci: add can_fast_ci_run.py (#17239)
+ dist/tools/doccheck/exclude_patterns: add new warnings (#17104)
+ dist/tools/doccheck: add create_pattern.sh (#17082)
+ make: add info-emulated-boards helper target (#16975)
+ Makefile.base: add SUBMODULES_NO_SRC to excluded a selected SUBMODULE
  *.c (#17222)
+ tools/compile_and_test_for_board: apply black automatic code
  formatter + add format checker in tox (#16905)
+ tools/insufficient_memory: add create_makefile.ci.sh and Makefile.ci
  make target (#16109)
+ tools/pythonlibs/riotctrl_*: add code format check with black (#16915)
+ tools/zep_dispatch: add support for foren6 sniffer (#16879)
+ tools/zep_dispatch: add topology generator (#16889)
+ makefiles/cflags.inc.mk: Add -Wcast-align (#14955)
* cppcheck: output all annotations as error (#17134)
* dist/tools/coccinelle/force: remove static.cocci (#17139)
* Makefile.include: remove warning about EXTERNAL_MODULE_DIRS API
  change (#16984)
* Makefile.include: rename Makefile.ci target to create-Makefile.ci (#17205)
* makefiles/docker.inc.mk: pass TEST_KCONFIG (#17398)
* murdock: make use of can_fast_ci_run.py (#17325)
* static-tests: disable cppcheck (#17282)
* tools/backport_pr: check code format with black (#16907)
* tools: can_fast_ci_run.py: ignore comment changes for `\.[ch]$` (#17405)

Kconfig
-------

+ cpu/avr8: model kconfig (#16929)
+ cpu/efm32: model kconfig (#16912)
+ cpu/esp: integrate CPU clock frequency selection in Kconfig (#17424)
+ cpu/msp430: add Kconfig (#17290)
+ cpu/nrf52: initial kconfig modeling (no netif) (#16837)
+ cpu/nrf9160: add Kconfig dependencies (#17291)
+ cpu/riscv: model Kconfig (#16909)
+ makefiles/kconfig: add board & CPU config variables (#17376)
+ pkg/uwb*: add Kconfig dependency modelling (#16780)
+ sys/trace: migrate to ztimer and add Kconfig support (#17319)
+ .murdock: Add modules/pkgs diff of make/kconfig (#17094)
+ .murdock: Add nucleo boards to kconfig test (#16845)
+ .murdock: Add same54-xpro to kconfig tests (#17255)
* .murdock: Kconfig test apps for all boards (#17402)
* boards/adafruit-itsybitsy-m4: Model kconfig (#17331)
* boards/feather-m0*: base board definition in Kconfig (#17445)
* boards/samd21-based: model Kconfig (#17355)
* boards/saml21-based: model kconfig (#17270)
* boards/stm32-based: model Kconfig (#17374)
* cpu/esp{32,8266}: model kconfig (#17232)
* cpu/kinetis: model kconfig (#17235)
* cpu/lpc23xx: model kconfig (#17279)
* cpu/nrf51: model kconfig (#17274)
* cpu/qn908x: model kconfig (#17277)
* cpu/{cc26xx, cc13xx}: model kconfig (#17236)
* drivers/sx126x/Kconfig: rework model selection (#17289)
* sys/benchmark/kconfig: cleanup ztimer dependency (#17317)
* sys/log: model Kconfig (#17286)
* sys/vfs: model Kconfig (#17287)

Examples
--------

+ example/gcoap: add LWIP make option (#17130)
* examples/gcoap: split client and server implementation (#17471)
* examples/gnrc_networking_subnets: remove broken symlink (#17389)
* examples/lorawan: use ztimer_msec if not rtc (#17181)
* examples/gnrc_networking: cleanup and static function declarations in
  udp.c (#17384)

Testing
-------

+ pkg/fff: Add fake functions framework package (#17076)
+ murdock: add some doc on how to efficiently limit builds (#17312)
+ tests/bench_ztimer: add port of bench_xtimer (#17391)
+ tests/pkg_ucglib: add missing function declaration (#17347)
* gh/workflows/release-tests: update LoRaWAN parameters to ttnv3 (#17009)
* gha/workflows/release-test: set python version to 3.8 (#17038)
* tests/*: Fix nightly failures due to f-string (#17283)
* tests/malloc: fix counting bugs (#17323)
* tests/periph_adc: migrate to ztimer (#17322)
* tests/periph_timer_periodic: spice up test (#17388)
* tests/unittests/tests-base64: enlarge test buffer for worst case (#17292)
* test/pkg_u8g2: increase main stacksize for SDL (#16954)
* tests/pkg_fatfs{_vfs}: drop whitelist (#17478)
* Fix some cppcheck errors (#17271)

API Changes
-----------

* core/kernel_defines.h: drop ALIGN_OF() (#17267)
* core/kernel_defines: drop BUILD_BUG_ON() (#17268)
* core/msg: make msg_avail() return 0 on no queue (#17262)
* cpu: call cpu_init() from startup code, not from board (#16055)
* drivers/periph_i2c: let i2c_acquire return void (#17275)
* sys/ztimer: ztimer_set() return the now value (#17385)
* USB: refactor to xmit-based API (#17064)

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

Deprecations (2)
----------------

* cpu/mips: deprecate mips cpu (#17304)
* sys/include/xtimer.h: deprecate nanosleep (#17296)
* sys/include/evtimer.h: deprecate evtimer_now_min (#17357)
* usbdev/USBUS: deprecate transfer failure reporting report (#17046)

Removals (9)
------------

- boards/fox: remove BOARD (#17021)
- dist/iotlab: remove deprecated auto-ssh backward compatibility (#17476)
- drivers/ethos: remove deprecated USE_ETHOS_FOR_STDIO define (#17499)
- make: remove deprecation warnings raised with flasher tools old vars (#17490)
- pkg/libcoap: remove (#17163)
- sys/asymcute: remove deprecated CONFIG_ASYMCUTE_BUFSIZE_EXP (#17481)
- sys/crypto: remove deprecated CIPHER_AES_128 (#17480)
- sys/saul_reg: remove deprecated saul_reg_rm function (#17489)
- sys/shell: remove deprecated SHELL_NO_{ECHO,PROMPT} defines (#17484)

Bug fixes (66)
==============

* cpu/native: add `-no-pie` to LINKFLAGS (#16186)
* boards/adafruit-clue: use internal RC oscillator (#17069)
* boards/feather-m0-*: fix Arduino feature in Kconfig (#17444)
* boards/nrf9160dk: fix LED macros (#17328)
* boards/nucleo-g07xrb: fix or exclude some doxygen warnings (#17079)
* boards/nucleo-g07xrb: fix or exclude some doxygen warnings [backport
  2021.10] (#17084)
* boards/stm32f723e-disco: use connect_assert_srst with openocd (#17462)
* boards/stm32f746g-disco: use connect_assert_srst with openocd (#17449)
* boards/stm32f769i-disco: fix and cleanup default configuration (#17199)
* cdc_ecm: Truncate frames at max ethernet size (#17200)
* cpu/atmega1281: fix pcint (#17227)
* cpu/esp*: small documentation fixes (#17456)
* cpu/esp32: fix esp_wifi_enterprise compilation problem (#17306)
* cpu/esp8266: fix problems with ESP WiFi and migration to ztimer (#17427)
* cpu/esp8266: place freertos functions in IRAM (#17080)
* cpu/esp: revert the change for default definition of ESP_WIFI_PASS (#17420)
* cpu/esp_common: fix unaligned access in periph_flashpage (#17150)
* cpu/native: align stack in thread_stack_init() (#17155)
* cpu/sam0: prevent disabled irq from being called (#17007)
* cpu/stm32/periph/usbdev: fix alignment issues (#17154)
* cpu/stm32: clone cmsis header in build/stm32 (#17212)
* dhcpv6_client: keep integers in retransmission calculations signed (#16992)
* doc: fix the reference to libcoap removal commit in LOSTANDFOUND.md (#17371)
* driver/css811: fix read status (#17340)
* drivers/ccs811: fix of documentation (#17169)
* drivers/dht: correct interpreting raw values (#16934)
* drivers/dose: fix standby mode (#17184)
* drivers/encx24j600: fix unaligned memory access (#17156)
* drivers/lis3dh: fix unaligned memory access (#17149)
* drivers/sx126x: fix sync word and TX PA configuration (#17138)
* ethos: move bulk of state machine out of ISR context (#17265)
* Fix NDEBUG compilation problems (#14364)
* gnrc_ipv6_nib: queue packets that trigger probing on border router (#16947)
* ieee802154 / tests/unittests: fix all-asan reported errors (#17329)
* Makefile.base: cleanup non selected source object files (#16945)
* Makefile.base: do not clean objects of bindist modules (#16981)
* makefile.dep: require `arch_%` `cpu_core_%` features first (#17224)
* murdock: don't run can_fast_ci_run if `FULL_BUILD==1` (#17495)
* nimble: fix nimble_scanner regression bugs (#17334)
* pkg/arduino_sdi_12: fix for the feather-m0 board (#17501)
* pkg/ccn-ndn: migrate to ztimer (#17377)
* pkg/littlefs{,2}: fix compilation with -Wcast-align (#17151)
* pkg/nimble: version bump to fix broken scanning (#16960)
* pkg/paho-mqtt: fix memory corruption (#17503)
* pkg/relic: bump to current master (#17161)
* pycrypto: use pycryptodome instead (#17107)
* SECURITY.md: fix broken email reference (#17118)
* shell/gnrc_icmpv6_echo: Fix hang with no msg queue (#17261)
* sys/fido2: fix CBOR parsing (#17192)
* sys/fido2: fix CBOR parsing [backport 2021.10] (#17193)
* sys/net/dns: mark dns_hdr_t as packed (#17153)
* sys/net/fib: fix compilation with -Wcast-align (#17194)
* sys/net/gcoap: Use socket _buf API to recognize truncated requests (#16378)
* sys/posix/socket: align struct sockaddr{,_storage} (#17152)
* sys/posix/socket: use explicit bind (#16852)
* sys/test_utils/result_output: fix turo_float() precision value (#17036)
* sys/ztimer/kconfig: enable xtimer compat only with timer backend (#17307)
* sys/ztimer: don't access non-existent timer (#17409)
* sys/ztimer: don't default to rtc for ztimer_sec (#17113)
* sys/ztimer: fix backend selection (#17372)
* tests/socket_zep: fix automatic test (#17432)
* tests/unittests: fix unaligned access (#17195)
* tools/openocd: check OPENOCD_VERIFY after IMAGE_OFFSET is computed (#17251)
* tools/zep_dispatch: forward based on source addr, not MAC addr (#16957)
* turo: some json fixes (#17027)
* usbus/dfu: fix underflow condition while updating firmware (#17128)

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

Network related issues (53)
---------------------------

* 6lo gnrc fragmentation expects driver to block on TX (#7474)
* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* at86rf2xx: lost interrupts (#5486)
* CC2538 RF overlapping PIN usage (#8779)
* core: "Invalid read of size 4" (#7199)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to choose global source address. (#13745)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gomach: Resetting netif with cli doesn't return (#10370)
* ieee802154_submac: IPv6 fragmentation broken (#16998)
* LoRaWan node ISR stack overflowed (#14962)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* net: netdev_driver_t::send() doc unclear (#10969)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* openthread: does not build on current Arch (#10809)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* send data with UDP at 10HZ, the program die (#11860)
* stale border router does not get replaced (#12210)
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
* two nodes livelock sending neighbor solicitations back and forth
  between each other (#16670)
* Unclear how Router Solicitations are (or should be) handled (#15926)
* xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (15)
-------------------------

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

Drivers related issues (17)
---------------------------

* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
  timeout (#14439)
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* floats and doubles being used all over the place. (#12045)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* Potential security and safety race conditions on attached devices (#13444)
* PWM: Single-phase initialization creates flicker (#15121)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* Two bugs may lead to NULL dereference. (#15006)

Native related issues (6)
-------------------------

* examples/ccn-lite: floating point exception while testing on native (#15878)
* examples/micropython: floating point exception while testing on
  native (#15870)
* native getchar is blocking RIOT (#16834)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)
* SIGFPE on native architecture when printing double floats on Ubuntu
  21.04 (#16282)

Other platforms related issues (21)
-----------------------------------

* Failing tests on FE310 (Hifive1b) (#13086)
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
* arm7: printf() with float/double not working (#11885)
* boards/hifive1: flashing issue (#13104)
* Cannot use LLVM with Cortex-M boards (#13390)
* cpu/cortexm_common: irq_enable returns the current state of
  interrupts (not previous) (#10076)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* I found stm32 DMA periph driver bugs!  when I tested stm32l431rc
  board. (#16242)
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
* MPU doesn't work on cortex-m0+ (#14822)
* newlib-nano: Printf formatting does not work properly for some
  numeric types (#1891)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)

Build system related issues (14)
--------------------------------

* `buildtest` uses wrong build directory (#9742)
* `make -j flash` fails due to missing make dependencies or `make
  flash-only` rebuilds the .elf (#16385)
* Build dependencies - processing order issues (#9913)
* build: info-build doesn't work with boards without port set (#15185)
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* doxygen: riot.css modified by 'make doc' (#8122)
* LTO broken (binaries too large) (#16202)
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
* make: ccache leads to differing binaries (#14264)
* make: Setting constants on compile time doesn't really set them
  everywhere (#3256)
* make: use of immediate value of variables before they have their
  final value (#8913)
* Tracking: remove harmful use of `export` in make and immediate
  evaluation (#10850)
* Windows AVR Mega development makefile Error (#6120)

Other issues (53)
-----------------

* [TRACKING] sys/shell refactoring. (#12105)
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* `make term` output is inconsistent between boards, `ethos` and
  `native` (#12108)
* assert: c99 static_assert macro doesn't function for multiple
  static_asserts in the same scope (#9371)
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* boards/saml11-xpro: second UART is broken (#17206)
* Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto (#13285)
* C++11 extensions in header files (#5561)
* Can't build relic with benchmarks or tests (#12897)
* CC2538DK board docs: broken links (#12889)
* cpu/stm32/periph/rtc overflow error (#16574)
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
* doc/LOSTANDFOUND: not rendered as expected (#17063)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* File systems report names with leading slashes (#14635)
* flashing issue on frdm-k64f (#15903)
* frdm-k22f failing tests/periph_flashpage (#17057)
* gcoap_dtls: Selecting transport at run time is not possible (#16674)
* I2C not working under RIOT with U8G2 pkg (#16381)
* ieee802154_security: Nonce is reused after reboot (#16844)
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
  disconnect (#17209)
* lwip: invalid state transition on ieee802154_submac users (#17208)
* Making the newlib thread-safe (#4488)
* mcuboot: flashes but no output (#17524)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
* Order of auto_init functions (#13541)
* pkg/tinydtls: Multiple issues (#16108)
* Possible memset optimized out in crypto code (#10751)
* Potential race condition in compile_and_test_for_board.py (#12621)
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
* RIOT cannot compile with the latest version of macOS (10.14) and
  Xcode 10 (#10121)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* scheduler: priority inversion problem (#7365)
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
* sys/riotboot: documentation issues (#11243)
* sys/stdio_uart: dropped data when received at once (#10639)
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/periph_flashpage: failing on stm32l475ve (#17280)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
  esp32-wroom-32 (#13133)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests/thread_float: crashes on avr-rss2 (#16908)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* Tracker: Reduce scope on unintended COMMON variables (#2346)
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
  serial ports (#15814)
* Use of multiple CAN bus on compatible boards (#14801)

There are 179 known issues in this release

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

- sx127x: wrong RSSI values (#17451)
- drivers/aip31068: initialization fails in most cases when using
  esp_i2c_sw (#17311)
- cpu/esp32: esp_wifi_enterprise compilation error (#17305)
- ethos: race condition seems to cause packet loss (#17254)
- tests/lwip_sock_ip: failing on `native` when using IPV4 (#17144)
- Sam boards: isr_eic call all IRQ raised without taking into account
  their status (enabled/disabled) (#16978)
- esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi (#16281)
- esp32: can't use newer C++ standard than c++11 (#15685)
- tests/mpu_noexec_ram: fails on  i-nucleo-lrwan1 (#14572)
- Different build behavior between `murdock` and
  `riot/riotbuild:latest` image (#9645)
- pkg: libcoap is partially broken and outdated (#7737)

11 fixed issues since last release (2021.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

Matrix and Forum
================
* 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.

Release 2021.10

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.10 release includes:

The last three months again brought many new features, fixes and improvements
to the RIOT codebase. There is new hardware support, new helper functions and
many new modules that help with building IoT applications.

Some of the new features are:

GCOAP DTLS
----------

The GCOAP CoAP library now supports transport encryption via tinyDTLS.
This is a compile-time toggle, so either all requests are encrypted or none.
There is already a PR (#16688) that will allow to mix encrypted and unencrypted
requests.

FIDO2 support
-------------

We now have an implementation of the Fast Identity Online 2 (FIDO2) specification.
With this you can use any RIOT device with USB support as an authenticaton token
similar to the YubiKey.

RPL-over-BLE
------------

The 6LoWPAN over Bluetooth Low Energy module has gained support for the RPL
routing protocol. With this it's now possible to set up IPv6 based mesh networks
over BLE on chips supported by the Nimble Bluetooth stack.

GNRC TCP
--------

RIOT's native GNRC network stack now has support for the TCP protocol via the
socket API. With this you can switch between LWIP and GNRC without changing your
application.

DHCPv6 relay agent
------------------

The DHCP module can now act as a relay, forwarding DHCPv6 requests for
multihop-operation.

DHCPv6 IA_NA support
--------------------

The DHCPv6 client can now also request non-temporary addresses as an alternative
to Stateless Access Autoconfiguration (SLAAC) that is used by default.
The feature can be enabled by selecting the `dhcpv6_client_ia_na` module.

gnrc_ipv6_auto_subnets
----------------------

This new module allows to split a large IPv6 prefix into smaller ones that can
be used to configure downstream interfaces with a prefix.
The process can be repeated recursively for a cascading subnet topology.

This can be a lightweight alternative to DHCPv6 that only relies on router
advertisements.

For more details on this, see the talk on the 2021 RIOT summit.

UDP benchmark
-------------

The examples section has gained a UDP benchmark.
This can be used as a network stress test and is accompanied by a host tool
(`dist/tools/benchmark_udp`) that acts as the benchmark server to which the
benchmark clients will connect.

URI template processor
----------------------

URI templates up to level 3 (according to RFC 6570) can now be parsed with this
tool.

riotboot serial flasher
-----------------------

RIOT's native bootloader has gained the ability to load a firmware via UART.
This allows to program a board without the need for external programmers, a
serial console is enough.

RTC mem for sam0 and STM32
--------------------------

Many real-time clocks have the ability to store a few bytes in their memory as
user data. This memory is retained across reboots and deep sleep.

We now have an interface for this feature and implemented it on SAM L21,
SAM D5x/E5x and STM32.

LWIP improvements
-----------------

The alternative LWIP network stack can now make use of multiple interfaces.
Initialisation is done using the new XFA (cross-file array) feature so new
drivers can be added by only adding a single file.

Advanced topologies in ZEP dispatcher
-------------------------------------

With `socket_zep` and the ZEP dispatcher it is possible to simulate a virtual
IEEE 802.15.4 network with `native` nodes.
ZEP dispatcher has now gained support for lossy connections that make this
simulation behave closer to reality.

There are also PRs pending to automatically generate such topologies (#16889)
and to hook up the ZEP dispatcher to the foren6 network visualizer (#16879).

RIOT_VERSION_CODE macro
-----------------------

We have added a `RIOT_VERSION_CODE` macro that can be used by external
modules / boards to check against which RIOT version it is compiled.

This allows to react to API changes if the module is built against different
versions of RIOT.

gnrc_netif_ipv6_wait_for_global_address()
-----------------------------------------

For apps that want to connect to a remote server, send some data and then go back
to sleep, there is now the new `gnrc_netif_ipv6_wait_for_global_address()` function.

This function blocks until a global address has been configured (e.g. via router
advertisement) or a timeout happens.
So no more guessing if a connection can yet be established or if the interface is
not configured yet.

This feature depends on the `gnrc_netif_bus` module.

netutils_get_ipv6()
-------------------

This simple function can parse a IPv6 address from a string.
But that's not all - if the `sock_dns` module is enabled, the string can also
be a hostname which will then be resolved.

This provides a small and simple alternative to `getaddrinfo()` that can be used
by shell commands and applications alike.

gnrc_icmpv6_echo corruption detection
-------------------------------------

On Linux the `ping` command from iputils has the neat feature that it fills the
payload with of the ICMP echo request with a pattern that is then echoed back by
the receiver.

That means it can detect if the payload got corruped on the way, e.g. by broken
fragmentation or other errors.

The RIOT `ping` command now also implements this feature that lets you easily
detect if something broke along the way.

New Hardware Support
--------------------

In this cycle we have seen the addition of three new MCU families!
Our latest additions are the Raspberry Pi RP2040 and the GD32VF103 RISC-V MCU
from GigaDevice.

Both only have very basic support so far (only GPIO, UART and timers), which
still leaves many low hanging fruits for adding peripheral drivers.
Patches welcome!

The nRF9160 is closer to it's nRF52 siblings, but brings GPS and LTE-M/NB-IoT
peripherals. While we are not there yet, there is ongoing work to also support
these in RIOT.

The ATxmega family of 8-bit MCUs can now make use of the EBI interface to use
external memory. The new XMEGA-A1 Xplained already makes use of this feature.

On the STM32 side we have now support for the `nucleo-wl55jc` and it's LoRa
transceiver.
The IEEE 802.15.4 / BLE radio on the STM32WB family is however still waiting
for a driver.

The common LM75 family of temperature drivers is now supported by RIOT.

The ethernet driver for the SAM E5x line of MCUs is now stable.

The sub-MAC layer that implements common MAC features for IEEE 802.15.4 radios
has again seen many improvements.
It is currently used by the nRF52 and CC2538 line of MCUs.

API changes
-----------

The `spi_acquire()` no longer returns an error code but will throw an assertion
if called with the wrong parameters.
This allows to speed up SPI operations a bit as SPI parameters are usually fixed
at compile time.

The `gnrc_netdev_default` was replaced by the network stack agnostic
`netdev_default` module.

For now `gnrc_netdev_default` remains an alias for `netdev_default`, but it will
be removed in a future release.

Summary
-------

263 pull requests, composed of 590 commits, have been merged since the
last release, and 14 issues have been solved. 36 people contributed with
code in 98 days. 1756 files have been touched with 138909 (+) insertions and
12027 deletions (-).

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

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

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

Core (3)
--------

+ core/sched: add runq_callback hook and runq inspection functions (#16463)
+ core: add irq_is_enabled() function to irq interface (#11117)
* core/msg doc: Clarify; elaborating on interaction with queue (#16794)

System Libraries (12)
---------------------

+ riotboot: implement serial flasher (#15493)
+ FIDO2 support in RIOT (#16489)
+ test_utils: add UDP benchmark (#16710)
+ uri_parser: provide function to split query (#16695)
+ usbus/hid_io: add missing header file, add RX callback function (#16689)
+ ut_process: initial import of a URI template processor (#16702)
* sys/picolibc_syscalls_default: support new picolibc stdio globals
  [backport 2021.10] (#17020)
* sys/random/fortuna: change interval ressed to ms (#16594)
* sys/shell/commands/gnrc_icmpv6_echo: test for ICMPv6 reply corruption (#15622)
* sys/shell/commands: gnrc_icmpv6_echo: use msg_avail() (#16611)
* uri_parser: constify result (#16707)
+ sys/credman: add key load functions (#16263)

Networking (49)
---------------

+ dhcpv6_relay: initial import of a lightweight DHCPv6 relay agent (#16606)
+ gnrc/netif: add gnrc_netif_ipv6_wait_for_global_address() (#16824)
+ gnrc_ipv6_nib: handle route information option and add config to add
  to final RAs (#16568)
+ gnrc_ipv6_simple_subnets: auto-configuration for nested subnets on a
  simple tree topology (#16536)
+ gnrc_netif: add gnrc_netif_ipv6_add_prefix() & helper functions (#16672)
+ gnrc_sock_tcp: add gnrc sock tcp (#16494)
+ gnrc_tcp: Add GNRC_TCP_NO_TIMEOUT (#16735)
+ net/BLE: add support for RPL-over-BLE (#16364)
+ net/gcoap: support DTLS (#15549)
+ net/gnrc_lorawan: implement unconfirmed uplink redundancy (#15946)
+ net/netif: add function to get interface by name from a buffer (#16709)
+ netutils: add netutils_get_ipv6() (#16634)
+ sys/net/dhcpv6: Add IA_NA support to the DHCPv6 client (#16228)
+ tests/gnrc_lorawan: add initial tests (#16654)
* dhcpv6_client: make IA_PD an optional module (#16658)
* dhcpv6_client: mrd calculation fixed (#16679)
* dhcpv6_client: refactor to use `event_timeout` for non-sock timeouts (#16668)
* drivers/sx126x : r/NETOPT_RX_TIMEOUT/NETOPT_RX_SYMBOL_TIMEOUT (#16599)
* gnrc/ipv6_auto_subnets: relax topology requirements (#16750)
* gnrc/nib: consolidate prefix removal code in
  _nib_offl_remove_prefix() (#16729)
* gnrc_ipv6_nib: provide functions to get offset of public timestamps (#16706)
* gnrc_netif_pktq: schedule immediately if timer us is equal to zero (#16745)
* gnrc_tcp: align with sock tcp (#16493)
* gnrc_tcp: experimental feature "dynamic msl" (#16764)
* gnrc_tcp: handle zero size buffers (#16738)
* ipv6: fix typo in ipv6_addr_to_str documentation (#16828)
* netdev/lora: fix size of NETOPT_RX_SYMBOL_TIMEOUT (#16604)
* sock_dns: factor out message parsing and composition (#16669)
* sys/net/dhcpv6: Refactor DHCPv6 client (#16728)
* sys/net/dhcpv6: Refactor IA_NA implementation (#16724)
* sys/net/netopt: Drop deprecated NETOPT_MAX_PACKET_SIZE (#16023)
* tree-wide: avoid explicit cast to netdev (#16577)

Packages (8)
------------

+ pkg/wakaama: add get set functions and cleanup client connection (#16203)
* make: support package mirrors [backport 2021.10] (#16996)
* pkg/edhoc-c: ignore llvm flagged error (#16871)
* pkg/edhoc-c: remove nimble blacklist (#16819)
* pkg/edhoc: bump version (#16708)
* pkg/nanocbor: bump version (#16829)
* pkg/tinydtls: bump version (#16624)
* pkg/nimble/autoadv: make AD flag optional (#16703)
* pkg/nimble: bump version, rmv patches (#16830)
* pkg/nimble: configure BLE_LL_INIT_SLOT_SIZE to 1 (#16602)
* pkg/nimble: have RIOT always initialize nimble timers (#16623)
* pkg/nimble: use tinycrypt pkg (#16540)
+ pkg/lwip: add auto-init for DOSE & at86rf215, cc2538_rf (#16761)
+ pkg/lwip: Add thread safety check when using DEVELHELP (#16259)
+ pkg/nimble/netif: add nimble_netif_accept_direct() (#16603)
+ pkg/nimble/scanner: add function to set scan duration (#16701)
* pkg/lwip: Allow initializing different types of netifs (#16162)
* pkg/lwip: implement netif_get_name() (#16741)
* pkg/semtech-loramac: forward uplink schedule request to upper layer (#16961)
* pkg/tinydtls: handling of close_notify (#16422)

Boards (19)
-----------

+ boards/{pic32-wifire,6lowpan-clicker}: Add CLOCK_CORECLOCK (#16607)
+ boards: Introduce atxmega-a1-xplained board (#16289)
+ gd32v/seeedstudio-gd32: Initial support (#16036)
* boards/adafruit-clue: fix doxygen warnings (#16847)
* boards/lora-e5-dev: initial support (#16660)
* boards/nrf52: replace gnrc_netdev_default with netdev_default (#16788)
* boards/saml21-xpro: configure UART & SPI on EXT2, 3 (#16694)

CPU (27)
--------

+ cpu/atxmega/periph: Add ebi driver (#16288)
* cpu/atxmega: Fix features config (#16742)
+ cpu/nrf9160: add initial support for nRF9160DK board (#16650)
+ cpu/nrf9160: add twi and spi support (#16814)
+ cpu/rpx0xx: add periph timer (#16627)
+ cpu/rpx0xx: port RIOT to the Raspberry Pi RP2040 MCU (#16609)
+ cpu/stm32: added ADC for g0 (#16885)
+ cpu/stm32: added APB12 bus multiplier entry for applicable cpus (#16881)
+ cpu/nrf52: i2c: add support for 16-bit register addresses (#16711)
+ cpu/riscv: add CPU_ARCH information (#16877)
+ cpu/stm32: add rtc_mem (#16802)
+ cpu/stm32: added RAM_LEN identifier for stm32g03x (#16886)
+ stm32/spi : Add check for GPIO_UNDEF (#16625)
+ cpu/nrf52: add SAUL driver for VDDH sensor (#16003)
* avr_libc_extra: implement strerror() (#16717)
* cpu/cc2538: don't pollute global namespace with cc2538_rfcore.h (#16863)
* cpu/kinetis: fix RAM_LEN calculation (#16608)
* cpu/native: fix thread_yield_higher() with IRQs disabled (#16754)
* cpu/native: make use of stdio_read() / stdio_write() (#16822)
* cpu/rpx0xx: fix minor gpio warnings (#16685)
* cpu/sam0: improve ethernet driver resilience (#16683)
* cpu/stm32/periph/rtc_all.c for CPU_FAM_STM32L5 support. (#16656)
* riscv: Simplify reset trampoline (#16876)

Device Drivers (7)
------------------

* drivers/cc2538_rf: remove cc2538_rf_netdev_legacy (#16628)
* drivers/nrf802154: remove nrf802154_rf_netdev_legacy (#16630)
* drivers/sx127x: remove ZTIMER_USEC dependency (#15030)
* ieee802154/radio_hal: detach hal descriptor from driver (#16534)
* ieee802154/submac: reimplement using FSM (#16746)
* ieee802154/submac: avoid race condition between RX_DONE and
  ACK_TIMEOUT (#16964)
* ieee802154/submac: fix leftovers of #16746 (#16823)
+ drivers/dose: make use of start condition received interrupt (#16506)
+ drivers/periph: define rtc_mem and implement it for sam0_common (#16758)
+ drivers/cc110x: add power off (sleep) functions (#16232)
+ drivers/lm75: add SAUL integration (#16763)
+ drivers/lpsxxx: add support for lps22hh (#16880)
+ rtt_rtc: add rtt_rtc_settimeofday() & rtt_rtc_gettimeofday() (#16682)
* drivers/at86rf215: remove msg queue dependency (#16747)
* drivers/lm75: driver for the lm75 sensor and derivatives (#16678)
+ sx126x: add support for multiple simultaneous variants (#16597)
+ drivers/ili9341: add rotation mode to ili9341_params_t (#16773)
+ drivers/sx126x: Add support for Nucleo -WL55JC (#16579)
* drivers/cc110x: use pseudo-modules for band selection (#16865)

Documentation (9)
-----------------

+ boards/nrf52840dongle docs: Introduce "quick start" section (#15658)
+ dist/tools/doccheck: add exclude file for warnings and use it (#16779)
* cpu: fix doxygen grouping warnings (#16813)
* doc/doxygen/src/advanced-build-system-tricks: fix no udev link (#16810)
* doc/doxygen: increase dot graph max nodes (#16686)
* doc/porting-boards.md: improve with porting graph and reference
  section (#15981)
* feather-nrf52840: several fixes to documentation (#16777)
* net/ieee802154_security doc: Shape security expectations (#16841)
* README.md: fix doc link (#16786)

Build System / Tooling (8)
--------------------------

+ build system: add machine-readable RIOT_VERSION_CODE macro (#16765)
+ build system: add VERBOSE_ASSERT flag (#16884)
+ make: add capability to check config for `test-with-config` (#16795)
+ makefiles/clang-tidy: initial support (#16509)
* dist/tools/compile_and_test_for_board: fix W1514 (#16772)
* dist/tools/doccheck: generate exclude_patterns using C.UTF-8 (#16846)
* dist/tools/pyterm: ipv6 address support for tcp_serial option (#16726)
* dist/tools: use f-strings where possible (#16867)
* Makefile.include: only warn if not curl, wget, unzip, 7z (#16784)
+ tools/zep_dispatch: add support for advanced topologies (#15773)
* Remove `which` from shell invocations (#16776)

Kconfig (5)
-----------

+ cpu/cc2538: Add Kconfig support (#16719)
+ makefiles/kconfig.mk: generate config file from RIOT_CONFIG_%
  environment variables (#16052)
* drivers/lm75: fixed a typo in Kconfig (#16825)
* drivers/mtd: fix Kconfig dependencies (#16836)
* makefiles/kconfig.mk: force SHOULD_USE_KCONFIG if config file is
  present (#16641)

Examples (3)
------------

+ examples/lorawan: add LoRaWAN keys to DOCKER_ENV_VARS (#17010)
* examples/nimble_*: use nimble_autoadv module (#13506)
+ examples/suit_update: Add compatibility with native (#15994)

Testing (10)
------------

+ dist/pythonlibs/riotctrl_shell/tests/common: add expect to mock (#17003)
+ gnrc_tcp: refactor tests (#16461)
+ tests/gnrc_dhcpv6_client: add script to check if $IFACE exists (#16797)
* CODEOWNERS: remove Robert Hartung (#16858)
* gh/workflows/release-tests: update LoRaWAN parameters to ttnv3
  [backport 2021.10] (#17013)
* Small fatfs usability fixes (#16800)
* tests/gnrc_dhcpv6_client: kill potential previous Kea session (#16820)
* tests/ieee802154_hal: check error codes and improve error reporting (#16556)
* tests/unittests/tests-ipv6_hdr: fix too short ipv6_hdr_t allocations (#16616)
* tests/ieee802154_submac: remove netdev dependency (#16826)

API Changes (5)
---------------

* drivers/ina3221: style fixes and improvements (#15915)
* drivers/periph_spi: let spi_acquire return void (#15902)
* gnrc_tcp: rewrite passive open (#16459)
* nanocoap & gcoap: allow path to be non-`\0`-terminated. (#16712)
* sys/net/nanocoap: block_finish returns if more are expected (#16704)

Uncategorized (3)
-----------------
+ README.md: add graphical logo (#16856)
+ release-notes.txt: add 2021.07 release notes (#16651)
* README.md: Expose HiL CI overview link (#16720)
* Remove duplicated includes introduced in #15902 (#16798)
* treewide: Fix  "too many consecutive empty lines" warnings (#16733)

And 63 minor changes.

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

Deprecations (1)
----------------

* gnrc: deprecate gnrc_netdev_default, use netdev_default instead (#16744)

Bug fixes (32)
==============

* boards/nucleo-wl55jc: add SX126X_PARAM_TYPE to board.h (#16646)
* build system: add fallback for RIOT_VERSION_CODE (#16895)
* cpu/avr8_common: Fix link with binutils > 2.35.2 (#16790)
* cpu/cortexm: ldscripts: bkup-ram -> bkup_ram (#16753)
* cpu/esp_common: fix boot issue on ESP8266 (#16639)
* cpu/saml21: uart: use arithmetic baud rate mode (#16693)
* dhcpv6_client: keep integers in retransmission calculations signed
  [backport 2021.10] (#16995)
* drivers/cc2538_rf: fix deadlock when receiving too fast. (#16716)
* drivers/sx126x: fix netdev send and recv function (#16570)
* event_timeout: check clock before removing ztimer on clear (#16667)
* gnrc/nib: gnrc_ipv6_nib_get_next_hop_l2addr(): only assume neighbor
  cache entries to always be on-link (#16671)
* gnrc/sock: recv avoid spinning xtimer (#16831)
* gnrc_ipv6_nib: consider largest prefix match when deciding if host
  on-link (#16557)
* gnrc_ipv6_nib: queue packets that trigger probing on border router
  [backport 2021.10] (#16949)
* gnrc_lorawan: fix gnrc_pktbuf_release_error (introduced by #16080) (#16617)
* gnrc_sock: imply end-point netif only if unset (#16643)
* ieee802154/submac: fix initialization code (#16533)
* Makefile.base: cleanup non selected source object files [backport
  2021.10] (#16953)
* mtd: fix mtd_write_page() across sector boundaries (#16848)
* net/gnrc_lorawan: fix pick channel (#16664)
* net/lorawan: Revert #16604 and fix NETOPT_RX_SYMBOL_TIMEOUT
  documentation (#16640)
* netutils: get interface by name rather than ID (#16673)
* pkg/lwip: Fix compilation without IPv6 (#16762)
* pkg/lwip: Fix DHCP autostart (#16636)
* pkg/mynewt-core: initial commit (#16348)
* pkg/nimble/autoconn: stop scan/adv on NETIF_ABORT_SLAVE (#16699)
* pkg/wakaama: fix object common `get` functions (#16691)
* Revert "Remove `which` from shell invocations" (#16803)
* tests/gnrc_dhcpv6_client: Fix for newer Kea versions and remove sudo
  requirement (#16792)
* tests/gnrc_dhcpv6_client: honor configured $IFACE in Kea config (#16796)
* tinydtls: sock_dtls: only use ifindex with link-local addresses (#16910)

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

Network related issues (52)
---------------------------

* 6lo gnrc fragmentation expects driver to block on TX (#7474)
* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* at86rf2xx: lost interrupts (#5486)
* CC2538 RF overlapping PIN usage (#8779)
* core: "Invalid read of size 4" (#7199)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to choose global source address. (#13745)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gomach: Resetting netif with cli doesn't return (#10370)
* ieee802154_submac: IPv6 fragmentation broken (#16998)
* LoRaWan node ISR stack overflowed (#14962)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* net: netdev_driver_t::send() doc unclear (#10969)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* openthread: does not build on current Arch (#10809)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* pkg: libcoap is partially broken and outdated (#7737)
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* send data with UDP at 10HZ, the program die (#11860)
* stale border router does not get replaced (#12210)
* two nodes livelock sending neighbor solicitations back and forth
  between each other (#16670)
* Unclear how Router Solicitations are (or should be) handled (#15926)
* xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (15)
-------------------------

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

Drivers related issues (17)
---------------------------

* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
  timeout (#14439)
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* floats and doubles being used all over the place. (#12045)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* Potential security and safety race conditions on attached devices (#13444)
* PWM: Single-phase initialization creates flicker (#15121)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* Two bugs may lead to NULL dereference. (#15006)

Native related issues (6)
-------------------------

* examples/ccn-lite: floating point exception while testing on native (#15878)
* examples/micropython: floating point exception while testing on
  native (#15870)
* native getchar is blocking RIOT (#16834)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)
* SIGFPE on native architecture when printing double floats on Ubuntu
  21.04 (#16282)

Other platforms related issues (23)
-----------------------------------

* Failing tests on FE310 (Hifive1b) (#13086)
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
* arm7: printf() with float/double not working (#11885)
* boards/hifive1: flashing issue (#13104)
* Cannot use LLVM with Cortex-M boards (#13390)
* cpu/cortexm_common: irq_enable returns the current state of
  interrupts (not previous) (#10076)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* esp32: can't use newer C++ standard than c++11 (#15685)
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
* esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi (#16281)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* I found stm32 DMA periph driver bugs!  when I tested stm32l431rc
  board. (#16242)
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
* MPU doesn't work on cortex-m0+ (#14822)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)
* tests/mpu_noexec_ram: fails on  i-nucleo-lrwan1 (#14572)

Build system related issues (15)
--------------------------------

* `buildtest` uses wrong build directory (#9742)
* `make -j flash` fails due to missing make dependencies or `make
  flash-only` rebuilds the .elf (#16385)
* Build dependencies - processing order issues (#9913)
* build: info-build doesn't work with boards without port set (#15185)
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
* Different build behavior between `murdock` and
  `riot/riotbuild:latest` image (#9645)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* doxygen: riot.css modified by 'make doc' (#8122)
* LTO broken (binaries too large) (#16202)
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
* make: ccache leads to differing binaries (#14264)
* make: Setting constants on compile time doesn't really set them
  everywhere (#3256)
* make: use of immediate value of variables before they have their
  final value (#8913)
* Tracking: remove harmful use of `export` in make and immediate
  evaluation (#10850)
* Windows AVR Mega development makefile Error (#6120)

Other issues (45)
-----------------

* [TRACKING] sys/shell refactoring. (#12105)
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* `make term` output is inconsistent between boards, `ethos` and
  `native` (#12108)
* assert: c99 static_assert macro doesn't function for multiple
  static_asserts in the same scope (#9371)
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto (#13285)
* C++11 extensions in header files (#5561)
* Can't build relic with benchmarks or tests (#12897)
* CC2538DK board docs: broken links (#12889)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* File systems report names with leading slashes (#14635)
* flashing issue on frdm-k64f (#15903)
* Gcoap drops long packages instead of gracefully erring out (#14167)
* gcoap_dtls: Selecting transport at run time is not possible (#16674)
* I2C not working under RIOT with U8G2 pkg (#16381)
* ieee802154_security: Nonce is reused after reboot (#16844)
* Making the newlib thread-safe (#4488)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* Order of auto_init functions (#13541)
* pkg/tinydtls: Multiple issues (#16108)
* Possible memset optimized out in crypto code (#10751)
* Potential race condition in compile_and_test_for_board.py (#12621)
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
* RIOT cannot compile with the latest version of macOS (10.14) and
  Xcode 10 (#10121)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* Sam boards: isr_eic call all IRQ raised without taking into account
  their status (enabled/disabled) (#16978)
* scheduler: priority inversion problem (#7365)
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
* sys/riotboot: documentation issues (#11243)
* sys/stdio_uart: dropped data when received at once (#10639)
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
  esp32-wroom-32 (#13133)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests/thread_float: crashes on avr-rss2 (#16908)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* Tracker: Reduce scope on unintended COMMON variables (#2346)
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
  serial ports (#15814)
* Use of multiple CAN bus on compatible boards (#14801)

There are 173 known issues in this release

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

- make check_bindist fails to find reference to `main` (#16977)
- dhcpv6_client: no prefix on downstream interface via IA_PD (#16971)
- Deleted or non selected source files are linked in (#16942)
- tests/thread_float: broken on AVR (#16896)
- Kconfig/tinydtls: Unable to compile `examples/dtls-sock` with
  `CONFIG_DTLS_ECC` enabled (#16873)
- particle: error while flashing using Docker build and DFU mode (#16749)
- test/pkg_u8g2: using SDL is failing (#16714)
- cpu/saml21: can't set baud rate on SERCOM5 (#16692)
- sam0_eth: extremely long time to RX (frames stuck in buffer?) (#16451)
- w5100 driver's improvement (#16417)
- border_router: significant packet loss when sending out packets using
  USB cdc-ecm on nrf52 (#16411)
- XFA support on AVR and MSP430 broken with binutils 2.36.1 (#16251)
- SDL2 does not work due to missing getpid (#13501)
- hello-world example crashes on BOARD=nucleo-f446re (#9775)

14 fixed issues since last release (2021.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

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.

Release 2021.07

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.07 release includes:

- Many improvements to ztimer usage
- Added nucleo-wl55jc and Seeeduino XIAO boards
- stm32f1 kconfig support
- Fixed multiplication overflow in calloc, a.k.a. BadAlloc, for all supported
  platforms

169 pull requests, composed of 339 commits, have been merged since the
last release, and 16 issues have been solved. 37 people contributed with
code in 69 days. 685 files have been touched with 23625 (+) insertions and
7000 deletions (-).

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

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

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

System Libraries (21)
---------------------

+ congure_mock: add capability to provide actual methods (#16133)
+ dhcpv6_client: add DNS recursive name server option handling (#16585)
+ drivers/ethos: enable multiple instances (#16544)
+ drivers/slipdev: report NETOPT_ADDRESS to simulate l2 address (#16531)
+ gnrc_lorawan: add support for RTT (ztimer) (#14558)
+ sys/byteorder: add little endian to/from buf functions (#16363)
+ sys/crypto: Enable support for AES-192, AES-256 (#16183)
+ sys/event/timeout: add option to use ztimer as backend (#16505)
+ sys/event: add periodic timeout event (#16507)
+ sys/ps: enable runtime_usec output for the ps command (#16470)
* gnrc_dhcpv6_client_6lbr: choose downstream if as !upstream (#16530)
* net/emcute: Allow RETAIN flag to be set on incoming PUBLISHes (#16326)
* net/gnrc/rpl: use ztimer_msec if available (#16339)
* net/grnc/sixlowpan/ctx: use ztimer_msec if available (#16340)
* sys/arduino: replace xtimer by ztimer as high-level background timer (#15317)
* sys/auto_init: move sock_dtls after network stack initialization (#16528)
* sys/Makefile.dep: Some cleanup (#16268)
* sys/net/gnrc/netif: Make aac_mode a flag field (#16596)
* sys/trickle: migrate from xtimer to ZTIMER_MSEC (#16322)
* sys/ztimer: use highest frequency for nrf51 as well (#16572)
* ztimer: pull ztimer_periph_rtt for ZTIMER_MSEC if available (#16553)
* sys/shell/sc_gnrc_rpl: Err out early if RPL not even started (#16358)

Networking (4)
--------------

+ drivers/nrf24l01p_ng: add hook nrf24l01p_ng_eui_get() (#16296)
* pkg/nimble/netif: allow to apply and enforce random and unique
  connection intervals (#16372)
* pkg/semtech-loramac: don't force ztimer rtt backend (#16566)

Packages (8)
------------

+ pkg/nanopb: add dependency for C++ source files (#16504)
+ pkg/edhoc-c: initial commit (#16295)
+ pkg: add QR Code generator package (#16462)
* pkg/libcose: Update to latest master (#16464)
* pkg/lvgl: remove internal thread (#16486)
* pkg/nanocbor: bump version (#16362)
* pkg/pkg.mk: avoid git fetch if commit is already there (#16514)
* pkg/wakaama: remove gnrc dependency (#16563)

Boards (10)
-----------

+ board/feather-nrf52840: add uf2 boot loader (#16276)
+ boards/atmega: add USEC_ADJUST values (#16554)
+ boards/esp32-wrover-kit: add dependency to ILI9341 (#16488)
+ boards/nucleo-wl55jc: Initial support (#16255)
+ boards/z1: add CONFIG_ZTIMER_USEC_ADJUST_% values (#16555)
+ boards: Adding board support for the Seeeduino XIAO (#16469)
* board/nrf52840dongle: fix and enhance pin mapping for I2C and SPI (#16401)
* Configuration extension for arduino-nano-33-iot (#16301)
* cpu/kinetis: use LPTMR as rtt backend (#16546)
* makefiles/stdio.inc.mk: stdio_uart require uart or lpuart (#16331)

CPU (12)
--------

+ cpu/atxmega/periph: Add spi driver (#16290)
+ cpu/efm32: add RTT_FREQUENCY support to efm32 (#16344)
+ cpu/esp*: add CLOCK_CORECLOCK (#16361)
+ cpu/lpc23xx: implement periph/flashpage (#16409)
+ SAML21 CPU: support 4MHz, 8MHz, 12MHz CORE_CORECLOCK choices (#16433)
* CPU SAML21: fix timers frequency when using slow clocks (#16446)
* cpu/avr8_common: fix errno (#16565)
* cpu/native: make thread stacksize defines overridable (#16457)
* cpu/sam0_common: UART: Revert "implement inverted RX & TX" (#15205)
* cpu/stm32/periph/rtt_all: RTT peripheral support for CPU_FAM_STM32L5 (#16545)
* cpu/stm32: Generate the irqs in a reproducible manner (#16511)
* ieee802154/hal: adapt frame filter and source address matching
  changes (#15468)

Device Drivers (13)
-------------------

+ cpu/atxmega/periph: Add i2c driver (#16306)
+ cpu/esp_common: Support disabling I2C clock stretching in ESP8266 (#16386)
+ cpu: add periph_rtt_overflow feature (#16420)
+ drivers/at86rf215: add RX timestamps (#16365)
+ drivers/periph: flashpage: add common helper functions (#15908)
+ drivers/rtt_rtc: implement rtc_get_time_ms() (#16347)
+ drivers/si70xx: Add support for Si705x sensors (#15684)
+ drivers/{disp_dev,touch_dev}: add auto_init_screen as default module
  when used (#16485)
+ esp8266: Support UART1 and other UART0 pins. (#16387)
* cpu/sam0_common: only include RTC/RTT symbols if module is used (#16421)
* driver/bmx280: remove unused xtimer dependency (#16400)
* drivers/cc2420: register with netdev (#15012)
* drivers/ccs811: fix default config for ccs811_full (#16454)

Documentation (5)
-----------------

+ doc: README: Add documentation on downloads and release cycle (#16345)
* doc/pkg: provide a longer short description (#16352)
* docs: Remove references to Freenode from the documentation (#16571)
* Documentation: Remove mentions of the users@ and devel@ mailing
  lists. (#16428)
* README: Update url of documentation (#16436)

Build System / Tooling (11)
---------------------------

+ make: introduce QUIETER (#16513)
+ riotctrl_ctrl: A reset helper class for `native` (#15978)
+ TAKEOVER: makefiles/color: Add color functions, new attempt (#16434)
+ tools/dhcpv6-pd_ia: add Linux Mint to installer (#16410)
+ tools/iotlab-testbed: add support for remote debugger (#16510)
* esptool: Allow to pass the partition table CSV (#16307)
* makefiles/boot/riotboot.mk: pass IOTLAB_NODE (#16562)
* makefiles/boot/riotboot: clean bootloader when cleaning application (#16197)
* makefiles/info-global.inc.mk: fix DEFAULT_MODULE inclusion (#16435)
* makefiles/vars.inc.mk: update USE_PROGRAMMER_WRAPPER_SCRIPT comment (#16404)
* tools/iotlab-tested: several improvements in single board support (#16501)

Kconfig (3)
-----------

+ cpu/stm32f1: Add Kconfig dependency modeling (#16483)
+ Kconfig: expose IEEE 802.15.4 Security to Kconfig (#16515)
* pkg/lvgl: bump to latest version + model configuration in Kconfig (#16346)

Examples (2)
------------

+ examples/lorawan: add missing sx126x descriptor (#16592)
* examples/gnrc_networking: use ztimer_msec if available (#16343)

Testing (15)
------------

+ .github: add automatic PR labeler action (#16476)
+ gh-actions: release-tests: add filter input (#16432)
+ tests/pkg_qr-code-generator: add disp-dev for esp32-wrover-kit (#16492)
+ tests/riotboot/flashwrite: add automatic test (#15559)
* gh-actions/release-tests: export QUIETER to docker (#16581)
* Simplify kconfig murdock testing (#16487)
* tests/congure-turo: reset before opening terminal (#16564)
* tests/disp_dev: improve genericity of application + optimize screen
  refresh (#16479)
* tests/gnrc_dhcpv6_client_6lbr: Update test for DHCPv6 MUD option (#16593)
* tests/malloc: refactor test (#16427)
* tests/periph_rtt_min: adapt for slower RTTs (#16329)
* tests/pkg_qr-code-generator: improve display speed in test
  application (#16466)
* tests/pkg_tensorflow-lite/Makefile.ci: explicit list (#16354)
* tests/touch_dev: improve genericity by using auto_init_screen module (#16480)
* tests/ztimer_periodic: iterate over clocks (#16254)

API Changes (3)
---------------

* build system: Rework EXTERNAL_MODULE_DIRS (#16104)
* ieee802154: migrate `netdev_ieee802154_dst_filter` to a common
  ieee802154 (#16576)
* net/gcoap: change return type from gcoap_req_send() to ssize_t (#16526)

And 22 minor changes.

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

Deprecations (3)
----------------

* gnrc_lorawan: encode LoRaWAN port in netif header (#16080)
* tools/testbed: use IOTLAB_NODE=auto instead of auto-ssh (#16491)
* pkg/openthread: deprecate ot_command related functions (#15664)

Removals (1)
------------

- core/lifo: Remove lifo [after 2021.04] (#16098)

Bug fixes (34)
==============

* .github/labeler: quote rules (#16519)
* core/msg.c: fixed msg_queue_print() (#15168)
* cpu/atmega_common: RTC: fix off-by-one second normalization &
  simplify rtc_get_time() (#16442)
* cpu/esp8266: Fix typo in esp_gdbstub config. (#16304)
* cpu/sam0/i2c: Handle read with I2C_NOSTOP flag (#16605)
* cpu/sam0_common: ethernet: fix RX detection (#16383)
* cpu/stm32/gpio_all: fix IRQ handler for G0/L5/MP1 families (#16319)
* cpu/stm32/gpio_f1: fix IRQ handler (#16478)
* cpu/stm32/periph/spi: fix wrong parameter order (#16418)
* dist/Kconfiglib: fix autoconf header (#16561)
* doc: fix URLs to the new website (#16445)
* drivers/lis2dh12: clean up API (#16328)
* drivers/sx126x: fix netdev send and recv function (#16570)
* Fix Cortex-M hard faults when building with -O3 or -Ofast (#16414)
* gnrc_ipv6_nib: consider all local interfaces when looking for address (#16569)
* gnrc_ipv6_nib: consider all prefixes when deciding on-link next hop (#16532)
* gnrc_ipv6_nib: get node from proper interface (#16548)
* gnrc_lorawan: fix undefined state when PSDU is NULL (#16586)
* gnrc_netif/lorawan: drop netif header on send (#16584)
* gnrc_sock: imply end-point netif only if unset (#16643)
* NanoCBOR: Bump version (#16580)
* net/ieee802154_security: small bugfix and stricter names (#16106)
* pkg/nanocbor: bump version (#16538)
* pkg/nimble/netif: fix and optimize NimBLE buffer sizes (#16503)
* pkg/nimble/netif: fix randomized conn intervals (#16601)
* pkg/nimble: temporary fix to NimBLE PRNG seed issue (#16338)
* pkg/qdsa: force qdsa to lowercase (#16552)
* release-test: fetch host key for lille site (#16575)
* shell/sc_nimble_netif: fix _connect_name scan dur (#16337)
* sys/malloc_thread_safety: fix potential overflow in multiplication (#16443)
* sys/net/gnrc/netif: make gnrc_netif_create() blocking to avoid race
  condition (#16527)
* sys/ztimer: convert clock do not require pm (#16573)
* tests/msg_queue_print: fix test on hw (#16525)
* tests: small fixes (#16426)

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

Network related issues (51)
---------------------------

* 6lo gnrc fragmentation expects driver to block on TX (#7474)
* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
* Address registration handling inappropriate (#15867)
* app/netdev: application stops working after receiving frames with
  assertion or completely without error (#8271)
* at86rf2xx: Dead lock when sending while receiving (#8242)
* at86rf2xx: lost interrupts (#5486)
* border_router: significant packet loss when sending out packets using
  USB cdc-ecm on nrf52 (#16411)
* CC2538 RF overlapping PIN usage (#8779)
* core: "Invalid read of size 4" (#7199)
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
  PC (#14689)
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
* DTLS examples cannot send message to localhost (#14315)
* Emcute cannot create a double-byte name (#12642)
* ethernet: Missing multicast addr assignment (#13493)
* ethos: fails to respond to first message. (#11988)
* ethos: Unable to choose global source address. (#13745)
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
* examples/cord_ep: Dead lock when (re-)registering in callback
  function (#12884)
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
* Forwarding a packet back to its link layer source should not be
  allowed (#5051)
* gcoap example request on tap I/F fails with NIB issue (#8199)
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
* gnrc_border_router stops routing after a while (#16398)
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
  packet buffer (#12565)
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
  address (#4527)
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
* gomach: Resetting netif with cli doesn't return (#10370)
* LoRaWan node ISR stack overflowed (#14962)
* lwip_sock_tcp / sock_async: received events before calling
  sock_accept() are lost due to race condition. (#16303)
* Missing drop implementations in netdev_driver_t::recv (#10410)
* net: netdev_driver_t::send() doc unclear (#10969)
* netdev_ieee802154: Mismatch between radio ll address and in memory
  address (#10380)
* nrf52: Not able to add global or ULA address to interface (#13280)
* nrfmin: communication not possible after multicast ping with no
  interval (#11405)
* openthread: does not build on current Arch (#10809)
* ping6 is failing when testing with cc2538dk (#13997)
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
* pkg: libcoap is partially broken and outdated (#7737)
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
* samr30 xpro doesn't seem to use its radio ok (#12761)
* scan-build errors found during 2019.07 testing (#11852)
* send data with UDP at 10HZ, the program die (#11860)
* stale border router does not get replaced (#12210)
* Unclear how Router Solicitations are (or should be) handled (#15926)
* xbee: setting PAN ID sometimes fails (#10338)

Timer related issues (15)
-------------------------

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

Drivers related issues (19)
---------------------------

* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
  timeout (#14439)
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
* at86rf2xx: Simultaneous use of different transceiver types is not
  supported (#4876)
* cpu/msp430: GPIO driver doesn't work properly (#9419)
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
* fail to send data to can bus (#12371)
* floats and doubles being used all over the place. (#12045)
* mdt_erase success, but vfs_format resets board (esp32-heltec-
  lora32-v2) (#14506)
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
  software CS (#6567)
* periph: GPIO drivers are not thread safe (#4866)
* Potential security and safety race conditions on attached devices (#13444)
* PWM: Single-phase initialization creates flicker (#15121)
* sam0_eth: extremely long time to RX (frames stuck in buffer?) (#16451)
* STM32: SPI clock not returning to idle state and generating
  additional clock cycles (#11104)
* TCP client  cannot  send read only data (#16541)
* Two bugs may lead to NULL dereference. (#15006)
* w5100 driver's improvement (#16417)

Native related issues (6)
-------------------------

* examples/ccn-lite: floating point exception while testing on native (#15878)
* examples/micropython: floating point exception while testing on
  native (#15870)
* native not float safe (#495)
* native: tlsf: early malloc will lead to a crash (#5796)
* SDL2 does not work due to missing getpid (#13501)
* SIGFPE on native architecture when printing double floats on Ubuntu
  21.04 (#16282)

Other platforms related issues (24)
-----------------------------------

* Failing tests on FE310 (Hifive1b) (#13086)
* arm7: printf() with float/double not working (#11885)
* boards/hifive1: flashing issue (#13104)
* Cannot use LLVM with Cortex-M boards (#13390)
* cpu/cortexm_common: irq_enable returns the current state of
  interrupts (not previous) (#10076)
* cpu/sam0: flashpage write / read cycle produces different results
  depending on code layout in flash (#14929)
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
* esp32: can't use newer C++ standard than c++11 (#15685)
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
* esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi (#16281)
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
* I found stm32 DMA periph driver bugs!  when I tested stm32l431rc
  board. (#16242)
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
* MPU doesn't work on cortex-m0+ (#14822)
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
  after __WFI() (#14015)
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
* sys/riotboot/flashwrite: unaligned write when skipping
  `RIOTBOOT_MAGIC` on stm32wb (#15917)
* tests/mpu_noexec_ram: fails on  i-nucleo-lrwan1 (#14572)
* XFA support on AVR and MSP430 broken with binutils 2.36.1 (#16251)

Build system related issues (15)
--------------------------------

* `buildtest` uses wrong build directory (#9742)
* `make -j flash` fails due to missing make dependencies or `make
  flash-only` rebuilds the .elf (#16385)
* Build dependencies - processing order issues (#9913)
* build: info-build doesn't work with boards without port set (#15185)
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
* Different build behavior between `murdock` and
  `riot/riotbuild:latest` image (#9645)
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
  1.89 (#12771)
* doxygen: riot.css modified by 'make doc' (#8122)
* LTO broken (binaries too large) (#16202)
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
* make: ccache leads to differing binaries (#14264)
* make: Setting constants on compile time doesn't really set them
  everywhere (#3256)
* make: use of immediate value of variables before they have their
  final value (#8913)
* Tracking: remove harmful use of `export` in make and immediate
  evaluation (#10850)
* Windows AVR Mega development makefile Error (#6120)

Other issues (41)
-----------------

* [TRACKING] sys/shell refactoring. (#12105)
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
  through shell after flashing with J-Link (#13044)
* `make term` no longer works with JLinkExe v6.94 (#16022)
* `make term` output is inconsistent between boards, `ethos` and
  `native` (#12108)
* assert: c99 static_assert macro doesn't function for multiple
  static_asserts in the same scope (#9371)
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
* Bug: openocd 0.10.0-6  Ubuntu dies while debugging with -rtos auto (#13285)
* C++11 extensions in header files (#5561)
* Can't build relic with benchmarks or tests (#12897)
* CC2538DK board docs: broken links (#12889)
* edbg: long lines flooded over serial become garbled (#14548)
* examples / tests: LoRa tests fail on platforms that don't support
  LoRa (#14520)
* File systems report names with leading slashes (#14635)
* flashing issue on frdm-k64f (#15903)
* Gcoap drops long packages instead of gracefully erring out (#14167)
* I2C not working under RIOT with U8G2 pkg (#16381)
* Making the newlib thread-safe (#4488)
* nanocoap: incomplete response to /.well-known/core request (#10731)
* Order of auto_init functions (#13541)
* pkg/tinydtls: Multiple issues (#16108)
* Possible memset optimized out in crypto code (#10751)
* Potential race condition in compile_and_test_for_board.py (#12621)
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
* RIOT cannot compile with the latest version of macOS (10.14) and
  Xcode 10 (#10121)
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
* scheduler: priority inversion problem (#7365)
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
* sys/riotboot: documentation issues (#11243)
* sys/stdio_uart: dropped data when received at once (#10639)
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
* tests/lwip target board for python test is hardcoded to native (#6533)
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
  LLVM (#15066)
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
  esp32-wroom-32 (#13133)
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
* tests: some tests don't work with `newlib` lock functions. (#12732)
* Tracker: Reduce scope on unintended COMMON variables (#2346)
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
  serial ports (#15814)
* Use of multiple CAN bus on compatible boards (#14801)

There are 171 known issues in this release

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

- All but first ping to downstream interface fails (#16547)
- pkg/lvgl: LoadProhibitedCause exception on BOARD=esp32-wrover-kit (#16471)
- SX127x Join procedure failed (The Things Network) (#16419)
- riotctrl: shell interaction seems timing sensitive (#16415)
- at86rf231 initialization loses race against auto_init_gnrc_rpl (#16359)
- cpu/sam0_common: Ethernet driver stops working after a while (#16298)
- Conflict between nimble and uwb-core packages (#15528)
- pkg/ccn-lite: unable to `make -j -C examples/ccn-lite-relay` (#14288)
- make -j flash broken on esp* (will always flash the previous binary) (#13492)
- sys/xtimer: segmentation fault: in function
  xtimer_msg_received_timeout (#13345)
- drivers/srf04: incorrect values on ATmega based platforms (#13079)
- Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice (#10122)
- mrf24j40: does not link for examples/default (#8752)
- nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble (#6018)
- OSX +  SAMR21-xpro: shell cannot handle command inputs larger than 64
  chars (#5863)

16 fixed issues since last release (2021.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

Matrix and Forum
================
* Join the RIOT Matrix room at: #riot-os:matrix.org
* Join the RIOT Forum at: forum.riot-os.org

*Note: [IRC was removed](https://forum.riot-os.org/t/riot-irc-and-even-more-freenode-turmoil/3262)*

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.

Release 2021.04

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.04 release includes:

- netstats can now collect L1/L2 per neighbor statistics
- sock DTLS now allows using multiple credentials
- congure - a framework for implementing congestion control algorithms
- xfa (cross file arrays) - a mechanism to more easily define stuff across
  files (e.g., shell commands)
- nimble is now using low-power ztimer
- nrf5x now properly configures external HF clock, power use down 411µA -> 3.6µA
  for examples/minimal on nrf52dk
- many more modules and drivers have Kconfig support
- the semtech-loramac package now supports sx126x/llcc68 radios
- 8 new boards, 6 new drivers, 8 packages upgraded

We've also mostly finished our migration from mailing lists to forum.riot-os.org.

375 pull requests, composed of 992 commits, have been merged since the
last release, and 16 issues have been solved. 56 people contributed with
code in 103 days. 2564 files have been touched with 191220 (+) insertions and
91400 deletions (-).

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

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

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

Core
----
+ clist: added clist_is_empty()
+ xfa: initial support for XFA's (cross file arrays)

System Libraries
----------------
* shell: allow defining shell commands using XFA
+ dbgpin: module for debugging and profiling
+ ztimer: add ztimer_is_set()
+ ztimer: add ZTIMER_SEC
+ ztimer: add periph_ptp backend

Networking
----------

* cord: Discovery patch altered to reflect changes in the underlying Resource Directory draft
* lwip: hook up sam0_eth support
+ congure: framework to implement congestion control and use it in a reusable manner with
  a number of protocols
+ netstats: L1/L2 per neighbor statistics
+ sock DTLS: allow using multiple credentials

Packages
--------

* emlearn: bump version to 0.11.6
* libfixmath: bump version to latest master
* nanocbor: bump version
* nanopb: bump version to 0.4.5
* fatfs: bump version to r0.14a
* littlefs2: Bump to v2.4
* monocypher: bump to version 3.1.2
* nimble: migrate to ztimer, allowing low power operation
* openthread: bump version to 20191113
* wakaama: add patch to cast macro to time_t
* pkg/semtech-loramac: switch to RIOT AES
* pkg/semtech-loramac: refactor to use netdev API only
* pkg/lwip: Start DHCP early for all Ethernet interfaces

Boards
------

* particle-mesh boards: Use USB serial as stdio by default
* nucleo-f303re: I2C pins remapped to match the data sheet
* nucleo-f722ze: Add periph_can support
* native: compile with `-Og` (was `-O0`)
+ boards/nucleo-f767zi: Add periph_can support
+ New boards:
  + atmega328p-xplained-mini
  + atxmega-a1u-xpro
  + atxmega-a3bu-xplained
  + BastWAN
  + Microbit v2
  + samd20-xpro
  + TI CC1350 LAUNCHXL
  + Zigduino

CPU
---

+ Initial support for ATxmega family of 8-bit AVR CPUs
+ kinetis: enable floating point support
* nrf5x: enhance enabling of internal DC/DC converter
* nrf52: add VDDHDIV5 as ADC input
+ nrf52: add periph_uart_non_blocking support
+ native: add periph/flashpage implementation
+ qn908x: Implement blocking SPI support
+ qn908x: add ADC support
+ sam0_common: add rtc_get_tamper_event()
+ stm32f{2,4,7}: Initial flashpage support
+ stm32f7: added ADC support
* stm32/can: add option to enable deep-sleep per device

Device Drivers
--------------

+ new drivers:
  + sensirion SGP30 gas sensor
  + Amphenol sm-pwm-01c dust sensor
  + Si705x sensors
  + TI BQ2429x charger and power management ICs
  + Netdev driver for nrf24l01p
  + sx126x/llcc68 LoRa radios
* touch_dev & display_dev auto-initialization
* bmx280: increase accuracy of SAUL pressure readings
* lis2dh12: functionality extension
* cc110x: add hook cc1xxx_eui_get()
* ds3231: add alarm support
* at86rf2xx: add missing handler for TRX24_RX_START interrupt
* periph_rtt: add periph_rtt_set_counter  feature

Documentation
-------------

+ riotboot and its USB DFU version were added to the documentation
+ cpu/cc26xx_cc13xx: add CPU documentation
* doc/SAUL: State expectations on blocking and interrupts
* sys/phydat: clarify use of phydat::scale in phydat_fit
* sys/ztimer: clarify doc on clock ops
* doc/Coding_Convention: clarify: void return is allowed
* sys/event: add missing precondition to doc

Build System / Tooling
----------------------

* RIOT now defaults to C11
* RIOT now compiles with `-fwrapv`
+ compile_commands.json files can be produced, easing IDE integration
* riotboot USB DFU: Enter bootloader when board's bootloader button is pressed on power-up
* Make: enable SECONDEXPANSION globally

Testing
-------
+ Test utilities result output (turo) module for testing logic abstraction
+ Github integration of static tests using annotations completed

Kconfig
-------
+ Modules with dependency model added:
    + drivers/{l, m, n, o, p, q, r, s, t, u, v, w}*
    + pkg/c25519
    + pkg/cayenne-lpp
    + pkg/cifra
    + pkg/cn-cbor
    + pkg/driver_atwinc15x0
    + pkg/driver_bme680
    + pkg/emlearn
    + pkg/gemmlowp
    + pkg/hacl
    + pkg/heatshrink
    + pkg/jsmn
    + pkg/libb2
    + pkg/libcose
    + pkg/libfixmath
    + pkg/libhydrogen
    + pkg/lora-serialization
    + pkg/micro-ecc
    + pkg/microcoap
    + pkg/minmea
    + pkg/monocypher
    + pkg/nanocbor
    + pkg/nanopb
    + pkg/qDSA
    + pkg/qcbor
    + pkg/relic
    + pkg/talking_leds
    + pkg/tiny-asn1
    + pkg/tinycbor
    + pkg/tinycrypt
    + pkg/tlsf
    + pkg/tweetnacl
    + pkg/u8g2
    + pkg/ubasic
    + pkg/ucglib
    + pkg/umorse
    + pkg/utensor
    + pkg/yxml
    + sys/{crypto, hashes, random}
    + sys/analog_util
    + sys/app_metadata
    + sys/base64
    + sys/bitfield
    + sys/bloom
    + sys/cb_mux
    + sys/eepreg
    + sys/matstat
    + sys/memarray
    + sys/mineplex
    + sys/oneway
    + sys/posix_{sleep, inet}
    + sys/sema
    + sys/seq
    + sys/uri_parser
    + sys/timex
    + sys/ztimer

+ Modules with configurations exposed:
    + cpu/stm32f2f4f7: clock configuration
    + net/lorawan
    + sys/shell

+ Source EXTERNAL_MODULES configurations

Examples
--------
* examples/suit_update: update to aiocoap 0.4.1
* examples/dtls-sock: add multiple credentials
* examples/gnrc_border_router: enable ethernet uplink

API Changes
-----------

* mtd: rename mtd_write_page() -> mtd_write_page_raw(), add high-level mtd_write_page()
* sys/ztimer: rename required_pm_mode to block_pm_mode
* sock/async: add function to retrieve session object of current DTLS event
* sys/net/netopt: make NETOPT_TX_END_IRQ and friends read-only

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

Deprecations
------------
- core/lifo: will be removed in 2021.07

Removals
--------
- Remove deprecated features:
  - flashrom API (was deprecated since 2017, use periph/flashpage)
  - boards: remove AVRDUDE_PORT and PORT_BSL

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

Networking related issues (48)
------------------------------
#16411: border_router: significant packet loss when sending out packets using
        USB cdc-ecm on nrf52
#16398: gnrc_border_router stops routing after a while
#16359: at86rf231 initialization loses race against auto_init_gnrc_rpl
#16085: gnrc_rpl: missing bounds checks in _parse_options
#16054: pkg/tinydtls: auxiliary data API does not work for async sockets
#15926: Unclear how Router Solicitations are (or should be) handled
#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
#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 (15)
---------------------------
#16417: w5100 driver's improvement
#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
#15870: examples/micropython: floating point exception while testing on native
#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 (18)
-----------------------------------
#16251: XFA support on AVR and MSP430 broken with binutils 2.36.1
#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.
#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)
--------------------------------
#16202: LTO broken (binaries too large)
#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
#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 (57)
-----------------
#16419: SX127x Join procedure failed (The Things Network)
#16415: riotctrl: shell interaction seems timing sensitive
#16402: esp8266 precompiled bootloaders don't support partitions past 1MB
#16395: riscv: ISR stack is too small for ENABLE_DEBUG in core files
#16381: I2C not working under RIOT with U8G2 pkg
#16281: esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi
#16242: I found stm32 DMA periph driver bugs!  when I tested stm32l431rc board.
#16130: boards/esp32-wroom-32: tests/mtd_raw flakey
#16108: pkg/tinydtls: Multiple issues
#16077: pyterm on stdio_cdc_acm stops working after a few seconds
#16022: `make term` no longer works with JLinkExe v6.94
#15940: Basic test for periph/rtt introduced in #15431 is incorrect
#15917: sys/riotboot/flashwrite: unaligned write when skipping  `RIOTBOOT_MAGIC`
        on stm32wb
#15903: flashing issue on frdm-k64f
#15888: tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3
#15814: usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial
        ports
#15685: esp32: can't use newer C++ standard than c++11
#15638: Possible memory leak in RIOT/build/pkg/ndn-riot/app.c
#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 172 known issues in this release

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

#16308: RIOT-OS has great design, But there are too many bugs.
#16298: cpu/sam0_common: Ethernet driver stops working after a while
#16293: Conflict between semtech-loramac and hashes modules
#16191: make: `make list-ttys` broken for `iotlab-m3`
#16184: unittests/tests-rtc: fail on native
#16124: lwip_sock_tcp.c: incorrect socket buffer last_offset computation
#16062: gnrc_rpl: missing bounds checks in gnrc_rpl_validation_options
#16018: gnrc_rpl: Lack of bounds check for packed structs
#15927: uri_parser: out-of-bounds read
#15447: w5100 driver's bug
#13492: make -j flash broken on esp* (will always flash the previous binary)
#13459: cpu/cortex-m23: gcc 9 bug when compiling c11 atomics
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
#12857: examples/gnrc_networking_mac broken on ATmega
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
#12168: pkg/libb2: blake2s doesn't work on AVR

16 fixed issues since last release (2021.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

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.

Release 2021.01

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.

Release 2020.10

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.

Release 2020.07.1

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

Release 2020.07

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.

Release 2020.04

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.

Release 2020.01

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.

Release 2019.10

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.

Release 2019.07

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.

Release 2019.04

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.

Release 2019.01

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.

Release 2018.10.1

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

Release 2018.10

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

Release 2018.07

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

Release 2018.04

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.

Release 2018.01

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.

Release 2017.10

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.

Release 2017.07

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.

Release 2017.04

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 unused 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 makefiles 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.

Release 2017.01

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.

Release 2016.10

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.

Release 2016.07

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.

Release 2016.04

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.

Release 2015.12

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.

Release 2015.09

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.

Release 2014.12

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.

Release 2014.05

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.

Release 2014.01

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.