Browse Source

Help: Organize and revise 3.28 release notes

Add section headers similar to the 3.27 release notes and move each
individual bullet into an appropriate section.  Revise a few bullets.
Brad King 2 years ago
parent
commit
4eb2386901
1 changed files with 136 additions and 93 deletions
  1. 136 93
      Help/release/3.28.rst

+ 136 - 93
Help/release/3.28.rst

@@ -7,38 +7,106 @@ CMake 3.28 Release Notes
 
 Changes made since CMake 3.27 include the following.
 
-* CMake learned about Apple visionOS and its `xros` and `xrsimulator` SDKs.
+New Features
+============
+
+Languages
+---------
+
+* C++ 20 named modules are now supported by :ref:`Ninja Generators`
+  and :ref:`Visual Studio Generators` for VS 2022 and newer, in combination
+  with the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang
+  16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and newer.
+  See :manual:`cmake-cxxmodules(7)` for details.
+
+* ``HIP`` language code may now be compiled for NVIDIA GPUs
+  using the NVIDIA CUDA Compiler (NVCC).
+  See the :variable:`CMAKE_HIP_PLATFORM` variable.
+
+Platforms
+---------
+
+* On Apple platforms, ``.xcframework`` folders are now supported:
+
+  * The :command:`find_library` command now finds ``.xcframework`` folders.
+
+  * The :command:`target_link_libraries` command now supports
+    linking against a ``.xcframework`` folder.
+
+  * The :prop_tgt:`IMPORTED_LOCATION` target property of an imported
+    library target may now be the path to a ``.xcframework`` folder.
+
+* Apple visionOS and its ``xros`` and ``xrsimulator`` SDKs are now supported.
   Compiling for Apple visionOS can be requested by setting
-  :variable:`CMAKE_SYSTEM_NAME` to ``visionOS``. For more
-  information see :manual:`cmake-toolchains(7)`.
+  :variable:`CMAKE_SYSTEM_NAME` to ``visionOS``.
+  See :ref:`Cross Compiling for iOS, tvOS, visionOS, or watchOS`
+  for more information.
+
+Presets
+-------
+
+* :manual:`cmake-presets(7)` files now support schema version ``8``.
+  It adds support for a ``$schema`` field.
+
+Compilers
+---------
+
+* Cray Clang-based compilers are now supported with
+  :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` ``CrayClang``.
+
+* The OrangeC compiler is now supported with
+  :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` ``OrangeC``.
+
+Commands
+--------
+
+* The :command:`add_custom_command` and :command:`add_custom_target`
+  commands gained a ``JOB_SERVER_AWARE`` option.
+
+* The :command:`cmake_host_system_information` command gained a
+  ``MSYSTEM_PREFIX`` query for the installation prefix of a MSYS
+  or MinGW development environment on Windows hosts.
+
+* The :command:`set_property` command ``TEST`` mode gained a ``DIRECTORY``
+  option to set properties on tests in other directories.
+
+* The :command:`set_tests_properties` command gained a ``DIRECTORY``
+  option to set properties on tests in other directories.
+
+* The :command:`get_property` command ``TEST`` mode gained a ``DIRECTORY``
+  option to get properties on tests in other directories.
+
+* The :command:`get_test_property` command gained a ``DIRECTORY``
+  option to get properties on tests in other directories.
+
+Variables
+---------
 
 * The :envvar:`CMAKE_CROSSCOMPILING_EMULATOR` environment variable
   was added to initialize the :variable:`CMAKE_CROSSCOMPILING_EMULATOR`
   cache variable.
 
-* The :command:`add_custom_command` and :command:`add_custom_target`
-  commands gained a ``JOB_SERVER_AWARE`` option.
+* The :variable:`CMAKE_HIP_PLATFORM` variable was added to specify
+  the GPU platform for which HIP language sources are to be compiled
+  (``amd`` or ``nvidia``).
 
-* Cray Clang-based compilers are now supported with
-  :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` ``CrayClang``.
+Properties
+----------
 
-* C++ 20 named modules are now supported by :ref:`Ninja Generators`
-  and :ref:`Visual Studio Generators` for VS 2022 and newer, in combination
-  with the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang
-  16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and newer.
-  See :manual:`cmake-cxxmodules(7)` for details.
+* On imported shared libraries, the :prop_tgt:`IMPORTED_IMPLIB` target
+  property may now be used without :prop_tgt:`IMPORTED_LOCATION`.
+  This can be used to represent a stub library whose location should not
+  be added as a runtime search path to dependents that link it.
 
-* The :prop_tgt:`IOS_INSTALL_COMBINED` target property and corresponding
-  :variable:`CMAKE_IOS_INSTALL_COMBINED` variable have been deprecated.
-  Their functionality does not make sense on Apple Silicon hosts.
+* The :prop_tgt:`IMPORTED_LOCATION` property of a macOS framework
+  may now be a path to the ``.framework`` folder itself.
 
-* CTest may now take a :ref:`dynamically-generated resource spec file
-  <ctest-resource-dynamically-generated-spec-file>`, which can be specified by the
-  :prop_test:`GENERATED_RESOURCE_SPEC_FILE` test property.
+* The :prop_tgt:`XCODE_EMBED_RESOURCES <XCODE_EMBED_<type>>` target property
+  was added to tell the :generator:`Xcode` generator what targets to put in
+  the ``Embed Resources`` build phase.
 
-* The :command:`exec_program` command, which has been deprecated since CMake
-  3.0, has been removed by policy :policy:`CMP0153`. Use the
-  :command:`execute_process` command instead.
+Modules
+-------
 
 * The :module:`ExternalProject` module now includes the
   ``BUILD_JOB_SERVER_AWARE`` option for the
@@ -59,26 +127,65 @@ Changes made since CMake 3.27 include the following.
   :command:`add_subdirectory` call made by
   :command:`FetchContent_MakeAvailable` for the dependency.
 
-* Generated files, in targets using :ref:`file sets`, are now considered
-  private by default.  Generated public headers must be specified using
-  file sets.  This allows :ref:`Ninja Generators` to produce more
-  efficient build graphs.  See policy :policy:`CMP0154`.
-
 * The :module:`FindCURL` module gained a ``CURL_USE_STATIC_LIBS`` hint
   to select static libraries.
 
-* The :module:`FindEXPAT` module gained a ``EXPAT_USE_STATIC_LIBS`` hint
+* The :module:`FindEXPAT` module gained an ``EXPAT_USE_STATIC_LIBS`` hint
   to select static libraries.
 
-* The :module:`FindPkgConfig` module :command:`pkg_get_variable` function
+* The :module:`FindPkgConfig` module :command:`pkg_get_variable` command
   gained a ``DEFINE_VARIABLES`` option to pass variables to ``pkg-config``.
 
+Generator Expressions
+---------------------
+
+* The :manual:`generator expressions <cmake-generator-expressions(7)>`
+  :genex:`$<IF:...>`, :genex:`$<AND:...>`, and :genex:`$<OR:...>`
+  short-circuit to avoid unnecessary evaluation of parameters.
+
+CTest
+-----
+
+* CTest may now take a :ref:`dynamically-generated resource spec file
+  <ctest-resource-dynamically-generated-spec-file>`, which can be specified by the
+  :prop_test:`GENERATED_RESOURCE_SPEC_FILE` test property.
+
+Deprecated and Removed Features
+===============================
+
+* The :command:`exec_program` command, which has been deprecated
+  since CMake 3.0, has been removed by policy :policy:`CMP0153`.
+  Use the :command:`execute_process` command instead.
+
+* The :generator:`Visual Studio 11 2012` generator has been removed.
+
+* The :generator:`Visual Studio 12 2013` generator is now deprecated
+  and will be removed in a future version of CMake.
+
+* The :prop_tgt:`IOS_INSTALL_COMBINED` target property and corresponding
+  :variable:`CMAKE_IOS_INSTALL_COMBINED` variable have been deprecated.
+  Their functionality does not make sense on Apple Silicon hosts.
+
+* The :generator:`Xcode` generator will now issue a fatal error if
+  the Legacy Build System has been selected for Xcode 14 and
+  newer. Those Xcode versions dropped support for the Legacy Build
+  System and expect the project to be set-up for their current
+  Build System.
+
+Other Changes
+=============
+
+* Generated files, in targets using :ref:`file sets`, are now considered
+  private by default.  Generated public headers must be specified using
+  file sets.  This allows :ref:`Ninja Generators` to produce more
+  efficient build graphs.  See policy :policy:`CMP0154`.
+
 * The :command:`find_library`, :command:`find_path`, and :command:`find_file`
   commands no longer search in installation prefixes derived from the ``PATH``
   environment variable.  This behavior was added in CMake 3.3 to support
   MSYS and MinGW (``MSYSTEM``) development environments on Windows, but
   it can search undesired prefixes that happen to be in the ``PATH`` for
-  unrelated reasons.  Users that keep some ``<prefix>/bin`` directories in
+  unrelated reasons.  Users who keep some ``<prefix>/bin`` directories in
   the ``PATH`` just for their tools do not necessarily want any corresponding
   ``<prefix>/lib`` or ``<prefix>/include`` directories searched.
   The behavior was reverted for non-Windows platforms by CMake 3.6.
@@ -88,73 +195,9 @@ Changes made since CMake 3.27 include the following.
   :ref:`semicolon-separated list <CMake Language Lists>` of prefixes
   that are to be searched.
 
-* :manual:`generator expressions <cmake-generator-expressions(7)>`
-  short-circuit to avoid unnecessary evaluation of parameters.
-
-* ``HIP`` language code may now be compiled for NVIDIA GPUs
-  using the NVIDIA CUDA Compiler (NVCC).
-
-* The :variable:`CMAKE_HIP_PLATFORM` variable was added to specify
-  the GPU platform for which HIP language sources are to be compiled
-  (``amd`` or ``nvidia``).
-
-* The :command:`cmake_host_system_information` command gained a
-  ``MSYSTEM_PREFIX`` query for the installation prefix of a MSYS
-  or MinGW development environment on Windows hosts.
-
-* On imported shared libraries, the :prop_tgt:`IMPORTED_IMPLIB` target
-  property may now be used without :prop_tgt:`IMPORTED_LOCATION`.
-  This can be used to represent a stub library whose location should not
-  be added as a runtime search path to dependents that link it.
-
-* The :prop_tgt:`IMPORTED_LOCATION` property of a macOS framework may now be
-  the location of the framework folder itself.
-
 * When using MinGW tools in a ``MSYSTEM`` environment on Windows,
   the ``$MSYSTEM_PREFIX/local`` and ``$MSYSTEM_PREFIX`` prefixes are
   now added to :variable:`CMAKE_SYSTEM_PREFIX_PATH`.
 
-* The OrangeC compiler is now supported with
-  :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` ``OrangeC``.
-
-* :manual:`cmake-presets(7)` files now support schema version ``8``.
-  It adds support for a ``$schema`` field.
-
 * The precompiled Linux ``x86_64`` binaries provided on
   `cmake.org <https://cmake.org/download/>`_ now require GLIBC 2.17 or higher.
-
-* The :generator:`Visual Studio 11 2012` generator has been removed.
-
-* The ``TEST`` mode of the :command:`set_property` command gained a
-  ``DIRECTORY`` sub-option, which allows you to set properties on tests in
-  other directories.
-* The :command:`set_tests_properties` command gained a ``DIRECTORY``
-  sub-option, which allows you to set properties on tests in other
-  directories.
-* The ``TEST`` mode of the :command:`get_property` command gained a
-  ``DIRECTORY`` sub-option, which allows you to get properties on tests in
-  other directories.
-* The :command:`get_test_property` command gained a ``DIRECTORY``
-  sub-option, which allows you to get properties on tests in other
-  directories.
-
-* The :generator:`Visual Studio 12 2013` generator is now deprecated
-  and will be removed in a future version of CMake.
-
-* The :command:`find_library` command can now find ``.xcframework`` folders on
-  Apple platforms.
-
-* Targets may now link against an ``.xcframework`` folder in
-  :command:`target_link_libraries`.
-* The :prop_tgt:`IMPORTED_LOCATION` property of a target may now be an
-  ``.xcframework`` folder.
-
-* The :prop_tgt:`XCODE_EMBED_RESOURCES <XCODE_EMBED_<type>>` target property
-  was added to tell the :generator:`Xcode` generator what targets to put in
-  the ``Embed Resources`` build phase.
-
-* The :generator:`Xcode` generator will now issue a fatal error if
-  the Legacy Build System has been selected for Xcode 14 and
-  newer. Those Xcode versions dropped support for the Legacy Build
-  System and expect the project being set-up for their current
-  Build System.