programming
Rust (러스트)
반응형
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 |
---|
댓글