Rust의 비동기 기능이 MVP 상태에서 벗어나지 못해
원제: Async Rust never left the MVP state
왜 중요한가
임베디드 및 IoT 시장 성장에 따라 효율적인 시스템 프로그래밍 언어의 중요성이 증대되고 있음
네덜란드 개발회사 Tweede Golf의 엔지니어가 Rust 프로그래밍 언어의 비동기(async) 기능이 메모리 사용량 증가 문제로 인해 완성도가 부족하다고 지적했다. 특히 마이크로컨트롤러 같은 제한된 환경에서 바이너리 크기가 급증하는 문제가 심각하다고 분석했다.
Tweede Golf의 임베디드 소프트웨어 엔지니어 Dion은 Rust의 비동기 기능이 여전히 최소 기능 제품(MVP) 수준에 머물러 있다고 비판했다. 비동기 코드는 대형 서버와 소형 마이크로컨트롤러 모두에서 실행 가능한 장점이 있지만, 특히 메모리가 제한된 마이크로컨트롤러에서 심각한 바이너리 크기 증가 문제를 보인다고 설명했다.
구체적인 분석에 따르면, 간단한 비동기 함수가 360줄의 MIR(중간 표현) 코드를 생성하는 반면, 비동기가 아닌 버전은 23줄만 사용한다. 이는 약 15배의 차이를 보여준다. 비동기 함수는 상태 머신으로 변환되면서 Unresumed, Returned, Panicked, Suspend 등 다양한 상태를 관리해야 하기 때문에 코드가 복잡해진다.
엔지니어는 이 문제를 해결하기 위해 Rust 컴파일러 개선을 위한 프로젝트 목표를 제출했으며, 자금 지원을 찾고 있다고 밝혔다. 데스크톱이나 서버에서는 충분한 메모리와 컴퓨팅 자원으로 인해 덜 눈에 띄지만, 임베디드 시스템에서는 모든 바이트가 중요하다고 강조했다.