diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -767,7 +767,7 @@ config_define(0 _LIBCPP_ENABLE_HARDENED_MODE_DEFAULT) config_define(0 _LIBCPP_ENABLE_DEBUG_MODE_DEFAULT) endif() -# TODO(LLVM 18): Remove this after branching for LLVM 17, this is a simple +# TODO(LLVM 19): Remove this after branching for LLVM 18, this is a simple # courtesy for vendors to be notified about this change. if (LIBCXX_ENABLE_ASSERTIONS) message(FATAL_ERROR "LIBCXX_ENABLE_ASSERTIONS has been replaced by LIBCXX_HARDENING_MODE=hardened") diff --git a/libcxx/docs/ReleaseNotes/17.rst b/libcxx/docs/ReleaseNotes/17.rst --- a/libcxx/docs/ReleaseNotes/17.rst +++ b/libcxx/docs/ReleaseNotes/17.rst @@ -87,9 +87,6 @@ ``std::ranges::find`` are now forwarding to ``std::memcmp`` for trivially equality comparable types, which can lead up to 40x performance improvements. -- ``std::string_view`` now provides iterators that check for out-of-bounds accesses when the safe - libc++ mode is enabled. - - The performance of ``dynamic_cast`` on its hot paths is greatly improved and is as efficient as the ``libsupc++`` implementation. Note that the performance improvements are shipped in ``libcxxabi``. @@ -128,14 +125,8 @@ Deprecations and Removals ------------------------- -- The "safe" mode is replaced by the hardened mode in this release. The ``LIBCXX_ENABLE_ASSERTIONS`` CMake variable is - deprecated and setting it will trigger an error; use ``LIBCXX_HARDENING_MODE`` instead. Similarly, the - ``_LIBCPP_ENABLE_ASSERTIONS`` macro is deprecated and setting it to ``1`` now enables the hardened mode. See - ``libcxx/docs/Hardening.rst`` for more details. - -- The legacy debug mode has been removed in this release. Setting the macro ``_LIBCPP_ENABLE_DEBUG_MODE`` to ``1`` now - enables the new debug mode which is part of hardening (see the "Improvements and New Features" section above). The - ``LIBCXX_ENABLE_DEBUG_MODE`` CMake variable has been removed. For additional context, refer to the `Discourse post +- The legacy debug mode has been removed in this release. The ``LIBCXX_ENABLE_DEBUG_MODE`` CMake variable has been + removed. For additional context, refer to the `Discourse post `_. - The ```` header has been removed in this release. The ```` header diff --git a/libcxx/docs/ReleaseNotes/18.rst b/libcxx/docs/ReleaseNotes/18.rst --- a/libcxx/docs/ReleaseNotes/18.rst +++ b/libcxx/docs/ReleaseNotes/18.rst @@ -35,6 +35,15 @@ What's New in Libc++ 18.0.0? ============================== +- The "safe" mode is replaced by the hardened mode in this release. The + ``LIBCXX_ENABLE_ASSERTIONS`` CMake variable is deprecated and setting it will + trigger an error; use ``LIBCXX_HARDENING_MODE`` instead. Similarly, the + ``_LIBCPP_ENABLE_ASSERTIONS`` macro is deprecated and setting it to ``1`` now + enables the hardened mode. See ``libcxx/docs/Hardening.rst`` for more details. + +- A new debug mode has been added, replacing the legacy debug mode that was + removed in the LLVM 17 release. See ``libcxx/docs/Hardening.rst`` for more + details. Implemented Papers ------------------ diff --git a/libcxx/include/__config b/libcxx/include/__config --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -202,7 +202,7 @@ // HARDENING { -// TODO(hardening): remove this in LLVM 18. +// TODO(hardening): remove this in LLVM 19. // This is for backward compatibility -- make enabling `_LIBCPP_ENABLE_ASSERTIONS` (which predates hardening modes) // equivalent to setting the hardened mode. # ifdef _LIBCPP_ENABLE_ASSERTIONS diff --git a/libcxx/test/libcxx/assertions/modes/enabling_assertions_enables_hardened_mode.pass.cpp b/libcxx/test/libcxx/assertions/modes/enabling_assertions_enables_hardened_mode.pass.cpp --- a/libcxx/test/libcxx/assertions/modes/enabling_assertions_enables_hardened_mode.pass.cpp +++ b/libcxx/test/libcxx/assertions/modes/enabling_assertions_enables_hardened_mode.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// TODO(hardening): remove in LLVM 18. +// TODO(hardening): remove in LLVM 19. // This test ensures that enabling assertions now enables the hardened mode. // `check_assertion.h` is only available starting from C++11 and requires Unix headers.