<commit_before>:orphan:

.. _zephyr_2.6:

Zephyr 2.6.0 (Working Draft)
############################

We are pleased to announce the release of Zephyr RTOS version 2.6.0.

Major enhancements with this release include:

* Added support for 64-bit ARCv3
* Split ARM32 and ARM64, ARM64 is now a top-level architecture
* Added initial support for Arm v8.1-m and Cortex-M55
* Removed legacy TCP stack support which was deprecated in 2.4

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

More detailed information can be found in:
https://docs.zephyrproject.org/latest/security/vulnerabilities.html

Known issues
************

You can check all currently known issues by listing them using the GitHub
interface and listing all issues with the `bug label
<https://github.com/zephyrproject-rtos/zephyr/issues?q=is%3Aissue+is%3Aopen+label%3Abug>`_.

API Changes
***********

* Driver APIs now return ``-ENOSYS`` if optional functions are not implemented.
  If the feature is not supported by the hardware ``-ENOTSUP`` will be returned.
  Formerly ``-ENOTSUP`` was returned for both failure modes, meaning this change
  may require existing code that tests only for that value to be changed.

* The :c:func:`wait_for_usb_dfu` function now accepts a ``k_timeout_t`` argument instead of
  using the ``CONFIG_USB_DFU_WAIT_DELAY_MS`` macro.

* Added disconnect reason to the :c:func:`disconnected` callback of :c:struct:`bt_iso_chan_ops`.

* Align error handling of :c:func:bt_l2cap_chan_send and
  :c:func:bt_iso_chan_send so when an error occur the buffer is not unref.

* Added c:func:`lwm2m_engine_delete_obj_inst` function to the LwM2M library API.

Deprecated in this release

* :c:macro:`DT_CLOCKS_LABEL_BY_IDX`, :c:macro:`DT_CLOCKS_LABEL_BY_NAME`,
  :c:macro:`DT_CLOCKS_LABEL`, :c:macro:`DT_INST_CLOCKS_LABEL_BY_IDX`,
  :c:macro:`DT_INST_CLOCKS_LABEL_BY_NAME`, and
  :c:macro:`DT_INST_CLOCKS_LABEL` was deprecated in favor of utilizing
  :c:macro:`DT_CLOCKS_CTLR` and variants.

* :c:macro:`DT_PWMS_LABEL_BY_IDX`, :c:macro:`DT_PWMS_LABEL_BY_NAME`,
  :c:macro:`DT_PWMS_LABEL`, :c:macro:`DT_INST_PWMS_LABEL_BY_IDX`,
  :c:macro:`DT_INST_PWMS_LABEL_BY_NAME`, and
  :c:macro:`DT_INST_PWMS_LABEL` was deprecated in favor of utilizing
  :c:macro:`DT_PWMS_CTLR` and variants.

* :c:macro:`DT_IO_CHANNELS_LABEL_BY_IDX`,
  :c:macro:`DT_IO_CHANNELS_LABEL_BY_NAME`,
  :c:macro:`DT_IO_CHANNELS_LABEL`,
  :c:macro:`DT_INST_IO_CHANNELS_LABEL_BY_IDX`,
  :c:macro:`DT_INST_IO_CHANNELS_LABEL_BY_NAME`, and
  :c:macro:`DT_INST_IO_CHANNELS_LABEL` were deprecated in favor of utilizing
  :c:macro:`DT_IO_CHANNELS_CTLR` and variants.

* :c:macro:`DT_DMAS_LABEL_BY_IDX`,
  :c:macro:`DT_DMAS_LABEL_BY_NAME`,
  :c:macro:`DT_INST_DMAS_LABEL_BY_IDX`, and
  :c:macro:`DT_INST_DMAS_LABEL_BY_NAME` were deprecated in favor of utilizing
  :c:macro:`DT_DMAS_CTLR` and variants.

* USB HID specific macros in ``<include/usb/class/usb_hid.h>`` are deprecated
  in favor of new common HID macros defined in ``<include/usb/class/hid.h>``.

* USB HID Kconfig option USB_HID_PROTOCOL_CODE is deprecated.
  USB_HID_PROTOCOL_CODE does not allow to set boot protocol code for specific
  HID device. USB HID API function usb_hid_set_proto_code() can be used instead.

* USB HID class API is changed by removing get_protocol/set_protocol and
  get_idle/set_idle callbacks. These callbacks are redundant or do not provide
  any additional value and have led to incorrect usage of HID class API.

* The ``CONFIG_OPENOCD_SUPPORT`` Kconfig option has been deprecated in favor
  of ``CONFIG_DEBUG_THREAD_INFO``.

* Disk drivers (``disk_access_*.c``) are moved to ``drivers/disk`` and renamed
  according to their function. Driver's Kconfig options are revised and renamed.
  SDMMC host controller drivers are selected when the corresponding node
  in devicetree is enabled. Following application relevant Kconfig options
  are renamed: ``CONFIG_DISK_ACCESS_RAM`` -> `CONFIG_DISK_DRIVER_RAM`,
  ``CONFIG_DISK_ACCESS_FLASH`` -> `CONFIG_DISK_DRIVER_FLASH`,
  ``CONFIG_DISK_ACCESS_SDHC`` -> `CONFIG_DISK_DRIVER_SDMMC`.
  Disk API header ``<include/disk/disk_access.h>`` is deprecated in favor of
  ``<include/storage/disk_access.h>``.

* :c:func:`flash_write_protection_set()`.

* The ``CONFIG_NET_CONTEXT_TIMESTAMP`` is removed as it was only able to work
  with transmitted data. The same functionality can be achieved by setting
  ``CONFIG_NET_PKT_RXTIME_STATS`` and ``CONFIG_NET_PKT_TXTIME_STATS`` options.
  These options are also able to calculate the RX & TX times more accurately.
  This means that support for the SO_TIMESTAMPING socket option is also removed
  as it was used by the removed config option.

* The device power management (PM) APIs and data structures have been renamed
  from ``device_pm_*`` to ``pm_device_*`` since they are not device APIs but PM
  subsystem APIs. The same applies to enumerations and definitions, they now
  follow the ``PM_DEVICE_*`` convention. Some other API calls such as
  ``device_set_power_state`` and ``device_get_power_state`` have been renamed to
  ``pm_device_state_set`` and ``pm_device_state_get`` in order to align with
  the naming of other device PM APIs.

* The following functions, macros, and structures related to the kernel
  work queue API:

  * :c:func:`k_work_pending()` replace with :c:func:`k_work_is_pending()`
  * :c:func:`k_work_q_start()` replace with :c:func:`k_work_queue_start()`
  * :c:struct:`k_delayed_work` replace with :c:struct:`k_work_delayable`
  * :c:func:`k_delayed_work_init()` replace with
    :c:func:`k_work_init_delayable`
  * :c:func:`k_delayed_work_submit_to_queue()` replace with
    :c:func:`k_work_schedule_for_queue()` or
    :c:func:`k_work_reschedule_for_queue()`
  * :c:func:`k_delayed_work_submit()` replace with :c:func:`k_work_schedule()`
    or :c:func:`k_work_reschedule()`
  * :c:func:`k_delayed_work_pending()` replace with
    :c:func:`k_work_delayable_is_pending()`
  * :c:func:`k_delayed_work_cancel()` replace with
    :c:func:`k_work_cancel_delayable()`
  * :c:func:`k_delayed_work_remaining_get()` replace with
    :c:func:`k_work_delayable_remaining_get()`
  * :c:func:`k_delayed_work_expires_ticks()` replace with
    :c:func:`k_work_delayable_expires_get()`
  * :c:func:`k_delayed_work_remaining_ticks()` replace with
    :c:func:`k_work_delayable_remaining_get()`
  * :c:macro:`K_DELAYED_WORK_DEFINE` replace with
    :c:macro:`K_WORK_DELAYABLE_DEFINE`

==========================

Removed APIs in this release

* Removed support for the old zephyr integer typedefs (u8_t, u16_t, etc...).

* Removed support for k_mem_domain_destroy and k_mem_domain_remove_thread

* Removed support for counter_read and counter_get_max_relative_alarm

* Removed support for device_list_get

============================

Stable API changes in this release
==================================

Kernel
******

* Added :c:func:`k_mem_unmap()` so anonymous memory mapped via :c:func:`k_mem_map()`
  can be unmapped and virtual address reclaimed.

* Added the ability to gather more statistics for demand paging, including execution
  time histograms for eviction algorithms and backing stores.

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

* ARC

  * Added new ARCv3 64bit ISA support and corresponding HS6x processor support
  * Hardened SMP support
  * Various minor fixes/improvements for ARC MWDT toolchain infrastructure
  * Refactor of ARC Kconfig

* ARM

  * AARCH32

    * Added support for null pointer dereferencing detection in Cortex-M.
    * Added initial support for Arm v8.1-m and Cortex-M55.
    * Added support for preempting threads while they are performing secure calls in Cortex-M.
    * Added support for memory region generation by the linker based on device tree node information in Cortex-M.
    * Cleaned up definitions of SoC-specific memory regions in the common Cortex-M linker script.
    * Added support for clearing NXP MPU region configuration during Zephyr early boot stage.
    * Disallowed fpu hard ABI when building Non-Secure applications with TF-M on Cortex-M33.

  * AARCH64

    * SMP support

    * MMU dynamic mappings with page table sharing.

    * Userspace (unprivileged) thread support.

    * Standalone SMCCC support.

    * XIP support.

    * ARM64 is now a top-level standalone architecture.

    * Support for Cortex-R82 and Armv8-R AArch64 MPU.

    * Cache management support.<commit_msg>doc: release: release notes for Cortex-R<commit_after>:orphan:

.. _zephyr_2.6:

Zephyr 2.6.0 (Working Draft)
############################

We are pleased to announce the release of Zephyr RTOS version 2.6.0.

Major enhancements with this release include:

* Added support for 64-bit ARCv3
* Split ARM32 and ARM64, ARM64 is now a top-level architecture
* Added initial support for Arm v8.1-m and Cortex-M55
* Removed legacy TCP stack support which was deprecated in 2.4

The following sections provide detailed lists of changes by component.

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

The following CVEs are addressed by this release:

More detailed information can be found in:
https://docs.zephyrproject.org/latest/security/vulnerabilities.html

Known issues
************

You can check all currently known issues by listing them using the GitHub
interface and listing all issues with the `bug label
<https://github.com/zephyrproject-rtos/zephyr/issues?q=is%3Aissue+is%3Aopen+label%3Abug>`_.

API Changes
***********

* Driver APIs now return ``-ENOSYS`` if optional functions are not implemented.
  If the feature is not supported by the hardware ``-ENOTSUP`` will be returned.
  Formerly ``-ENOTSUP`` was returned for both failure modes, meaning this change
  may require existing code that tests only for that value to be changed.

* The :c:func:`wait_for_usb_dfu` function now accepts a ``k_timeout_t`` argument instead of
  using the ``CONFIG_USB_DFU_WAIT_DELAY_MS`` macro.

* Added disconnect reason to the :c:func:`disconnected` callback of :c:struct:`bt_iso_chan_ops`.

* Align error handling of :c:func:bt_l2cap_chan_send and
  :c:func:bt_iso_chan_send so when an error occur the buffer is not unref.

* Added c:func:`lwm2m_engine_delete_obj_inst` function to the LwM2M library API.

Deprecated in this release

* :c:macro:`DT_CLOCKS_LABEL_BY_IDX`, :c:macro:`DT_CLOCKS_LABEL_BY_NAME`,
  :c:macro:`DT_CLOCKS_LABEL`, :c:macro:`DT_INST_CLOCKS_LABEL_BY_IDX`,
  :c:macro:`DT_INST_CLOCKS_LABEL_BY_NAME`, and
  :c:macro:`DT_INST_CLOCKS_LABEL` was deprecated in favor of utilizing
  :c:macro:`DT_CLOCKS_CTLR` and variants.

* :c:macro:`DT_PWMS_LABEL_BY_IDX`, :c:macro:`DT_PWMS_LABEL_BY_NAME`,
  :c:macro:`DT_PWMS_LABEL`, :c:macro:`DT_INST_PWMS_LABEL_BY_IDX`,
  :c:macro:`DT_INST_PWMS_LABEL_BY_NAME`, and
  :c:macro:`DT_INST_PWMS_LABEL` was deprecated in favor of utilizing
  :c:macro:`DT_PWMS_CTLR` and variants.

* :c:macro:`DT_IO_CHANNELS_LABEL_BY_IDX`,
  :c:macro:`DT_IO_CHANNELS_LABEL_BY_NAME`,
  :c:macro:`DT_IO_CHANNELS_LABEL`,
  :c:macro:`DT_INST_IO_CHANNELS_LABEL_BY_IDX`,
  :c:macro:`DT_INST_IO_CHANNELS_LABEL_BY_NAME`, and
  :c:macro:`DT_INST_IO_CHANNELS_LABEL` were deprecated in favor of utilizing
  :c:macro:`DT_IO_CHANNELS_CTLR` and variants.

* :c:macro:`DT_DMAS_LABEL_BY_IDX`,
  :c:macro:`DT_DMAS_LABEL_BY_NAME`,
  :c:macro:`DT_INST_DMAS_LABEL_BY_IDX`, and
  :c:macro:`DT_INST_DMAS_LABEL_BY_NAME` were deprecated in favor of utilizing
  :c:macro:`DT_DMAS_CTLR` and variants.

* USB HID specific macros in ``<include/usb/class/usb_hid.h>`` are deprecated
  in favor of new common HID macros defined in ``<include/usb/class/hid.h>``.

* USB HID Kconfig option USB_HID_PROTOCOL_CODE is deprecated.
  USB_HID_PROTOCOL_CODE does not allow to set boot protocol code for specific
  HID device. USB HID API function usb_hid_set_proto_code() can be used instead.

* USB HID class API is changed by removing get_protocol/set_protocol and
  get_idle/set_idle callbacks. These callbacks are redundant or do not provide
  any additional value and have led to incorrect usage of HID class API.

* The ``CONFIG_OPENOCD_SUPPORT`` Kconfig option has been deprecated in favor
  of ``CONFIG_DEBUG_THREAD_INFO``.

* Disk drivers (``disk_access_*.c``) are moved to ``drivers/disk`` and renamed
  according to their function. Driver's Kconfig options are revised and renamed.
  SDMMC host controller drivers are selected when the corresponding node
  in devicetree is enabled. Following application relevant Kconfig options
  are renamed: ``CONFIG_DISK_ACCESS_RAM`` -> `CONFIG_DISK_DRIVER_RAM`,
  ``CONFIG_DISK_ACCESS_FLASH`` -> `CONFIG_DISK_DRIVER_FLASH`,
  ``CONFIG_DISK_ACCESS_SDHC`` -> `CONFIG_DISK_DRIVER_SDMMC`.
  Disk API header ``<include/disk/disk_access.h>`` is deprecated in favor of
  ``<include/storage/disk_access.h>``.

* :c:func:`flash_write_protection_set()`.

* The ``CONFIG_NET_CONTEXT_TIMESTAMP`` is removed as it was only able to work
  with transmitted data. The same functionality can be achieved by setting
  ``CONFIG_NET_PKT_RXTIME_STATS`` and ``CONFIG_NET_PKT_TXTIME_STATS`` options.
  These options are also able to calculate the RX & TX times more accurately.
  This means that support for the SO_TIMESTAMPING socket option is also removed
  as it was used by the removed config option.

* The device power management (PM) APIs and data structures have been renamed
  from ``device_pm_*`` to ``pm_device_*`` since they are not device APIs but PM
  subsystem APIs. The same applies to enumerations and definitions, they now
  follow the ``PM_DEVICE_*`` convention. Some other API calls such as
  ``device_set_power_state`` and ``device_get_power_state`` have been renamed to
  ``pm_device_state_set`` and ``pm_device_state_get`` in order to align with
  the naming of other device PM APIs.

* The following functions, macros, and structures related to the kernel
  work queue API:

  * :c:func:`k_work_pending()` replace with :c:func:`k_work_is_pending()`
  * :c:func:`k_work_q_start()` replace with :c:func:`k_work_queue_start()`
  * :c:struct:`k_delayed_work` replace with :c:struct:`k_work_delayable`
  * :c:func:`k_delayed_work_init()` replace with
    :c:func:`k_work_init_delayable`
  * :c:func:`k_delayed_work_submit_to_queue()` replace with
    :c:func:`k_work_schedule_for_queue()` or
    :c:func:`k_work_reschedule_for_queue()`
  * :c:func:`k_delayed_work_submit()` replace with :c:func:`k_work_schedule()`
    or :c:func:`k_work_reschedule()`
  * :c:func:`k_delayed_work_pending()` replace with
    :c:func:`k_work_delayable_is_pending()`
  * :c:func:`k_delayed_work_cancel()` replace with
    :c:func:`k_work_cancel_delayable()`
  * :c:func:`k_delayed_work_remaining_get()` replace with
    :c:func:`k_work_delayable_remaining_get()`
  * :c:func:`k_delayed_work_expires_ticks()` replace with
    :c:func:`k_work_delayable_expires_get()`
  * :c:func:`k_delayed_work_remaining_ticks()` replace with
    :c:func:`k_work_delayable_remaining_get()`
  * :c:macro:`K_DELAYED_WORK_DEFINE` replace with
    :c:macro:`K_WORK_DELAYABLE_DEFINE`

==========================

Removed APIs in this release

* Removed support for the old zephyr integer typedefs (u8_t, u16_t, etc...).

* Removed support for k_mem_domain_destroy and k_mem_domain_remove_thread

* Removed support for counter_read and counter_get_max_relative_alarm

* Removed support for device_list_get

============================

Stable API changes in this release
==================================

Kernel
******

* Added :c:func:`k_mem_unmap()` so anonymous memory mapped via :c:func:`k_mem_map()`
  can be unmapped and virtual address reclaimed.

* Added the ability to gather more statistics for demand paging, including execution
  time histograms for eviction algorithms and backing stores.

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

* ARC

  * Added new ARCv3 64bit ISA support and corresponding HS6x processor support
  * Hardened SMP support
  * Various minor fixes/improvements for ARC MWDT toolchain infrastructure
  * Refactor of ARC Kconfig

* ARM

  * AARCH32

    * Added support for null pointer dereferencing detection in Cortex-M.
    * Added initial support for Arm v8.1-m and Cortex-M55.
    * Added support for preempting threads while they are performing secure calls in Cortex-M.
    * Added support for memory region generation by the linker based on device tree node information in Cortex-M.
    * Cleaned up definitions of SoC-specific memory regions in the common Cortex-M linker script.
    * Added support for clearing NXP MPU region configuration during Zephyr early boot stage.
    * Disallowed fpu hard ABI when building Non-Secure applications with TF-M on Cortex-M33.
    * Enhanced register information dump in fault exceptions in Cortex-R.
    * Fixed spurious interrupt handling in Cortex-R.

  * AARCH64

    * SMP support

    * MMU dynamic mappings with page table sharing.

    * Userspace (unprivileged) thread support.

    * Standalone SMCCC support.

    * XIP support.

    * ARM64 is now a top-level standalone architecture.

    * Support for Cortex-R82 and Armv8-R AArch64 MPU.

    * Cache management support.
{'fraction_non_alphanumeric': 0.10667676532276858, 'fraction_numerical': 0.006175716616173386, 'mean_word_length': 5.348002958579881, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 19, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4420779', 'n_tokens_mistral': 5863, 'n_tokens_neox': 5567, 'n_words': 1701}