Browse Source

Help: Organize and revise 3.30 release notes

Add section headers similar to the 3.29 release notes and move each
individual bullet into an appropriate section.  Revise a few bullets.

Drop the `CXX_MODULE_STD` release note since it is an experimental
feature.
Brad King 1 year ago
parent
commit
01436f6edd
1 changed files with 145 additions and 109 deletions
  1. 145 109
      Help/release/3.30.rst

+ 145 - 109
Help/release/3.30.rst

@@ -7,58 +7,80 @@ CMake 3.30 Release Notes
 
 Changes made since CMake 3.29 include the following.
 
-* On platforms that do not support shared libraries, the :command:`add_library`
-  command now rejects creation of shared libraries instead of automatically
-  converting them to static libraries.  See policy :policy:`CMP0164`.
+New Features
+============
 
-* The :cpack_gen:`CPack Inno Setup Generator` is now available
-  on non-Windows hosts.
+Presets
+-------
 
-* The :cpack_gen:`CPack NuGet Generator` can now generate dependency groups
-  for framework-specific dependencies. The :variable:`CPACK_NUGET_PACKAGE_TFMS`
-  was added to specify a list of framework TFMs for which groups should be
-  generated.
+* :manual:`cmake-presets(7)` files now support schema version ``9``.
+  ``include`` fields now expand all macros except ``$env{}`` and
+  preset-specific macros.
 
-* The :cpack_gen:`CPack WIX Generator` gained support for WiX Toolset v4.
-  See the :variable:`CPACK_WIX_VERSION` variable.
+File-Based API
+--------------
+
+* The :manual:`cmake-file-api(7)` "cmakeFiles" version 1 object's ``version``
+  field has been updated to 1.1.  It gained a ``globsDependent`` field to
+  report :command:`file(GLOB)` calls using ``CONFIGURE_DEPENDS``.
+
+Generators
+----------
+
+* :ref:`Visual Studio Generators` now add ``UseDebugLibraries`` indicators to
+  ``.vcxproj`` files to denote which configurations are debug configurations.
+  See policy :policy:`CMP0162`.
+
+Languages
+---------
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  now implements support for the ``cxx_std_26`` and ``cuda_std_26``
+  meta-features to indicate that the compiler mode must be at least C++26.
+  These meta-features were first documented by CMake 3.25, but were not fully
+  implemented.
+
+Commands
+--------
+
+* The :command:`add_library` command, on platforms that do not support shared
+  libraries, now rejects creation of shared libraries instead of automatically
+  converting them to static libraries.  See policy :policy:`CMP0164`.
+
+* The :command:`enable_language` command now fails with an error
+  if it is called before the first :command:`project` call.
+  See policy :policy:`CMP0165`.
 
 * The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands
   gained a ``TLS_VERSION <min>`` option to specify the minimum TLS
   version for connections to ``https://`` URLs.
 
-* The :variable:`CMAKE_TLS_VERSION` variable and :envvar:`CMAKE_TLS_VERSION`
-  environment variable were added to specify a default minimum TLS version
-  for connections to ``https://`` URLs by the :command:`file(DOWNLOAD)`
-  and :command:`file(UPLOAD)` commands.
+Variables
+---------
+
+* The :variable:`CMAKE_<LANG>_STANDARD_LATEST` variable was added to
+  describe the latest ``<LANG>`` language standard CMake supports for
+  the selected compiler.
 
 * The :envvar:`CMAKE_TLS_VERIFY` environment variable was added as a fallback
   to the existing :variable:`CMAKE_TLS_VERIFY` variable.  It specifies
   whether to verify the server certificate for ``https://`` URLs by default.
 
-* The :module:`ExternalProject` module's :command:`ExternalProject_Add`
-  command gained a ``TLS_VERSION <min>`` option, and support for the
-  :variable:`CMAKE_TLS_VERSION` variable and :envvar:`CMAKE_TLS_VERSION`
-  environment variable, to specify the minimum TLS version for connections
-  to ``https://`` URLs.
-
-* The :command:`ctest_submit` command and :option:`ctest -T Submit <ctest -T>`
-  step gained ``TLSVersion`` and ``TLSVerify`` options to control negotiation
-  with ``https://`` URLs.  See the :variable:`CTEST_TLS_VERSION` and
-  :variable:`CTEST_TLS_VERIFY` variables.
+* The :variable:`CMAKE_TLS_VERSION` variable and :envvar:`CMAKE_TLS_VERSION`
+  environment variable were added to specify a default minimum TLS version
+  for connections to ``https://`` URLs by the :command:`file(DOWNLOAD)`
+  and :command:`file(UPLOAD)` commands.
 
-* The :genex:`TARGET_PROPERTY` generator expression learned to evaluate
-  :ref:`custom transitive properties <Custom Transitive Properties>`
-  defined by new :prop_tgt:`TRANSITIVE_COMPILE_PROPERTIES` and
-  :prop_tgt:`TRANSITIVE_LINK_PROPERTIES` target properties.
+* The :variable:`CMAKE_VS_USE_DEBUG_LIBRARIES` variable and corresponding
+  :prop_tgt:`VS_USE_DEBUG_LIBRARIES` target property were added to explicitly
+  control ``UseDebugLibraries`` indicators in ``.vcxproj`` files.
 
-* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
-  now implements support for the ``cxx_std_26`` and ``cuda_std_26``
-  meta-features to indicate that the compiler mode must be at least C++26.
-  These meta-features were first documented by CMake 3.25, but were not fully
-  implemented.
+Properties
+----------
 
-* The :prop_tgt:`CXX_MODULE_STD` property may be used to control
-  ``import std;`` support for targets.
+* The :prop_sf:`GENERATED` source file property is now visible in all
+  directories.  See policy :policy:`CMP0163`.  Policy :policy:`CMP0118`'s
+  documentation has been revised to describe its actual effects.
 
 * The :prop_gbl:`PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE` global property
   can be used to propagate :variable:`CMAKE_PROJECT_TOP_LEVEL_INCLUDES` into
@@ -67,60 +89,40 @@ Changes made since CMake 3.29 include the following.
   This is primarily intended as a way for dependency providers to be enabled
   in such :command:`try_compile` calls.
 
-* Calling :command:`FetchContent_Populate` with just the name of a
-  dependency is now deprecated. Projects should call
-  :command:`FetchContent_MakeAvailable` instead. See policy :policy:`CMP0169`.
-  Calling :command:`FetchContent_Populate` with full population details
-  rather than just a dependency name remains fully supported.
-
-* The :command:`enable_language` command now fails with an error
-  if it is called before the first :command:`project` call.
-  See policy :policy:`CMP0165`.
-
-* When :variable:`FETCHCONTENT_FULLY_DISCONNECTED` is set to true,
-  :command:`FetchContent_MakeAvailable` and the single-argument form of
-  :command:`FetchContent_Populate` require that the dependency's source
-  directory has already been populated. CMake 3.29 and earlier did not
-  check this requirement, but it is now enforced, subject to policy
-  :policy:`CMP0170`.
-
-* :module:`FetchContent` now prefers to populate content directly rather
-  than using a separate sub-build. This may significantly improve configure
-  times on some systems (Windows especially, but also on macOS when using
-  the Xcode generator). Policy :policy:`CMP0168` provides backward
-  compatibility for those projects that still rely on using a sub-build for
-  content population.
+* A :prop_tgt:`VS_FILTER_PROPS` target property was added to tell
+  :ref:`Visual Studio Generators` to use a custom MSBuild filter
+  ``.props`` file.
 
-* The :manual:`cmake-file-api(7)` "cmakeFiles" version 1 object's ``version``
-  field has been updated to 1.1.
+Modules
+-------
 
-* The :manual:`cmake-file-api(7)` "cmakeFiles" version 1 object gained a
-  ``globsDependent`` field to report :command:`file(GLOB)` calls using
-  ``CONFIGURE_DEPENDS``.
+* The :module:`ExternalProject` module's :command:`ExternalProject_Add`
+  command gained a ``TLS_VERSION <min>`` option, and support for the
+  :variable:`CMAKE_TLS_VERSION` variable and :envvar:`CMAKE_TLS_VERSION`
+  environment variable, to specify the minimum TLS version for connections
+  to ``https://`` URLs.
 
 * The :module:`FindBacktrace` module now provides an imported target.
 
 * The :module:`FindBLAS` and :module:`FindLAPACK` modules gained
   support for ``libblastrampoline``.
 
-* The :module:`FindBoost` module has been removed by policy :policy:`CMP0167`.
-  Port projects to upstream Boost's ``BoostConfig.cmake`` package
-  configuration file, for which ``find_package(Boost)`` now searches.
-
 * The :module:`FindCUDAToolkit` module now provides a target for
   ``libnvfatbin`` and ``libnvfatbin_static``, if found.
 
 * The :module:`FindCUDAToolkit` module now searches the
-  :variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>` and
-  the environment variable :envvar:`CUDACXX` even when the CUDA
-  language isn't enabled.
+  :variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>`
+  variable and the :envvar:`CUDACXX` environment variable
+  even when the ``CUDA`` language isn't enabled.
 
-* The :module:`FindOpenMP` module gained a ``OpenMP_RUNTIME_MSVC``
+* The :module:`FindOpenMP` module gained an ``OpenMP_RUNTIME_MSVC``
   option to control the OpenMP runtime used with MSVC.
 
-* The :module:`FindPython`, :module:`FindPython2` and :module:`FindPython3`
-  modules offer, on ``Windows`` platform, a better support of the ``Python``
-  debug version:
+* The :module:`FindPython` and :module:`FindPython3` modules gained
+  support for the free threaded Python version.
+
+* The :module:`FindPython`, :module:`FindPython2`, and :module:`FindPython3`
+  modules, on Windows, now offer better support for the Python debug variant:
 
   * new variables:
 
@@ -133,67 +135,101 @@ Changes made since CMake 3.29 include the following.
     * ``Python::InterpreterDebug``
     * ``Python::InterpreterMultiConfig``
 
-  And the ``python_add_library()`` command manage the :prop_tgt:`DEBUG_POSTFIX`
-  target property based on the value of the ``Python_DEBUG_POSTFIX`` variable.
+  The ``python_add_library()`` command now manages the
+  :prop_tgt:`DEBUG_POSTFIX` target property based on the value
+  of the ``Python_DEBUG_POSTFIX`` variable.
 
-* The :module:`FindPython`, :module:`FindPython3` modules gained the support
-  of the free threaded python version.
+Generator Expressions
+---------------------
 
-* Generator expressions ``$<<LANG>_COMPILER_FRONTEND_VARIANT:...>`` were added that allow
-  access to the value of the associated :variable:`CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT`
-  variables.
+* The :genex:`<LANG>_COMPILER_FRONTEND_VARIANT <C_COMPILER_FRONTEND_VARIANT>`
+  family of generator expressions were added to access the value of the
+  associated :variable:`CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT` variables.
 
 * Link features, as used with the :genex:`LINK_LIBRARY` generator expression,
   gained the ability to have properties that describe their behavior by
   specifying the :variable:`CMAKE_LINK_LIBRARY_<FEATURE>_PROPERTIES` or
   :variable:`CMAKE_<LANG>_LINK_LIBRARY_<FEATURE>_PROPERTIES` variables.
 
+* The :genex:`QUOTE` generator expression was added to evaluate to ``"``.
+
+* The :genex:`TARGET_PROPERTY` generator expression learned to evaluate
+  :ref:`custom transitive properties <Custom Transitive Properties>`
+  defined by new :prop_tgt:`TRANSITIVE_COMPILE_PROPERTIES` and
+  :prop_tgt:`TRANSITIVE_LINK_PROPERTIES` target properties.
+
 * The :genex:`TARGET_PROPERTY` generator expression now evaluates target
   properties :prop_tgt:`INTERFACE_LINK_OPTIONS`,
   :prop_tgt:`INTERFACE_LINK_DIRECTORIES`, and
   :prop_tgt:`INTERFACE_LINK_DEPENDS` correctly by following private
   dependencies of static libraries.  See policy :policy:`CMP0166`.
 
-* The :genex:`$<QUOTE>` generator expression was added to evaluate to ``"``.
+CTest
+-----
 
-* The :variable:`CMAKE_<LANG>_STANDARD_LATEST` variable was added to
-  describe the latest supported standard of language ``<LANG>``.
+* The :command:`ctest_submit` command and :option:`ctest -T Submit <ctest -T>`
+  step gained ``TLSVersion`` and ``TLSVerify`` options to control negotiation
+  with ``https://`` URLs.  See the :variable:`CTEST_TLS_VERSION` and
+  :variable:`CTEST_TLS_VERIFY` variables.
 
-* :manual:`cmake-presets(7)` files now support schema version ``9``:
+CPack
+-----
 
-  * ``include`` fields now expand all macros except ``$env{}`` and
-    preset-specific macros.
+* The :cpack_gen:`CPack Inno Setup Generator` is now available
+  on non-Windows hosts.
 
-* The durations printed after "Configuring done" and "Generating done"
-  messages now reflect time spent in generator-specific steps, and
-  in a code model evaluation step at the beginning of generation that
-  was not previously captured.  Printed durations may appear longer
-  than in previous versions of CMake.
+* The :cpack_gen:`CPack NuGet Generator` can now generate dependency groups
+  for framework-specific dependencies. The :variable:`CPACK_NUGET_PACKAGE_TFMS`
+  variable was added to specify a list of target framework monikers (TFMs)
+  for which groups should be generated.
 
-* The :prop_sf:`GENERATED` source file property is now visible in all
-  directories.  See policy :policy:`CMP0163`.  Policy :policy:`CMP0118`'s
-  documentation has been revised to describe its actual effects.
+* The :cpack_gen:`CPack WIX Generator` gained support for WiX Toolset v4.
+  See the :variable:`CPACK_WIX_VERSION` variable.
+
+Deprecated and Removed Features
+===============================
+
+* The :module:`FindBoost` module has been removed by policy :policy:`CMP0167`.
+  Port projects to upstream Boost's ``BoostConfig.cmake`` package
+  configuration file, for which ``find_package(Boost)`` now searches.
+
+* Calling :command:`FetchContent_Populate` with just the name of a
+  dependency is now deprecated. Projects should call
+  :command:`FetchContent_MakeAvailable` instead. See policy :policy:`CMP0169`.
+  Calling :command:`FetchContent_Populate` with full population details
+  rather than just a dependency name remains fully supported.
+
+* The :generator:`Visual Studio 9 2008` generator has been removed.
+
+Other Changes
+=============
 
 * The precompiled Windows ``.msi`` installers provided on
   `cmake.org <https://cmake.org/download/>`_, when performing a fresh
   installation, now modify the system-wide ``PATH`` by default.
-  When replacing an existing installation, the ``PATH`` modification
-  preference is preserved by default.
+  When replacing an existing installation of 3.30 or later, the ``PATH``
+  modification preference is preserved by default.
 
 * The official ``.zip`` source archive provided on
   `cmake.org <https://cmake.org/download/>`_ now uses LF newlines,
   instead of CRLF newlines, for consistency with modern conventions.
 
-* The :generator:`Visual Studio 9 2008` generator has been removed.
-
-* A :prop_tgt:`VS_FILTER_PROPS` target property was added to tell
-  :ref:`Visual Studio Generators` for VS 2010 and above to use a
-  custom MSBuild filter ``.props`` file.
+* The durations printed after "Configuring done" and "Generating done"
+  messages now reflect time spent in generator-specific steps, and
+  in a code model evaluation step at the beginning of generation that
+  was not previously captured.  Printed durations may appear longer
+  than in previous versions of CMake, but are more accurate.
 
-* :ref:`Visual Studio Generators` now add ``UseDebugLibraries`` indicators to
-  ``.vcxproj`` files to denote which configurations are debug configurations.
-  See policy :policy:`CMP0162`.
+* :module:`FetchContent` now prefers to populate content directly rather
+  than using a separate sub-build. This may significantly improve configure
+  times on some systems (Windows especially, but also on macOS when using
+  the Xcode generator). Policy :policy:`CMP0168` provides backward
+  compatibility for those projects that still rely on using a sub-build for
+  content population.
 
-* The :variable:`CMAKE_VS_USE_DEBUG_LIBRARIES` variable and corresponding
-  :prop_tgt:`VS_USE_DEBUG_LIBRARIES` target property were added to explicitly
-  control ``UseDebugLibraries`` indicators in ``.vcxproj`` files.
+* When :variable:`FETCHCONTENT_FULLY_DISCONNECTED` is set to true,
+  :command:`FetchContent_MakeAvailable` and the single-argument form of
+  :command:`FetchContent_Populate` require that the dependency's source
+  directory has already been populated. CMake 3.29 and earlier did not
+  check this requirement, but it is now enforced, subject to policy
+  :policy:`CMP0170`.