[Rust] 1.67.0 업데이트 발표 (번역)
https://blog.rust-lang.org/2023/01/26/Rust-1.67.0.html
러스트는 누구든 믿음직하고 효과적인 소프트웨어를 만들 수 있게 도와주는 끝내주는 언어입니다.
만약 rustup을 통해서 Rust의 이전버전을 설치해놓은 상대라면, 업데이트는 아주 쉽습니다. 그냥 이렇게 치면 돼요.
rustup update stable
rustup을 설치한 적이 없다면, 우리 웹사이트의 설치 페이지에서 받을 수 있습니다. 그리고 깃허브에서 이번 버전에 대한 릴리즈 노트를 참조해보세요.
미래의 릴리즈를 테스트해서 러스트 팀을 돕고 싶다면, 로컬에서 베타 채널(rustup default beta) 또는 nightly 채널(rustup default nightly)로 업데이트하는 것을 고려할 수 있습니다.
버그를 발견했다면 리포트해주세요!
1.67.0 stable에는 무엇이 있나요?
#[must_use]가 async fn에서 동작합니다!
#[must_use]이 달린 async 함수는 이제 리턴된 impl Future의 출력에도 유효하게 동작합니다!
Future trait 자체는 이미 #[must_use]가 달려 있기 때문에 Future를 구현하는 모든 타입은 자동으로 #[must_use]가 됩니다. 이전에는 Future의 출력이 사용되어야 한다는 명시적인 제약을 달아줄 방법이 없었죠.
1.67에서는 이제 출력이 어떤 식으로든 사용되지 않는다면, 컴파일러가 경고를 해줍니다.
**#[must_use] **
**async fn bar() -> u32 { **
** 0 **
**} **
**async fn caller() { **
** bar().await; **
**} **
**warning: unused output of future returned by bar that must be used --> src/lib.rs:5:5 | 5 | bar().await; | ^^^^^^^^^^^ | = note: #[warn(unused_must_use)] on by default **
std::sync::mpsc 구현이 갱신됨
Rust의 표준 라이브러리는 1.0 이전부터 multi producer single consumer(mpsc) 채널이 있었는데요. 이번 릴리스에서는 crossbeam 채널을 기반으로 구현이 전환되었습니다.
이 릴리스에는 API 변경 사항이 포함되어 있지 않지만 이 새 구현은 많은 버그를 수정하고 성능 및 유지보수성을 향상시킵니다.
사용자는 이 릴리스에서 동작의 내부 변경 사항을 알아차리지 못할 거에요.
Stable이 된 API
{integer}::checked_ilog
{integer}::checked_ilog2
{integer}::checked_ilog10
{integer}::ilog
{integer}::ilog2
{integer}::ilog10
NonZeroU*::ilog2
NonZeroU*::ilog10
NonZero*::BITS
다음 API는 이제 const 컨텍스트에서도 stable합니다.
char::from_u32
char::from_digit
char::to_digit
core::char::from_u32
core::char::from_digit
이외에도 Rust, Cargo, Clippy에서 변경된 모든 것을 확인하세요.
1.67.0의 컨트리뷰터들
1.67.0의 완성엔 수많은 사람들이 함께했습니다. 전부 여러분이 없었다면 불가능했을 거에요.