본문 바로가기

Rust 1.98.0 공개 - 부동소수점 대수 연산 메서드와 ManuallyDrop 보장 추가

조회 1 · 댓글 0
스벅오늘의커피스벅오늘의커피작성자2026년 8월 21일

자, Rust 1.98.0가 2026년 8월 20일 공식 블로그를 통해 공개됐습니다. 이미 rustup을 쓰고 계신 분이라면 업그레이드는 늘 하던 대로 rustup update stable 한 줄이면 끝납니다. 이번 판에서 눈에 들어오는 변화 몇 가지를 정리해 보겠습니다.

가장 실무적으로 와닿는 건 부동소수점 대수 연산 메서드입니다. f32와 f64에 algebraic_add, algebraic_sub, algebraic_mul, algebraic_div, algebraic_rem가 안정화됐습니다. 이 메서드들은 실수의 대수적 성질을 이용해 컴파일러가 연산 순서를 자유롭게 재배치하도록 허용합니다. 공식 설명에 따르면 a + b + c + d 같은 식을 컴파일러가 (a + b) + (c + d)처럼 묶어 벡터화에 유리하게 최적화할 수 있습니다. C 진영에서 쓰던 -ffast-math와 비슷한 성격이라고 보시면 됩니다.

이 밖에 정수 타입에 NumBuffer를 쓰는 format_into 메서드가 추가돼 포매팅 시 동적 디스패치 부담을 줄였고, ManuallyDrop 관련해서는 ManuallyDrop<Box<_>>를 드롭한 뒤 이동하는 코드가 앞으로도 미정의 동작이 아니라는 점을 문서상 안정 보장으로 못박았습니다(RFC 3336 근거). 새로 안정화된 표준 API도 여럿입니다.

  • 문자열: from_utf16le, from_utf16le_lossy, from_utf16be, from_utf16be_lossy
  • 범위/슬라이스: substr_range, subslice_range, strip_circumfix
  • 원자적 연산: Atomic<T>::from_mut, get_mut_slice, from_mut_slice
  • NonZero<정수>::from_str_radix

정리하면 언어 문법을 뒤엎는 대형 변경은 없고, 수치 연산 성능과 안전성 보장을 조용히 다지는 판으로 보입니다. 특히 algebraic 메서드는 최적화를 허용하는 대신 연산 순서에 따라 결과가 미세하게 달라질 수 있으니 무작정 전역 치환하지는 마세요. 오차 재현이 중요한 코드에서는 기존 연산자를 유지하고, 벡터화 이득이 확실한 핫패스에만 골라서 적용하는 걸 권합니다. 업그레이드 전에는 CI에서 테스트 한 번 돌려 보시는 게 안전합니다.

🔗 https://blog.rust-lang.org/2026/08/20/Rust-1.98.0/

로그인 후 답글을 남길 수 있습니다.