1====================================================
2Extra Clang Tools 12.0.0 (In-Progress) Release Notes
3====================================================
4
5.. contents::
6   :local:
7   :depth: 3
8
9Written by the `LLVM Team <https://llvm.org/>`_
10
11.. warning::
12
13   These are in-progress notes for the upcoming Extra Clang Tools 12 release.
14   Release notes for previous releases can be found on
15   `the Download Page <https://releases.llvm.org/download.html>`_.
16
17Introduction
18============
19
20This document contains the release notes for the Extra Clang Tools, part of the
21Clang release 12.0.0. Here we describe the status of the Extra Clang Tools in
22some detail, including major improvements from the previous release and new
23feature work. All LLVM releases may be downloaded from the `LLVM releases web
24site <https://llvm.org/releases/>`_.
25
26For more information about Clang or LLVM, including information about
27the latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or
28the `LLVM Web Site <https://llvm.org>`_.
29
30Note that if you are reading this file from a Git checkout or the
31main Clang web page, this document applies to the *next* release, not
32the current one. To see the release notes for a specific release, please
33see the `releases page <https://llvm.org/releases/>`_.
34
35What's New in Extra Clang Tools 12.0.0?
36=======================================
37
38Some of the major new features and improvements to Extra Clang Tools are listed
39here. Generic improvements to Extra Clang Tools as a whole or to its underlying
40infrastructure are described first, followed by tool-specific sections.
41
42Major New Features
43------------------
44
45...
46
47Improvements to clangd
48----------------------
49
50The improvements are...
51
52Improvements to clang-doc
53-------------------------
54
55The improvements are...
56
57Improvements to clang-query
58---------------------------
59
60- The IgnoreImplicitCastsAndParentheses traversal mode has been removed.
61
62Improvements to clang-rename
63----------------------------
64
65The improvements are...
66
67Improvements to clang-tidy
68--------------------------
69
70- Checks that allow configuring names of headers to include now support wrapping
71  the include in angle brackets to create a system include. For example,
72  :doc:`cppcoreguidelines-init-variables
73  <clang-tidy/checks/cppcoreguidelines-init-variables>` and
74  :doc:`modernize-make-unique <clang-tidy/checks/modernize-make-unique>`.
75
76New modules
77^^^^^^^^^^^
78
79- New ``altera`` module.
80
81  Includes checks related to OpenCL for FPGA coding guidelines, based on the
82  `Altera SDK for OpenCL: Best Practices Guide
83  <https://www.altera.com/en_US/pdfs/literature/hb/opencl-sdk/aocl_optimization_guide.pdf>`_.
84
85- New ``concurrency`` module.
86
87  Includes checks related to concurrent programming (e.g. threads, fibers,
88  coroutines, etc.).
89
90New checks
91^^^^^^^^^^
92
93- New :doc:`altera-kernel-name-restriction
94  <clang-tidy/checks/altera-kernel-name-restriction>` check.
95
96  Finds kernel files and include directives whose filename is `kernel.cl`,
97  `Verilog.cl`, or `VHDL.cl`.
98
99- New :doc:`altera-struct-pack-align
100  <clang-tidy/checks/altera-struct-pack-align>` check.
101
102  Finds structs that are inefficiently packed or aligned, and recommends
103  packing and/or aligning of said structs as needed.
104
105- New :doc:`cppcoreguidelines-prefer-member-initializer
106  <clang-tidy/checks/cppcoreguidelines-prefer-member-initializer>` check.
107
108  Finds member initializations in the constructor body which can be placed into
109  the initialization list instead.
110
111- New :doc:`bugprone-misplaced-pointer-arithmetic-in-alloc
112  <clang-tidy/checks/bugprone-misplaced-pointer-arithmetic-in-alloc>` check.
113
114- New :doc:`bugprone-redundant-branch-condition
115  <clang-tidy/checks/bugprone-redundant-branch-condition>` check.
116
117  Finds condition variables in nested ``if`` statements that were also checked
118  in the outer ``if`` statement and were not changed.
119
120- New :doc:`concurrency-mt-unsafe <clang-tidy/checks/concurrency-mt-unsafe>`
121  check.
122
123  Finds thread-unsafe functions usage. Currently knows about POSIX and
124  Glibc function sets.
125
126- New :doc:`bugprone-signal-handler
127  <clang-tidy/checks/bugprone-signal-handler>` check.
128
129  Finds functions registered as signal handlers that call non asynchronous-safe
130  functions.
131
132- New :doc:`cert-sig30-c
133  <clang-tidy/checks/cert-sig30-c>` check.
134
135  Alias to the :doc:`bugprone-signal-handler
136  <clang-tidy/checks/bugprone-signal-handler>` check.
137
138- New :doc:`performance-no-int-to-ptr
139  <clang-tidy/checks/performance-no-int-to-ptr>` check.
140
141  Diagnoses every integer to pointer cast.
142
143- New :doc:`readability-function-cognitive-complexity
144  <clang-tidy/checks/readability-function-cognitive-complexity>` check.
145
146  Flags functions with Cognitive Complexity metric exceeding the configured limit.
147
148Changes in existing checks
149^^^^^^^^^^^^^^^^^^^^^^^^^^
150
151- Improved :doc:`modernize-loop-convert
152  <clang-tidy/checks/modernize-loop-convert>` check.
153
154  Now able to transform iterator loops using ``rbegin`` and ``rend`` methods.
155
156- Improved :doc:`readability-identifier-naming
157  <clang-tidy/checks/readability-identifier-naming>` check.
158
159  Added an option `GetConfigPerFile` to support including files which use
160  different naming styles.
161
162  Now renames overridden virtual methods if the method they override has a
163  style violation.
164
165  Added support for specifying the style of scoped ``enum`` constants. If
166  unspecified, will fall back to the style for regular ``enum`` constants.
167
168  Added an option `IgnoredRegexp` per identifier type to suppress identifier
169  naming checks for names matching a regular expression.
170
171- Removed `google-runtime-references` check because the rule it checks does
172  not exist in the Google Style Guide anymore.
173
174- Improved :doc:`readability-redundant-string-init
175  <clang-tidy/checks/readability-redundant-string-init>` check.
176
177  Added `std::basic_string_view` to default list of ``string``-like types.
178
179Improvements to include-fixer
180-----------------------------
181
182The improvements are...
183
184Improvements to clang-include-fixer
185-----------------------------------
186
187The improvements are...
188
189Improvements to modularize
190--------------------------
191
192The improvements are...
193
194Improvements to pp-trace
195------------------------
196
197The improvements are...
198
199Clang-tidy visual studio plugin
200-------------------------------
201