programming

Rust (러스트)

Roien 2022. 1. 9.
반응형

History

2010년 7월 Mozilla 재단에서 최초 공개한 프로그래밍 언어이다. 2021년 Rust foundation으로 분리되었으며 Google, Amazon, MS 등이 회원사로 참여하고 있다. 또한 최근 AOSP에서도 Rust를 C++, Java, Kotlin에 이어 AOSP를 구현하는데 사용하는 하나의 언어로 선택하였으며, 구글의 세로운 OS인 '퓨시아'에서 Rust를 사용하고 있다.

Stackoverflow에서 2016년 부터 현재(2021년)까지 개발자들이 가장 좋아하는 언어 1위를 기록하고 있다.

특징

  • C/C++과 동등한 수준의 성능을 보여주면서 동시에 안전성, 동시성을 강화하였다.
  • Trait이라는 (interface와 유사한) 개념을 사용하여 다형성을 지원한다.
  • null 포인터 에러가 언어 차원에서 존재할 수 없다.
    • Option라는 generic enum에서 None으로 지정하는 것이 null 포인터에 해당한다.
  • 안전한 메모리 관리
    • ownership와 lifetime 개염을 이용하여 compile 단계에서 메모리를 관리한다.
    • Debug mode의 경우 integer overflow등을 runtime에 잡아낼 수 있다.
    • system 프로그래밍 언어이기에 gabage collection을 수행하지 않는다.
  • 변수의 가변성을 compile time에 정의한다.
    • mut keyword를 지정해야 변경 가능한 변수 선언이 가능하다.
    • 기본적으로 변수는 read only이다.
  • 에러관리
    • 예외가 없다.
    • Result<T, E>로 에러를 묶어서 처리한다.
    • 이를 보고 panic을 발생시킬 것인지, 에러를 처리할 것인지를 결정한다.
    • Zero-cost abstraction 철학에 부합
      • C++의 경우 exception 처리를 위해 stack을 rewind 수행하며 이때 보통 5,000~10,000의 CPU cycle을 사용한다.
  • enum
    • Rust의 enum은 각 밧을 구조체나 tuple로 정의할 수 있다.
  • Trait
    • 객체의 특성과 interface를 제공한다. 
  • Hygenic macro
    • 단순한 문자열 치환이 아니라 LISP의 하이지닉 매크로 개념을 사용한다. 
    • compiler에서 수행하는 수행한다. 즉, Rust의 문법 중 일부이다. 
  • 비동기
  • Generic

 

Rust 사용 고려 이유

  구글과 마이크로소프트에서는 Rust를 사용할 경우 자사 제품의 보안 버그 패치 비용의 70%를 절감할 수 있을 것이라는 내용의 문서도 공개하였다. 구글/마이크로소프트/인텔은 이미 Rust의 개발에 깊숙히 관여하고 있으며, 각종 컨퍼런스에서 공개적으로 이를 언급하고 있다.

 

  Rust의 출시 배경은 C++의 안전하지 않은 메모리 관리의 위험을 제거하고자 하는데 있다. 코드리뷰와 정적 분석 tool 및 동적 분석 tool을 사용해야 거를 수 있는 잠재적인 문제들을 Rust는 애초에 발생할 여지를 주지 않는다는 것이 Rust의 장점이자 탄생 목적이다. 메모리 안전성은 보안성 및 생산성 측면에서 상당한 이점을 가져다 준다. 

 

 

점유율

  • C++로 구현된 기존 infra
    • 대부분의 H/W 리소스의 접근은 C/C++을 통해서 지원한다. 
    • CUDA 등도 C++로만 사용할 수 있다. 
  • 언어 수명
    • Rust는 아직 신성 언어이다. 
  • 불편함
    • 안전성을 우선시 하기에 이를 위해 지켜야 하는 엄격한 문법이 불편하다. 
    • 객체의 수명을 개발자가 직접 지정해야 할 경우 여기서 발생하는 에러와 복잡성이 발생한다. 

 

 

 

반응형

'programming' 카테고리의 다른 글

TypeScript  (0) 2021.12.22

댓글