Release procedure¶
The LLVM project creates a new release twice a year following a fixed schedule. This page describes the libc++ procedure for that release.
Prepare the release¶
It should be finished before the Release managers start branching the new release:
Make sure
libcxx/docs/ReleaseNotes/<VERSION>.rstis 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
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.
After the branch is created¶
After branching for an LLVM release:
Update
_LIBCPP_VERSIONinlibcxx/include/__configUpdate the version number in
libcxx/docs/conf.pyUpdate
_LIBCPPABI_VERSIONinlibcxxabi/include/cxxabi.hUpdate
_LIBUNWIND_VERSIONinlibunwind/include/__libunwind_config.hCreate a release notes file for the next release from the previous ones and point to it from
libcxx/docs/ReleaseNotes.rst. Remove entries that do not apply anymore, but keep in mind that some entries (such as upcoming deprecations) may still apply, may need rewording and may also require follow up PRs to implement.Update the set of runners targeted by the CI on the release branch to
llvm-premerge-libcxx-release-runners, and make sure that runner set is using the appropriate image. This ensures that the release branch CI keeps working even if the main branch starts using newer images.Update the pre-commit CI to use the new ToT version of Clang available from Compiler Explorer. In order to make sure patches can be backported to the release branch, we don’t remove the oldest compiler yet.
Post release¶
Once the release is done and cherry-picks are not expected, we remove support for the ToT - 3 version Clang. We also perform associated cleanups:
Search for
LLVM RELEASEand address their commentsSearch for test that have
UNSUPPORTEDorXFAILfor the no longer supported versionSearch for
TODO(LLVM-<ToT>)and address their comments