12P by xguru 2022-01-31 | favorite | 댓글과 토론

- 게임콘솔,TV,셋탑박스,스트리밍 스틱 등 8000개의 디바이스를 지원 중
- 업데이트 할때마다 각각의 네이티브 릴리즈를 해야함
ㅤ→ 이를 위해 JavaScript 대신 WASM을 이용함으로써 안정성을 높이고 속도를 개선

- 기존에는 C++로 작성된 JavaScript VM 과 JavaScript로 된 앱을 이용
ㅤ→ 현재는 JavaScript VM 과 WebAssembly VM 을 동시에 구동(아직 WASM이 지원안되는 구형 기기에서는 Javascript만 사용)
ㅤ→ 로우레벨 시스템을 JavaScript 에서 WASM으로 이관하고 WASM 바이너리도 업데이트
ㅤ→ Rust로 작성된 코드를 WASM으로 컴파일하여 구동 (JavaScript 보다 10~25배 빠름)

- 60FPS 달성 및 입력 레이턴시 개선을 위해 더 많은 시스템을 WASM으로 이관할 예정
- WASM VM은 자체 모듈과 인스턴스 전체가 7.5MB 정도여서 JavaScript Heap 메모리 30MB를 절약
ㅤ→ 배포하는 많은 디바이스 들의 메모리는 아주 작기 때문에 메모리 사용량은 중요한 요소임
- WASM 모듈은 압축시 150kb 정도로 작아서 스타트업 시간도 아주 작음
- Rust를 이용하는 장점 중 하나는 고품질의 라이브러리를 이용 가능 하다는 것 (egui 같은)
- Rust 와 WebAssembly에 투자한게 결실을 맺음
ㅤ→ 약 1년의 기간동안 37000라인의 Rust 코드로 성능,안정성,CPU 소비량을 개선했고, 메모리 사용률이 감소되었음