2018.04.10

"러스트-자바스크립트 호환성 강화"··· 모질라, 새 웹어셈블리 프로젝트 시작

Paul Krill | InfoWorld
모질라(Mozilla)가 자바스크립트와 러스트(Rust) 언어의 타입의 연결하는 이른바 'wasm-bindgen' 프로젝트를 진행중이다. 웹어셈블리(wasm) 포터블 코드 형식을 기반으로 한다.

이 프로젝트로 자바스크립트와 러스트 간의 호환성을 강화될 것으로 기대된다. 러스트는 웹어셈블리를 통해 자바스크립트와 같은 웹 언어 역할을 하게 된다. wasm-bindgen은 웹어셈블리 모듈과 자바스크립트 사이의 고수준 상호작용을 담당하며, 자바스크립트와 웹어셈블리는 스트링과 자바스크립트 오브젝트, 클래스 간에 통신할 수 있게 된다.

wasm-bindgen의 주요 기능은 다음과 같다.

- 웹어셈블리 호출로 자바 스크립트 구조, 함수, 오브젝트 내보내기. 개발자는 자바스크립트 메소드를 호출하고 속성에 접근할 수 있다. 러스트 코드에서 네이티브와 비슷한 환경을 제공한다.
- 러스트 구조와 함수를 자바스크립트로 내보내기. 자바스크립트 class로 변환되는 러스트 struct를 내보낼 수 있다. 이후에 구조는 삭제할 수 있다.

현재 웹어셈블리는 4가지 타입만 지원한다. 2개 정수 타입과 2개 부동소수점 타입이다. 그러나 자바스크립트와 러스트 개발자는 종종 더 다양한 타입을 사용한다. 예를 들어 러스트 개발자는 오류 처리에 Result를 사용한다. wasm-bindgen을 이용하면 자바스크립트가 기호열 하나나 러스트 함수로 러스트 API를 호출할 수 있다. 이를 통해 자바스크립트 예외를 잡아낼 수 있다. 웹어셈블리와 자바스크립트 간의 불일치를 제거함으로써, 자바스크립트는 웹어셈블리 함수를 활용할 수 있게 되고 마찬가지로 웹어셈블리는 자바스크립트 함수를 사용할 수 있다.

wasm-bindgen은 ECMA스크립트 모듈을 기반으로 러스트에 집중하고 있다. 그러나 장기적으로는 C와 C++ 같은 언어에도 사용할 수 있도록 지원할 계획이다. 단, 모질라에 따르면 이번 프로젝트는 아직 다른 언어까지 확장할 정도로 안정적인 단계는 아니다.

최종 목표는 러스트가 웹 언어가 되는 것이다. 웹어셈블리에 집중함으로써 러스트는 자바스크립트처럼 웹에서 실행할 수 있는 언어가 될 수 있다. 그러나 모질라는 자바스크립트를 러스트로 대체하는 것은 아니라고 설명했다. 러스트 어셈블리 앱은 완전히 러스트로 작성할 수 있는 것은 아니다. 상당한 양의 애플리케이션 코드는 여전히 자바스크립트가 차지한다. 러스트와 웹어셈블리는 애플리케이션의 특정 부분에 사용할 수 있는데, 소스 맵을 파싱하거나 DOM에서 변경된 부분을 찾는 작업이 대표적이다.

wasm-bindgen은 기트허브에서 다운로드할 수 있다. ciokr@idg.co.kr 



2018.04.10

"러스트-자바스크립트 호환성 강화"··· 모질라, 새 웹어셈블리 프로젝트 시작

Paul Krill | InfoWorld
모질라(Mozilla)가 자바스크립트와 러스트(Rust) 언어의 타입의 연결하는 이른바 'wasm-bindgen' 프로젝트를 진행중이다. 웹어셈블리(wasm) 포터블 코드 형식을 기반으로 한다.

이 프로젝트로 자바스크립트와 러스트 간의 호환성을 강화될 것으로 기대된다. 러스트는 웹어셈블리를 통해 자바스크립트와 같은 웹 언어 역할을 하게 된다. wasm-bindgen은 웹어셈블리 모듈과 자바스크립트 사이의 고수준 상호작용을 담당하며, 자바스크립트와 웹어셈블리는 스트링과 자바스크립트 오브젝트, 클래스 간에 통신할 수 있게 된다.

wasm-bindgen의 주요 기능은 다음과 같다.

- 웹어셈블리 호출로 자바 스크립트 구조, 함수, 오브젝트 내보내기. 개발자는 자바스크립트 메소드를 호출하고 속성에 접근할 수 있다. 러스트 코드에서 네이티브와 비슷한 환경을 제공한다.
- 러스트 구조와 함수를 자바스크립트로 내보내기. 자바스크립트 class로 변환되는 러스트 struct를 내보낼 수 있다. 이후에 구조는 삭제할 수 있다.

현재 웹어셈블리는 4가지 타입만 지원한다. 2개 정수 타입과 2개 부동소수점 타입이다. 그러나 자바스크립트와 러스트 개발자는 종종 더 다양한 타입을 사용한다. 예를 들어 러스트 개발자는 오류 처리에 Result를 사용한다. wasm-bindgen을 이용하면 자바스크립트가 기호열 하나나 러스트 함수로 러스트 API를 호출할 수 있다. 이를 통해 자바스크립트 예외를 잡아낼 수 있다. 웹어셈블리와 자바스크립트 간의 불일치를 제거함으로써, 자바스크립트는 웹어셈블리 함수를 활용할 수 있게 되고 마찬가지로 웹어셈블리는 자바스크립트 함수를 사용할 수 있다.

wasm-bindgen은 ECMA스크립트 모듈을 기반으로 러스트에 집중하고 있다. 그러나 장기적으로는 C와 C++ 같은 언어에도 사용할 수 있도록 지원할 계획이다. 단, 모질라에 따르면 이번 프로젝트는 아직 다른 언어까지 확장할 정도로 안정적인 단계는 아니다.

최종 목표는 러스트가 웹 언어가 되는 것이다. 웹어셈블리에 집중함으로써 러스트는 자바스크립트처럼 웹에서 실행할 수 있는 언어가 될 수 있다. 그러나 모질라는 자바스크립트를 러스트로 대체하는 것은 아니라고 설명했다. 러스트 어셈블리 앱은 완전히 러스트로 작성할 수 있는 것은 아니다. 상당한 양의 애플리케이션 코드는 여전히 자바스크립트가 차지한다. 러스트와 웹어셈블리는 애플리케이션의 특정 부분에 사용할 수 있는데, 소스 맵을 파싱하거나 DOM에서 변경된 부분을 찾는 작업이 대표적이다.

wasm-bindgen은 기트허브에서 다운로드할 수 있다. ciokr@idg.co.kr 

X