1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for 5.0 (scarthgap)
4---------------------------------
5
6New Features / Enhancements in 5.0
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9-  Linux kernel 6.6, gcc 13.2, glibc 2.39, LLVM 18.1, and over 300 other recipe upgrades
10
11-  New variables:
12
13   -  :term:`CVE_DB_INCR_UPDATE_AGE_THRES`: Configure the maximum age of the
14      internal CVE database for incremental update (instead of a full
15      redownload).
16
17   -  :term:`RPMBUILD_EXTRA_PARAMS`: support extra user-defined fields without
18      crashing the RPM package creation.
19
20   -  :term:`OPKG_MAKE_INDEX_EXTRA_PARAMS`: support extra parameters for
21      ``opkg-make-index``.
22
23   -  :term:`EFI_UKI_PATH`, :term:`EFI_UKI_DIR`: define the location of UKI
24      image in the EFI System partition.
25
26-  Architecture-specific enhancements:
27
28   -  ``genericarm64``: a new :term:`MACHINE` to represent a 64-bit General Arm
29      SystemReady platform.
30
31   -  Add Power8 tune to PowerPC architecture.
32
33   -  ``arch-armv9``: remove CRC and SVE tunes, since FEAT_CRC32 is now mandatory
34      and SVE/SVE2 are enabled by default in GCC's ``-march=armv9-a``.
35
36-  Kernel-related enhancements:
37
38   -  The default kernel is the current LTS (6.6).
39
40   -  Add support for ``genericarm64``.
41
42-  New core recipes:
43
44   -  `bmaptool <https://github.com/yoctoproject/bmaptool>`__: a tool for
45      creating block maps for files and flashing images, being now under the
46      Yocto Project umbrella.
47
48   -  ``core-image-initramfs-boot``: a minimal initramfs image, containing just
49      ``udev`` and ``init``, designed to find the main root filesystem and
50      pivot to it.
51
52   -  `lzlib <https://www.nongnu.org/lzip/lzlib.html>`__: a data compression
53      library that provides LZMA compression and decompression functions.
54
55   -  `lzop <https://www.lzop.org/>`__: a compression utility based on the LZO
56      library, that was brought back after a (now reverted) removal.
57
58   -  `python3-jsonschema-specifications <https://pypi.org/project/jsonschema-specifications/>`__:
59      support files for JSON Schema Specifications (meta-schemas and
60      vocabularies), added as a new dependency of ``python3-jsonschema``.
61
62   -  `python3-maturin <https://github.com/pyo3/maturin>`__: a project that
63      allows building and publishing Rust crates as Python packages.
64
65   -  `python3-meson-python <https://github.com/mesonbuild/meson-python>`__: a
66      Python build backend that enables the Meson build-system for Python packages.
67
68   -  `python3-pyproject-metadata <https://pypi.org/project/pyproject-metadata/>`__:
69      a class to handle PEP 621 metadata, and a dependency for
70      ``python3-meson-python``.
71
72   -  `python3-referencing <https://github.com/python-jsonschema/referencing>`__:
73      another dependency of ``python3-jsonschema``, it provides an
74      implementation of JSON reference resolution.
75
76   -  `python3-rpds-py <https://pypi.org/project/rpds-py/>`__: Python bindings
77      to the Rust rpds crate, and a runtime dependency for ``python3-referencing``.
78
79   -  `python3-sphinxcontrib-jquery <https://pypi.org/project/sphinxcontrib-jquery/>`__:
80      a Sphinx extension to include jQuery on newer Sphinx releases. Recent
81      versions of ``python3-sphinx-rtd-theme`` depend on it.
82
83   -  `python3-yamllint <https://github.com/adrienverge/yamllint>`__: a linter
84      for YAML files. In U-Boot, the ``binman`` tool uses this linter to verify the
85      configurations at compile time.
86
87   -  ``systemd-boot-native``: a UEFI boot manager, this time built as native to
88      provide the ``ukify`` tool.
89
90   -  `utfcpp <https://github.com/nemtrif/utfcpp>`__: a C++ library to handle
91      UTF-8 encoded strings. It was added as a dependency for ``taglib`` after
92      its upgrade to v2.0.
93
94   -  `vulkan-utility-libraries <https://github.com/KhronosGroup/Vulkan-Utility-Libraries>`__:
95      a set of libraries to share code across various Vulkan repositories.
96
97   -  `vulkan-volk <https://github.com/zeux/volk>`__: a meta-loader for Vulkan,
98      needed to support building the latest ``vulkan-tools``.
99
100-  QEMU / ``runqemu`` enhancements:
101
102   -  QEMU has been upgraded to version 8.2.1
103
104   -  ``qemuboot``: support predictable network interface names.
105
106   -  ``runqemu``: match ".rootfs." in addition to "-image-" for the root
107      filesystem.
108
109   -  :ref:`ref-classes-cmake-qemu`: a new class allowing to execute cross-compiled
110      binaries using QEMU user-mode emulation.
111
112-  Rust improvements:
113
114   -  Rust has been upgraded to version 1.75
115
116   -  The Rust profiler (i.e., PGO - Profile-Guided Optimization) options were
117      enabled back.
118
119   -  The Rust ``oe-selftest`` were enabled, except for ``mips32`` whose tests
120      are skipped.
121
122   -  ``rust-cross-canadian``: added ``riscv64`` to cross-canadian hosts.
123
124-  wic Image Creator enhancements:
125
126   -  Allow the imager's output file extension to match the imager's name,
127      instead of hardcoding it to ``direct`` (i.e., the default imager)
128
129   -  For GPT-based disks, add reproducible Disk GUID generation
130
131   -  Allow generating reproducible ext4 images
132
133   -  Add feature to fill a specific range of a partition with zeros
134
135   -  ``bootimg-efi``: add ``install-kernel-into-boot-dir`` parameter to
136      configure kernel installation point(s) (i.e., rootfs and/or boot partition)
137
138   -  ``rawcopy``: add support for zstd decompression
139
140-  SDK-related improvements:
141
142   -  ``nativesdk``: let :term:`MACHINE_FEATURES` be set by ``machine-sdk``
143      configuration files.
144
145   -  ``nativesdk``: prevent :term:`MACHINE_FEATURES` and :term:`DISTRO_FEATURES`
146      from being backfilled.
147
148-  Testing:
149
150   -  Add an optional ``unimplemented-ptest`` QA warning to detect upstream
151      packages with tests, that do not use ptest.
152
153   -  ``testimage``: retrieve the ptests directory, especially for the logs,
154      upon ptest failure.
155
156   -  ``oeqa``, ``oe-selftest``: add test cases for Maturin (SDK and runtime).
157
158-  Utility script changes:
159
160   -  New ``recipetool/create_go.py`` script added to support Go recipe creation
161
162   -  ``oe-init-build-env`` can generate a initial configuration (``.vscode``)
163      for VSCode and its "Yocto Project BitBake" extension.
164
165-  BitBake improvements:
166
167   -  Add support for :term:`BB_LOADFACTOR_MAX`, so Bitbake can stop running
168      extra tasks if the system load is too high, especially in distributions
169      where ``/proc/pressure`` is disabled.
170
171   -  Add garbage collection to remove unused unihashes from the database.
172
173   -  ``taskexp_ncurses``: add ncurses version of ``taskexp``, the dependency
174      explorer originally implemented with GTK.
175
176   -  Improve ``runqueue`` performance by adding a cache mechanism in
177      ``build_taskdepdata``.
178
179   -  ``bitbake.conf``: add ``runtimedir`` to represent the path to the runtime
180      state directory (i.e., ``/run``).
181
182-  Packaging changes:
183
184   -  ``package_rpm``: the RPM package compressor's mode can now be overriden.
185
186-  Security improvements:
187
188   -  Improve incremental CVE database download from NVD. Rejected CVEs are
189      removed, configuration is kept up-to-date. The age threshold for
190      incremental update can be configured with :term:`CVE_DB_INCR_UPDATE_AGE_THRES`
191      variable.
192
193-  Prominent documentation updates:
194
195   -  Documentation for using the new ``devtool ide-sdk`` command and features.
196      See :ref:`using_devtool` for details.
197
198   -  New ":doc:`bitbake:bitbake-user-manual/bitbake-user-manual-ref-variables-context`"
199      section in the BitBake User Manual.
200
201   -  New ``make stylecheck`` command to run `Vale <https://vale.sh>`__,
202      to perform text style checks and comply with text writing standards in
203      the industry.
204
205   -  New ``make sphinx-lint`` command to run `sphinx-lint
206      <https://github.com/sphinx-contrib/sphinx-lint>`__. After customization,
207      this will allow us to enforce Sphinx syntax style choices.
208
209-  Miscellaneous changes:
210
211   -  Systemd's following :term:`PACKAGECONFIG` options were added:
212      ``cryptsetup-plugins``, ``no-ntp-fallback``, and ``p11kit``.
213
214   -  ``systemd-boot`` can, from now on, be compiled as ``native``, thus
215      providing ``ukify`` tool to build UKI images.
216
217   -  systemd: split bash completion for ``udevadm`` in a new
218      ``udev-bash-completion`` package.
219
220   -  The :ref:`ref-classes-go-vendor` class was added to support offline builds
221      (i.e., vendoring). It can also handle modules from the same repository,
222      taking into account their versions.
223
224   -  Disable strace support of bluetooth by default.
225
226   -  ``openssh`` now has a Systemd service: ``sshd.service``.
227
228Known Issues in 5.0
229~~~~~~~~~~~~~~~~~~~
230
231-  N/A
232
233Recipe License changes in 5.0
234~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
235
236The following corrections have been made to the :term:`LICENSE` values set by recipes:
237
238-  ``systemd``: make the scope of ``LGPL`` more accurate (``LGPL-2.1`` -> ``LGPL-2.1-or-later``)
239-  ``libsystemd``: set its own :term:`LICENSE` value (``LGPL-2.1-or-later``) to add more granularity
240
241Security Fixes in 5.0
242~~~~~~~~~~~~~~~~~~~~~
243
244Recipe Upgrades in 5.0
245~~~~~~~~~~~~~~~~~~~~~~
246
247-  go: update 1.20.10 -> 1.22.1
248
249Contributors to 5.0
250~~~~~~~~~~~~~~~~~~~
251
252Thanks to the following people who contributed to this release:
253
254Repositories / Downloads for Yocto-5.0
255~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
256
257