Rust 1.96.0 출시! Range 타입 개선 및 WebAssembly 빌드 강화

by DD
6일 전
조회수 2

Rust 1.96.0 릴리스, 새로운 Range 타입 도입 및 WebAssembly 타겟 관련 변경 사항 포함

Range 타입(Range Types)을 `Copy` 가능하도록 개선하여 개발 편의성 증대

`assert_matches!` 매크로 추가로 테스트 코드(Test Code) 작성 편의성 향상

WebAssembly 타겟에서 링커(Linker) 동작 변경으로 빌드 안정성 강화

Copy 가능한 Range 타입 도입

Rust 1.96.0에서는 `core::range` 패키지를 통해 새로운 Range 타입을 도입하여 Copy trait을 구현할 수 있도록 변경했다. 이는 기존 Range 타입이 `Iterator`를 직접 구현하여 `Copy`를 지원하지 못했던 문제를 해결한 것이다. Range 타입의 복사(Copying)가 가능해짐으로써, 슬라이스 접근자를 복사 가능한 타입에 저장하는 등, 개발 편의성을 높였다.

assert_matches! 매크로의 추가

새롭게 추가된 `assert_matches!` 및 `debug_assert_matches!` 매크로는 값과 패턴의 일치를 검사하는 매크로이다. 이는 기존 `assert!(matches!(..))`를 대체하며, 실패 시 디버깅 정보를 개선하여 테스트 코드(Test Code)의 가독성을 높인다. 다만, 기존 서드파티 크레이트와의 충돌을 방지하기 위해 표준 프리루드(Standard Prelude)에 포함되지 않아 수동으로 import해야 한다.

WebAssembly 타겟 링커 동작 변경

Rust 1.96.0에서는 WebAssembly 타겟에서 링커가 `--allow-undefined` 옵션을 더 이상 사용하지 않도록 변경되었다. 이는 링킹 시 정의되지 않은 심볼(Symbol)이 발생할 경우 링커 에러를 발생시켜, 빌드 시점(Build Time)에 오류를 조기에 감지하고, 잠재적인 문제를 예방하기 위함이다. 이전 동작을 원할 경우 `RUSTFLAGS=-Clink-arg=--allow-undefined`를 사용해야 한다.

Cargo 보안 권고 사항

Rust 1.96.0은 서드파티 레지스트리 사용자를 위한 두 가지 보안 취약점(CVE-2026-5223, CVE-2026-5222)에 대한 수정 사항을 포함한다. CVE-2026-5223은 심볼릭 링크(Symlink)를 포함하는 크레이트(Crate) tarball 추출과 관련된 중간 심각도 취약점이며, CVE-2026-5222는 정규화된 URL을 사용한 인증과 관련된 낮은 심각도 취약점이다. Crates.io 사용자는 해당 취약점의 영향을 받지 않는다.

Announcing Rust 1.96.0