[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