The Future of Rust

Matthias Endler

러스트의 미래

원문은 Matthias Endler님이 에 게재했습니다. 이 블로그 구독하기

먼저 당연한 얘기부터 하자면, 네, 제목은 다소 선정적이다. 그리고 내가 무슨 자격으로 러스트의 미래에 대해 말할 수 있는지 궁금할 수도 있다. 어쨌든 나는 러스트 코어 팀의 일원도 아니고, 러스트 생태계에 크게 기여한 사람도 아니다. 이에 대한 내 답은 이렇다. 왜 안 되겠는가? 시스템 프로그래밍 전반, 그리고 특히 러스트의 미래를 상상하는 것은 그 자체로 즐겁기 때문이다.

페리스는 러스트의 비공식 마스코트
페리스는 러스트의 비공식 마스코트
출처: 일러스트 제공: FreePik.com

러스트 코어 팀이 세운 단기 목표에 대해 들어본 적이 있을지도 모른다. 더 빠른 컴파일 속도와 더 완만한 학습 곡선 같은 것들이다. 이 글은 그런 이야기가 아니다. 대신 앞으로 5~10년 후 러스트가 두각을 나타낼 수 있는 조금 더 색다른 영역들을 탐험해 보고자 한다. 크게 성공하려면 뿌리와 날개, 둘 다 필요하다.

데이터 사이언스

현재 데이터 사이언스 분야에서 가장 인기 있는 언어는 Python, Java, R, C++이다.

데이터 사이언스를 위한 프로그래밍 언어 인기도
데이터 사이언스를 위한 프로그래밍 언어 인기도 (출처).

프로토타입은 주로 Python이나 R 같은 동적 타입 언어로 작성되지만, 알고리즘이 프로덕션 수준의 품질에 도달하면 확장성을 위해 종종 C++ 같은 더 빠른 언어로 다시 작성된다는 것을 우리는 봐 왔다. 가까운 미래에 러스트가 C++의 건전한 경쟁자가 되는 것은 충분히 상상할 수 있는 일이다. 러스트로 작성된 머신러닝 라이브러리인 leaf의 벤치마크 결과는 이미 실로 인상적이다.

블록버스터 게임

게임은 러스트가 활약할 수 있는 또 다른 분야다. 게임 스튜디오 입장에서는 큰 노력 없이 여러 플랫폼을 지원하는 것이 재정적으로 매력적이다. Cargorustup 덕분에 크로스 컴파일이 쉬워졌다. 현대적인 라이브러리들이 대규모 게임 개발에 필요한 툴링의 빈틈을 서서히 메우고 있다. Vulkan 3D 그래픽 API에 대한 러스트의 지원은 이미 최고 수준일지도 모른다. 하지만 결정적인 장점은 안전성과 성능이라는 독특한 조합이다. 백만 명의 플레이어에게 게임을 출시해 그들이 돈을 쏟아붓는다면, 게임이 충돌하지 않도록 확실히 해야 할 것이다… 그렇지 않은가?

그렇다고는 해도, 최초의 AAA급 러스트 게임이 등장하기까지는 아직 한참 멀었을 수도 있다. 2017년 당시 블리자드가 러스트에 대해 가졌던 입장이다.

시스템 엔지니어링

어쩌면 — 결국에는 — 러스트 코어에 대한 형식 검증이 이루어지는 날도 올 것이다. 그러면 RustBelt 같은 프로젝트가 우주 산업처럼 안전이 최우선인 산업에서 새로운 기회를 열게 될 것이다. 러스트로 제어되는(혹은 그 정신적 후계자 중 하나로 제어되는) 우주선을 화성에 안전하게 착륙시킨다면 얼마나 멋질까? SpaceX가 이미 러스트를 실험하고 있는지도 궁금하다…

다른 언어와의 통합

아직 언급하지 않은 다른 영역도 많다. 예를 들어 금융 및 의료 소프트웨어나 과학 컴퓨팅 같은 분야를 들 수 있다. 모든 경우에 러스트는 잘 어울릴 수 있다. 현재 가장 큰 진입 장벽은 아마도 방대한 레거시 코드일 것이다. 많은 산업에서 Cobol, C, Fortran으로 된 대규모 코드베이스를 유지하고 있으며, 이를 쉽게 다시 작성할 수는 없다.

다행히 러스트는 다른 언어들과 매우 잘 어울린다는 것이 입증되었다. 부분적으로는 C와의 뛰어난 호환성 덕분이고, 부분적으로는 런타임이나 가비지 컬렉터가 없기 때문이다. 전형적인 패턴은 안전성/성능 요구사항이 까다로운 애플리케이션의 핵심 부분을 러스트로 최적화하면서 나머지는 그대로 두는 것이다. 장기적으로 이러한 공생 관계는 더욱 강해질 것이라고 생각한다. Corrode처럼 C 코드를 러스트로 자동 변환하려는 야심 찬 프로젝트도 있다.

요약

전반적으로 나는 안전성, 성능 또는 머신에 대한 완전한 제어가 필수적인 영역에서 러스트의 잠재력이 매우 크다고 본다. 러스트나 Crystal 같은 언어가 등장하면서 한 부류의 오류들은 이제 과거의 일이 되었다. null 포인터도, 세그멘테이션 오류도, 메모리 누수도, 데이터 레이스도 없다. 미래 세대의 프로그래머들이 이 모든 것을 당연하게 여기게 될 것이라는 점이 고무적이다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글