3.13. 컴파일러 및 개발 도구
LLVM Toolset이 19.1.7로 업데이트되었습니다.
LLVM Toolset이 19.1.7 버전으로 업데이트되었습니다.
LLVM 컴파일러의 주요 변경 사항:
- 이제 LLVM에서 디버그 레코드를 사용하여 디버그 정보를 보다 효율적으로 표현합니다.
Clang의 주요 업데이트:
- C++14 sized deallocation은 기본적으로 활성화되어 있습니다.
- C++17 지원이 완료되었습니다.
- C++20 지원 개선, 특히 모듈, 개념 및 CTAD(Class Template Argument Deduction)가 추가되었습니다.
- C++23, C++2c, C23 및 C2y 지원이 추가되었습니다.
자세한 내용은 LLVM 릴리스 노트 및 Clang 릴리스 노트를 참조하십시오.
LLVM Toolset은 롤링 애플리케이션 스트림이며 최신 버전만 지원됩니다. 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 문서를 참조하십시오.
이제 llvm-doc
패키지에는 업스트림 문서에 대한 참조만 포함됩니다.
이전 버전의 llvm-doc
패키지에는 HTML 형식의 LLVM 문서가 포함되어 있습니다. 이번 업데이트를 통해 패키지는 업스트림 문서에 대한 참조가 포함된 /usr/share/doc/llvm/html/index.html
파일만 제공합니다.
Clang 및 LLVM에서 디버그 섹션 압축을 위해 zstd
지원
기본적으로 Clang 및 LLVM 툴은 Zlib
를 디버그 섹션 압축 알고리즘으로 사용합니다. 이 향상된 기능을 통해 사용자는 Zlib
보다 더 높은 압축 속도에 도달할 수 있는 Zstandard(zstd
) 알고리즘을 사용할 수 있습니다.
예를 들어 Clang으로 프로그램을 컴파일할 때 zstd
압축을 사용하려면 다음 명령을 사용합니다.
clang -Wa,-compress-debug-sections=zstd -Wl,--compress-debug-sections=zstd ...
$ clang -Wa,-compress-debug-sections=zstd -Wl,--compress-debug-sections=zstd ...
rust Toolset이 버전 1.84.1로 업데이트됨
rust Toolset이 버전 1.84.1로 업데이트되었습니다. 이전에 사용 가능한 버전 1.79.0 이후 주요 개선 사항은 다음과 같습니다.
-
새로운
LazyCell
및LazyLock
유형은 처음 사용할 때까지 초기화를 지연합니다. 이렇게 하면 각 인스턴스에 초기화 기능이 포함된 이전OnceCell
및OnceLock
유형이 확장됩니다. - 표준 라이브러리의 새로운 정렬 구현은 런타임 성능을 개선하고 시간을 컴파일합니다. 또한 비교자가 총 순서를 생성하지 않는 경우를 탐지하여 정렬되지 않은 데이터를 반환하는 대신 패닉을 발생시킵니다.
-
불투명 반환 유형에 대한 정확한 캡처가 추가되었습니다. 새로운
use<..
> 구문은 부정확한 반환 형식에 사용되는 일반 매개변수와 수명을 지정합니다. const
코드의 많은 새로운 기능이 추가되었습니다. 예를 들면 다음과 같습니다.- 부동 소수점 지원
-
인라인 어셈블리에 대한
const
immediates - static에 대한 참조
- 변경 가능한 참조 및 포인터
안전하지 않은
코드에 대한 많은 새로운 기능이 추가되었습니다. 예를 들면 다음과 같습니다.- 엄격한 검증 API
-
&Raw
포인터 구문 - 정적 문제 해결
-
안전하지 않은
extern
블록에서 안전한 항목 선언
-
카고 종속성 확인자는 이제 버전을 인식합니다. 종속성 크레이트가 지원되는 최소 Rust 버전을 지정하는 경우, 카르고는 최신
semver
-compatible crate 버전을 사용하는 대신 종속성 그래프를 확인할 때 이 정보를 사용합니다.
호환성 노트:
-
WebAssembly 시스템 인터페이스(WASI) 대상은
rust-std-static-wasm32-wasi
에서rust-std-wasm32-wasip1
로 변경됩니다. 명령줄에서--target wasm32-wasip1
매개변수를 사용하여 WASI 대상을 선택할 수도 있습니다. 자세한 내용은 Rust의 WASI 대상 업스트림 블로그 게시물의 변경 사항을 참조하십시오. -
split panic hook 및 panic 처리기 인수
core::panic::PanicInfo
및std::panic::PanicInfo
는 이제 다른 유형입니다. -
extern "C"
함수는 uncaught panics에서 프로세스를 중단합니다. ABI 경계를 벗어나지 않도록 하는 대신extern "C-unwind"
를 사용하십시오.
rust Toolset은 롤링 애플리케이션 스트림이며 Red Hat은 최신 버전만 지원합니다. 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 문서를 참조하십시오.
PCP 버전 6.3.2로 업데이트
Performance Co- Cryostat(PCP)가 버전 6.3.2로 업데이트되었습니다. 이전에 사용 가능한 버전 6.2.2에 대한 주요 변경 사항은 다음과 같습니다.
-
pmdaopenmetrics
: 기본적으로 Virtual Large Language Model (vLLM) 메트릭이 추가되었습니다. -
pmdalinux
: Hyper-V balloon 메트릭에 대한 지원이 추가되었습니다. -
pmdalinux
: 네트워킹 및hugepages
커널 메트릭이 업데이트되었습니다. -
pmdaamdgpu
:이 새로운 에이전트는libdrm
및libdrm-amdgpu
라이브러리에서 메트릭을 수집합니다. -
pmdabpftrace
: 많은 또는 느린bpftrace
스크립트가 포함된 이 에이전트의 시작이 수정되었습니다. -
pmdaproc
: 이 에이전트는 이제 Linuxfdinfo
인터페이스에서 AMD GPU에서 새 메트릭을 수집합니다. -
pmdahacluster
: 새 Pacemaker 버전을 지원하도록 메트릭이 업데이트되었습니다. -
pmdastatsd
: 로드 중인 충돌을 방지하기 위해 버그가 수정되었습니다. -
PCP-htop
: AMD GPU 메트릭 지원이 추가되었습니다. -
PCP-htop
: 플랫폼 설정이 화면 탭을 사용하도록 수정되었습니다. -
PCP-xsos
: 이 유틸리티가 추가되었습니다. 자세한 내용은pcp-xsos
가 시스템에 대한 빠른 요약을 제공하는 것을 참조하십시오. -
pmrep
: Numerous 구성 파일 메트릭 세트가 업데이트되었습니다. -
pmlogconf
: 계층 설정 파일 자동 레코드가 업데이트되었습니다. -
libpcp
및pmcd
: 모든 보안 강화 개선 사항이 추가되었습니다. -
libpcp
및pmlogger
: 선택적 아카이브zstd
압축에 대한 지원이 추가되었습니다.
glibc
라이브러리에는 향상된 IBM POWER10 최적화가 포함되어 있습니다.
이번 개선된 기능을 통해 glibc
라이브러리에서 IBM POWER10 플랫폼에 대한 하드웨어 지원이 개선되었습니다. 결과적으로 이 플랫폼에서 strcmp()
및 memchr()
API의 성능이 크게 개선되었습니다.
Jira:RHEL-24740[1]
Valgrind
버전 3.24.0으로 업데이트
valgrind
제품군이 3.24.0 버전으로 업데이트되었습니다. 주요 개선 사항은 다음과 같습니다.
-
이제 잘못된 파일 설명자를 사용할 때
--track-fds=yes
옵션이 비활성화 가능한 오류를 표시하고 XML 출력에 오류가 작성됩니다. 옵션을 사용하지 않는 경우 표시되는 경고는 더 이상 사용되지 않으며 향후 버전에서 제거됩니다. - 오류 메시지는 Ada 이름 demangling을 지원합니다.
-
deflate-conversion
기능(z15/arch13)은 IBM Z 플랫폼에서 deflate 압축 호출(DFLTCC) 명령을 지원합니다. -
IBM Z 플랫폼에서
valgrind
는 이제 메시지 보안 지원(MSA) 시설에서 제공하는 지침과 1-9 확장 기능을 지원합니다. Valgrind
는 다음과 같은 새로운 Linux 시스템 호출을 지원합니다.-
open_tree
-
move_mount
-
fsopen
-
fsconfig
-
fsmount
-
fspick
-
landlock_create_ruleset
-
landlock_add_rule
-
landlock_restrict_self
-
libabigail
을 버전 2.6로 업데이트
libabigail
라이브러리가 버전 2.6으로 업데이트되었습니다. 주요 변경 사항은 다음과 같습니다.
- BPF 유형 형식(BTF) 및 CTF(Common Trace Format)를 사용하여 Linux 커널 모듈 분석을 보다 효과적으로 지원합니다.
- 중간에서 내부 유형 비교 알고리즘 개선
-
abipkgdiff
,abidw
및abilint
유틸리티의 로깅 개선 - 다양한 버그 수정
추가 변경 사항은 업스트림 릴리스 노트 를 참조하십시오.
SystemTap
이 버전 5.2로 업데이트됨
SystemTap
추적 및 검사 툴이 버전 5.2로 업데이트되었습니다.
주목할 만한 개선 사항은 elfutils
0.192를 기반으로 하는 debuginfod-metadata
기반 프로브의 전체 활성화입니다. 이 기능을 사용하면 모든 일치하는 모든 이름에 대해 debuginfod
서버를 검색하여 지정된 바이너리 또는 라이브러리의 전체 버전을 대상으로 하는 systemtap
스크립트를 작성할 수 있습니다.
elfutils
버전 0.192로 업데이트
elfutils
패키지가 버전 0.192로 업데이트되었습니다. 주요 개선사항은 다음과 같습니다.
-
이제
debuginfod
서비스는 RHEL의 RPM 무결성 측정 아키텍처(IMA) 체계를 사용하여 무결성 측정 아키텍처(IMA)를 사용하여 파일별 서명 확인을 수행할 수 있습니다. -
파일 이름에서 빌드 ID 쿼리와 같은 서버 메타데이터를 쿼리하기 위해 새로운
debuginfod
API가 추가되었습니다. -
이제 kernel
debug
패키지에서 파일을 디버깅하는 것이 훨씬 빨라졌습니다.info
-
dwfl_set_sysroot
,dwfl_frame_unwound_source
및dwfl_unwound_source_str
함수가libdw
라이브러리에 추가되었습니다. -
eu-stacktrace
유틸리티는 기술 프리뷰로 사용할 수 있습니다. 자세한 내용은eu-stacktrace
를 기술 프리뷰로 사용 가능의 내용을 참조하십시오.
이제 ld
링커에서 애플리케이션에서 메모리 영역에 대한 읽기, 쓰기 및 실행 권한을 사용하는지 감지합니다.
읽기, 쓰기, 실행 권한이 있는 메모리 영역은 버퍼 오버플로를 통해 메모리에 실행 코드를 삽입한 다음 실행할 수 있기 때문에 잠재적인 공격 지점입니다.
이번 개선된 기능을 통해 ld
링커는 애플리케이션이 이러한 3개의 권한이 있는 메모리 영역을 사용하고 애플리케이션에 대해 다음 오류를 보고합니다.
ld: error: <file_name> has a LOAD segment with RWX permissions
ld: error: <file_name> has a LOAD segment with RWX permissions
ld
를 -no-error-rwx-segments
옵션과 함께 사용하여 오류를 억제할 수 있습니다. 그러나 링커에서 이 오류를 보고하는 경우 애플리케이션의 잠재적인 위험을 방지하려면 소스 코드를 수정하고 문제가 제거되도록 애플리케이션을 빌드하는 방법을 변경합니다.
Jira:RHEL-59802[1]
이제 ld
링커에서 애플리케이션에서 실행 가능한 스택을 사용하는지 감지
메모리의 실행 가능한 영역에 보관되는 스택은 버퍼 오버런으로 인해 실행 가능한 코드가 배치되는 경우 잠재적인 공격 지점입니다.
이번 개선된 기능을 통해 ld
링커는 애플리케이션이 실행 스택을 사용하여 생성되었는지 감지하고 다음과 같은 오류를 보고합니다.
error: creating an executable stack because of -z execstack command line option error: <file>: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section) error: <file>: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section
error: creating an executable stack because of -z execstack command line option
error: <file>: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)
error: <file>: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section
ld
를 -no-error-execstack
옵션과 함께 사용하여 오류를 억제할 수 있습니다. 그러나 ld
가 오류를 보고하는 경우 애플리케이션의 잠재적인 위험을 방지하려면 소스 코드를 수정하고 실행 스택을 사용하지 않도록 빌드 메커니즘을 변경하는 것이 좋습니다.
Jira:RHEL-59801[1]
binutils
에서 IBM Z 명령 세트의 arch15
확장을 지원
이 향상된 기능을 통해 binutils
는 IBM Z 플랫폼에서 arch15
확장 CPU를 지원합니다. 개발자는 어셈블러 소스 파일에서 arch15
확장에서 제공하는 새로운 기능을 사용하거나 업데이트된 컴파일러를 컴파일된 프로그램에서도 사용할 수 있습니다. 이로 인해 더 작고 빠른 프로그램이 발생할 수 있습니다.
Jira:RHEL-50068[1]
boost-devel
패키지는 BoostConfig.cmake
및 기타 공식 CMake 스크립트를 제공합니다.
이번 개선된 기능에는 BoostConfig.cmake
및 기타 공식 CMake 스크립트가 boost-devel
패키지에 추가되었습니다. CMake는 확장 기능이 있는지 테스트하기 위해 이러한 스크립트 를
사용합니다. 결과적으로 기능 향상을
테스트하는 CMake 프로젝트가 이제 더 강력하게 작동합니다.
Go Toolset을 버전 1.23로 업데이트
Go Toolset이 1.23 버전으로 업데이트되었습니다. 주요 개선 사항은 다음과 같습니다.
for-range
루프는 다음 유형의 Cryostat 함수를 허용합니다.-
func(func() bool)
-
func(func(K) bool)
func(func(K, V) bool)
Cryostat 인수 함수를 호출하면
for-range
루프에 대한 반복 값이 생성됩니다. 참조 링크는 업스트림 릴리스 노트 를 참조하십시오.
-
- Go Toolchain은 Go 팀이 Go Toolchain 사용 및 작동 방식을 이해하는 데 도움이 되는 사용 및 중단 통계를 수집할 수 있습니다. 기본적으로 Go Telemetry는 Telemetry 데이터를 업로드하지 않고 로컬에만 저장합니다. 자세한 내용은 업스트림 Go Telemetry 설명서 를 참조하십시오.
-
go vet
하위 명령에는 참조 파일에서 사용하는 Go 버전에 너무 새로운 기호에 대한 참조를 나타내는stdversion
Analyzer가 포함되어 있습니다. -
cmd
및cgo
기능은-ldflags
옵션을 지원하여 C 링커에 플래그를 전달합니다.go
명령은 매우 큰CGO_LDFLAGS
환경 변수를 사용할 때인수 목록을 너무 긴
오류를 방지하기 위해 이 플래그를 자동으로 사용합니다. -
추적
유틸리티는 부분적으로 손상된 추적을 허용하고 추적 데이터를 복구하려고 합니다. 이는 충돌의 경우 추적이 충돌로 이어질 수 있기 때문에 특히 유용합니다. -
처리되지 않은 패닉 또는 기타 치명적인 오류 후에 런타임에서 출력한 역추적은
goroutine
의 스택 추적을 첫 번째goroutine
과 구별하기 위해 들여쓰기를 전달합니다. - profile-guided 최적화 사용에 대한 컴파일러 빌드 시간 오버헤드가 한 자리 백분율로 단축되었습니다.
-
새로운
-bindnow
링커 플래그를 사용하면 동적으로 연결된 ELF 바이너리를 빌드할 때 즉시 함수 바인딩을 사용할 수 있습니다. -
//go:linkname
linker 지시문은 더 이상 표준 라이브러리의 내부 기호와 해당 정의에서//go:linkname
으로 표시되지 않는 런타임을 나타냅니다. -
프로그램이 더 이상
Timer
또는Ticker
를 참조하지 않으면 가비지 컬렉션은Stop
메서드가 호출되지 않은 경우에도 즉시 정리합니다. 타이머 또는Ticker
와 연결된타이머
채널이 이제 용량 0과 호환되지 않습니다. 이렇게 하면Reset
또는stop
메서드가 호출될 때마다 호출 후 오래된 값이 전송되거나 수신되지 않습니다. -
새로운
고유
패키지는interning
또는hash-consing
과 같은 표준 값을 위한 기능을 제공합니다. -
새로운
iter
패키지는 사용자 정의 Cryostat와 함께 작동하는 기본 정의를 제공합니다. -
슬라이스
및맵
패키지는 Cryostat와 함께 작동하는 몇 가지 새로운 기능을 도입합니다. -
새
structs
패키지는 메모리 레이아웃과 같이 포함된 struct 유형의 속성을 수정하는 struct 필드에 대한 유형을 제공합니다. 다음 패키지에서는 약간의 변경이 수행됩니다.
-
archive/tar
-
crypto/tls
-
crypto/x509
-
database/sql
-
debug/elf
-
인코딩/진단
-
go/ast
-
go/types
-
math/rand/v2
-
net
-
net/http
-
net/http/httptest
-
net/netips
-
path/filepath
-
반영
-
runtime/debug
-
runtime/pprof
-
runtime/trace
-
슬라이스
-
sync
-
sync/atomic
-
syscall
-
testing/fstest
-
텍스트/템플릿
-
time
-
unicode/utf16
-
자세한 내용은 업스트림 릴리스 노트 를 참조하십시오.
Go Toolset은 롤링 애플리케이션 스트림이며 Red Hat은 최신 버전만 지원합니다. 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 문서를 참조하십시오.
Jira:RHEL-62392[1]
glibc
에서 GB18030-2022 인코딩 표준을 지원
이번 개선된 기능을 통해 glibc
의 GB18030 인코딩 표준이 버전 2005에서 2022년으로 업데이트되었습니다. 버전 2022에서는 31개의 새로운 트랜스코딩 관계와 이 표준에 의해 도입된 추가 문자 및 코드 포인트를 사용할 수 있습니다.
Jira:RHEL-56032[1]
Go Toolset을 버전 1.24.4로 업데이트
Go Toolset이 RHSA-2025:10676 권고를 통해 1.24.4 버전으로 업데이트되었습니다.
주요 개선 사항 및 변경 사항은 다음과 같습니다.
언어:
- 이제 일반 유형 별칭이 완전히 지원되므로 일반적이지 않은 유연성을 높이기 위해 유형 별칭을 매개 변수화할 수 있습니다.
툴:
-
Go 모듈 시스템은
go.mod
파일의툴
지시문을 지원하므로 실행 가능한 종속 항목을 직접 관리할 수 있습니다. -
Go build
,go install
,go test
명령은 구조화된 출력에 대해-json
플래그를 지원합니다. -
새로운
GOAUTH
환경 변수는 개인 모듈에 대한 향상된 인증을 제공합니다.
-
Go 모듈 시스템은
런타임 및 성능:
- 런타임 개선으로 CPU 오버헤드를 평균 2-3% 줄일 수 있습니다.
- 주요 변경 사항에는 스위스 테이블 및 더 효율적인 메모리 할당을 기반으로 하는 새로운 맵 구현이 포함됩니다.
표준 라이브러리:
-
새로운
os.Root
유형을 사용하면 디렉터리가 제한된 파일 시스템 액세스를 활성화합니다. -
testing.B.Loop
방법은 벤치마킹을 개선합니다. -
runtime.AddCleanup
함수는 보다 유연한 종료 메커니즘을 제공합니다. -
새로운
약한
패키지는 약한 포인터를 도입합니다.
-
새로운
암호화:
-
이제 ML-KEM 후 키 교환(
암호/mlkem
), HKDF, PBKDF2 및 SHA-3용 새 패키지를 사용할 수 있습니다. - Go 암호화 모듈은 FIPS 140-3 인증을 검토 중입니다.
-
이제 ML-KEM 후 키 교환(
추가 업데이트:
-
vet
툴에는 테스트 및 예제의 일반적인 오류를 감지하기 위한 새로운 분석기가 포함되어 있습니다. - 이제 objdump 툴에서 더 많은 아키텍처를 지원합니다.
-
CGO
는 성능 및 정확성을 개선하기 위해 주석을 도입했습니다.
-
자세한 내용은 업스트림 릴리스 노트 를 참조하십시오.
Go Toolset은 롤링 애플리케이션 스트림이며 Red Hat은 최신 버전만 지원합니다. 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 문서를 참조하십시오.
Jira:RHEL-101074[1]