Skip to content

Commit

Permalink
[Clang][docs] Update the release notes page to the new skeleton
Browse files Browse the repository at this point in the history
  • Loading branch information
royjacobson committed Feb 15, 2023
1 parent 6313ece commit f5aa8d1
Showing 1 changed file with 107 additions and 129 deletions.
236 changes: 107 additions & 129 deletions clang/docs/ReleaseNotes.rst
Expand Up @@ -13,7 +13,7 @@ Written by the `LLVM Team <https://llvm.org/>`_
.. warning::
These are in-progress notes for the upcoming Clang |version| release.
Release notes for previous releases can be found on
`the Download Page <https://releases.llvm.org/download.html>`_.
`the Releases Page <https://llvm.org/releases>`_.

Introduction
============
Expand All @@ -23,59 +23,59 @@ frontend, part of the LLVM Compiler Infrastructure, release |release|. Here we
describe the status of Clang 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/>`_.
documentation <https://llvm.org/docs/ReleaseNotes.html>`_. For the libc++ release notes,
see `this page <https://libcxx.llvm.org/ReleaseNotes.html>`_. All LLVM releases
may be downloaded from the `LLVM releases web site <https://llvm.org/releases/>`_.

For more information about Clang or LLVM, including information about the
latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or the
`LLVM Web Site <https://llvm.org>`_.

Note that if you are reading this file from a Git checkout or the
main Clang web page, this document applies to the *next* release, not
the current one. To see the release notes for a specific release, please
see the `releases page <https://llvm.org/releases/>`_.

Potentially Breaking Changes
============================
These changes are ones which we think may surprise users when upgrading to
Clang |release| because of the opportunity they pose for disruption to existing
code bases.


C/C++ Language Potentially Breaking Changes
-------------------------------------------

C++ Specific Potentially Breaking Changes
-----------------------------------------

ABI Changes in This Version
---------------------------

What's New in Clang |release|?
==============================
Some of the major new features and improvements to Clang are listed
here. Generic improvements to Clang as a whole or to its underlying
infrastructure are described first, followed by language-specific
sections with improvements to Clang's support for those languages.

Major New Features
------------------
C++ Language Changes
--------------------
- Improved ``-O0`` code generation for calls to ``std::forward_like``. Similarly to
``std::move, std::forward`` et al. it is now treated as a compiler builtin and implemented

This comment has been minimized.

Copy link
@tambry

tambry Jul 23, 2023

Contributor

This should probably be ``std::move``, ``std::forward``.

directly rather than instantiating the definition from the standard library.

Bug Fixes
---------
- Fix crash on invalid code when looking up a destructor in a templated class
inside a namespace. This fixes
`Issue 59446 <https://github.com/llvm/llvm-project/issues/59446>`_.
- Fix crash when diagnosing incorrect usage of ``_Nullable`` involving alias
templates. This fixes
`Issue 60344 <https://github.com/llvm/llvm-project/issues/60344>`_.
- Fix confusing warning message when ``/clang:-x`` is passed in ``clang-cl``
driver mode and emit an error which suggests using ``/TC`` or ``/TP``
``clang-cl`` options instead. This fixes
`Issue 59307 <https://github.com/llvm/llvm-project/issues/59307>`_.
- Fix crash when evaluating consteval constructor of derived class whose base
has more than one field. This fixes
`Issue 60166 <https://github.com/llvm/llvm-project/issues/60166>`_.
C++20 Feature Support
^^^^^^^^^^^^^^^^^^^^^

Improvements to Clang's diagnostics
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- We now generate a diagnostic for signed integer overflow due to unary minus
in a non-constant expression context. This fixes
`Issue 31643 <https://github.com/llvm/llvm-project/issues/31643>`_
- Clang now warns by default for C++20 and later about deprecated capture of
``this`` with a capture default of ``=``. This warning can be disabled with
``-Wno-deprecated-this-capture``.
C++2b Feature Support
^^^^^^^^^^^^^^^^^^^^^

Resolutions to C++ Defect Reports
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

C Language Changes
------------------

C2x Feature Support
^^^^^^^^^^^^^^^^^^^
- Implemented the ``unreachable`` macro in freestanding ``<stddef.h>`` for
`WG14 N2826 <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2826.pdf>`_

Non-comprehensive list of changes in this release
-------------------------------------------------
Expand All @@ -97,114 +97,114 @@ Modified Compiler Flags
Removed Compiler Flags
-------------------------

New Pragmas in Clang
--------------------
- ...

Attribute Changes in Clang
--------------------------
- Introduced a new function attribute ``__attribute__((unsafe_buffer_usage))``
to be worn by functions containing buffer operations that could cause out of
bounds memory accesses. It emits warnings at call sites to such functions when
the flag ``-Wunsafe-buffer-usage`` is enabled.
- ``__declspec`` attributes can now be used together with the using keyword. Before
the attributes on ``__declspec`` was ignored, while now it will be forwarded to the
point where the alias is used.

Introduced a new function attribute ``__attribute__((unsafe_buffer_usage))``
to be worn by functions containing buffer operations that could cause out of
bounds memory accesses. It emits warnings at call sites to such functions when
the flag ``-Wunsafe-buffer-usage`` is enabled.
Improvements to Clang's diagnostics
-----------------------------------
- We now generate a diagnostic for signed integer overflow due to unary minus
in a non-constant expression context.
(`#31643 <https://github.com/llvm/llvm-project/issues/31643>`)
- Clang now warns by default for C++20 and later about deprecated capture of
``this`` with a capture default of ``=``. This warning can be disabled with
``-Wno-deprecated-this-capture``.

``__declspec`` attributes can now be used together with the using keyword. Before
the attributes on ``__declspec`` was ignored, while now it will be forwarded to the
point where the alias is used.
Bug Fixes in This Version
-------------------------

Windows Support
---------------
- Fix crash when diagnosing incorrect usage of ``_Nullable`` involving alias
templates.
(`#60344 <https://github.com/llvm/llvm-project/issues/60344>`_)
- Fix confusing warning message when ``/clang:-x`` is passed in ``clang-cl``
driver mode and emit an error which suggests using ``/TC`` or ``/TP``
``clang-cl`` options instead.
(`#59307 <https://github.com/llvm/llvm-project/issues/59307>`_)

AIX Support
-----------
Bug Fixes to Compiler Builtins
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

C Language Changes in Clang
---------------------------
Bug Fixes to Attribute Support
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

C2x Feature Support
-------------------
- Implemented the ``unreachable`` macro in freestanding ``<stddef.h>`` for
`WG14 N2826 <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2826.pdf>`_
Bug Fixes to C++ Support
^^^^^^^^^^^^^^^^^^^^^^^^

C++ Language Changes in Clang
-----------------------------
- Improved ``-O0`` code generation for calls to ``std::forward_like``. Similarly to
``std::move, std::forward`` et al. it is now treated as a compiler builtin and implemented
directly rather than instantiating the definition from the standard library.
- Fix crash on invalid code when looking up a destructor in a templated class
inside a namespace.
(`#59446 <https://github.com/llvm/llvm-project/issues/59446>`_)
- Fix crash when evaluating consteval constructor of derived class whose base
has more than one field.
(`#60166 <https://github.com/llvm/llvm-project/issues/60166>`_)

C++20 Feature Support
^^^^^^^^^^^^^^^^^^^^^
Bug Fixes to AST Handling
^^^^^^^^^^^^^^^^^^^^^^^^^

C++2b Feature Support
^^^^^^^^^^^^^^^^^^^^^
Miscellaneous Bug Fixes
^^^^^^^^^^^^^^^^^^^^^^^

CUDA/HIP Language Changes in Clang
----------------------------------
Miscellaneous Clang Crashes Fixed
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Objective-C Language Changes in Clang
-------------------------------------

OpenCL C Language Changes in Clang
----------------------------------
Target Specific Changes
-----------------------

...
X86 Support
^^^^^^^^^^^

ABI Changes in Clang
--------------------
Arm and AArch64 Support
^^^^^^^^^^^^^^^^^^^^^^^

OpenMP Support in Clang
-----------------------
- The hard-float ABI is now available in Armv8.1-M configurations that
have integer MVE instructions (and therefore have FP registers) but
no scalar or vector floating point computation. Previously, trying
to select the hard-float ABI on such a target (via
``-mfloat-abi=hard`` or a triple ending in ``hf``) would silently
use the soft-float ABI instead.

...
- Clang builtin ``__arithmetic_fence`` and the command line option ``-fprotect-parens``
are now enabled for AArch64.

CUDA Support in Clang
---------------------
Windows Support
^^^^^^^^^^^^^^^

LoongArch Support in Clang
--------------------------
LoongArch Support
^^^^^^^^^^^^^^^^^

RISC-V Support in Clang
-----------------------
RISC-V Support
^^^^^^^^^^^^^^
- Added ``-mrvv-vector-bits=`` option to give an upper and lower bound on vector
length. Valid values are powers of 2 between 64 and 65536. A value of 32
should eventually be supported. We also accept "zvl" to use the Zvl*b
extension from ``-march`` or ``-mcpu`` to the be the upper and lower bound.

X86 Support in Clang
--------------------

WebAssembly Support in Clang
----------------------------
CUDA/HIP Language Changes
^^^^^^^^^^^^^^^^^^^^^^^^^

DWARF Support in Clang
----------------------
CUDA Support
^^^^^^^^^^^^

Arm and AArch64 Support in Clang
--------------------------------
AIX Support
^^^^^^^^^^^

- The hard-float ABI is now available in Armv8.1-M configurations that
have integer MVE instructions (and therefore have FP registers) but
no scalar or vector floating point computation. Previously, trying
to select the hard-float ABI on such a target (via
``-mfloat-abi=hard`` or a triple ending in ``hf``) would silently
use the soft-float ABI instead.
WebAssembly Support
^^^^^^^^^^^^^^^^^^^

- Clang builtin ``__arithmetic_fence`` and the command line option ``-fprotect-parens``
are now enabled for AArch64.
DWARF Support in Clang
----------------------

Floating Point Support in Clang
-------------------------------
- Add ``__builtin_elementwise_log`` builtin for floating point types only.
- Add ``__builtin_elementwise_log10`` builtin for floating point types only.
- Add ``__builtin_elementwise_log2`` builtin for floating point types only.

Internal API Changes
--------------------

Build System Changes
--------------------

AST Matchers
------------

Expand All @@ -216,9 +216,6 @@ clang-format
put the initializers on the current line first, instead, it will try to
put the initializers on the next line only.

clang-extdef-mapping
--------------------

libclang
--------

Expand All @@ -234,25 +231,6 @@ Static Analyzer
Sanitizers
----------

Core Analysis Improvements
==========================

- ...

New Issues Found
================

- ...

Python Binding Changes
----------------------

The following methods have been added:

- ...

Significant Known Problems
==========================

Additional Information
======================
Expand All @@ -265,5 +243,5 @@ this release by going into the "``clang/docs/``" directory in the Clang
tree.

If you have any questions or comments about Clang, please feel free to
contact us on the Discourse forums (Clang Frontend category)
contact us on the `Discourse forums (Clang Frontend category)
<https://discourse.llvm.org/c/clang/6>`_.

0 comments on commit f5aa8d1

Please sign in to comment.