:orphan:

.. _zephyr_1.12:

Zephyr Kernel 1.12.0 (DRAFT)
############################

We are pleased to announce the release of Zephyr kernel version 1.12.0.

Major enhancements with this release include:

- Asymmetric multiprocessing (AMP) via integration of OpenAMP
- Persistent storage support for Bluetooth Low Energy including Mesh
- 802.1Q - Virtual Local Area Network (VLAN) traffic on an Ethernet network
- Support multiple concurrent filesystem devices, partitions, and FS types
- Ethernet network management interface
- Networking traffic prioritization on a per-connection basis
- Support for Ethernet statistical counters
- Support for TAP net device on the the native POSIX port
- Command-line Zephyr meta-tool "west"
- SPI slave support
- Runtime non-volatile configuration data storage system (settings)


The following sections provide detailed lists of changes by component.

Security Vulnerability Related
******************************

* A suitably sized k_malloc() request can result in a smaller than
  requested buffer.  Use of that buffer could result in writes to
  unallocated memory.  Proper overflow checks were added to fix this
  issue in k_malloc and k_calloc.

  * kernel: mempool: Check for overflow in k_malloc()
  * kernel: mempool: Always check for overflow in k_calloc()
  * tests: mempool: Add overflow checks

Kernel
******

* Added k_thread_foreach API
* kernel/sched: Fix preemption logic
* kernel/sched: Fix SMP scheduling
* kernel/sched: Don't preempt cooperative threads
* kernel: Scheduler rewrite
* kernel: Fix sloppy wait queue API
* kernel/mempool: Handle transient failure condition
* kernel: handle early entropy issues
* kernel: Earliest-deadline-first scheduling policy
* kernel: Add "meta IRQ" thread priorities
* kernel: introduce initial stack randomization
* k_poll: expose to user mode
* k_queue: allow user mode access via allocators
* mempool: add API for malloc semantics
* userspace: add support for dynamic kernel objects

Architectures
*************

* arch: arc: refactor the arc stack check support
* arch: arc: add the support of STACK_SENTINEL
* arch: arc: optimize the _SysFatalErrorHandler
* arch: arc: bug fixes in irq_load
* arch: arc: bug fixes and optimization in exception handling
* arch: arm: Fix zero interrupt latency priority level
* arch: arm: refactor default _FaultDump to provide fatal error code
* arch: arm: Define & implement API for test target (Non-Secure)
* arch: arm: thread built-in stack guard implementation
* arch: arm: lpc: Added support for Cortex-M0+ on lpc54114 soc
* arch: arm: Secure fault handling for Cortex-M23
* arch: arm: SecureFault Handling for Cortex-M33A
* arch: arm: Change method of __swap processing
* arm_mpu: reduce boot MPU regions for various soc
* arm: userspace: fix initial user sp location
* arm: userspace: Rework system call arguments
* arm: syscalls: fix some register issues
* dts: nios2-qemu: add device tree support
* dts: nios2f: Add device tree support
* dts: x86: derive RAM and ROM size from dts instead of Kconfig
* dts: xtensa: Add device tree support for xtensa
* newlib: fix heap user mode access for MPU devices
* nxp_imx/mcimx7_m4: Added support for i.MX7 Cortex M4 core
* x86: minnowboard: Enable the userspace mode
* arch: x86: Unwind the stack on fatal errors
* xtensa: provide XCC compiler support for Xtensa

Boards
******

* Added support for the following Arm boards:

  * 96b_argonkey
  * adafruit_feather_m0_basic_proto
  * colibri_imx7d_m4
  * dragino_lsn50
  * lpcxpresso54114_m0
  * nrf51_ble400
  * nrf52_pca20020
  * nucleo_f070rb
  * nucleo_f446re
  * nucleo_l053r8
  * nucleo_l073rzA
  * olimex_stm32_h407
  * stm32f0_disco

* Added support for the following RISC-V boards:

  * hifive1

* Added support for the following Xtensa boards:

  * intel_s1000_crb

* arc: Added device tree support for all ARC SoCs
* arm: Renamed lpcxpresso54114 to lpcxpresso54114_m4
* nios2: Added device tree support for qemu_nios2 and altera_max10
* Continued adding dts support for device drivers (gpio, spi, i2c, sensors, usb)

Drivers and Sensors
*******************

* can: Added CAN driver support for STM32 SoCs
* display: Added ILI9340 LCD display driver
* dma: Added dma driver for Nios-II MSGDMA core
* dma: Introduce Intel CAVS DMA
* ethernet: Added ethernet driver for native posix arch
* gpio: Added support for i.MX GPIO
* gpio: Added driver for SX1509B
* gpio: Added GPIO for SAM family
* gpio: Added GPIO driver for stm32l0x
* i2s: Introduce CAVS I2S
* ieee802154: Added OpenThread modifications to KW41Z driver
* interrupts: introduce CAVS interrupt logic
* interrupts: Introduce Designware interrupt controller
* ipm: Added mcux ipm driver for LPC SoCs
* led: Added new public API and driver support for TI LP3943
* pinmux: Added pinmux driver for stm32l0x
* rtc: Added mcux RTC driver for Kinetis SoCs
* sensor: Added sensorhub support to lsm6dsl driver
* sensor: Added trigger support to lsm6dsl
* serial: Added support for i.MX UART interface
* spi: Added shims for nrfx SPIS and SPIM drivers
* spi: Updated mcux shim driver to new SPI API
* spi: Updated sensor and radio drivers to new SPI API
* usb: Added usb device driver for Kinetis USBFSOTG controller
* usb: Added usb support for stml072/73, stm32f070/72
* usb: Enable usb2.0 on intel_s1000
* usb: Added nRF52840 USB Device Controller Driver
* watchdog: Added mcux watchdog driver for Kinetis SoCs
* watchdog: Added nrfx watchdog driver for NRF SoCs
* wifi: Added winc1500 WiFi driver

Networking
**********

* Minimal server side websocket support.
* Add network support to syslog.
* Reducing net_pkt RAM usage.
* TCP code refactoring. TCP code is now in one place in tcp.c
* Support MSG_DONTWAIT and MSG_PEEK in recvfrom() socket call.
* Support MSG_DONTWAIT in sendto() socket call.
* Add support for freeaddrinfo() API.
* Allow empty service in getaddrinfo() API.
* Add PRIORITY support to net_context. This is working same way as SO_PRIORITY
  in BSD sockets API.
* Add network traffic classification support to Rx and Tx paths. This allows
  prioritization of incoming or outgoing network traffic. Both Rx and Tx can
  have max 8 network queues.
* Add network interface up/down command to net-shell.
* Create ethernet driver for native_posix board. The driver is enabled
  automatically if networking is active when compiling for native_posix board.
* Support network packet checksum calculation offloading. This is available for
  ethernet based boards.
* Add support for ethernet virtual LANs (VLAN). Following ethernet drivers
  support VLANs: frdm_k64f, sam_e70_explained, native_posix and qemu.
* Allow network statistics collection / network interface.
* Add network management support to ethernet sub-system.
* Add network capabilities support to ethernet network drivers. This is used
  for management purposes.
* Allow collection of ethernet statistics. Currently only native_posix ethernet
  driver supports this.
* Add OpenThread support for KW41Z driver.
* Add initial WiFi management API definitions.
* Add a shell module for controlling WiFi devices.
* Add dedicated net mgmt hooks for WiFi offload devices.
* Use proper IPv4 source address when sending IPv4 packets.
* Add support for energy detection scan on IEEE 802.15.4 driver API.
* Add support for filtering source short IEEE 802.15.4 addresses.
* Add RPL border router sample application.
* LWM2M code refactoring.
* LWM2M OPTIONAL resource fixes.
* LWM2M source port fixes.
* LWM2M resource usage enhancements.
* Fixing network management event ordering.
* Fix ENC28J70 ethernet driver.
* CoAP sample application fixes.
* Network timeout fixes.
* ICMPv6 error check fixes.
* Net-app API port number fixes.
* WPAN USB driver and sample application fixes.
* BSD socket sample application fixes.
* Fix IPv4 echo-request (ping) in net-shell when having multiple network
  interfaces.
* Fixing IPv6 compile error in certain configuration.

Bluetooth
*********

* settings-based persistent storage functionality for BLE (including CCC) and
  Mesh
* Mesh-specific optimizations to avoid flash wear
* Added a new API to set the identity address from the application
* Old bt_storage API removed from the codebase
* Rewrote the HCI SPI driver to comply with the new API
* Added BLE support for the standard entropy driver via an ISR-friendly call
* Multiple BLE Mesh bugfixes and improvements
* Added option to use the identity address for advertising even when using
  privacy
* Added support for L2CAP dynamically allocated PSM values
* GATT CCC handling fixes
* GATT attribute declaration macros reworked for clarity
* Fixed handlng of connection cancellation in the controller
* Fixed a potential assertion failure in the controller related to white list
  handling

Build and Infrastructure
************************

* build: use git version and hash for boot banner
* kconfig: Drop support for CONFIG_TOOLCHAIN_VARIANT
* kconfig: Remove the C Kconfig implementation
* scripts: kconfig: Add a Python menuconfig implementation
* scripts: west: introduce common runner configuration
* scripts: debug, debugserver and flash scripts for intel_s1000
* xtensa: provide XCC compiler support for Xtensa

Libraries / Subsystems
***********************

* subsys/disk: Added support for multiple disk interfaces
* subsys/fs: Added support for multiple instances of filesystem
* subsys/fs: Added Virtual File system Switch (VFS) support
* lib/posix: Added POSIX Mutex support
* lib/posix: Added POSIX semaphore support
* crypto: Updated mbedTLS to 2.9.0
* Imported libmetal and OpenAMP for IPC

HALs
****

* altera: Add modular Scatter-Gather DMA HAL driver
* atmel: Added winc1500 driver from Atmel
* cmsis: Update ARM CMSIS headers to version 5.3.0
* nordic: Import SVD files for nRF5 SoCs
* nordic: Update nrfx to version 1.0.0
* nxp: imported i.MX7 FreeRTOS HAL
* nxp: Added dual core startup code for lpc54114 based on mcux 2.3.0
* stm32l0x: Add HAL for the STM32L0x series

Documentation
*************

* Added description for kernel test cases through extensive doxygen comments
* Discovered some API docs were missing, and fixed
* Documentation added covering system calls and userspace, kernel, and
  threading APIs, POSIX compability, VLANs, network traffic
  classification, and the sanitycheck script used by CI.
* Documented writing guidelines and local doc generation process
* Improved Sphinx search results output (removed markup)
* Improved configuration options auto-generated documentation
* Significantly reduced local doc regeneration time

Tests and Samples
*****************
* Added test for POSIX mutex
* Added Apple iBeacon sample application
* Enhanced threads test suite
* Added tests for memory domain

Issue Related Items
*******************

These GitHub issues were addressed since the previous 1.11.0 tagged
release:

.. comment  List derived from GitHub Issue query: ...
   * :github:`issuenumber` - issue title
