blob: 6bf62b7fa4ae130555bd4472f905a8310f97ffcd [file] [log] [blame]
==========================
Libc++ 9.0.0 Release Notes
==========================
.. contents::
:local:
:depth: 2
Written by the `Libc++ Team <https://libcxx.llvm.org>`_
Introduction
============
This document contains the release notes for the libc++ C++ Standard Library,
part of the LLVM Compiler Infrastructure, release 9.0.0. Here we describe the
status of libc++ in some detail, including major improvements from the previous
release and new feature work. For the general LLVM release notes, see `the LLVM
documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may
be downloaded from the `LLVM releases web site <https://llvm.org/releases/>`_.
For more information about libc++, please see the `Libc++ Web Site
<https://libcxx.llvm.org>`_ or the `LLVM Web Site <https://llvm.org>`_.
What's New in Libc++ 9.0.0?
===========================
Fixes
-----
* Minor fixes to ``std::chrono`` operators.
* libc++ now correctly handles Objective-C++ ARC qualifiers in ``std::is_pointer``.
* ``std::span`` general updates and fixes.
* Updates to the ``std::abs`` implementation.
* ``std::to_chars`` now adds leading zeros.
* Ensure ``std::tuple`` is trivially constructible.
* ``std::aligned_union`` now works in C++03.
* Output of nullptr to ``std::basic_ostream`` is formatted properly.
Features
--------
* Implemented P0608: sane variant converting constructor.
* Added ``ssize`` function.
* Added ``front`` and ``back`` methods in ``std::span``.
* ``std::is_unbounded_array`` and ``std::is_bounded_array`` added to type traits.
* ``std::atomic`` now includes many new features and specialization including improved Freestanding support.
* Added ``std::midpoint`` and ``std::lerp`` math functions.
* Added the function ``std::is_constant_evaluated``.
* Erase-like algorithms now return size type.
* Added ``contains`` method to container types.
* ``std::swap`` is now a constant expression.
Updates
-------
* libc++ dropped support for GCC 4.9; we now support GCC 5.1 and above.
* libc++ added explicit support for WebAssembly System Interface (WASI).
* Progress towards full support of rvalues and variadics in C++03 mode. ``std::move`` and ``std::forward`` now both work in C++03 mode.