diff --git a/release-notes.txt b/release-notes.txt index bc4ed79afc..0ca54d17fa 100644 --- a/release-notes.txt +++ b/release-notes.txt @@ -1,3 +1,287 @@ +RIOT-2017.01 - Release Notes +============================ +RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with +support for a range of devices that are typically found in the Internet of Things: 8-bit microcontrollers, +16-bit microcontrollers and light-weight 32-bit processors. + +RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, +small memory footprint, modularity, and uniform API access, independent of the underlying hardware +(with partial POSIX compliance). + +RIOT is developed by an international open-source community which is independent of specific vendors +(e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), +which allows indirect business models around the free open-source software platform provided by RIOT. + +About this release: +=================== +This release provides a lot of new features, fixes and enhancements. Among others these features +contain an initial - still experimental - TCP implementation based on the GNRC network stack, support +for reading from and writing to SD cards, a new power management architecture as well additional third +party packages such as TweetNaCl, a cryptographic library, and Heatshrink a data compression library +optimized for embedded real-time systems. +We added support for new platforms including the Calliope mini, Maple mini, and a couple of STMs +Nucleo boards. Device support was extended by several new drivers, e.g., for NXP PN532 NFC, Microchip +MRF24J40 802.15.4 radio (experimental), or Bosch BME280 pressure/humidity/temperature sensor. +We completely refactored the SPI interface, allowing for internally handled hardware or software chip +select lines and shared bus usage for multiple devices with different SPI configurations. + +About 278 pull requests with about 606 commits have been merged since the last release and about 84 +issues have been solved. 44 people contributed with code in 87 days. 2230 files have been touched with +220275 insertions and 159840 deletions. + + +Notations used below: +===================== ++ means new feature/item +* means modified feature/item +- means removed feature/item + +New features and changes +======================== +General +------- ++ New power management architecture + +Core +---- ++ Initial (experimental) OpenOCD/GDB thread support +* Make Semaphore implementation IPC independent + +API changes +----------- +* SPI driver interface (rework) +* Add Mutex lock with timeout parameter +* Xtimer allow for arbitrary frequency & additional convenience functions +* HDC1000 driver remodeling +* MMA8652 driver remodeling (MMA8x5x now) + +System libraries +---------------- ++ Lightweight CRC16 implementation +- Remove Twofish and RC5 implementation + +Networking +---------- ++ Initial (experimental) GNRC TCP implementation +* Provide sock-port for POSIX SOCKETS +* Provide sock-port for GCOAP +* Provide sock-port for UHCPC +* Provide sock_ip wrapper for LWIP +* Native: allow for multiple netdev2_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 temperatur 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 netdev2 API +* W5100 port to netdev2 API +* NRF5x/'nrfmin' port to netdev2 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 hundret nodes, but agressive 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: Eratic timings on iotlab-m3 with compression context activated +#5460: cpu/samd21: i2c timing with compiler optimization +#5486: at86rf2xx: lost interrupts +#5489: cpu/lpc11u34: ADC broken +#5678: at86rf2xx: failed assertion in _isr +#5799: kw2x: 15.4 duplicate transmits +#5944: msp430: ipv6_hdr unittests fail +#5848: arduino: Race condition in sys/arduino/Makefile.include +#6018: nRF52 gnrc 6lowpan ble memory leak +#6261: SAMD21 TC3 & TC4 issue when using TCC2 +#6379: nrf52dk/nordic_soft_device: not working anymore +#6437: periph/spi: Leftovers from SPI rework +#6501: boards/nucleo: Pin usage collision (SPI clk vs. LED0) +#6526: atmega based boards freeze when main thread is over + +other issues +------------ +#1263: TLSF implementation contains (a) read-before-write error(s). +#3256: make: Setting constants on compile time doesn't really set them everywhere +#3366: periph/i2c: handle NACK +#4488: Making the newlib thread-safe: When calling puts/printf after thread_create(), the CPU hangs + for DMA enabled uart drivers. +#4866: periph: GPIO drivers are not thread safe +#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var +#5207: make: buildest fails with board dependent application Makefiles +#5561: C++11 extensions in header files +#5776: make: Predefining CFLAGS are parsed weirdly +#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars +#5962: Makefile: UNDEF variable is not working as documented +#6022: pkg: build order issue +#6451: Wrong value in SRF08 driver +#6519: driver/mrf24j40: broken on stm32f4discovery + +Special Thanks +============== +We like to give our special thanks to all the companies that provided us with their hardware for +porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination +Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly +sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, OTAkeys and Phytec. + +More information +================ +http://www.riot-os.org + +Mailing lists +------------- +* RIOT OS kernel developers list + devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel) +* RIOT OS users list + users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users) +* RIOT commits + commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits) +* Github notifications + notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications) + +IRC +--- +* Join the RIOT IRC channel at: irc.freenode.net, #riot-os + +License +======= +* Most of the code developed by the RIOT community is licensed under the GNU Lesser General Public + License (LGPL) version 2.1 as published by the Free Software Foundation. +* Some external sources are published under a separate, LGPL compatible license + (e.g. some files developedby SICS). + +All code files contain licensing information. + + + + + + RIOT-2016.10 - Release Notes ============================ RIOT is a real-time multi-threading operating system that supports a range of