7장. 컴파일러 및 개발 도구


다음 장에서는 RHEL 8과 RHEL 9 간의 컴파일러 및 개발 툴에 대한 주요 변경 사항을 설명합니다.

7.1. LLVM, Rust 및 Go에 대한 주요 변경 사항

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)가 추가되었습니다.
  • C23, C2c, C23 및 C2y 지원이 추가되었습니다.

자세한 내용은 LLVM 릴리스 노트 및 Clang 릴리스 노트를 참조하십시오.

LLVM Toolset은 롤링 애플리케이션 스트림이며 최신 버전만 지원됩니다. 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 문서를 참조하십시오.

rust Toolset rebased to 버전 1.84.0

rust Toolset이 1.84.0 버전으로 업데이트되었습니다. 이전에 사용 가능한 버전 1.79.0 이후 주요 개선 사항은 다음과 같습니다.

  • 새로운 LazyCellLazyLock 유형은 처음 사용할 때까지 초기화를 지연합니다. 이렇게 하면 각 인스턴스에 초기화 기능이 포함된 이전 OnceCellOnceLock 유형이 확장됩니다.
  • 표준 라이브러리의 새로운 정렬 구현은 런타임 성능을 개선하고 시간을 컴파일합니다. 또한 비교자가 총 순서를 생성하지 않는 경우를 탐지하여 정렬되지 않은 데이터를 반환하는 대신 패닉을 발생시킵니다.
  • 불투명 반환 유형에 대한 정확한 캡처가 추가되었습니다. 새로운 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::PanicInfostd::panic::PanicInfo 는 이제 다른 유형입니다.
  • extern "C" 함수가 이제 uncaught panics에서 중단됩니다. ABI 경계를 벗어나지 않도록 하는 대신 extern "C-unwind" 를 사용하십시오.

rust Toolset은 롤링 애플리케이션 스트림이며 Red Hat은 최신 버전만 지원합니다. 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 문서를 참조하십시오.

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가 포함되어 있습니다.
  • cmdcgo 기능은 -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
    • 데이터베이스/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
    • text/template
    • time
    • unicode/utf16

자세한 내용은 업스트림 릴리스 노트 를 참조하십시오.

Go Toolset은 롤링 애플리케이션 스트림이며 Red Hat은 최신 버전만 지원합니다. 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 문서를 참조하십시오.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동