GCC 15.1은 C23으로 전환하고 C++ 개선, 최적화 등이 추가되었습니다.

GCC

1년간의 집중적인 개발 끝에, 새로운 버전의 "GCC 15.1" 출시가 발표되었습니다. 이는 인기 있는 오픈 소스 컴파일러 제품군의 새로운 15.x 브랜치 내에서 최초의 안정적인 버전으로 자리 잡았습니다.

이번 릴리스는 새로운 GCC 15 시리즈를 공식적으로 출시할 뿐만 아니라, 16 브랜치가 병렬로 포크되어 다음 주요 릴리스인 GCC 16.0의 기반을 마련할 것이기 때문에 GCC 16.1 개발을 위한 준비의 시작을 알리기도 합니다.

GCC 15.1 주요 새로운 기능

이 새로운 버전의 가장 주목할만한 변경 사항 중 하나는 GCC 15.1입니다. C23 표준을 채택합니다 C 코드를 컴파일하기 위한 기본값으로, -std=gnu23 옵션을 사용합니다. 이 업데이트는 기본적으로 사용되는 기존 표준인 C17(-std=gnu17)을 대체하고 새로운 표준의 여러 가지 새로운 기능을 도입합니다. 그 중에는 상수 nullptr, 유형 _BitInt(n) 및 키워드 bool, true, false이로 인해 레거시 코드의 기존 식별자와 충돌이 발생할 수 있습니다.

GCC 15.1에 통합된 또 다른 새로운 기능은 다음과 같습니다. #embed 바이너리 데이터를 삽입하는 지시어 그리고 실행 순서와 일관된 결과의 결정을 보다 효과적으로 제어할 수 있는 비순차적, 재현 가능한 속성이 있습니다. 또한, if 조건문 내에서 선언된 변수, case 문의 값 범위, 가상 접미사 i와 j, 복소수에 적용되는 연산자 ++ 및 —에 대한 지원 등 향후 C2Y 표준의 요소가 구현되었습니다.

C++의 개선 사항 및 향후 C++26

C++ 언어의 경우 새로운 버전의 GCC 15.1은 C++26 표준에 대해 논의되고 있는 기능을 구현합니다. "friend" 연산자, 새로운 연산자의 변형을 통한 constexpr의 사용, 보장된 tail 재귀를 위한 musttail과 같은 구조화된 링크와 속성에 대한 구문의 개선과 같은 새로운 기능이 도입됨에 따라.

C++23 지원도 확장되었습니다. 새로운 export 사용 규칙, 임시 객체 처리 개선, libstdc++의 std 및 std.compat 모듈의 실험적 구현 등이 추가되었습니다. 또한, 보다 효율적인 템플릿 해싱 시스템 덕분에 유니온 초기화에 대한 보안이 강화되었고 코드 컴파일이 개선되었습니다.

정적 분석의 새로운 경고 및 개선 사항

시스템 정적 분석이 시각적으로 재설계되었습니다. 상징을 통해 문제를 강조합니다. C23으로 마이그레이션하기 위한 팁 및 새로운 libgdiagnostics 라이브러리 이를 통해 다른 프로젝트에서 진단 논리를 재사용할 수 있습니다. 또한 SARIF 형식으로 보고서를 생성하는 기능도 도입되어 최신 코드 분석 도구와의 통합이 용이해졌습니다.

에서 기존 경고가 새 경고에 추가됩니다., 처럼 -Wanalyzer-정의되지 않은 동작-ptrdiff 관련 없는 포인터 사이의 뺄셈을 감지하려면 –Wtrailing-whitespace 및 -Wleading-whitespace 불필요한 공백을 표시하고 –위더 가드 헤더 포함 보호의 오류를 감지합니다.

최적화 및 지원

주목할만한 최적화 중, LTO에 대한 증분 컴파일 모드가 포함되어 있습니다. (링크 타임 최적화)는 변경 사항이 최소화될 때 재컴파일 속도를 높이기 위해 고안되었습니다. 또한 루프 벡터화가 개선되었습니다컴파일 시점에 배열의 크기를 알 수 없는 경우에도 이를 활용하고, 매우 큰 파일을 컴파일하는 속도를 높입니다.

지원 측면에서 ARMv64 확장이 AArch8에 추가되었습니다. Apple M3와 같은 새로운 CPU 지원 Cortex-X925와 NVIDIA Grace를 통해 MinGW 플랫폼을 확장합니다. AMD Radeon GPU에 대한 코드 생성이 강화되었습니다. 새로운 GFX9, GFX10.3 및 GFX11 시리즈에 대한 실험적 지원. x86 아키텍처의 경우 AVX10.2 및 새로운 AMX 명령어에 대한 지원이 활성화되고 Xeon Phi Knights에 대한 지원은 중단되었습니다.

또한, GCC 15.1은 COBOL용 컴파일러를 소개합니다. (gcobol)은 x86-64 및 AArch64 아키텍처를 지원하고 D 언어의 업데이트된 구현(버전 2.111.0)을 제공합니다. Fortran에서 부호 없는 정수에 대한 지원이 추가되었고, OpenMP 5.0~6.0의 도입이 확대되어 상호 운용성이 개선되고 GPU에서 메모리 사용이 통합되었습니다.