Search
📰

Rust 1.67.0 버전 출시

요약

이번 버전에서는 async 함수가 #[must_use]로 주석 처리되면, 반환된 impl Future의 출력에도 이 속성이 적용되어 경고가 표시됩니다. 또한, Rust 표준 라이브러리의 multi-producer, single-consumer 채널은 crossbeam-channel을 기반으로 다시 구현되어 버그 수정과 성능 향상이 이루어졌습니다.
기타 변경 사항으로는, 정수 관련 API가 const context에서 안정화되었으며, Rust, Cargo 및 Clippy에서 발생한 모든 변경 사항을 확인할 수 있습니다.

본문

1.67.0에서의 주요 업데이트는 다음과 같습니다.

#[must_use] effective on async fn

async 함수에서 #[must_use] 주석이 달린 경우, 반환된 impl Future의 출력에도 해당 속성이 적용됩니다. Future trait 자체는 이미 #[must_use]로 주석이 달려있기 때문에, Future를 구현하는 모든 타입은 자동으로 #[must_use]입니다. 하지만 이전에는 Future의 출력이 중요하고 반드시 사용되어야 한다는 것을 나타내는 방법이 없었습니다. 하지만 1.67에서는 컴파일러가 출력이 사용되지 않는 경우 경고를 발생시키도록 업데이트되었습니다.
#[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; }
Rust
복사
vbnetCopy code 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
Shell
복사

std::sync::mpsc implementation updated

Rust의 표준 라이브러리는 1.0 이전부터 multi-producer, single-consumer 채널을 제공해왔습니다. 그러나 이번 릴리스에서는 crossbeam-channel을 기반으로 구현이 변경되었습니다. 이번 릴리스에서는 API 변경이 없으며, 새로운 구현은 여러 버그를 수정하고 성능과 유지 보수성을 향상시켰습니다. 사용자분들은 이번 릴리스에서 중요한 동작 변경을 느끼지 못하실 것입니다.

안정화된 API들

다음 API들이 이제 const contexts에서 안정화되었습니다.

참고 링크

최신 뉴스 정보