Rust
A language empowering everyone to build reliable and efficient software.
— Rust 공식 프로젝트가 지향하는 핵심 철학이자 슬로건.
안전성과 성능이라는 두 마리 토끼를 완벽하게 잡아내며 Stack Overflow에서 가장 사랑받는 언어 1위를 연달아 차지한 신흥 강자. 하지만 컴파일러(Borrow Checker)가 하루 종일 시비 걸며 소스코드를 반려하는 바람에 개발자의 멘탈을 가루로 만드는 키보드 분쇄기
1. 개요
Rust는 2010년 모질라(Mozilla) 재단 소속의 그레이든 호어(Graydon Hoare)가 개인 프로젝트로 시작하여 발표한 컴파일 기반 시스템 프로그래밍 언어이다. C언어와 C++이 가진 고질적인 메모리 관리 취약점과 안전성 문제를 극복하면서도, 가비지 컬렉터 없이 네이티브 언어 급의 극단적인 성능을 내는 것을 목표로 설계되었다.
초기에는 매니악한 언어 취급을 받았으나, 현재는 구글, 마이크로소프트, 리눅스 재단 등 IT 업계의 거물들이 시스템 핵심 인프라에 Rust를 전격 도입하면서 메이저 언어의 반열에 올라섰다. 2020년대에 들어서는 C++의 왕좌를 심각하게 위협하는 가장 핫한 언어로 평가받는다.
2. 주요 특징
2.1. 가비지 컬렉터 없는 안전성: 소유권(Ownership)
자바나 파이썬 등의 언어는 가비지 컬렉터(GC)를 두어 메모리를 관리하지만 이는 런타임 성능을 갉아먹는다. 반면 C/C++은 개발자가 직접 메모리를 할당하고 해제해야 해서, 해제하는 것을 까먹어 램이 터지거나(Memory Leak), 이미 해제한 메모리를 또 참조하여 프로그램이 뻗어버리는(Null Pointer / Use-After-Free) 헬게이트가 열리기 십상이었다.
Rust는 이 문제를 해결하기 위해 소유권(Ownership)과 대여(Borrowing)라는 독자적인 개념을 도입했다.1 컴파일 타임에 모든 변수의 생명주기(Lifetime)를 추적하여, 메모리가 해제되어야 할 시점을 자동으로 계산해 준다. 즉, 런타임 오버헤드가 전혀 없으면서도 메모리 버그가 원천적으로 불가능한 기적의 시스템을 구축해 낸 것이다.
2.2. 컴파일러의 무자비한 지적질과 훈수
Rust 개발의 가장 높은 장벽은 바로 컴파일러이다. 다른 언어에서는 대충 돌아갔을 법한 코드도 Rust 컴파일러의 핵심 모듈인 빌림 검사기(Borrow Checker)의 필터를 거치면 백이면 백 컴파일 에러를 뿜어낸다.
에러 메시지가 매우 상세하고 "여기에 &를 붙이세요"라며 친절하게 해결책까지 제안해 주는 편이지만, 코드를 고치면 고칠수록 에러가 고구마 줄기처럼 엮여 나와 초보 개발자들은 "내가 컴퓨터한테 조롱당하고 있는 것 아닌가" 하는 극심한 인지부조화와 무력감에 빠지기 일쑤다. 이 때문에 컴파일만 통과하면 프로그램이 버그 없이 아주 완벽하게 돌아가지만, 컴파일을 통과하는 것 자체가 수련의 과정이다.(...)
3. 관련 밈 및 드립
3.1. Borrow Checker와의 1대1 현피
Rust 개발을 시작한 초보자들이 빌림 검사기(Borrow Checker)에 가로막혀 며칠 내내 코드 한 줄을 컴파일시키지 못할 때 쓰는 밈이다. 해외에서는 Rust 컴파일러를 "내 코드를 매의 눈으로 감시하다가 트집 잡는 악마"로 묘사하며, 키보드를 때려 부수거나 소리를 지르는 짤방들이 활발하게 유통된다. 하지만 빌림 검사기를 이기려고 꼼수를 부리다가는 결국 unsafe 블록을 남발하여 C++로 롤백하는 참사가 일어난다
3.2. Rust로 다시 작성하자 (Rewrite it in Rust)
인터넷 커뮤니티에서 기존에 잘 작동하고 있던 유명 오픈소스나 서비스(예: C/C++로 작성된 툴들)의 깃허브 이슈 레이저에 뜬금없이 나타나 "이거 Rust로 새로 만들면 더 안전하고 빠를 텐데요?"라고 훈수 두는 극성 Rust 팬덤을 비꼬는 밈이다. 이를 풍자하는 약어로 RIIR이라고도 부르는데, 워낙 들이대는 빈도가 잦아 타 언어 개발자들로부터 "개신교 전도사 수준의 극성 분자들"이라며 조롱의 대상이 되기도 한다.
4. 여담
- 마스코트 Ferris: Rust의 마스코트는 페리스(Ferris)라는 이름의 주황색 게(Crab)다. Rust의 명사형 표현 중 하나인 '녹(Rust)'이 철(Ferrum)에서 생긴다는 점에서 유래했고, 이 때문에 Rust 개발자들은 스스로를 '러스타시안(Rustacean)'2이라고 부른다.
- 리눅스 커널 공식 진입: 리눅스 커널 개발에 역사상 최초로 C언어가 아닌 타 프로그래밍 언어로써 Rust 도입이 공식 승인되었다. 깐깐하기로 유명한 리누스 토발즈마저도 Rust의 안전성을 인정했으니 말 다 한 셈.
- Stack Overflow 연속 1위의 명예: Stack Overflow가 매년 전 세계 개발자 수만 명을 대상으로 진행하는 설문조사에서 '가장 사랑받는 언어(Most Loved Language)' 부문 연속 1위 독식 기록을 수년째 갱신하고 있다. 정작 설문 응답자 중 다수는 "Rust를 써보고 싶긴 한데 현업에선 무서워서 못 쓰고 있다"는 것이 함정이다.(...)