head 1.1;
branch 1.1.1;
access;
symbols
netbsd-11-0-RC5:1.1.1.2
netbsd-11-0-RC4:1.1.1.2
netbsd-11-0-RC3:1.1.1.2
netbsd-11-0-RC2:1.1.1.2
netbsd-11-0-RC1:1.1.1.2
gcc-14-3-0:1.1.1.3
perseant-exfatfs-base-20250801:1.1.1.2
netbsd-11:1.1.1.2.0.2
netbsd-11-base:1.1.1.2
gcc-12-5-0:1.1.1.2
perseant-exfatfs-base-20240630:1.1.1.1
gcc-12-4-0:1.1.1.1
perseant-exfatfs:1.1.1.1.0.2
perseant-exfatfs-base:1.1.1.1
gcc-12-3-0:1.1.1.1
FSF:1.1.1;
locks; strict;
comment @# @;
1.1
date 2023.07.30.05.21.23; author mrg; state Exp;
branches
1.1.1.1;
next ;
commitid tk6nV4mbc9nVEMyE;
1.1.1.1
date 2023.07.30.05.21.23; author mrg; state Exp;
branches
1.1.1.1.2.1;
next 1.1.1.2;
commitid tk6nV4mbc9nVEMyE;
1.1.1.2
date 2025.07.21.02.43.44; author mrg; state Exp;
branches;
next 1.1.1.3;
commitid 9k1gPU4fqf8VHy3G;
1.1.1.3
date 2025.09.13.23.45.51; author mrg; state Exp;
branches;
next ;
commitid KwhwN4krNWa6XBaG;
1.1.1.1.2.1
date 2025.08.02.05.25.52; author perseant; state Exp;
branches;
next ;
commitid 23j6GFaDws3O875G;
desc
@@
1.1
log
@Initial revision
@
text
@C++ 2023ISO C++2023
In this implementation the -std=gnu++23 or
-std=c++23 flag must be used to enable language
and library
features. See dialect
options. The pre-defined symbol
__cplusplus is used to check for the
presence of the required flag.
This section describes the C++23 and library TS support in mainline GCC,
not in any particular release.
The following table lists new library features that have been accepted into
the C++23 working draft. The "Proposal" column provides a link to the
ISO C++ committee proposal that describes the feature, while the "Status"
column indicates the first version of GCC that contains an implementation of
this feature (if it has been implemented).
A dash (—) in the status column indicates that the changes in the proposal
either do not affect the code in libstdc++, or the changes are not required for conformance.
The "SD-6 Feature Test / Notes" column shows the corresponding macro or header from
SD-6:
Feature-testing recommendations for C++ (where applicable)
or any notes about the implementation.
C++ 2023 Library FeaturesLibrary FeatureProposalStatusSD-6 Feature Test / NotesRanges and Views Range constructor for std::string_view
P1989R2
11.1 join_view should join all views of ranges
P2328R1
11.2 Clarifying range adaptor objects
P2281R1
11.1 Views should not be required to be default constructible
P2325R3
11.3 __cpp_lib_ranges >= 202106L Conditionally borrowed ranges
P2017R1
11.1 Require span & basic_string_view to be Trivially Copyable
P2251R1
Yes Repairing input range adaptors and counted_iterator
P2259R1
12.1 Superior String Splitting
P2210R2
12.1 What is a view?
P2415R2
12.1 __cpp_lib_ranges >= 202110L Fix istream_view
P2432R1
12.1 starts_with and ends_with
P1659R3
__cpp_lib_ranges_starts_ends_with >= 202106Lzip
P2321R2
__cpp_lib_ranges_zip >= 202110LCompile-time programming A proposal for a type trait to detect scoped enumerations
P1048R1
11.1 __cpp_lib_is_scoped_enum >= 202011L std::to_underlying for enumerations
P1682R3
11.1 __cpp_lib_to_underlying >= 202102L Missing constexpr in std::optional and std::variant
P2231R1
11.3 (optional) 12.1 (variant) __cpp_lib_constexpr_optional >= 202106L__cpp_lib_variant >= 202106L Making std::unique_ptr constexpr
P2273R3
12.1 __cpp_lib_constexpr_memory >= 202202L Making std::type_info::operator== constexpr
P1328R1
12.1 __cpp_lib_constexpr_typeinfo >= 202106L constexpr for <cmath> and <cstdlib>
P0533R9
__cpp_lib_constexpr_cmath >= 202202L Deprecate std::aligned_storage and std::aligned_union
P1413R3
A type trait to detect reference binding to temporary
P2255R2
__cpp_lib_reference_from_temporary >= 202202LStrings and text string contains function
P1679R3
11.1 __cpp_lib_string_contains >= 202011L Prohibit std::basic_string and std::basic_string_view construction from nullptr
P2166R1
12.1 basic_string::resize_and_overwrite
P1072R10
12.1 __cpp_lib_resize_and_overwrite >= 202110L A strstream replacement using span<charT> as buffer
P0448R4
12.1 __cpp_lib_spanstream >= 202106LContainers Iterator pair constructors for stack and queue
P1425R4
12.1 __cpp_lib_adaptor_iterator_pair_constructor >= 202106L Stop overconstraining allocators in container deduction guides
P1518R2
12.1 Heterogeneous erasure overloads for associative containers
P2077R3
__cpp_lib_associative_heterogeneous_erasure >= 202110LMiscellaneous Inheriting from std::variant
P2162R2
11.3 __cpp_lib_variant >= 202102L Printing volatile Pointers
P1147R1
11.3 A Proposal to add stacktrace library
P0881R7
12.1 __cpp_lib_stacktrace >= 202011L Add a pmr alias for std::stacktrace
P2301R1
12.1 std::expected
P0323R12
12.1 __cpp_lib_expected >= 202202L Monadic operations for std::optional
P0798R8
12.1 __cpp_lib_optional >= 202110Lmove_only_function
P0288R9
12.1 __cpp_lib_move_only_function >= 202110Linvoke_r
P2136R3
12.1 __cpp_lib_invoke_r >= 202106L Byteswapping for fun&&nuf
P1272R4
12.1 __cpp_lib_byteswap >= 202110L Function to mark unreachable code
P0627R6
12.1 __cpp_lib_unreachable >= 202202L Add a conditional noexcept specification to std::exchange
P2401R0
12.1 Support C atomics in C++
P0943R6
12.1 __cpp_lib_stdatomic_h >= 202011L Clarifying the status of the "C headers"
P2340R1
Yes Relax Requirements for time_point::clock
P2212R2
Yes Removing Garbage Collection Support
P2186R2
12.1
@
1.1.1.1
log
@initial import of GCC 12.3.0.
major changes in GCC 11 included:
- The default mode for C++ is now -std=gnu++17 instead of -std=gnu++14.
- When building GCC itself, the host compiler must now support C++11,
rather than C++98.
- Some short options of the gcov tool have been renamed: -i to -j and
-j to -H.
- ThreadSanitizer improvements.
- Introduce Hardware-assisted AddressSanitizer support.
- For targets that produce DWARF debugging information GCC now defaults
to DWARF version 5. This can produce up to 25% more compact debug
information compared to earlier versions.
- Many optimisations.
- The existing malloc attribute has been extended so that it can be
used to identify allocator/deallocator API pairs. A pair of new
-Wmismatched-dealloc and -Wmismatched-new-delete warnings are added.
- Other new warnings:
-Wsizeof-array-div, enabled by -Wall, warns about divisions of two
sizeof operators when the first one is applied to an array and the
divisor does not equal the size of the array element.
-Wstringop-overread, enabled by default, warns about calls to string
functions reading past the end of the arrays passed to them as
arguments.
-Wtsan, enabled by default, warns about unsupported features in
ThreadSanitizer (currently std::atomic_thread_fence).
- Enchanced warnings:
-Wfree-nonheap-object detects many more instances of calls to
deallocation functions with pointers not returned from a dynamic
memory allocation function.
-Wmaybe-uninitialized diagnoses passing pointers or references to
uninitialized memory to functions taking const-qualified arguments.
-Wuninitialized detects reads from uninitialized dynamically
allocated memory.
-Warray-parameter warns about functions with inconsistent array forms.
-Wvla-parameter warns about functions with inconsistent VLA forms.
- Several new features from the upcoming C2X revision of the ISO C
standard are supported with -std=c2x and -std=gnu2x.
- Several C++20 features have been implemented.
- The C++ front end has experimental support for some of the upcoming
C++23 draft.
- Several new C++ warnings.
- Enhanced Arm, AArch64, x86, and RISC-V CPU support.
- The implementation of how program state is tracked within
-fanalyzer has been completely rewritten with many enhancements.
see https://gcc.gnu.org/gcc-11/changes.html for a full list.
major changes in GCC 12 include:
- An ABI incompatibility between C and C++ when passing or returning
by value certain aggregates containing zero width bit-fields has
been discovered on various targets. x86-64, ARM and AArch64
will always ignore them (so there is a C ABI incompatibility
between GCC 11 and earlier with GCC 12 or later), PowerPC64 ELFv2
always take them into account (so there is a C++ ABI
incompatibility, GCC 4.4 and earlier compatible with GCC 12 or
later, incompatible with GCC 4.5 through GCC 11). RISC-V has
changed the handling of these already starting with GCC 10. As
the ABI requires, MIPS takes them into account handling function
return values so there is a C++ ABI incompatibility with GCC 4.5
through 11.
- STABS: Support for emitting the STABS debugging format is
deprecated and will be removed in the next release. All ports now
default to emit DWARF (version 2 or later) debugging info or are
obsoleted.
- Vectorization is enabled at -O2 which is now equivalent to the
original -O2 -ftree-vectorize -fvect-cost-model=very-cheap.
- GCC now supports the ShadowCallStack sanitizer.
- Support for __builtin_shufflevector compatible with the clang
language extension was added.
- Support for attribute unavailable was added.
- Support for __builtin_dynamic_object_size compatible with the
clang language extension was added.
- New warnings:
-Wbidi-chars warns about potentially misleading UTF-8
bidirectional control characters.
-Warray-compare warns about comparisons between two operands of
array type.
- Some new features from the upcoming C2X revision of the ISO C
standard are supported with -std=c2x and -std=gnu2x.
- Several C++23 features have been implemented.
- Many C++ enhancements across warnings and -f options.
see https://gcc.gnu.org/gcc-12/changes.html for a full list.
@
text
@@
1.1.1.1.2.1
log
@Sync with HEAD
@
text
@d23 2
a24 1
This section describes the C++23 and library TS support in the GCC 12 release series.
@
1.1.1.2
log
@initial import of GCC 12.5.0.
this is the final GCC 12 release, and fixes at least 241 specific bugs
in the GCC bugzilla:
https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.5
though many are in components we don't ship in base (ada, fortran, etc.)
@
text
@d23 2
a24 1
This section describes the C++23 and library TS support in the GCC 12 release series.
@
1.1.1.3
log
@initial import of GCC 14.3.0.
major changes in GCC 13:
- improved sanitizer
- zstd debug info compression
- LTO improvements
- SARIF based diagnostic support
- new warnings: -Wxor-used-as-pow, -Wenum-int-mismatch, -Wself-move,
-Wdangling-reference
- many new -Wanalyzer* specific warnings
- enhanced warnings: -Wpessimizing-move, -Wredundant-move
- new attributes to mark file descriptors, c++23 "assume"
- several C23 features added
- several C++23 features added
- many new features for Arm, x86, RISC-V
major changes in GCC 14:
- more strict C99 or newer support
- ia64* marked deprecated (but seemingly still in GCC 15.)
- several new hardening features
- support for "hardbool", which can have user supplied values of true/false
- explicit support for stack scrubbing upon function exit
- better auto-vectorisation support
- added clang-compatible __has_feature and __has_extension
- more C23, including -std=c23
- several C++26 features added
- better diagnostics in C++ templates
- new warnings: -Wnrvo, Welaborated-enum-base
- many new features for Arm, x86, RISC-V
- possible ABI breaking change for SPARC64 and small structures with arrays
of floats.
@
text
@d23 1
a23 2
This section describes the C++23 and library TS support in
the GCC 14 release series.
d68 1
a68 1
d79 1
a79 1
d91 1
a91 1
d102 1
a102 1
d113 1
a113 1
d124 1
a124 1
d135 1
a135 1
d146 1
a146 1
d157 1
a157 1
d168 1
a168 1
d180 1
a180 1
d189 1
d192 1
a192 1
d196 1
a196 1
13.1
a200 231
views::repeat
P2474R2
13.1 __cpp_lib_ranges_repeat >= 202207Lviews::enumerate
P2164R9
13.1 __cpp_lib_ranges_enumerate >= 202302Lviews::join_with
P2441R2
13.1 __cpp_lib_ranges_join_with >= 202202L
Windowing range adaptors: views::chunk
and views::slide
P2442R1
13.1 __cpp_lib_ranges_slide >= 202202Lviews::chunk_by
P2443R1
13.1 __cpp_lib_ranges_chunk_by >= 202202Lviews::stride
P1899R3
13.1 __cpp_lib_ranges_stride >= 202207Lviews::cartesian_product
P2374R4
13.1 __cpp_lib_ranges_cartesian_product >= 202207L Empty Product for certain Views
P2540R1
13.1 __cpp_lib_ranges_cartesian_product >= 202207Lviews::as_rvalue
P2446R2
13.1 __cpp_lib_ranges_as_rvalue >= 202207Lcbegin should always return a constant iterator
P2278R4
13.1 __cpp_lib_ranges_as_const >= 202207Lranges::to
P1206R7
14.1 (ranges::to function) __cpp_lib_containers_ranges >= 202202L,
__cpp_lib_ranges_to_container >= 202202L Ranges iterators as inputs to non-Ranges algorithms
P2408R5
__cpp_lib_algorithm_iterator_requirements >= 202207L Pipe support for user-defined range adaptors
P2387R3
13.1 __cpp_lib_bind_pack >= 202202L,
__cpp_lib_ranges >= 202202Lranges::iota, ranges::shift_left,
and ranges::shift_right
P2440R1
13.1 (ranges::iota) __cpp_lib_ranges_iota >= 202202L,
__cpp_lib_shift >= 202202Lranges::find_last
P1223R5
13.1 __cpp_lib_ranges_find_last >= 202207Lranges::contains
P2302R4
13.1 __cpp_lib_ranges_contains >= 202207L Making multi-param constructors of views explicit
P2711R1
ranges::fold
P2322R6
13.1 __cpp_lib_ranges_fold >= 202207L Relaxing Ranges Just A Smidge
P2609R3
14.3 __cpp_lib_ranges >= 202302L
d209 1
a209 1
d220 1
a220 1
d231 1
a231 1
d252 1
a252 1
d263 1
a263 1
d275 1
a275 1
d284 1
d287 1
a287 1
d291 1
a291 1
13.1
d296 1
d299 1
a299 1
d303 1
a303 6
13.1 (missing changes to std::tuple) 14.1 (complete)
a307 186
Move-only types for equality_comparable_with, totally_ordered_with,
and three_way_comparable_with
P2404R3
__cpp_lib_concepts >= 202207L A trait for implicit lifetime types
P2674R1
__cpp_lib_is_implicit_lifetime >= 202302Lcommon_reference_t of reference_wrapper
Should Be a Reference Type
P2655R3
__cpp_lib_common_reference >= 202302L Deprecate numeric_limits::has_denorm
P2614R2
Containers Iterator pair constructors for stack and queue
P1425R4
12.1 __cpp_lib_adaptor_iterator_pair_constructor >= 202106L Stop overconstraining allocators in container deduction guides
P1518R2
12.1 Heterogeneous erasure overloads for associative containers
P2077R3
__cpp_lib_associative_heterogeneous_erasure >= 202110L<flat_map>
P0429R9
__cpp_lib_flat_map >= 202207L<flat_set>
P1222R4
__cpp_lib_flat_set >= 202207Lmdspan
P0009R18
__cpp_lib_mdspan >= 202207Lindex_type & size_type
in mdspan
P2599R2
__cpp_lib_mdspan >= 202207Lmdspan: rename pointer and
contiguous
P2604R0
__cpp_lib_mdspan >= 202207L Add the missing empty to mdspan
P2613R1
__cpp_lib_mdspan >= 202207Llayout_stride static extents default constructor fix
P2763R1
d316 1
a316 1
d327 1
a327 1
d338 1
a338 1
d349 1
a349 1
d358 2
a359 6
std::string::substr() &&
P2438R2
a360 2
a362 1
d364 1
a364 1
std::format improvements
d366 2
a367 2
P2216R3
d370 2
a371 2
13.1 __cpp_lib_format >= 202106L
d375 1
d377 2
a378 6
Add support for std::generator-like types to
std::format
P2418R2
d381 2
a382 15
13.1 __cpp_lib_format >= 202110L
Expose std::basic-format-string<charT, Args...>
P2508R1
13.1 (feature test macro not updated)__cpp_lib_format >= 202207L
d387 1
d389 2
a390 5
Clarify handling of encodings in localized formatting of chrono types
P2419R2
d394 1
a394 91
__cpp_lib_format >= 202207L
Formatting pointers
P2510R3
13.2 (feature test macro not defined)__cpp_lib_format >= 202207L Formatting Ranges
P2286R8
__cpp_lib_format_ranges >= 202207L Improve default container formatting
P2585R1
__cpp_lib_format_ranges >= 202207L Formatted output
P2093R14
14.1 __cpp_lib_print >= 202207L
Should the output of std::print to a terminal be synchronized with
the underlying stream?
P2539R3
14.1
Formatting thread::id and stacktrace
P2693R1
14.1 __cpp_lib_formatters >= 202302L
Add Constexpr Modifiers to Functions to_chars and
from_chars for Integral Types in
<charconv> Header
P2291R3
13.1 __cpp_lib_constexpr_charconv >= 202207L
d406 1
a406 1
d417 1
a417 1
d428 1
a428 1
d439 1
a439 1
d450 1
a450 1
a458 11
Monadic operations for std::expected
P2505R5
13.1 __cpp_lib_expected >= 202211L
d461 1
a461 1
a469 26
Compatibility between tuple, pair
and tuple-like objects
P2165R4
14.1 __cpp_lib_tuple_like >= 202207L
Default Arguments for pair's Forwarding Constructor
P1951R1
14.1
d472 1
a472 1
d483 1
a483 1
d494 1
a494 1
d505 1
a505 1
d516 1
a516 1
a524 22
A more constexpr bitset
P2417R2
13.1 __cpp_lib_constexpr_bitset >= 202207L Extended floating-point types and standard names
P1467R9
13.1
d527 1
a527 1
d538 1
a538 1
d549 1
a549 1
d560 1
a560 1
a567 101
Easy [utilities], [ranges], and [iterators]
P1642R11
13.1 Providing size feedback in the Allocator interface
P0401R6
__cpp_lib_allocate_at_least >= 202306L
Disallow User Specialization of allocator_traits
P2652R2
Explicit lifetime management
P2590R2
__cpp_lib_start_lifetime_as >= 202207L
Fixing std::start_lifetime_as and
std::start_lifetime_as_array
P2679R2
out_ptr - a scalable output pointer abstraction
P1132R8
14.1 __cpp_lib_out_ptr >= 202106Lbarrier's phase completion guarantees
P2588R3
__cpp_lib_barrier >= 202302L
Standard Library Modules std and std.compat
P2465R3
__cpp_lib_modules >= 202207L
@