rust-lang/rust
Rust 1.98.0 출시, 수명 단축 강제 해제와 안전성 검사 강화
원제 rust-lang/rust 1.98.0
1.98.0
Key Point
Rust를 실무에서 쓰는 개발자라면 호환성 변화와 새로운 안전 검사 규칙, 플랫폼 지원 정책의 변화를 파악해야 기존 코드가 컴파일되지 않는 상황을 피할 수 있다.
핵심 요약
- Rust 1.98.0이 출시되었다. 언어 기능 면에서는 불변 위치에서도 &mut의 수명 단축을 허용하게 되어 Cell<&'long mut i32>에서 Cell<&'short mut dyn Send>로 강제 변환할 수 있다.
- memcmp, memset, strlen 같은 코어 런타임 심볼을 대상으로 invalid_runtime_symbol_definitions 린트(금지 기본값)와 suspicious_runtime_symbol_definitions 린트(경고 기본값)가 추가되었으며, 향후 확대될 예정이다.
- c_void_returns 린트(경고 기본값)로 core::ffi::c_void를 반환 타입으로 사용하는 것을 검사한다.
- 플랫폼 지원에서 powerpc64-unknown-linux-gnuelfv2와 aarch64-unknown-linux-pauthtest가 Tier 3으로 추가되고, thumbv7a·thumbv7r·thumbv8r ARM 아키텍처들이 Tier 2로 승격되었다.
- Location<'_> 수명이 'static으로 변경되었고, 총 20여 개 API가 새로 안정화되었다. 여기에는 str::substr_range, String::from_utf16le, Atomic::from_mut, bool::ok_or, Box::as_ptr 등이 포함된다.
- 호환성 변화로 수명 경계 추론이 특정 경우에 달라질 수 있고, 모호한 임포트 에러 처리가 강화되며, repr(transparent) 검사가 엄격해졌다.
- Windows에서 스레드 로컬 변수가 Fiber Local Storage(FLS)로 전환되었고, derive(PartialOrd) 최적화가 추가되었으며, Emscripten에서 WASM 예외 처리 ABI가 기본값으로 강제된다.
- transmute() 타입 크기 검사 개선, 패턴 매칭 구조적 동등성 검사 강화, unsafe 속성의 일관된 린트 발생이 추가되었다.
- Solaris의 File::lock 구현이 제거되어 '미지원' 반환하며, Windows-gnu 대상이 기본 도구 버전을 명시하고, rustfmt가 cfg_select!로 정의된 모듈 파일을 검색한다.
릴리스 노트 보기 ↗github.com