4.12. 컴파일러 및 개발 도구
LLVM Toolset이 17.0.6 버전으로 업데이트됨
LLVM Toolset이 17.0.6 버전으로 업데이트되었습니다.
주요 개선 사항은 다음과 같습니다.
- 이제 불투명 포인터 마이그레이션이 완료되었습니다.
- 중간 단위 최적화에서 레거시 통과 관리자에 대한 지원 삭제
Clang 변경 사항:
- C++20 coroutine은 더 이상 실험적인 것으로 간주되지 않습니다.
-
std::move
함수에 대한 코드 생성이 개선되었으며 최적화되지 않은 빌드에서 비슷합니다.
자세한 내용은 LLVM 및 Clang 업스트림 릴리스 노트를 참조하십시오.
rust Toolset 버전 1.75.0으로 업데이트됨
rust Toolset이 1.75.0 버전으로 업데이트되었습니다.
주요 개선 사항은 다음과 같습니다.
- 지속적인 평가 시간은 무제한입니다.
- Cleaner 패닉 메시지
- 레지스트리 인증
-
특성의
async fn
및 opaque 반환 유형
Go Toolset을 버전 1.21.0으로 업데이트
Go Toolset이 1.21.0 버전으로 업데이트되었습니다.
주요 개선 사항은 다음과 같습니다.
-
min
,max
및clear
built-ins가 추가되었습니다. - 프로필 가이드 최적화에 대한 공식 지원이 추가되었습니다.
- 이제 패키지 초기화 순서가 보다 정확하게 정의됩니다.
- 유형 유추가 향상되었습니다.
- 이전 버전과의 호환성 지원이 향상되었습니다.
자세한 내용은 Go 업스트림 릴리스 노트를 참조하십시오.
Jira:RHEL-11871[1]
Clang 리소스 디렉터리 이동
Clang이 내부 헤더 및 라이브러리를 저장하는 Clang 리소스 디렉터리가 /usr/lib64/clang/17
에서 /usr/lib/clang/17
로 이동되었습니다.
elfutils
버전 0.190으로 업데이트
elfutils
패키지가 버전 0.190으로 업데이트되었습니다. 주요 개선사항은 다음과 같습니다.
-
libelf
라이브러리에서 상대 재배치(RELR)를 지원합니다. -
libdw
라이브러리에서.debug_[ct]u_index
섹션을 인식합니다. -
eu-readelf
유틸리티는 이제 ELF 섹션을 사용하지 않고 동적 세그먼트를 통해 기호를 표시하는 새로운 -D
,--use-dynamic --symbol
옵션을 지원합니다. -
eu-readelf
유틸리티는 이제.gdb_index
버전 9를 표시할 수 있습니다. -
새로운
eu-scrlines
유틸리티는 지정된 DWARF 또는 ELF 파일과 관련된 소스 파일 목록을 컴파일합니다. -
파일 이름 표현에서 60% 압축에 대해
debuginfod
서버 스키마가 변경되었습니다(이를 다시 인덱싱해야 함).
SystemTap
이 버전 5.0으로 업데이트됨
systemtap
패키지가 버전 5.0으로 업데이트되었습니다. 주요 개선 사항은 다음과 같습니다.
- 보다 빠르고 안정적인 커널 사용자 전송.
- 확장된 DWARF5 debuginfo 형식 지원.
GCC Toolset 13 업데이트
GCC Toolset 13은 최신 버전의 개발 도구를 제공하는 컴파일러 툴셋입니다. AppStream 리포지토리에서 소프트웨어 컬렉션 형식으로 Application Stream으로 사용할 수 있습니다.
RHEL 9.4에서 도입된 주요 변경 사항은 다음과 같습니다.
- GCC 컴파일러가 버전 13.2.1로 업데이트되어 업스트림 GCC에서 사용할 수 있는 많은 버그 수정 및 개선 사항을 제공합니다.
-
binutils
는-march=
znver5
컴파일러 스위치를 통해 znver5 코어를 기반으로 AMD CPU를 지원합니다. -
annobin
이 12.32 버전으로 업데이트되었습니다. -
GCC용
annobin
플러그인은 기본적으로 오브젝트 파일에 저장된 노트에 더 압축된 형식을 사용하므로 오브젝트 파일을 더 작고 더 빠른 링크 시간, 특히 대규모의 복잡한 프로그램에서 사용할 수 있습니다.
다음 툴 및 버전은 GCC Toolset 13에서 제공합니다.
툴 | 버전 |
---|---|
GCC | 13.2.1 |
GDB | 12.1 |
binutils | 2.40 |
dwz | 0.14 |
annobin | 12.32 |
GCC Toolset 13을 설치하려면 root로 다음 명령을 실행합니다.
# dnf install gcc-toolset-13
GCC Toolset 13에서 툴을 실행하려면 다음을 수행합니다.
$ scl enable gcc-toolset-13 tool
GCC Toolset 13의 툴 버전이 다음 툴의 시스템 버전을 재정의하는 쉘 세션을 실행하려면 다음을 수행합니다.
$ scl enable gcc-toolset-13 bash
자세한 내용은 GCC Toolset 13 및 GCC Toolset 사용을 참조하십시오.
Jira:RHEL-23798[1]
GCC 및 -fstack-protector
플래그로 컴파일하면 더 이상 64비트 ARM에서 동적 스택 할당을 보호하지 못합니다.
이전 버전에서는 64비트 ARM 아키텍처에서 -fstack-protector
플래그를 사용하는 시스템 GCC 컴파일러에서 C99 변수 길이 배열 또는 alloca()
가 할당된 함수에서 버퍼 오버플로를 감지하지 못했습니다. 결과적으로 공격자는 스택에 저장된 레지스터를 덮어쓸 수 있었습니다. 이번 업데이트를 통해 64비트 ARM의 버퍼 오버플로 탐지가 수정되었습니다. 결과적으로 시스템 GCC로 컴파일된 애플리케이션이 더 안전합니다.
Jira:RHEL-17638[1]
GCC Toolset 13: GCC 및 -fstack-protector
플래그를 사용하여 더 이상 64비트 ARM에서 동적 스택 할당을 보호하지 못합니다.
이전 버전에서는 64비트 ARM 아키텍처에서 -fstack-protector
플래그를 사용하는 GCC 컴파일러에서 C99 변수 길이 배열 또는 할당 개체가 포함된 함수에서 버퍼 오버플로를 감지하지 못했습니다. 결과적으로 공격자는 스택에 저장된 레지스터를 덮어쓸 수 있었습니다. 이번 업데이트를 통해 64비트 ARM의 버퍼 오버플로 탐지가 수정되었습니다. 결과적으로 GCC로 컴파일된 애플리케이션이 더 안전합니다.
PCP가
버전 6.2.0으로 업데이트
pcp
패키지가 버전 6.2.0으로 업데이트되었습니다. 주요 개선사항은 다음과 같습니다.
-
PCP-htop
는 이제 사용자 정의 탭을 지원합니다. -
PCP-atop
는 이제 새로운 막대 그래프 시각화 모드를 지원합니다. - OpenMetrics PMDA 지표 레이블 및 로깅이 향상되었습니다.
- 추가 Linux 커널 가상 메모리 지표가 추가되었습니다.
새로운 툴:
-
pmlogredact
-
pcp-buddyinfo
-
pcp-meminfo
-
pcp-netstat
-
pcp-slabinfo
-
pcp-zoneinfo
-
Jira:RHEL-2317[1]
새 grafana-selinux
패키지
이전에는 grafana-server
의 기본 설치가 unconfined_service_t
SELinux 유형으로 실행되었습니다. 이번 업데이트에서는 grafana-server
에 대한 SELinux 정책이 포함되어 있고 기본적으로 grafana-server
를 사용하여 설치하는 새로운 grafana-selinux
패키지가 추가되었습니다. 그 결과 grafana-server
가 grafana_t
SELinux 유형으로 실행됩니다.
Papi에서
새로운 프로세서 마이크로 아키텍처 지원
이번 개선된 기능을 통해 다음 프로세서 마이크로 아키텍처에서 papi
이벤트를 사전 설정하여 성능 모니터링 하드웨어에 액세스할 수 있습니다.
- AMD Cryostat 4
- 4th Generation Intel® Xeon® Scalable Processors
Jira:RHEL-9333[1], Jira:RHEL-9335, Jira:RHEL-9334
새로운 패키지: maven-openjdk21
maven:3.8
모듈 스트림에는 OpenJDK 21에 대한 Maven JDK 바인딩을 제공하고 시스템 OpenJDK 21을 사용하도록 Maven을 구성하는 maven-openjdk21
하위 패키지가 포함됩니다.
Jira:RHEL-13046[1]
새 패키지: libzip-tools
RHEL 9.4에는 zipcmp
,zipmerge
및 ziptool
과 같은 유틸리티를 제공하는 libzip-tools
패키지가 도입되었습니다.
CMake
버전 3.26로 업데이트
cmake
패키지가 3.26 버전으로 업데이트되었습니다. 주요 개선사항은 다음과 같습니다.
- C17 및 C18 언어 표준에 대한 지원이 추가되었습니다.
-
CMake는 이제 운영 체제 식별 정보를 위해
수 있습니다./etc/os-release
파일을 쿼리할 -
CUDA 20 및
nvtx3
라이브러리에 대한 지원이 추가되었습니다. - Python 안정적인 애플리케이션 바이너리 인터페이스에 대한 지원이 추가되었습니다.
- SWIG(Simplified Wrapper and Interface Generator) 툴에 Perl 5에 대한 지원이 추가되었습니다.
Valgrind
가 3.22로 업데이트됨
valgrind
패키지가 3.22 버전으로 업데이트되었습니다. 주요 개선사항은 다음과 같습니다.
-
Val
grind
memcheck
는 이제 C 함수memalign
,posix_memalign
,aligned_alloc
, C++17 정렬새
연산자에 지정된 값이 유효한 정렬 값인지 확인합니다. -
Valgrind
memcheck
는 이제 C++14 크기d 및 C++17에 대한 불일치 탐지를
지원합니다. -
DWARF 디버깅 정보에 대한 지연 읽기 지원이 추가되어
debuginfo
패키지가 설치될 때 더 빨리 시작됩니다.
libabigail
을 버전 2.4로 업데이트
libabigail
패키지가 버전 2.4로 업데이트되었습니다.
주요 개선 사항은 다음과 같습니다.
-
abidiff
툴에서는 이제 두 개의 바이너리 세트를 비교할 수 있습니다. - 유연한 배열 데이터 멤버와 관련된 무해한 변경 보고서를 억제하는 지원이 추가되었습니다.
-
enum
형식에 대한 무해한 변경 보고서를 억제하는 지원 개선 - 익명의 enum, union 및 struct 유형에 대한 변경 사항을 개선했습니다.