Thinking Different




러스트(Rust) 란?

 

  • 러스트(Rust) 는 모질라 리서치에서 개발한 범용 프로그래밍 언어로써 안정성을 중점으로 개발된 언어이다.
  • 2006년 개발자 그레이든 호아레의 개인 프로젝트로 시작되어, 2009년 모질라의 지원으로 현재까지 이어져오고 있다.
  • 인터넷에서 실행되는 서버 및 클라이언트 프로그램을 개발하는데 적합한 언어를 목표로 설계되었으며, C++과 비슷한 성능 수준을 목표로 한다.
  • 2012년 1월 최초 알파버전 0.1이 발표되었다.
  • 모질라의 정책에 따라 오픈소스로 개발되고 있어 많은 커뮤니티 및 개발자로부터 피드백을 받으며 성장하고 있다.

 

 

카고(Cargo)

 

카고(Cargo)는 러스트(Rust) 프로그래밍 언어로 쓰여진 러스트 소스코드 컴파일러 rustc를 포함하는 빌드 시스템(build system)이다. 한편 러스트 패키지 매니저(Rust package manager)의 역할을 한다.

 

 

메모리 안정성

  • 러스트(Rust) 는 메모리 오류를 발생시키지 않도록 설계되었다.
  • 널 포인터나 초기화되지 않은 포인터가 존재하지 않도록 강제하고 있다.
  • 모든 변수는 초기값을 가지고 할당되며, 해제된 포인터에 접근하는 코드는 컴파일러가 미리 감지, 컴파일 오류를 일으킨다.

 

안전한 동시성 프로그래밍


Concurrent programming이란 여러개의 프로세스가 겹치는 기간 동안 교차되어 실행되는 것을 말합니다. Data-race는 두개의 쓰레드가 동시에 메모리에 접근하게 되는 문제로 Concurrent programming에서 자주 등장하지만, 러스트는 borrow checker라는 것을 이용해서 컴파일 중에 이것을 방지합니다.

Zero-cost Abstracion


쓰지 않는 기능에 대해서는 성능에 영향을 주지 않습니다, 또한 쓰는 기능에 대해서는 추상적으로 코드를 작성하더라도 컴파일할 때는 가장 Low-level하게 실행됩니다.

 

 

러스트를 사용하는 서비스


파이어폭스
매직 포켓 – 드롭박스의 파일 스토리지 시스템
서보 – 모질라의 새 병렬 렌더링 엔진으로, 삼성과 함께 개발되고 있음.
OpenDNS – 구성 요소 중 2개에 러스트를 사용하고 있음.
레독스 OS – 러스트로 개발 중인 마이크로커널 운영 체제.
TiKV – 러스트로 구동되는 분산 키 값 데이터베이스.
Piston – 모듈식 게임 엔진
디스코드 — 러스트로 백엔드가 구동되는 채팅 소프트웨어
Deno – V8을 기반으로 하는 자바스크립트 및 타입스크립트 런타임