ืืืืจ ืฉื ื ืฉื ืคืืชืื
GCC 9.1 ืืืื ืืืืฆืื ืืชืืืื ืืชืงื C++17, ืืืฉื ืืืฉืื ืืืืืืืช ืฉื ืชืงื C++20 ืืขืชืืื (ืฉื ืงืื C++2a), ืืืืื ืืืืืช ืืงืฆื ืืฉืคืช D, ืชืืืื ืืืงืืช ื-OpenMP 5.0 , ืชืืืื ืืืขื ืืืื ื-OpenACC 2.5, ืืืืืื ืืช ืืืืืช ืืืจืืื ืฉื ืืืคืืืืืืฆืืืช ืืืืคืืืืืืฆืืืช ืืื-ืคืจืืฆืืืจืืช ืืฉืื ืืืจืืื, ืืจืืืช ืืื ืืืืื ืืืืกืคืช ืืืืจืืช ืืืฉืืช, ืงืฆื ืืืืจื ืขืืืจ OpenRISC, C-SKY V2 ื-AMD GCN GPU.
ืืขืืงืจื
- ื ืืกืคื ืชืืืื ืืฉืคืช ืืชืื ืืช D. GCC ืืืื ืืืืช ืงืฆื ืขื ืืืืจ
GDC (Gnu D Compiler) ืืกืคืจืืืช ืืื ืจืืฆื (libphobos), ืืืืคืฉืจืืช ืื ืืืฉืชืืฉ ื-GCC ืกืื ืืจืื ืืื ืืืช ืชืืื ืืืช ืืฉืคืช ืืชืื ืืช D. ืชืืืื ืืคืขืืช ืชืืืื ืืฉืคืช D ื-GCCืืื ืขืื ื-2011, ืืืื ืืจืจ ืืฉื ืืฆืืจื ืืืชืืื ืืช ืืงืื ืืืจืืฉืืช GCC ืืืขืืืช ืืืขืืจืช ืืืืืืช ืงื ืืื ืจืืื ื ื-Digital Mars, ืืืคืชืืช ืืช ืฉืคืช ืืชืื ืืช D; - ืืืฆืขื ืฉืืคืืจืื ืืืืืื ืืงืื. ืืืืืื, ืืืฉื ืืฉืืืืฉ ืืืกืืจืืืืืช ืฉืื ืืช ืืืจืืืช ืืืืืื Switch (ืืืืช ืงืคืืฆื, ืืืืงืช ืกืืืืืช, ืขืฅ ืืืืืืช) ืืืชืื ืืืฆืืื. ื ืืกืคื ืืช ืืืืืืช ืืฉื ืืช ืคืื ืงืฆืืืช ืืื ืืืจืืืช ืืืืืืืช ืืืืื Switch ืืืืฆืขืืช ืืืืคืืืืืืฆืื "-ftree-switch-conversion" (ืืืืืื, ืงืืืฆืช ืชื ืืื ืืื "ืืงืจื 2: ืืื = 205; ืืคืกืงื; ืืงืจื 3: ืืืฆื = 305; ืืคืกืงื ;โ ืืืืจ ื-"100 * ืืื + 5";
- ืืืคืืืืืืฆืืืช ืืื-ืืืืืื ืืฉืืคืจืืช. ืืืืจืืช ืืคืจืืกื ืืืืืืขืืช ืืืชืืื ืืืกืืกื ืงืื C++ ืืืืจื ืืื ืืืืจืืื ืขื ืคืจืืืจืื ืืืฉืื max-inline-insns-small, max-inline-insns-size, uninlined-function-insns, uninlined-function-time, uninlined-thunk-inss ื-uninlined -ืืื ืืื. ืืืืง ืืืืจืกืืืืืช ืืฉืืคืจืื ืฉื ืืคืจืืช ืงืื ืงืจ/ืื. ืืืจืืืืช ืืฉืืคืจืช ืขืืืจ ืืืืืื ืืืื
ืืืืืืช ืชืจืืื (ืืืืืื, ืืขืช ืืืฉืื ืืืคืืืืืืฆืื ืืฉืื ืืงืืฉืืจ ืืชืืื ืืืช ืืืืืืช); - ืฉืืคืจ ืื ืื ืื ืืืืคืืืืืืฆืื ืืืืืกืก ืขื ืชืืฆืืืช ืคืจืืคืื ืงืื (PGO โ Profile-guided Optimization) ืืฉืจ ืืืืฆืจ ืงืื ืืืคืืืืื ืืืชืจ ืขื ืกืื ื ืืชืื ืืืคืืื ื ืืืฆืืข ืืงืื. ืืคืฉืจืืช ืกืืืื "
-fprofile-ืฉืืืืฉ " ืืืื ืืขืช ืืช ืืฆืื ืืืืคืืืืืืฆืื "-fversion-loops-for-stredes", "-floop-interchange", "-floop-unroll-and-jam" ื-"-ftree-loop-distribution". ืืืกืจ ืืืืืช ืืืกืืืืจืืืช ืขื ืืื ืื ืืงืืฆืื, ืื ืฉืืคืืืช ืืช ืืืื ืืงืืฆืื ืขื ืคืจืืคืืืื (ืืืกืืืืจืืืช ื ืืฆืจืืช ืืขืช ืชืื ืืื ืืืฆืืข ืืืคืืืืืืฆืืืช ืืืืื ืืงืืฉืืจ); - ืืืคืืืืืืฆืืืช ืฉื ืืื ืงืืฉืืจ ืืฉืืคืจืืช (LTO). ื ืืชื ื ืคืืฉืื ืืืคืืกืื ืืคื ื ืืฆืืจืช ืืชืืฆืื, ืื ืฉืืคืฉืจ ืืืงืืื ืืฉืืขืืชืืช ืืช ืืืื ืงืืฆื ืืืืืืงื LTO, ืืืคืืืช ืืช ืฆืจืืืช ืืืืืจืื ืืฉืื ืืงืืฉืืจ ืืืฉืคืจ ืืช ืืืงืืื ืฉื ืืคืขืืืืช. ืืกืคืจ ืืืืืฆืืช (-param lto-partitions) ืืืืื ื-32 ื-128, ืื ืฉืืฉืคืจ ืืช ืืืืฆืืขืื ืืืขืจืืืช ืขื ืืกืคืจ ืจื ืฉื ืคืชืืืื ืฉื CPU. ื ืืกืฃ ืคืจืืืจ ืืื ืืฉืืื ืืืกืคืจ ืชืืืืื ืืืืคืืืืืืฆืื
"-param lto-max-streaming-parallelism";ืืชืืฆืื ืืื, ืืืฉืืืื ื-GCC 8.3, ืืืืคืืืืืืฆืืืช ืฉืืืฆืื ื-GCC 9
ืืึผืชึธืจ ืืืคืืืช ืืช ืืื ืืืืืืจ ืฉื Firefox 5 ื-LibreOffice 66 ืื-6.2.3%. ืืืื ืงืืฆื ืืืืืืืงื ืืจื ื-7%. ืืื ืืงืืฉืืจ ืืืขืื 8 ืืืืืช ืืจื ื-11%. ืฉืื ืืืืคืืืืืืฆืื ืืจืฆืืฃ ืฉื ืฉืื ืืงืืฉืืจ ืืืืจ ืืขืช ื-28% ืืฆืืจื 20% ืคืืืช ืืืืจืื. ืฆืจืืืช ืืืืืจืื ืฉื ืื ืืขืื ืืฉืื ืืืงืืื ืฉื LTO ืืจืื ื-30%; - ืจืื ืืคืจื ืืชืื ืืช ืืืงืืื ืืืืฉื ืขืืืจ ืฉืคืืช C, C++ ื-Fortran
OpenACC 2.5 , ืืืืืืจ ืืืื ืืืืจืืช ืคืขืืืืช ืขื GPUs ืืืขืืืื ืืืืืืื ืืืื NVIDIA PTX; - ืชืืืื ืืืงืืช ืืชืงื ืืืฉืื ืขืืืจ C ื-C++
ืคืชื ืืช MP 5.0 (Open Multi-Processing), ืืืืืืจ ืืช ื-API ืืฉืืืืช ืืืฉืื ืฉืืืืช ืชืื ืืช ืืงืืืืืช ืขืืืจ ืฉืคืืช C, C++ ื-Fortran ืืืขืจืืืช ืืจืืืืช ืืืืืช ืืืืืจืืืืืช (CPU+GPU/DSP) ืขื ืืืืืืช ืืืืจืื ืืืงืืืจืืืฆืื ืืฉืืชืคืืช (SIMD) ; - ืืืืจืืช ืืืฉืืช ื ืืกืคื ืขืืืจ ืฉืคืช C: "
-ืืชืืืช-ืฉื-ืืืจ-ืืจืื " (ืขืจื ืืฆืืืข ืื ืืืืฉืจ ืืืืจ ืืืืก ืฉื ืืื ื ืื ืืืืื) ื
ยซ-ืขืจื ืืืืกืืืื " (ืืขืช ืืืฉื ืืคืื ืงืฆืืืช ืืืืฉืื ืขืจื ืืืืื, ืื ืืฉ ืคืื ืงืฆืื ืืชืืืื ืืืชืจ ืืืจืืืื ื ืฉืฆืืื, ืืืฉื, ืืฉ ืืืฉืชืืฉ ื-fabs(3.14) ืืืงืื ื-abs(3.14). ืืืืจืืช ืืืฉืืช ื ืืกืคื ืขืืืจ C++: "-Wdeprecated-copy",
"-Winit-list-lifetime", "-Wredundant-move", "-Wpessimizing-move" ื-"-Wclass-conversion". ืืืืจืืช ืจืืืช ืฉืืื ืืืื ืืช ืืขืืจ ืืืจืืื; - ื ืืกืคื ืชืืืื ื ืืกืืื ืืช ืขืืืจ ืืืง ืืชืงื ืฉืคืช C ืืขืชืืื, ืืฉื ืืงืื C2x. ืืื ืืืคืขืื ืชืืืื ื-C2x, ืืฉืชืืฉ ืืืคืฉืจืืืืช "-std=c2x" ื-"-std=gnu2x" (ืืื ืืืคืขืื ืืจืืืืช ืฉื GNU). ืืชืงื ื ืืฆื ืขืืืื ืืฉืื ืืืงืื ืฉื ืคืืชืื, ืืื, ืืืืื ืช ืืืืืืืช ืฉืื, ืจืง ืืืืืื _Static_assert ืขื ืืจืืืื ื ืืื ื ืชืื (_Static_assert ืขื ืฉื ื ืืจืืืื ืืื ืืื ืืชืืงื ื ื-C11);
- ืืชืืืื ืืชืงื C++17 ืืืืจืื ืืฆืืื. ื-frontend, ืืืืืืช ืืฉืคื ืฉื C++17 ืืืืฉืืืช ืืืืืื, ืื-libstdc++, ืคืื ืงืฆืืืช ืืกืคืจืืื ืืืืืืจืืช ืืชืงื ืงืจืืืืช ืืืืฉืื ืืื;
- ื ืืฉื
ืืืฉืื ืืืื ืืื ืฉื ืชืงื C++2a ืืขืชืืื. ืืืืืื, ื ืืกืคื ืืืืืืช ืืืืื ืืืืืื ืืืืื ืืืชืืื, ืืืืืขื ืืจืืืืช ืืืืืืื ืืืืื, ื ืืกืคื ืชืืืื ืืืืืจืื ืจืืงืื ืฉื ืืื ื ื ืชืื ืื ืืชืืื ืืช ืกืืืจืืช/ืื ืกืืืจืืช, ื ืืชื ื ืืืืืืช ืืงืจืื ืืคืื ืงืฆืืืช ืืืจืืืืืืืช ืืืืืืืื ืืืชื ืื , ืืื.
ืืื ืืืคืขืื ืชืืืื ื-C++2a, ืืฉืชืืฉ ืืืคืฉืจืืืืช "-std=c++2a" ื-"-std=gnu++2a". ื ืืกืคื ืงืืฆื ืืืชืจืช ืกืืืืืช ืืืจืกื ื-libstdc++ ืขืืืจ C++2a, std::remove_cvref, std::unwrap_reference, std::unwrap_decay_ref, std::is_nothrow_convertible ื-std::type_identity traits, std::midpoint, std::lerp function. , std::bind_front,
std::visit, std::is_constant_evaluated ื-std::assume_aligned, ืืืกืืคื ืชืืืื ืืกืื char8_t, ืืืืืขื ืืช ืืืืืืช ืืืืืง ืืช ืืงืืืืืช ืืืกืืืืช ืฉื ืืืจืืืืช (starts_with, ends_with); - ื ืืกืคื ืชืืืื ืืืขืืื ARM ืืืฉืื
Cortex-A76, Cortex-A55, Cortex-A76 DynamIQ big.LITTLE ื-Neoverse N1. ื ืืกืคื ืชืืืื ืืืืจืืืช ืฉืืืฆืื ื-Armv8.3-A ืืขืืืื ืขื ืืกืคืจืื ืืจืืืืื, ืืฆืืจืช ืืกืคืจืื ืคืกืืืื-ืืงืจืืืื (rng) ืืชืืื ืืืืจืื (memtag), ืืื ืืืจืืืช ืืืกืืืช ืืชืงืคืืช ืืงืฉืืจืืช ืืืืฆืืข ืกืคืงืืืืืื ืืชืคืขืื ืืืืืช ืืืืื ืืขื ืฃ . ืขืืืจ ืืจืืืืงืืืจืช AArch64, ื ืืกืฃ ืืฆื ืืื ืืฆืืชืื ืฉื ืืืกื ืืช ืืขืจืืื ("-fstack-clash-protection"). ืืื ืืืฉืชืืฉ ืืชืืื ืืช ืฉื ืืจืืืืงืืืจืช Armv8.5-A, ื ืืกืคื ืืืคืฉืจืืช "-march=armv8.5-a" - ืืื ืืืื ืงืฆื ืืืืจื ืืืคืงืช ืงืื ืขืืืจ GPUs ืฉื AMD ืืืืืกืก ืขื ืืืืงืจื-ืืจืืืืงืืืจื ืฉื GCN. ืืืืืขื ืืืืืืช ืืืื ืืืืืืจ ืฉื ืืืฉืืืื ืขื ืืืืื ืืืืื ืืืืืื (ืชืืืื ืืืืฆืืข ืืืฉืืื ืจืืืื ืืืืืืื ืืืืฆืขืืช OpenMP ื-OpenACC ืชืืฆืข ืืืืืจ ืืืชืจ) ืืชืืืื ื-GPU Fiji ื- Vega 10;
- ื ืืกืฃ backend ืืืฉ ืขืืืจ ืืขืืืื
OpenRISC ; - ื ืืกืฃ ืงืฆื ืืืืจื ืขืืืจ ืืขืืืื
C-SKY V2 , ืืืืืฆืจ ืขื ืืื ืืืืจื ืืกืื ืืช ืืืืชื ืฉื ืขืืืจ ืืืฉืืจื ืฆืจืืื ืฉืื ืื; - ืื ืืคืฉืจืืืืช ืฉืืจืช ืืคืงืืื ืฉืืคืขืืืืช ืขืจืื ืืชืื ืชืืืืืช ืืกืืืืืช kb, KiB, MB, MiB, GB ื- GiB;
-
ืืืืืข ืืืคืฉืจืืช "-flive-patching=[inline-only-static|inline-clone]" ืืืคืฉืจืช ืื ืืืฉืื ืงืืืคืืืฆืื ืืืืื ืขืืืจ ืืขืจืืืช ืชืืงืื ืืืื ืขืงื ืฉืืืื ืืจืืืช ืจืืืช ืขื ืืฉืืืืฉ ืืคืจืืฆืืืจืืช (IPA ) ืืืคืืืืืืฆืืืช; - ื ืืกืคื ืืคืฉืจืืช "--ืืฉืืื" ืืฉืืืื ืขืืื ื ืืืฉืืืช ืืืืคืฆืืืช ืืขืช ืฉืืืืฉ ื-bash;
- ืืื ืืืืืื ืืกืคืงืื ืชืฆืืืืช ืฉื ืงืืขื ืืงืกื ืืงืืจ ืืืฆืืื ืื ืืช ืืกืคืจ ืืฉืืจื ืืกืืืื ืืืืชื ืฉื ืืืืข ืงืฉืืจ, ืืืื ืกืืื ืืืคืจื ืืื. ืืื ืืืฉืืืช ืืช ืืฆืืช ืืกืคืจื ืืฉืืจืืช ืืืชืืืืืช, ืืืคืฉืจืืืืช "-fno-diagnostics-show-line-numbers" ื-"-fno-diagnostics-show-labels" ืืกืืคืงืืช;
-
ืืึผืจืึธื ืืืื ืืืืืื ืฉืืืืืช ืืงืื C++, ืฉืืคืืจ ืงืจืืืืช ืืืืืข ืขื ืืืืจืืื ืืฉืืืืืช ืืืืืฉืช ืคืจืืืจืื ืืขืืืชืืื; - ื ืืกืคื ืืคืฉืจืืช "-fdiagnostics-format=json", ืืืืคืฉืจืช ืืคืงืช ืคืื ืืืืื ืืคืืจืื ืงืจืื ืืืืื ื (JSON);
- ื ืืกืคื ืืคืฉืจืืืืช ืืืฉืืช ืืืฆืืจืช ืคืจืืคืืืื "-fprofile-filter-files" ื-"-fprofile-exclude-files" ืืื ืืืืืจ ืงืืฆื ืืงืืจ ืืขืืืื;
- AddressSanitizer ืืกืคืง ืืฆืืจืช ืงืื ืืืืืช ืงืืืคืงืื ืืืชืจ ืขืืืจ ืืฉืชื ืื ืืืืืืืืื, ืื ืฉืืคืืืช ืืช ืฆืจืืืช ืืืืืจืื ืฉื ืงืืืฅ ืืืคืขืื ืื ืืืง;
- ืชืคืืงื ืืฉืืคืจืช ื"
-fopt-info ยป (ืืืืข ืืคืืจื ืขื ืืืคืืืืืืฆืืืช ืฉื ืืกืคื). ื ืืกืคื ืงืืืืืืช ืืืฉืืช "ืืืื" ื"ืืืืืฆื", ืื ืืกืฃ ืืงืืืืืช ืืืืื ื ืืขืืจ "ืืขืจื". ืืืกืคืช ืคืื ืฉื ืืืืข ืขื ืงืืืช ืืืืืืช ืขื ืืชืคืชืืืช ืืืืืขืช ืืงืืืจืืืฆืื ืฉื ืืืืืจืื; - ื ืืกืคื ืืืคืฉืจืืช "-fsave-optimization-record", ืืืฉืจ ืฆืืื ื, GCC ืฉืืืจ ืืช ืืงืืืฅ SRCFILE.opt-record.json.gz ืขื ืชืืืืจ ืฉื ืืืืืืช ืขื ืืฉืืืืฉ ืืืืคืืืืืืฆืืืช ืืกืืืืืช. ืืืคืฉืจืืช ืืืืฉื ื ืืืืช ืืืฆื "-fopt-info" ืขื ืืื ืืืืืช ืืื ื ืชืื ืื ื ืืกืคืื, ืืืื ืืืืข ืขื ืืคืจืืคืื ืืืฉืจืฉืจืืช ืืืืืืขืืช;
- ื ืืกืคื ืืคืฉืจืืืืช "-fipa-stack-alignment" ื-"-fipa-reference-addressable" ืืฉืืืื ืืืืฉืืจ ืืืกื ืืช ืืฉืืืืฉ ืืืฆืื ืืชืืืช (ืืชืืื ืืืื ืื ืงืจืืื ืืืืืงืช) ืืืฉืชื ืื ืกืืืืื ืืืืื ืืืคืืืืืืฆืืืช ืืื-ืืืืืื;
- ืคืื ืงืฆืืืช ืืืื ืืช ืืืฉืืช ืืืฆืืืช ืืื ืืฉืืื ืืงืฉืืจื ืฉื ืชืืื ืืช ืืื ืื ืืืชื ืืืืช ืืงืฉืืจื ืืืืืื ืขื ืคืื ืืืืฆืืข ืคืงืืืืช ืกืคืงืืืืืืืืช: "
__ืชืืื ื_ืืฉ_ืืืื ืืช ยซWonderful__ืื ืื_ืฆืคืื_ืขื_ืกืืืจืืช "ื"__ืขืจื_ืืืื_ืืืื ื_ืกืคืงืืืฆืื ". ื ืืกืคื ืชืืื ื ืืืฉื ืขืืืจ ืคืื ืงืฆืืืช, ืืฉืชื ืื ืืกืืืืืืขืชืง ; - ืชืืืื ืืืื ืืงืื/ืคืื ืืกืื ืืจืื ื ืืืฉืื ืขืืืจ ืฉืคืช Fortran;
- ืืชืืืื ืืคืืืคืืจืืืช Solaris 10 (*-*-solaris2.10) ื-Cell/BE (Cell Broadband Engine SPU) ืืืฆืื ืืฉืืืืฉ ืืืื ืชืืกืจ ืืืืืืจื ืืืืืื ืืืื. ืืชืืืื ืืืจืืืืงืืืจืืช Armv2, Armv3, Armv5 ื- Armv5E ืืืคืกืงื. ืืชืืืื ื-Intel MPX (ืืจืืืืช ืืื ืช ืืืืจืื) ืืืคืกืงื.
ืืงืืจ: OpenNet.ru