Post thumbnail

MSRV가 뭐냐고 물으신다면 대답해 드리는게 인지상정: Minimum Supported Rust Version

· by 박승재

MSRV: Minimum Supported Rust Version

MSRV(Minimum Supported Rust Version)은 Rust 코드를 컴파일하기 위해 필요한 최소한의 버전을 의미합니다.

예를 들어 MSRV가 1.56이면, 1.56 미만의 Rust 컴파일러에서는 동작하지 않는다는 의미입니다.

간단하게 말하자면, NPM packages.jsonengines와 같은 기능이라고 생각할 수 있습니다.

MSRV는 최소한의 컴파일러 버전을 제한함으로써, 컴파일러 버전에 따라 인식할 수 없는 문법으로 인해 컴파일이 실패하는 상황을 방지할 수 있습니다.

Rust 1.56에서는 Cargo.toml명시적으로 MSRV를 표시할 수 있는 방법이 추가되었습니다.

참고: Announcing Rust 1.56.0 and Rust 2021

Cargo.toml:

[package]
# ...
rust-version = "1.56"

참고: The rust-version field

현재 프로젝트의 MSRVcargo-msrv을 이용해 찾을 수 있습니다.

아래와 같이 설치할 수 있습니다.

$ cargo install cargo-msrv

이진 탐색(Binary Search)를 이용해 프로젝트의 MSRV을 찾습니다:

$ cargo msrv --bisect

--min을 이용해 탐색할 최소 버전을 지정하면 더 빠르게 MSRV를 찾을 수 있습니다.

$ cargo msrv --bisect --min 1.40.0

--min a.b.c 형식으로 버전을 지정해야 합니다. --min a.b 형태는 동작하지 않습니다.