diff --git a/release-notes.txt b/release-notes.txt index 9ac64a23d4..d610c484bf 100644 --- a/release-notes.txt +++ b/release-notes.txt @@ -1,3 +1,868 @@ +RIOT-2022.10 - Release Notes +============================ +RIOT is a multi-threading operating system which enables soft real-time +capabilities and comes with support for a range of devices that are typically +found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as +light-weight 32-bit processors. + +RIOT is based on the following design principles: energy-efficiency, soft +real-time capabilities, small memory footprint, modularity, and uniform API +access, independent of the underlying hardware (with partial POSIX compliance). + +RIOT is developed by an international open-source community which is +independent of specific vendors (e.g. similarly to the Linux community) and is +licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect +business models around the free open-source software platform provided by RIOT. + + +About this release +================== + +The 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_` 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_`, while they previously where + often called `_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. + + RIOT-2022.07 - Release Notes ============================ RIOT is a multi-threading operating system which enables soft real-time