diff options
author | Louis Dionne <ldionne.2@gmail.com> | 2022-07-21 12:48:14 -0400 |
---|---|---|
committer | Louis Dionne <ldionne.2@gmail.com> | 2022-07-21 12:57:27 -0400 |
commit | 448220a884957b50b27f126e466ee33b3350ca74 (patch) | |
tree | 992742185f82c96fd88735352218b892ba143790 /libcxx | |
parent | 119d22310bd622d4b39e9760667b6fa58d15a8c5 (diff) |
[libc++] Reorganize release notes
In particular, create sections for deprecations and removals, and also
for announcing upcoming deprecations/removals.
Diffstat (limited to 'libcxx')
-rw-r--r-- | libcxx/docs/ReleaseNotes.rst | 106 |
1 files changed, 56 insertions, 50 deletions
diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst index e31191ad2e46..e958d72e39ae 100644 --- a/libcxx/docs/ReleaseNotes.rst +++ b/libcxx/docs/ReleaseNotes.rst @@ -76,12 +76,12 @@ Implemented Papers - P1970R2 - Consistency for ``size()`` functions: Add ``ranges::ssize`` - P1983R0 - Wording for GB301, US296, US292, US291, and US283 -New Features ------------- +Improvements and New Features +----------------------------- -- `pop_heap` now uses an algorithm known as "bottom-up heapsort" or +- ``std::pop_heap`` now uses an algorithm known as "bottom-up heapsort" or "heapsort with bounce" to reduce the number of comparisons, and rearranges - elements using move-assignment instead of `swap`. + elements using move-assignment instead of ``std::swap``. - Libc++ now supports a variety of assertions that can be turned on to help catch undefined behavior in user code. This new support is now separate from the old @@ -109,31 +109,24 @@ New Features argument for the formatting functions. This change causes bit fields to become invalid arguments for the formatting functions. -API Changes ------------ +- The ``_LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_VOID_SPECIALIZATION`` macro has been added to allow + re-enabling the ``allocator<void>`` specialization. When used in conjunction with + ``_LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS``, this ensures that the members of + ``allocator<void>`` removed in C++20 can be accessed. -- The ``_LIBCPP_ABI_UNSTABLE`` macro has been removed in favour of setting - ``_LIBCPP_ABI_VERSION=2``. This should not have any impact on users because - they were not supposed to set ``_LIBCPP_ABI_UNSTABLE`` manually, however we - still feel that it is worth mentioning in the release notes in case some users - had been doing it. +- ``boyer_moore_searcher`` and ``boyer_moore_horspool_searcher`` have been implemented. + +- ``vector<bool>::const_reference``, ``vector<bool>::const_iterator::reference`` + and ``bitset::const_reference`` are now aliases for `bool` in the unstable ABI, + which improves libc++'s conformance to the Standard. + +Deprecations and Removals +------------------------- - The header ``<experimental/filesystem>`` has been removed. Instead, use ``<filesystem>`` header. The associated macro ``_LIBCPP_DEPRECATED_EXPERIMENTAL_FILESYSTEM`` has been removed too. -- Libc++ is getting ready to remove unnecessary transitive inclusions. This may - break your code in the future. To future-proof your code to these removals, - please compile your code with ``_LIBCPP_REMOVE_TRANSITIVE_INCLUDES`` defined - and fix any compilation error resulting from missing includes. - -- The integer distributions ``binomial_distribution``, ``discrete_distribution``, - ``geometric_distribution``, ``negative_binomial_distribution``, ``poisson_distribution``, - and ``uniform_int_distribution`` now conform to the Standard by rejecting - template parameter types other than ``short``, ``int``, ``long``, ``long long``, - (as an extension) ``__int128_t``, and the unsigned versions thereof. - In particular, ``uniform_int_distribution<int8_t>`` is no longer supported. - - The C++14 function ``std::quoted(const char*)`` is no longer supported in C++03 or C++11 modes. @@ -141,30 +134,6 @@ API Changes supported anymore. Please migrate to using the new support for :ref:`assertions <assertions-mode>` instead. -- ``vector<bool>::const_reference``, ``vector<bool>::const_iterator::reference`` - and ``bitset::const_reference`` are now aliases for `bool` in the unstable ABI. - -- The ``_LIBCPP_DEBUG`` macro is not supported anymore. It will be honoured until - LLVM 16, and then it will be an error to define that macro. To enable basic - assertions (previously ``_LIBCPP_DEBUG=0``), please use ``_LIBCPP_ENABLE_ASSERTIONS=1``. - To enable the debug mode (previously ``_LIBCPP_DEBUG=1|2``), please ensure that - the library has been built with support for the debug mode, and it will be - enabled automatically (no need to define ``_LIBCPP_DEBUG``). - -- The ``_LIBCPP_DISABLE_EXTERN_TEMPLATE`` macro is not honored anymore when defined by - users of libc++. Instead, users not wishing to take a dependency on libc++ should link - against the static version of libc++, which will result in no dependency being - taken against the shared library. - -- The ``_LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_VOID_SPECIALIZATION`` macro has been added to allow - re-enabling the ``allocator<void>`` specialization. When used in conjunction with - ``_LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS``, this ensures that the members of - ``allocator<void>`` removed in C++20 can be accessed. - -- The experimental versions of ``boyer_moore_searcher`` and ``boyer_moore_horspool_searcher`` - will be removed in LLVM 17. You can disable the deprecation warnings by defining - ``_LIBCPP_NO_EXPERIMENTAL_DEPRECATION_WARNING_SEARCHERS``. - - ``std::function`` has been removed in C++03. If you are using it, please remove usages or upgrade to C++11 or later. It is possible to re-enable ``std::function`` in C++03 by defining ``_LIBCPP_ENABLE_CXX03_FUNCTION``. This option will be removed in LLVM 16. @@ -179,10 +148,47 @@ API Changes To disable deprecation warnings you have to define ``_LIBCPP_DISABLE_DEPRECATION_WARNINGS``. Note that this disables all deprecation warnings. -- ``boyer_moore_searcher`` and ``boyer_moore_horspool_searcher`` have been implemented. +- The ``_LIBCPP_DISABLE_EXTERN_TEMPLATE`` macro is not honored anymore when defined by + users of libc++. Instead, users not wishing to take a dependency on libc++ should link + against the static version of libc++, which will result in no dependency being + taken against the shared library. + +- The ``_LIBCPP_ABI_UNSTABLE`` macro has been removed in favour of setting + ``_LIBCPP_ABI_VERSION=2``. This should not have any impact on users because + they were not supposed to set ``_LIBCPP_ABI_UNSTABLE`` manually, however we + still feel that it is worth mentioning in the release notes in case some users + had been doing it. + +- The integer distributions ``binomial_distribution``, ``discrete_distribution``, + ``geometric_distribution``, ``negative_binomial_distribution``, ``poisson_distribution``, + and ``uniform_int_distribution`` now conform to the Standard by rejecting + template parameter types other than ``short``, ``int``, ``long``, ``long long``, + (as an extension) ``__int128_t``, and the unsigned versions thereof. + In particular, ``uniform_int_distribution<int8_t>`` is no longer supported. + +Upcoming Deprecations and Removals +---------------------------------- + +- The ``_LIBCPP_DEBUG`` macro is not supported anymore. It will be honoured until + LLVM 16, and then it will be an error to define that macro. To enable basic + assertions (previously ``_LIBCPP_DEBUG=0``), please use ``_LIBCPP_ENABLE_ASSERTIONS=1``. + To enable the debug mode (previously ``_LIBCPP_DEBUG=1|2``), please ensure that + the library has been built with support for the debug mode, and it will be + enabled automatically (no need to define ``_LIBCPP_DEBUG``). + +- The experimental versions of ``boyer_moore_searcher`` and ``boyer_moore_horspool_searcher`` + will be removed in LLVM 17. You can disable the deprecation warnings by defining + ``_LIBCPP_NO_EXPERIMENTAL_DEPRECATION_WARNING_SEARCHERS``. + +- The implementation of the Coroutines TS in ``std::experimental`` will be removed in LLVM 16. + +- Libc++ is getting ready to remove unnecessary transitive inclusions. This may + break your code in the future. To future-proof your code to these removals, + please compile your code with ``_LIBCPP_REMOVE_TRANSITIVE_INCLUDES`` defined + and fix any compilation error resulting from missing includes. -ABI Changes ------------ +ABI Affecting Changes +--------------------- - The ``_LIBCPP_ABI_USE_CXX03_NULLPTR_EMULATION`` macro controlling whether we use an emulation for ``std::nullptr_t`` in C++03 mode has been removed. After this change, |