왜 러스트로 웹어셈블리 개발을 해야 하나요?
저레벨 컨트롤과 고레벨 개발자 경험
자바스크립트 웹 앱들은 안정된 성능을 확보하고 유지하는 데 어려움을 겪습니다. 자바스크립트 동적 타입 시스템과 가비지 콜렉션을 잠시 중단하는 것만으로는 크게 도움이 되지 않습니다. 보기에는 작은 내용의 코드를 수정하더라도 JIT에 치명적인 코드를 작성한다면 드라마틱한 성능 저하를 일으킬 수도 있습니다.
러스트는 자바스크립트를 병들게 만드는 비결정적인 가비지 콜렉션 중단으로부터 자유로울 뿐 아니라, 프로그래머들이 간접지정(indirection)과 단일화(monomorphization), 메모리 레이아웃을 컨트롤할 수 있도록 함으로 저레벨 컨트롤과 안정된 성능을 제공합니다.
작은 .wasm
사이즈
.wasm
파일이 네트워크로 전송돼야 하는 점을 고려하면 코드의 파일 사이즈는 매우 중요합니다. 러스트는 런타임이 작고 가비지 콜렉터와 같은 불필요한 요소가 없어 .wasm
사이즈를 효과적으로 줄일 수 있도록 해주고, 실제로 사용하지 않는 함수들을 (빌드하는 코드 파일에서) 제외시켜줍니다.
이렇게 코드 파일 사이즈의 관점에서 실제로 사용하는 기능만 출력되는 코드에 포함할 수 있게 됩니다.
모든 내용을 다시 작성하지 말아 주세요
기존에 존재하는 코드 베이스를 지울 필요는 없습니다. 바로 효과를 볼 수 있도록 성능 개선이 중요한 자바스크립트 함수들을 먼저 러스트로 옮기는 것으로 시작해 볼 수도 있습니다. 원한다면 거기서 멈춰도 괜찮습니다.
다른 툴과 잘 작동합니다
러스트와 웹어셈블리는 기존에 존재하는 자바스크립트 툴들과 함께 가장 잘 작동합니다. 웹어셈블리는 ECMAScript 모듈을 지원하고, 개발 환경에서 npm과 webpack처럼 기존에 사랑받던 툴들을 계속 사용할 수도 있습니다.
기대할 수 있는 강점들
러스트는 다음과 같이 개발자들이 일반적으로 기대하게 되는 현대적인 편의 기능을 갖추고 있습니다.
-
cargo
로 강력한 패키지 관리하기 -
(추가 비용 없이) 이해하기 쉬운 코드를 쓸 수 있게 해주는 추상화
-
환영하는 커뮤니티! 😊