[libcxx-commits] [libcxx] 4ef1393 - [libc++][doc] Updates the tasks to do for a release.

Mark de Wever via libcxx-commits libcxx-commits at lists.llvm.org
Tue May 23 10:02:24 PDT 2023


Author: Mark de Wever
Date: 2023-05-23T19:02:17+02:00
New Revision: 4ef1393e1b35049f0d35b0b74dbffeaa104288f0

URL: https://github.com/llvm/llvm-project/commit/4ef1393e1b35049f0d35b0b74dbffeaa104288f0
DIFF: https://github.com/llvm/llvm-project/commit/4ef1393e1b35049f0d35b0b74dbffeaa104288f0.diff

LOG: [libc++][doc] Updates the tasks to do for a release.

This is a followup of the review comments in D144499.

Reviewed By: ldionne, philnik, #libc

Differential Revision: https://reviews.llvm.org/D150585

Added: 
    libcxx/docs/ReleaseProcedure.rst

Modified: 
    libcxx/docs/Contributing.rst
    libcxx/docs/ReleaseNotes.rst
    libcxx/docs/index.rst
    libcxx/include/__memory/allocator_traits.h
    libcxx/include/__string/char_traits.h
    libcxx/test/libcxx/containers/sequences/vector/asan.pass.cpp
    libcxx/utils/ci/Dockerfile
    libcxx/utils/ci/buildkite-pipeline-clang.yml
    libcxx/utils/ci/buildkite-pipeline.yml
    libcxx/utils/generate_header_tests.py
    libcxx/utils/libcxx/test/features.py

Removed: 
    


################################################################################
diff  --git a/libcxx/docs/Contributing.rst b/libcxx/docs/Contributing.rst
index 90b5c8b09b815..2af7b0b2a977d 100644
--- a/libcxx/docs/Contributing.rst
+++ b/libcxx/docs/Contributing.rst
@@ -61,18 +61,6 @@ rule -- for very simple patches, use your judgement. The `"libc++" review group
 consists of frequent libc++ contributors with a good understanding of the project's
 guidelines -- if you would like to be added to it, please reach out on Discord.
 
-Post-release check list
-=======================
-
-After branching for an LLVM release:
-
-1. Update ``_LIBCPP_VERSION`` in ``libcxx/include/__config``
-2. Update the version number in ``libcxx/docs/conf.py``
-3. Update ``_LIBCPPABI_VERSION`` in ``libcxxabi/include/cxxabi.h``
-4. Update ``_LIBUNWIND_VERSION`` in ``libunwind/include/__libunwind_config.h``
-5. Update the list of supported clang versions in ``libcxx/docs/index.rst``
-6. Remove the in-progress warning from ``libcxx/docs/ReleaseNotes.rst``
-
 Exporting new symbols from the library
 ======================================
 

diff  --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst
index 3b7a168daee5a..831b1315c2830 100644
--- a/libcxx/docs/ReleaseNotes.rst
+++ b/libcxx/docs/ReleaseNotes.rst
@@ -103,6 +103,18 @@ Deprecations and Removals
 Upcoming Deprecations and Removals
 ----------------------------------
 
+LLVM 18
+~~~~~~~
+
+- The base template for ``std::char_traits`` has been marked as deprecated and
+  will be removed in LLVM 18. If you are using ``std::char_traits`` with types
+  other than ``char``, ``wchar_t``, ``char8_t``, ``char16_t``, ``char32_t`` or
+  a custom character type for which you specialized ``std::char_traits``, your code
+  will stop working when we remove the base template. The Standard does not
+  mandate that a base template is provided, and such a base template is bound
+  to be incorrect for some types, which could currently cause unexpected
+  behavior while going undetected.
+
 - The ``_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED`` macro will not be honored anymore in LLVM 18.
   Please see the updated documentation about the safe libc++ mode and in particular the ``_LIBCPP_VERBOSE_ABORT``
   macro for details.

diff  --git a/libcxx/docs/ReleaseProcedure.rst b/libcxx/docs/ReleaseProcedure.rst
new file mode 100644
index 0000000000000..f7d54f89a1011
--- /dev/null
+++ b/libcxx/docs/ReleaseProcedure.rst
@@ -0,0 +1,77 @@
+.. _ReleaseProcedure:
+
+=================
+Release procedure
+=================
+
+The LLVM project creates a new release twice a year following a fixed
+`schedule <https://llvm.org/docs/HowToReleaseLLVM.html#annual-release-schedule>`__.
+This page describes the libc++ procedure for that release.
+
+Prepare the release
+===================
+
+This is done by the libc++ developers.
+
+It should be finished before the Release managers start branching the new
+release:
+
+* Make sure the ``libcxx/docs/ReleaseNotes.rst`` is up to date. Typically
+  this file is updated when contributing patches. Still there might be some
+  information added regarding the general improvements of larger projects.
+
+* Make sure the deprecated features on this page are up to date. Typically a
+  new deprecated feature should be added to the release notes and this page.
+  However this should be verified so removals won't get forgotten.
+
+* Make sure the latest Unicode version is used. The C++ Standard
+  `refers to the Unicode Standard <https://wg21.link/intro.refs#1.10>`__
+
+  ``The Unicode Consortium. The Unicode Standard. Available from: https://www.unicode.org/versions/latest/``
+
+  Typically the Unicode Consortium has one release per year. The libc++
+  format library uses the Unicode Standard. Libc++ should be updated to the
+  latest Unicode version. Updating means using the latest data files and, if
+  needed, adapting the code to changes in the Unicode Standard.
+
+* Make sure all libc++ supported compilers in the CI are updated to their
+  latest release.
+
+Branching
+=========
+
+This is done by the LLVM Release managers.
+
+After branching for an LLVM release:
+
+1. Update ``_LIBCPP_VERSION`` in ``libcxx/include/__config``
+2. Update the version number in ``libcxx/docs/conf.py``
+3. Update ``_LIBCPPABI_VERSION`` in ``libcxxabi/include/cxxabi.h``
+4. Update ``_LIBUNWIND_VERSION`` in ``libunwind/include/__libunwind_config.h``
+5. Remove the in-progress warning from ``libcxx/docs/ReleaseNotes.rst``
+
+Post branching
+==============
+
+This is done by the libc++ developers.
+
+After branching it takes a couple of days before the new LLVM ToT version is
+available on `<https://apt.llvm.org>`_. Once it is available the pre-commit CI
+can start using the new ToT version. In order to make sure patches can be
+backported to the release branch the oldest compiler is not removed yet.
+
+The section ``Upcoming Deprecations and Removals`` is cleared by the release
+managers. Copy back the items that were in this section.
+
+The items that need changing are marked with ``LLVM POST-BRANCH``.
+
+Post release
+============
+
+This is done by the libc++ developers.
+
+Support for the ToT - 3 version is removed:
+
+- Search for ``LLVM RELEASE`` and address their comments
+- Search for test that have ``UNSUPPORTED`` or ``XFAIL`` for the no longer supported version
+- Search for ``TODO(LLVM-<ToT>)`` and address their comments

diff  --git a/libcxx/docs/index.rst b/libcxx/docs/index.rst
index 337440427d84e..773030e6e562c 100644
--- a/libcxx/docs/index.rst
+++ b/libcxx/docs/index.rst
@@ -39,6 +39,7 @@ Getting Started with libc++
    BuildingLibcxx
    TestingLibcxx
    Contributing
+   ReleaseProcedure
    Status/Cxx14
    Status/Cxx17
    Status/Cxx20
@@ -94,6 +95,9 @@ reasons, but some of the major ones are:
   Further, both projects are apparently abandoned: STLport 5.2.1 was
   released in Oct'08, and STDCXX 4.2.1 in May'08.
 
+..
+  LLVM RELEASE bump version
+
 .. _SupportedPlatforms:
 
 Platform and Compiler Support

diff  --git a/libcxx/include/__memory/allocator_traits.h b/libcxx/include/__memory/allocator_traits.h
index 4ed44165f916b..4658098d64c9d 100644
--- a/libcxx/include/__memory/allocator_traits.h
+++ b/libcxx/include/__memory/allocator_traits.h
@@ -412,7 +412,7 @@ struct __asan_annotate_container_with_allocator
 #   if defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER >= 1600
       : true_type {};
 #   else
-      // TODO LLVM18: Remove the special-casing
+      // TODO(LLVM-18): Remove the special-casing
       : false_type {};
 #   endif
 

diff  --git a/libcxx/include/__string/char_traits.h b/libcxx/include/__string/char_traits.h
index a2332829b4146..c4dfcafc9749c 100644
--- a/libcxx/include/__string/char_traits.h
+++ b/libcxx/include/__string/char_traits.h
@@ -73,7 +73,7 @@ exposition-only to document what members a char_traits specialization should pro
 
 //
 // Temporary extension to provide a base template for std::char_traits.
-// TODO: Remove in LLVM 18.
+// TODO(LLVM-18): Remove this class.
 //
 template <class _CharT>
 struct _LIBCPP_DEPRECATED_("char_traits<T> for T not equal to char, wchar_t, char8_t, char16_t or char32_t is non-standard and is provided for a temporary period. It will be removed in LLVM 18, so please migrate off of it.")

diff  --git a/libcxx/test/libcxx/containers/sequences/vector/asan.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/asan.pass.cpp
index 5b58de0c86ac0..588ce2a3d17ed 100644
--- a/libcxx/test/libcxx/containers/sequences/vector/asan.pass.cpp
+++ b/libcxx/test/libcxx/containers/sequences/vector/asan.pass.cpp
@@ -30,7 +30,7 @@ void do_exit() {
 int main(int, char**)
 {
 #if TEST_STD_VER >= 11 && TEST_CLANG_VER >= 1600
-  // TODO LLVM18: Remove the special-casing
+  // TODO(LLVM-18): Remove the special-casing
   {
     typedef int T;
     typedef cpp17_input_iterator<T*> MyInputIter;

diff  --git a/libcxx/utils/ci/Dockerfile b/libcxx/utils/ci/Dockerfile
index 73b9c4d27c7a0..d5983ead8588c 100644
--- a/libcxx/utils/ci/Dockerfile
+++ b/libcxx/utils/ci/Dockerfile
@@ -66,6 +66,7 @@ RUN locale-gen
 # LLVM 15, we still need to have Clang 12 in this Docker image because the LLVM
 # 14 release branch CI uses it. The tip-of-trunk CI will never use Clang 12,
 # though.
+# LLVM POST-BRANCH bump version
 ENV LLVM_HEAD_VERSION=17
 RUN apt-get update && apt-get install -y lsb-release wget software-properties-common
 RUN wget https://apt.llvm.org/llvm.sh -O /tmp/llvm.sh
@@ -84,12 +85,12 @@ RUN apt-get update && apt-get install -y clang-tools-$(($LLVM_HEAD_VERSION - 3))
 RUN apt-get update && apt-get install -y clang-format-$(($LLVM_HEAD_VERSION - 2)) clang-format-$(($LLVM_HEAD_VERSION - 1))
 
 # Install clang-tidy
-# TODO LLVM 17 revert D148831 to only install $(($LLVM_HEAD_VERSION - 1)) and $LLVM_HEAD_VERSION
+# TODO(LLVM-17) revert D148831 to only install $(($LLVM_HEAD_VERSION - 1)) and $LLVM_HEAD_VERSION
 # The usage of the ToT version is needed due to module issues with Clang 16
 RUN apt-get update && apt-get install -y clang-tidy-$(($LLVM_HEAD_VERSION - 2)) clang-tidy-$(($LLVM_HEAD_VERSION - 1)) clang-tidy-$LLVM_HEAD_VERSION
 
 # Install llvm-dev and libclang-dev to compile custom clang-tidy checks
-# TODO LLVM 17 revert D148831 to only install $(($LLVM_HEAD_VERSION - 1)) and $LLVM_HEAD_VERSION
+# TODO(LLVM-17) revert D148831 to only install $(($LLVM_HEAD_VERSION - 1)) and $LLVM_HEAD_VERSION
 # The usage of the ToT version is needed due to module issues with Clang 16
 RUN apt-get update && apt-get install -y llvm-$(($LLVM_HEAD_VERSION - 2))-dev llvm-$(($LLVM_HEAD_VERSION - 1))-dev     llvm-$LLVM_HEAD_VERSION-dev \
                                      libclang-$(($LLVM_HEAD_VERSION - 2))-dev libclang-$(($LLVM_HEAD_VERSION - 1))-dev libclang-$LLVM_HEAD_VERSION-dev

diff  --git a/libcxx/utils/ci/buildkite-pipeline-clang.yml b/libcxx/utils/ci/buildkite-pipeline-clang.yml
index 073a74ae4a6ee..c471f36e90ca6 100644
--- a/libcxx/utils/ci/buildkite-pipeline-clang.yml
+++ b/libcxx/utils/ci/buildkite-pipeline-clang.yml
@@ -14,6 +14,7 @@
 # in various configurations.
 #
 env:
+    # LLVM RELEASE bump version
     LLVM_HEAD_VERSION: "17"
 steps:
   - label: "Building clang"

diff  --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index e269e4935709e..3d53df7944e27 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -23,6 +23,9 @@
 # Theses numbers are available in all runners, making it easier to update the
 # version number.
 env:
+    # LLVM POST-BRANCH bump version
+    # LLVM POST-BRANCH add compiler test for ToT - 1, e.g. "Clang 17"
+    # LLVM RELEASE bump remove compiler ToT - 3, e.g. "Clang 15"
     LLVM_STABLE_VERSION: "16"
     LLVM_HEAD_VERSION: "17"
     GCC_STABLE_VERSION: "12"
@@ -265,7 +268,7 @@ steps:
     env:
         CC: "clang-15"
         CXX: "clang++-15"
-        # TODO LLVM18: Enable clang-tidy
+        # TODO(LLVM-18): Enable clang-tidy
         # ENABLE_CLANG_TIDY: "On"
     agents:
       queue: "libcxx-builders"

diff  --git a/libcxx/utils/generate_header_tests.py b/libcxx/utils/generate_header_tests.py
index db6a17b63931a..f1664ad081f6b 100755
--- a/libcxx/utils/generate_header_tests.py
+++ b/libcxx/utils/generate_header_tests.py
@@ -19,7 +19,7 @@
 
     "filesystem": "!defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)",
 
-    # TODO LLVM17: simplify this to __cplusplus >= 202002L
+    # TODO(LLVM-17): simplify this to __cplusplus >= 202002L
     "coroutine": "(defined(__cpp_impl_coroutine) && __cpp_impl_coroutine >= 201902L) || (defined(__cpp_coroutines) && __cpp_coroutines >= 201703L)",
 
     "clocale": "!defined(_LIBCPP_HAS_NO_LOCALIZATION)",

diff  --git a/libcxx/utils/libcxx/test/features.py b/libcxx/utils/libcxx/test/features.py
index dd5163f844453..64e33e5ea6a47 100644
--- a/libcxx/utils/libcxx/test/features.py
+++ b/libcxx/utils/libcxx/test/features.py
@@ -26,9 +26,11 @@ def _getSuitableClangTidy(cfg):
       return None
 
     # TODO This should be the last stable release.
+    # LLVM RELEASE bump to latest stable version
     if runScriptExitCode(cfg, ['clang-tidy-16 --version']) == 0:
       return 'clang-tidy-16'
 
+    # LLVM RELEASE bump version
     if int(re.search('[0-9]+', commandOutput(cfg, ['clang-tidy --version'])).group()) >= 16:
       return 'clang-tidy'
 


        


More information about the libcxx-commits mailing list