러스트(Rust) 프로그래밍 언어가 1.99.0 버전을 발표하며 개발자들이 오랫동안 기다려온 여러 기능들을 안정화했습니다. 이번 업데이트의 핵심은 C 언어의 가변 인자 함수(variadic function)를 러스트 코드 내에서 직접 정의할 수 있게 된 것입니다. 이는 기존에 외부 C 라이브러리의 가변 인자 함수를 호출할 수만 있었던 제약을 넘어, 러스트 자체적으로 이러한 함수를 구현할 수 있게 됨으로써 C 언어 기반 시스템과의 통합 및 개발 유연성을 크게 높일 것으로 보입니다.
구체적으로, "C" 및 "C-unwind" ABI(Application Binary Interface)를 사용하는 가변 인자 함수를 `extern "C" fn sum(mut args: ...)`와 같은 형태로 정의할 수 있습니다. 가변 인자 목록은 C의 `va_list`와 ABI 호환되는 `VaList` 타입으로 처리되며, 읽을 수 있는 인자의 타입은 `VaArgSafe` 트레이트(trait)로 제한됩니다. 이와 함께 원시 포인터의 레이아웃 정보 조회 API 3종(`Layout::for_value_raw`, `mem::size_of_val_raw`, `mem::align_of_val_raw`)이 안정화되어 메모리 관리에 대한 더 세밀한 제어가 가능해졌습니다. 또한 `Box::leak` 사용 시 메모리 누출 후 재해제하는 패턴을 피하도록 권고하며, 대신 `Box::into_non_null` 또는 `Box::into_raw` 사용을 권장하는 등 메모리 안전성 강화에 대한 지침도 업데이트되었습니다.
이번 릴리스는 러스트가 시스템 프로그래밍 영역에서 C/C++과 같은 기존 언어들과 더욱 긴밀하게 협력할 수 있는 기반을 마련했다는 점에서 의미가 큽니다. 특히 C 언어와의 상호 운용성 개선은 운영체제 커널, 임베디드 시스템, 고성능 라이브러리 등 C 언어가 지배적인 분야에서 러스트의 활용도를 넓히는 데 기여할 것입니다. 개발자들은 러스트의 강력한 메모리 안전성 보장과 성능 이점을 유지하면서도, 레거시 C 코드베이스와 더 유연하게 통합되는 애플리케이션을 구축할 수 있게 될 것입니다. 이는 러스트 생태계의 확장과 더불어, 다양한 산업 분야에서 러스트 채택을 가속화하는 중요한 전환점이 될 것으로 예상됩니다.