.. _zephyr_release_notes:

Releases
########

Zephyr project is provided as source code and build scripts for different target
architectures and configurations, and not as a binary image. Updated versions of
the Zephyr project are released approximately every four months.

All Zephyr project source code is maintained in a `GitHub repository`_. In order
to use a released version of the Zephyr project, it is recommended that you use
:ref:`west` to :ref:`get_the_code` of the release you are interested in.

The technical documentation for current and past releases is available at
https://docs.zephyrproject.org/ (use the version selector to select your release
of interest).

.. _zephyr_release_cycle:

Release Life Cycle and Maintenance
**********************************

Periodic Releases
=================

The Zephyr project provides periodic releases every 4 months leading to the
long term support releases approximately every 2 years. Periodic and non-LTS
releases are maintained with updates, bug fixes and security related updates
for at least two cycles, meaning that the project supports the most recent two
releases in addition to the most recent LTS.

Long Term Support and Maintenance
=================================

A Zephyr :ref:`Long Term Support (LTS) <release_process_lts>` release is
published every 2 years and is branched and maintained independently from the
main tree for at least 2.5 years after it was released.

Support and maintenance for an LTS release stops at least half a year
after the following LTS release is published.

Security Fixes
==============

Each security issue fixed within Zephyr is backported or submitted to the
following releases:

- Currently supported Long Term Support (LTS) release.

- The most recent two releases.

For more information, see  :ref:`Security Vulnerability Reporting <reporting>`.


Supported Releases
******************

+-----------------+----------------+---------------+
| Release         | Release date   | EOL           |
+=================+================+===============+
| `Zephyr 2.7.6`_ | 2024-03-01     | 2025-01-26    |
+-----------------+----------------+---------------+
| `Zephyr 3.7.0`_ | 2024-07-26     | 2027-01-26    |
+-----------------+----------------+---------------+
| `Zephyr 3.6.0`_ | 2024-02-23     | 2024-11-29    |
+-----------------+----------------+---------------+
| `Zephyr 4.0.0`_ | 2024-11-15     | 2025-07-18    |
+-----------------+----------------+---------------+

As of 2022-01-01, LTS1 (1.14.x) is not supported and has reached end of life (EOL).

Release Notes
*************

Release notes contain a list of changes that have been made to the different
areas of the project during the development cycle of the release.
Changes that require the user to modify their own application to support the new
release may be mentioned in the release notes, but the details regarding *what*
needs to be changed are to be detailed in the release's migration guide.

.. toctree::
   :maxdepth: 1
   :glob:
   :reversed:

   release-notes-2.7
   release-notes-3.[6-7]
   release-notes-4.[0-1]

Migration Guides
****************

Zephyr provides migration guides for all major releases, in order to assist
users transition from the previous release.

As mentioned in the previous section, changes in the code that require an action
(i.e. a modification of the source code or configuration files) on the part of
the user in order to keep the existing behavior of their application belong in
in the migration guide. This includes:

- Breaking API changes
- Deprecations
- Devicetree or Kconfig changes that affect the user (changes to defaults,
  renames, etc)
- Treewide changes that have an effect (e.g. changing the include path or
  defaulting to a different C standard library)
- Anything else that can affect the compilation or runtime behavior of an
  existing application

Each entry in the migration guide must include a brief explanation of the change
as well as refer to the Pull Request that introduced it, in order for the user
to be able to understand the context of the change.

.. toctree::
   :maxdepth: 1
   :glob:
   :reversed:

   migration-guide-3.[6-7]
   migration-guide-4.[0-1]

End-of-life Releases
********************

.. toctree::
   :hidden:
   :maxdepth: 1

   eol_releases

Release notes and migration guides for end-of-life releases of Zephyr RTOS can be accessed
:ref:`here <eol_releases>`.

.. _`GitHub repository`: https://github.com/zephyrproject-rtos/zephyr
.. _`GitHub tagged releases`: https://github.com/zephyrproject-rtos/zephyr/tags
.. _`Zephyr 2.7.6`: https://docs.zephyrproject.org/2.7.6/
.. _`Zephyr 3.6.0`: https://docs.zephyrproject.org/3.6.0/
.. _`Zephyr 3.7.0`: https://docs.zephyrproject.org/3.7.0/
.. _`Zephyr 4.0.0`: https://docs.zephyrproject.org/4.0.0/
