Skip to content

Commit 407db48

Browse files
committed
[Release Notes] [C++20] [Modules] Summarize modules related change to the release note for clang 18
Given clang18 is going to be released, this patch collects the modules related change to release notes to make users have a clear vision for modules.
1 parent 430e145 commit 407db48

File tree

1 file changed

+36
-4
lines changed

1 file changed

+36
-4
lines changed

clang/docs/ReleaseNotes.rst

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,6 @@ C/C++ Language Potentially Breaking Changes
9797
outlined in "The Equality Operator You Are Looking For" (`P2468 <http://wg21.link/p2468r2>`_).
9898
Fixes (`#68901: <https://github.com/llvm/llvm-project/issues/68901>`_).
9999

100-
- Remove the hardcoded path to the imported modules for C++20 named modules. Now we
101-
require all the dependent modules to specified from the command line.
102-
See (`#62707: <https://github.com/llvm/llvm-project/issues/62707>`_).
103-
104100
C++ Specific Potentially Breaking Changes
105101
-----------------------------------------
106102
- The name mangling rules for function templates has been changed to take into
@@ -141,6 +137,13 @@ C++ Specific Potentially Breaking Changes
141137
when targetting MSVC to match the behavior of MSVC.
142138
(`MSVC Docs <https://learn.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance?view=msvc-170>`_)
143139

140+
- Remove the hardcoded path to the imported modules for C++20 named modules. Now we
141+
require all the dependent modules to specified from the command line.
142+
See (`#62707: <https://github.com/llvm/llvm-project/issues/62707>`_).
143+
144+
- Forbid `import XXX;` in C++ to find module `XXX` comes from explicit clang modules.
145+
See (`#64755: <https://github.com/llvm/llvm-project/issues/64755>`_).
146+
144147
ABI Changes in This Version
145148
---------------------------
146149
- Following the SystemV ABI for x86-64, ``__int128`` arguments will no longer
@@ -596,6 +599,17 @@ Improvements to Clang's diagnostics
596599
13 | new (__builtin_memset) S {};
597600
| ^
598601
602+
- Clang now diagnoses import before module declarations but not in global
603+
module fragment.
604+
(`#67627: <https://github.com/llvm/llvm-project/issues/67627>`_).
605+
606+
- Clang now diagnoses include headers with angle in module purviews, which is
607+
not usually intended.
608+
(`#68615: <https://github.com/llvm/llvm-project/issues/68615>`_)
609+
610+
- Clang now won't mention invisible namespace when diagnose invisible declarations
611+
inside namespace. The original diagnostic message is confusing.
612+
(`#73893: <https://github.com/llvm/llvm-project/issues/73893>`_)
599613

600614
Improvements to Clang's time-trace
601615
----------------------------------
@@ -982,6 +996,16 @@ Bug Fixes to C++ Support
982996
- Clang now allows parenthesized initialization of arrays in `operator new[]`.
983997
Fixes: (`#68198 <https://github.com/llvm/llvm-project/issues/68198>`_)
984998

999+
- Fix crash when importing the same module with an dynamic initializer twice
1000+
in different visibility.
1001+
Fixes (`#67893 <https://github.com/llvm/llvm-project/issues/67893>`_)
1002+
1003+
- Fix a false-positive ODR violation for different definitions for `std::align_val_t`.
1004+
Fixes (`#76638 <https://github.com/llvm/llvm-project/issues/76638>`_)
1005+
1006+
- Remove recorded `#pragma once` state for headers included in named modules.
1007+
Fixes (`#77995 <https://github.com/llvm/llvm-project/issues/77995>`_)
1008+
9851009
Bug Fixes to AST Handling
9861010
^^^^^^^^^^^^^^^^^^^^^^^^^
9871011
- Fixed an import failure of recursive friend class template.
@@ -1350,6 +1374,14 @@ Improvements
13501374
- Checkers can query constraint bounds to improve diagnostic messages.
13511375
(`#74141 <https://github.com/llvm/llvm-project/pull/74141>`_)
13521376

1377+
- Improved the generated initializers for modules. Now the calls to initialize
1378+
functions from imported module units can be omitted if the initialize
1379+
function is known to be empty.
1380+
(`#56794 <https://github.com/llvm/llvm-project/issues/56794>`_)
1381+
1382+
- Clang now allow to export declarations within linkage-specification.
1383+
(`#71347 <https://github.com/llvm/llvm-project/issues/71347>`_)
1384+
13531385
Moved checkers
13541386
^^^^^^^^^^^^^^
13551387

0 commit comments

Comments
 (0)