카테고리 없음

Rust

Charlie_moon 2025. 1. 24. 20:09

Rust는 메모리 안정성 과 성능에 중점을 두고 만들어진 프로그래밍언어이다.

C++와 유사한 정적 컴파일 언어이며 다양한 플랫폼과 아키텍처를 지원한다.

다양한 장치에서 사용될 수 있다. Rust는 C++가 사용되는 곳에 대부분 사용이 가능하다.

별도의 런타임을 필요로 하지 않고 가비지컬렉션이 없다. 안정성과 안전에 중점을 둔 언어이다.

 

Rust 장점

컴파일 시간 메모리 안전

  • 메모리 버그를 컴파일 시간에 찾아낸다. 
  • 초기화하지 않을 수 없음
  • 메모리 이중 해제 불가
  • 메모리 해제 후 사용이 불가
  • 개발자들의 골칫덩이 Null 포인터가 없음
  • 스래드간 데이터 레이스 막아줌
  • 뮤텍스 Lock을 풀지 않는 것을 방지 

언어기능

  • 열거형과 패턴 매칭
  • 제네릭
  • FFI 런타임 오버헤드 없음
  • 비용이 들지 않는 추상화
  • 친절한 컴파일러 메시지
  • 내장 테스트 지원
  • LSP 지원이 잘 되어있음

 

Rust 생태계

  • rustc - .rs 확장자를 가진 파일을 바이너리 혹은 다른 중간 형식으로 변환해주는 Rust 컴파일러이다.
  • cargo - 러스트 의존성 관리자겸 빌드시스템 이다. 프로젝트의 의존성을 자동으로 다운받아 컴파일러에게 전달하여 빌드시킨다 그리고 유닛 테스트를 실행하는 테스트 러너를 내장하고 있다.
  • rustup - 툴체인 설치 프로그램 및 업데이트 프로그램이다. Rust언어의 새 버전 출시 때 rustc 와 cargo를 업데이트 하고 설치하는데 사용된다.

키포인트

  • Rust는 6주마다 새로운 릴리즈가 발표되며 이전 버전과의 호환성을 유지한다.
  • 릴리즈는 nightly, beta, stable  세가지 버전으로 제공되며 새로운 기능은 nightly -> beta -> 6주 -> stable로 변경된다.
  • 의존성은 다양한 저장소에서 제공 될 수 있다.
  • 러스트는 에디션으로 구분을 하고 있으며 현재는 Rust 2021에디션이다.
  • 2018, 2015 에디션이 있는데 에디션은 이전 에디션과 호환 되지 않을 수 있다.
  • 에디션이 변경됨에 따라 프로젝트가 깨지는 문제를 막기 위해서 프로젝트 Cargo.toml 파일에 명시적으로 어떤에디션을 사용할지 지정해야한다.

cargo 커맨드

  • cargo check : 빠르게 에러를 확인 할 수 있다.
  • cargo build --[option] : 실행 없이 컴파일만 수행한다. target/debug 폴더에서 결과물을 확인 할 수 있으며 option위치에 release를 추가로 입력하면 릴리즈 버전용으로 빌드하여 target/release 폴더에서 결과물을 확인 할 수 있다.

Cargo.toml 파일에는 의존성 패키지를 추가 할 수 있으며 cargo 커맨드를 실행하면 자동으로 의존성 패키지를 다운로드하고 컴파일 해준다.