Rust — 메모리 안전을 컴파일러가 증명하는 시스템 언어
Entity (인물·조직)lectureverified2026-05-09

Rust — 메모리 안전을 컴파일러가 증명하는 시스템 언어

#vch#lecture-intro#A-language#g6

1. 요약

Rust는 2006년 Mozilla의 Graydon Hoare가 개인 프로젝트로 시작한 시스템 언어다. 2009년 Mozilla 공식 후원 → 2010년 7월 Mozilla 연차 회의에서 첫 공개 → 2015년 5월 Rust 1.0 안정 버전 → 2026년 현재 시스템 프로그래밍의 차세대 표준 으로 자리잡았다. 이름은 부식되지 않는 곰팡이류 에서 따왔다는 설이 유력하다.

2. 배경 — C++의 좌절한 개발자들

2000년대 후반 시스템 프로그래밍은 여전히 C·C++가 지배했지만 메모리 누수·use-after-free·data race 같은 버그가 지속적으로 발생했다. Microsoft 보안 연구에 따르면 CVE의 70% 이상이 메모리 안전 위반 에서 기록되었다.

Hoare는 후일 Rust를 "C++로 좌절한 개발자를 위한 언어" 라고 표현했다. 그가 박으려 한 것은 Garbage Collection 없이도 메모리 안전을 보장하는 시스템 이다.

이론적 토대는 학계에 있었다. AT&T Bell Labs와 Cornell의 Cyclone 언어, 영역 기반 메모리 관리(region-based memory management) 연구가 직접 영향을 줬다. 30년 학술 연구가 산업 언어로 기록된 사례다.

3. 핵심 특징

  • Ownership system — 모든 값에 단 한 명의 소유자. 빌림(borrow)은 컴파일러가 검사.
  • Borrow checker"누가·언제·어떻게 값을 사용하는지* 컴파일 시점에 추적.
  • No GC — 자동 메모리 관리 없이도 안전. 시스템 프로그래밍에 적합.
  • Zero-cost abstractions — 추상이 런타임 비용을 박지 않음.
  • Traits — Haskell type class에서 영감. Scala implicit과 같은 계열.
  • Fearless concurrency — 데이터 경쟁(data race)을 컴파일러가 거부.
  • Cargo + crates.io"Rust의 NPM". 2016년 기록됨. 1.5배 큰 생태계.

4. 주 용도

  • 2015~2018: Mozilla Servo 브라우저 엔진·Firefox 일부 컴포넌트
  • 2018~2022: AWS Firecracker (마이크로 VM)·Cloudflare 시스템·Discord 백엔드
  • 2022~현재: Linux Kernel 공식 채택 (2022) — C 외 첫 시스템 언어. Microsoft Windows 커널 일부도 Rust로 이전.
  • 2024~현재: Python·JavaScript 도구 체인의 Rust 화 (Ruff·Biome·Turbopack·Rolldown)

5. 시대 설계 도구 매핑

Rust는 "타입 시스템이 안전을 증명한다" 는 Haskell의 원리를 시스템 프로그래밍에 박은 언어다. C에서 런타임 디버깅 으로 풀던 문제를 컴파일 시점 증명 으로 옮겼다.

이는 설계의 위치 이동 의 결정적 사례다.

  • C 시대: 설계 = 코드 + 머릿속 + 테스트
  • C++ 시대: 설계 = 코드 + UML + 테스트
  • Rust 시대: 설계 = 타입 시스템 + 컴파일러 + 테스트

또한 Rust는 "러닝 커브가 가팔라도 안전이 우선이면 산업이 받아들인다" 는 점을 증명했다. 2026년 Stack Overflow 설문에서 9년 연속 most loved language 1위를 박았다.

6. 강의 활용

Rust는 강의의 "설계가 컴파일러에 박히는 시대" 를 보여주는 사례다. C 시대 "메모리 잘 관리하라"문서·교육·코드 리뷰 로만 강제했다. Rust는 "메모리 잘 관리하지 않으면 컴파일 자체가 안 된다" 로 박았다. 설계가 도구에 기록된 것이다.

이는 Vibe Coding 시대의 Spec-driven Development 와 정확히 같은 원리다. "명세 없이는 AI가 코드를 박지 않는다" — Rust 컴파일러가 타입 명세 없이는 코드를 박지 않는 것과 똑같다.

또한 Rust의 Borrow Checker"기계가 인간의 설계 의도를 검증한다" 는 패러다임의 산업적 첫 박음이다. LLM이 Spec Kit·CLAUDE.md를 검증하는 시대는 Rust가 박은 길의 연장선이다.

마지막으로 Rust의 Cargo 생태계는 "좋은 도구가 좋은 설계를 기록한다" 의 증거다. 2010년 등장한 신생 언어가 10년 만에 Linux Kernel에 기록된 비결은 언어 자체가 아니라 Cargo·Crates·rustfmt·Clippy 같은 설계 강제 도구 였다. 강의에서 "AI 에이전트 시대의 도구 생태계가 곧 설계 강제력" 을 설명할 때 Rust는 가장 좋은 비교 사례다.

출처

그룹 시리즈

synthesis/group-g6 (시대 그룹 종합 카드)