13.1.1
binutils
annobin
12.20
To install GCC Toolset 13, run the following command as root:
# yum install gcc-toolset-13
To run a tool from GCC Toolset 13:
$ scl enable gcc-toolset-13 tool
To run a shell session where tool versions from GCC Toolset 13 override system versions of these tools:
$ scl enable gcc-toolset-13 bash
For more information, seehttps://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/developing_c_and_cpp_applications_in_rhel_8/additional-toolsets-for-development_developing-applications#gcc-toolset-13_assembly_additional-toolsets-for-development[GCC Toolset 13] and
Using GCC Toolset
.
Bugzilla:2171898
, Bugzilla:2171928,
Bugzilla:2188490
GCC Toolset 13: GCC rebased to version 13.1.1
In GCC Toolset 13, the GNU Compiler Collection (GCC) has been updated to version 13.1.1. Notable changes include:
General improvements
OpenMP:
OpenMP 5.0: Fortran now supports some non-rectangular loop nests. Such support was added for C/C++ in GCC 11.
Many OpenMP 5.1 features have been added.
Initial support for OpenMP 5.2 features has been added.
A new debug info compression option value,
-gz=zstd
, is now available.
The
-Ofast
,
-ffast-math
, and
-funsafe-math-optimizations
options no longer add startup code to alter the floating-point environment when producing a shared object with the
-shared
option.
GCC can now emit its diagnostics using Static Analysis Results Interchange Format (SARIF), a JSON-based format suited for capturing the results of static analysis tools (like GCC’s
-fanalyzer
). You can also use SARIF to capture other GCC warnings and errors in a machine-readable format.
Link-time optimization improvements have been implemented.
New languages and language-specific improvements
C family:
A new
-Wxor-used-as-pow
option warns about uses of the exclusive or (
^
) operator where the user might have meant exponentiation.
Three new function attributes have been added for documenting
int
arguments that are file descriptors:
attribute
((fd_arg(N)))
attribute
((fd_arg_read(N)))
attribute
((fd_arg_write(N)))
These attributes are also used by
-fanalyzer
to detect misuses of file descriptors.
A new statement attribute,
attribute
((assume(EXPR)));
, has been added for C++23 portable assumptions. The attribute is supported also in C or earlier C++.
GCC can now control when to treat the trailing array of a structure as a flexible array member for the purpose of accessing the elements of such an array. By default, all trailing arrays in aggregates are treated as flexible array members. Use the new command-line option
-fstrict-flex-arrays
to control what array members are treated as flexible arrays.
Several C23 features have been implemented:
Introduced the
nullptr
constant.
Enumerations enhanced to specify underlying types.
Requirements for variadic parameter lists have been relaxed.
Introduced the
auto
feature to enable type inference for object definitions.
Introduced the
constexpr
specifier for object definitions.
Introduced storage-class specifiers for compound literals.
Introduced the
typeof
object (previously supported as an extension) and the
typeof_unqual
object.
Added new keywords:
alignas
,
alignof
,
bool
,
false
,
static_assert
,
thread_local
, and
true
.
Added the
[[noreturn]]
attribute to specify that a function does not return execution to its caller.
Added support for empty initializer braces.
Added support for
STDC_VERSION_*_H
header version macros.
Removed the
ATOMIC_VAR_INIT
macro.
Added the
unreachable
macro for the
<stddef.h>
header.
Removed trigraphs.
Removed unprototyped functions.
Added
printf
and
scanf
format checking through the
-Wformat
option for the
%wN
and
%wfN
format length modifiers.
Added support for identifier syntax of Unicode Standard Annex (UAX) 31.
Existing features adopted in C23 have been adjusted to follow C23 requirements and are not diagnosed using the
-std=c2x -Wpedantic
option.
A new
-Wenum-int-mismatch
option warns about mismatches between an enumerated type and an integer type.
Implemented excess precision support through the
-fexcess-precision
option. It is enabled by default in strict standard modes like
-std=c++17
, where it defaults to
-fexcess-precision=standard
. In GNU standard modes like
-std=gnu++20
, it defaults to
-fexcess-precision=fast
, which restores previous behavior.
The
-fexcess-precision
option affects the following architectures:
Intel 32- and 64-bit using x87 math, in some cases on Motorola 68000, where
float
and
double
expressions are evaluated in
long double
precision.
64-bit IBM Z systems where
float
expressions are evaluated in
double
precision.
Several architectures that support the
std::float16_t
or
std::bfloat16_t
types, where these types are evaluated in
float
precision.
Improved experimental support for C++23, including:
Added support for labels at the end of compound statements.
Added a type trait to detect reference binding to a temporary.
Reintroduced support for volatile compound operations.
Added support for the
#warning
directive.
Added support for delimited escape sequences.
Added support for named universal character escapes.
Added a compatibility and portability fix for the
char8_t
type.
Added static
operator()
function objects.
Simplified implicit moves.
Rewriting equality in expressions is now less of a breaking change.
Removed non-encodable wide character literals and wide multicharacter literals.
Relaxed some
constexpr
function restrictions.
Extended floating-point types and standard names.
Implemented portable assumptions.
Added support for UTF-8 as a portable source file encoding standard.
Added support for static
operator[]
subscripts.
New warnings:
-Wself-move
warns when a value is moved to itself with
std::move
.
-Wdangling-reference
warns when a reference is bound to a temporary whose lifetime has ended.
The
-Wpessimizing-move
and
-Wredundant-move
warnings have been extended to warn in more contexts.
The new
-nostdlib++
option enables linking with
g++
without implicitly linking in the C++ standard library.
Changes in the
libstdc++
runtime library
Improved experimental support for C++20, including:
Added the
<format>
header and the
std::format
function.
Added support in the
<chrono>
header for the
std::chrono::utc_clock
clock, other clocks, time zones, and the
std::format
function.
Improved experimental support for C++23, including:
Additions to the
<ranges>
header:
views::zip
,
views::zip_transform
,
views::adjacent
,
views::adjacent_transform
,
views::pairwise
,
views::slide
,
views::chunk
,
views::chunk_by
,
views::repeat
,
views::chunk_by
,
views::cartesian_product
,
views::as_rvalue
,
views::enumerate
,
views::as_const
.
Additions to the
<algorithm>
header:
ranges::contains
,
ranges::contains_subrange
,
ranges::iota
,
ranges::find_last
,
ranges::find_last_if
,
ranges::find_last_if_not
,
ranges::fold_left
,
ranges::fold_left_first
,
ranges::fold_right
,
ranges::fold_right_last
,
ranges::fold_left_with_iter
,
ranges::fold_left_first_with_iter
.
Support for monadic operations for the
std::expected
class template.
Added
constexpr
modifiers to the
std::bitset
,
std::to_chars
and
std::from_chars
functions.
Added library support for extended floating-point types.
Added support for the
<experimental/scope>
header from version 3 of the Library Fundamentals Technical Specification (TS).
Added support for the
<experimental/synchronized_value>
header from version 2 of the Concurrency TS.
Added support for many previously unavailable features in freestanding mode. For example:
The
std::tuple
class template is now available for freestanding compilation.
The
libstdc++
library adds components to the freestanding subset, such as
std::array
and
std::string_view
.
The
libstdc++
library now respects the
-ffreestanding
compiler option, so it is no longer necessary to build a separate freestanding installation of the
libstdc++
library. Compiling with
-ffreestanding
will restrict the available features to the freestanding subset, even if the
libstdc++
library was built as a full, hosted implementation.
New targets and target-specific Improvements
The 64-bit ARM architecture:
Added support for the
armv9.1-a
,
armv9.2-a
, and
armv9.3-a
arguments for the
-march=
option.
The 32- and 64-bit AMD and Intel architectures:
For both C and C++, the
__bf16
type is supported on systems with Streaming SIMD Extensions 2 and above enabled.
The real
__bf16
type is now used for
AVX512BF16
instruction intrinsics. Previously,
__bfloat16
, a typedef of short, was used. Adjust your
AVX512BF16
related source code when upgrading GCC 12 to GCC 13.
Added new Instruction Set Architecture (ISA) extensions to support the following Intel instructions:
AVX-IFMA
whose instruction intrinsics are available through the
-mavxifma
compiler switch.
AVX-VNNI-INT8
whose instruction intrinsics are available through the
-mavxvnniint8
compiler switch.
AVX-NE-CONVERT
whose instruction intrinsics are available through the
-mavxneconvert
compiler switch.
CMPccXADD
whose instruction intrinsics are available through the
-mcmpccxadd
compiler switch.
AMX-FP16
whose instruction intrinsics are available through the
-mamx-fp16
compiler switch.
PREFETCHI
whose instruction intrinsics are available through the
-mprefetchi
compiler switch.
RAO-INT
whose instruction intrinsics are available through the
-mraoint
compiler switch.
AMX-COMPLEX
whose instruction intrinsics are available through the
-mamx-complex
compiler switch.
GCC now supports AMD CPUs based on the
znver4
core through the
-march=znver4
compiler switch. The switch makes GCC consider using 512-bit vectors when auto-vectorizing.
Improvements to the static analyzer
The static analyzer has gained 20 new warnings:
-Wanalyzer-allocation-size
-Wanalyzer-deref-before-check
-Wanalyzer-exposure-through-uninit-copy
-Wanalyzer-imprecise-fp-arithmetic
-Wanalyzer-infinite-recursion
-Wanalyzer-jump-through-null
-Wanalyzer-out-of-bounds
-Wanalyzer-putenv-of-auto-var
-Wanalyzer-tainted-assertion
Seven new warnings relating to misuse of file descriptors:
-Wanalyzer-fd-access-mode-mismatch
-Wanalyzer-fd-double-close
-Wanalyzer-fd-leak
-Wanalyzer-fd-phase-mismatch
(for example, calling
accept
on a socket before calling
listen
on it)
-Wanalyzer-fd-type-mismatch
(for example, using a stream socket operation on a datagram socket)
-Wanalyzer-fd-use-after-close
-Wanalyzer-fd-use-without-check
Also implemented special-casing handling of the behavior of the
open
,
close
,
creat
,
dup
,
dup2
,
dup3
,
pipe
,
pipe2
,
read
, and
write
functions.
Four new warnings for misuses of the
<stdarg.h>
header:
-Wanalyzer-va-list-leak
warns about missing a
va_end
macro after a
va_start
or
va_copy
macro.
-Wanalyzer-va-list-use-after-va-end
warns about a
va_arg
or
va_copy
macro used on a
va_list
object type that has had the
va_end
macro called on it.
-Wanalyzer-va-arg-type-mismatch
type-checks
va_arg
macro usage in interprocedural execution paths against the types of the parameters that were actually passed to the variadic call.
-Wanalyzer-va-list-exhausted
warns if a
va_arg
macro is used too many times on a
va_list
object type in interprocedural execution paths.
Numerous other improvements.
Backwards incompatible changes
For C++, construction of global iostream objects such as
std::cout
,
std::cin
is now done inside the standard library, instead of in every source file that includes the
<iostream>
header. This change improves the startup performance of C++ programs, but it means that code compiled with GCC 13.1 will crash if the correct version of
libstdc++.so
is not used at runtime. See the
documentation
about using the correct
libstdc++.so
at runtime. Future GCC releases will mitigate the problem so that the program cannot be run at all with an earlier incompatible
libstdc++.so
.
Bugzilla:2172091
0.0-11
Fri May 10 2024, Brian Angelica (
[email protected]
)
Updated Tech Preview in
BZ#1690207
.
0.0-10
Thu May 9 2024, Gabriela Fialova (
[email protected]
)
Updated a known issue
BZ#1730502
(Storage).
0.0-9
Mon April 29 2024, Gabriela Fialova (
[email protected]
)
Added an enhancement
BZ#2093355
(Security).
0.0-8
Mon March 4 2024, Lucie Vařáková (
[email protected]
)
Added a bug fix
Jira:SSSD-6096
(Identity Management).
0.0-7
Thu February 29 2024, Lucie Vařáková (
[email protected]
)
Added a deprecated functionality
Jira:RHELDOCS-17641
(Networking).
0.0-6
Tue February 13 2024, Lucie Vařáková (
[email protected]
)
Added a deprecated functionality
Jira:RHELDOCS-17573
(Identity Management).
0.0-5
Fri February 2 2024, Lucie Vařáková (
[email protected]
)
Added a known issue
BZ#1834716
(Security).
Updated the
Jira:RHELDOCS-16755
deprecated functionality note (Containers).
0.0-4
Fri January 19 2024, Lucie Vařáková (
[email protected]
)
Added an enhancement related to Python
Jira:RHELDOCS-17369
(Dynamic programming languages, web and database servers).
Added an enhancement
Jira:RHELDOCS-16367
(The web console).
0.0-3
Wed January 10 2024, Lucie Vařáková (
[email protected]
)
Added a rebase
BZ#2196425
(Identity Management).
Updated the
Jira:RHELPLAN-156196
new feature description (Supportability).
Added deprecated functionality
Jira:RHELDOCS-17380
(Security).
Other minor updates.
0.0-2
Thu November 16 2023, Lenka Špačková (
[email protected]
)
Node.js 20
is now fully supported (
BZ#2186718
).
0.0-1
Wed November 15 2023, Lucie Vařáková (
[email protected]
)
Release of the Red Hat Enterprise Linux 8.9 Release Notes.
0.0-0
Wed September 27 2023, Lucie Vařáková (
[email protected]
)
Release of the Red Hat Enterprise Linux 8.9 Beta Release Notes.
Legal Notice
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at
http://creativecommons.org/licenses/by-sa/3.0/
. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux
® is the registered trademark of Linus Torvalds in the United States and other countries.
Java
® is a registered trademark of Oracle and/or its affiliates.
XFS
® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL
® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js
® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
|