JavaScript, 이제 Rust처럼 빠르고 안전하게!

by DD
4개월 전
조회수 44

'Script'는 JavaScript/TypeScript를 네이티브 머신 코드로 컴파일하여 Rust와 같은 성능을 목표로 함

Rust의 소유권(Ownership) 모델을 도입하여 메모리 안전성을 강화하고, TypeScript의 타입 추론(Type Inference)을 지원

커뮤니티에서는 언어 이름의 검색 용이성(Searchability)에 대한 우려와 함께, Vite 빌드 파이프라인 통합에 대한 제안이 나옴

일부 개발자는 JavaScript 생태계와의 호환성(Compatibility), 특히 객체 참조(Object Reference) 문제에 대한 의문을 제기

네이티브 컴파일(Native Compilation) 방식의 성능 향상

Script는 JIT 컴파일(JIT Compilation) 대신 LLVM과 Cranelift를 사용하여 네이티브 머신 코드로 직접 컴파일한다. 이는 별도의 런타임 의존성(Runtime Dependency) 없이, 빠른 시작 시간과 예측 가능한 성능을 보장한다. 특히, VM(Virtual Machine) 기반의 JavaScript에 비해 최대 30배 빠른 성능을 제공하며, 컴파일 시간 또한 JIT 컴파일 방식보다 효율적이다.

Rust의 소유권 모델(Ownership Model) 도입

Script는 Rust의 소유권 및 차용(Borrowing) 모델을 차용하여 메모리 안전성(Memory Safety)을 강화했다. 이는 Use-after-free, Double-free, 메모리 누수(Memory Leak) 및 데이터 경합(Data Race)과 같은 버그를 방지한다. 하지만, TypeScript의 유연한 타입 시스템(Type System)을 유지하면서 Rust의 엄격한 메모리 관리 방식을 어떻게 통합했는지에 대한 기술적 설명은 부족하다는 지적이 있다.

TypeScript 지원 및 제로 오버헤드(Zero-Overhead) 추상화

Script는 TypeScript의 구문과 타입 추론을 완벽하게 지원하며, 컴파일 타임에 타입 검사를 수행한다. 또한, Script의 추상화는 런타임 오버헤드 없이 효율적인 네이티브 코드로 컴파일된다. 예를 들어, `numbers.map((x) => x * 2)`와 같은 고수준 코드는 함수 호출 오버헤드나 메모리 할당 없이 효율적인 네이티브 코드로 변환된다.

커뮤니티의 주요 논쟁: 언어 이름 및 생태계 통합

커뮤니티에서는 'Script'라는 언어 이름이 검색 엔진 최적화(SEO)에 불리할 수 있다는 우려가 제기되었다. 또한, 기존 JavaScript 생태계와의 통합, 특히 Vite와 같은 빌드 도구와의 연동에 대한 질문이 이어졌다. 한편, 객체 참조(Object Reference)와 관련된 잠재적인 문제, 즉 함수 호출 시 객체 소유권(Object Ownership) 변화에 따른 예외 발생 가능성에 대한 의문도 제기되었다.

Introducing Script: JavaScript That Runs Like Rust