[Rust] 1.90.0 업데이트 발표 (번역)

https://blog.rust-lang.org/2025/09/18/Rust-1.90.0/
러스트는 누구든 믿음직하고 효과적인 소프트웨어를 만들 수 있게 도와주는 끝내주는 언어입니다.

만약 rustup을 통해서 Rust의 이전버전을 설치해놓은 상대라면, 업데이트는 아주 쉽습니다. 그냥 이렇게 치면 돼요.

rustup update stable

rustup을 설치한 적이 없다면, 우리 웹사이트의 설치 페이지에서 받을 수 있습니다. 그리고 깃허브에서 이번 버전에 대한 릴리즈 노트를 참조해보세요.

미래의 릴리즈를 테스트해서 러스트 팀을 돕고 싶다면, 로컬에서 베타 채널(rustup default beta) 또는 nightly 채널(rustup default nightly)로 업데이트하는 것을 고려할 수 있습니다.

버그를 발견했다면 리포트해주세요!




1.90.0 stable에는 무엇이 있나요?



LLD가 이제 x86_64-unknown-linux-gnu에서 디폴트 linker가 됩니다.

x86_64-unknown-linux-gnu target은 이제 Rust crate을 링크할때 LLD linker를 사용합니다.

이건 특히 큰 바이너리나 많은 디버그 정보를 가진 바이너리를 다룰 경우, 그리고 incremental 재컴파일에 대해 링크 성능을 향상시켜줄 겁니다. 리눅스의 디폴트 링커(BFD)에 비해서요.

대부분의 경우 LLD는 BFD와 하위호환(backwards compatible)이 되어야 하며 컴파일 시간이 단축된 것 외에는 차이가 없어야 합니다.

그럼에도 링커 문제가 발생한다면 -C linker-features=-lld compiler 플래그를 걸어서 사용을 해제할 수 있습니다.

RUSTFLAGS 환경 변수에 추가하거나 프로젝트의 .cargo/config.toml 구성 파일에 추가하는 것으로 사용해제가 가능해요.
이렇게.

[target.x86_64-unknown-linux-gnu]
rustflags = ["-Clinker-features=-lld"]

LLD 링커에 문제가 발생하면 알려주세요.

LLD로의 전환, 벤치마크, 그리고 여기서 설명하지 않은 상세한 내용들이 궁금하다면, 이 글을 참조하세요.




cargo: workspace 단위 publish 지원

cargo publish --workspace가 이제 지원됩니다.
자동으로 워크스페이스에 속한 crate들을 전부 적절한 순서대로 publish하는 기능이죠.

이건 오랫동안 외부 도구를 쓰거나 각 publish들을 수동으로 순서를 맞춰 처리해줘야 했지만, 이젠 Cargo가 알아서 해줄 수 있습니다.

이 네이티브 통합은 publish --dry-run 중일 때도 publish할 crate의 전체 집합을 이미 publish한 것처럼 빌드해볼 수 있게 해줍니다.

이 publish들은 여전히 atomic하지 않습니다. 네트워크 오류나 서버 측 장애는 여전히 부분적으로 publish된 workspace를 만들 수 있습니다.




x86_64-apple-darwin을 Tier 2로 강등

깃허브는 곧 public repository를 위한 무료 macOS x86_64 러너 제공을 중단할 것입니다.
애플도 또한 x86_64 아키텍처에 대한 지원을 중단할 계획을 발표했습니다.

이 변경사항들에 따라, Rust 1.90는 x86_64-apple-darwin 타겟을 티어 1에서 티어 2로 강등 조치합니다.

이건 rustc나 cargo 같은걸 포함한 도구들이 빌드는 보장되지만 자동화된 테스트 수트에서 통과된다는 것을 보장하지 않는다는걸 의미합니다.

이 변경사항은 사용자들에게 당장 뭔가의 영향을 주지는 않을 겁니다.

티어 2로 남아있는 동안, 표준 라이브러리와 컴파일러는 여전히 Rust 프로젝트에 의해 배포될 것입니다.

시간이 지나 이 타겟에 대한 테스트 커버리지가 줄어들면, 나중에는 호환성이 깨질 확률이 높습니다.




Stable이 된 API

u{n}::checked_sub_signed
u{n}::overflowing_sub_signed
u{n}::saturating_sub_signed
u{n}::wrapping_sub_signed
impl Copy for IntErrorKind
impl Hash for IntErrorKind
impl PartialEq<&CStr> for CStr
impl PartialEq for CStr
impl PartialEq<Cow> for CStr
impl PartialEq<&CStr> for CString
impl PartialEq for CString
impl PartialEq<Cow> for CString
impl PartialEq<&CStr> for Cow
impl PartialEq for Cow
impl PartialEq for Cow

다음의 기존 API들은 const context버전도 stable이 됩니다.

<[T]>::reverse
f32::floor
f32::ceil
f32::trunc
f32::fract
f32::round
f32::round_ties_even
f64::floor
f64::ceil
f64::trunc
f64::fract
f64::round
f64::round_ties_even




Platform Support

x86_64-apple-darwin은 이제 tier 2 target이 되었습니다.

러스트의 tier 기반 플랫폼 지원에 대한 자세한 내용은 플랫폼 지원 페이지를 참조하세요.




기타 변경점

이외의 모든 변경사항은 각 Rust, Cargo, Clippy 페이지를 확인하세요




1.90.0의 컨트리뷰터들에게

1.90.0의 완성엔 수많은 사람들이 함께했습니다. 전부 여러분이 없었다면 불가능했을 거에요.

고마워요!