WebAssembly 브라우저 프리뷰

지난 3월 마지막 웹어셈블리(WebAssembly) 이정표를 세운 이래, 우리는 WebAssembly 커뮤니티 그룹안에서 표준을 정의하고 저마다의 브라우저에 그 표준을 구현하기 위해 노력해 왔습니다.

저는 이제 우리가 출시후보 바이너리포맷을 확보했고, 그와 호환되는 구현체가 스파이더몽키(SpiderMonkey)V8의 근간에 있으며, 이를 위한 작업이 차크라(Chakra)자바스크립트코어(JavaScriptCore)에도 활발히 진행 중이라 말하게 돼 기쁩니다. 이 중요한 이정표를 세움으로써, 우리는 이제 커뮤니티, 특히 실물을 접하기 전부터 안정화를 기다려온 온 모든 사람들로부터 더 넓은 피드백을 장려하고 싶습니다.

이 “브라우저 프리뷰” 기간에, WebAssembly는 여전히 플래그 뒤에 있을 거고 여기엔 바이너리 버전을, 우리가 영원히 머무르길 바라는 1로 리셋하는 변화가 적어도 한 번은 계획될 겁니다. 설계상은 아직 아무도 WebAssembly 바이너리를 현업에서 사용하려 하지 않을 것이라는 뜻입니다. 하지만 해결되는 데 실질적인 시간을 요하는 이슈가 발견되지 않으리라는 전제로, WebAssembly 커뮤니티그룹은 표준의 첫 버전을 2017년 1분기에 “완료(done)”로 표기하려고 합니다. 이는 브라우저가 플래그 없이 WebAssembly 탑재를 시작할 수 있게 할 것입니다. 우리의 영역인 파이어폭스에서, 이 청신호는 파이어폭스52(2017년 3월)에 WebAssembly를 탑재함을 의미합니다.

마지막 이정표의 새로운 점은?

만일 여러분이 개발이력을 살펴 왔다면, 지난 3월 마지막 이정표가 놓인 후 많은 진전을 볼 수 있습니다:

이 모든 작업을 통해 우리는 [64비트 파이어폭스52(나이틀리), 인텔코어i7-2600 3.40GHz 리눅스]환경에서 엔드투엔드 asm.js 대 WebAssembly를 비교한 고전적인 엠스크립튼-내부 측정법의 초기 수치를 얻을 수 있었습니다:

asmjs-wasm-comparison

여기서 볼 수 있는 속도증가는 Binaryen 최적화, 브라우저 최적화, WebAssembly로 드러난 신형 하드웨어 성능의 결합에 따른 결과입니다. 전체 파이프라인 최적화는 아직 진행중인만큼, 이 (Bullet 항목 의 이례적인 속도저하같은 이례적인 11/21 고침: 더 최근 Binaryen 최적화로 수정됨) 결과는 아마 출시 전에 개선될 것입니다. 하지만 지금도, 우리는 파이어폭스 사용자들이 이미 asm.js 최적화로부터 이미 이득을 얻고 있는 것처럼 WebAssembly가 명확한 향상을 가져왔음을 알 수 있습니다.

게다가 새로운 WebAssembly 연산자에 방점을 둔 연산 커널(computational kernels)은 훨씬 뛰어난 속도증가를 보여줄 수 있습니다. 예를 들어 위와 같이 실험적인 구성을 적용할 경우 64비트 정수 계산 커널은 asm.js에서 네이티브 속도보다 8.93배 느리게 32비트 JS 명령어를 에뮬레이션하는 반면, WebAssembly에서 네이티브 속도보다 단지 1.13배 느리게 작동합니다.

써보기

To try out WebAssembly를 써보려면, 엠스크립튼(Emscripten)으로 WebAssembly 모듈 컴파일하기자바스크립트에서 WebAssembly 모듈 적재 및 구동하기같은 내용을 담고 있는 webassembly.org로 가 보세요.

이제 막 나온 결과물이기 때문에 몇 가지 주의사항을 당부합니다:

첫째, 위 얘길 반복하면: 표준이 완료됐다고 표시되고 WebAssembly가 브라우저에서 구현되면 결과물은 제대로 바뀔 겁니다(그러면 이제껏 그랬듯이 웹을 망가뜨리지 않는 상태로 되돌아갈 겁니다!). 커뮤니티와 변화에 대해 소통할 수 있도록 돕기 위해, 우리는 과거 또는 계획한 변화를 우리 로드맵 페이지에 포스팅할 겁니다. 항상 나이틀리 빌드로 테스트하는 것 또한 좋은 생각입니다.

둘째, 온전한 WebAssembly “규격”은 현재 design 저장소의 여러 마크다운 파일에 흩어져 있고, (검증 규칙같은) 몇몇 세부사항은 오로지 reference interpreter 안에만 존재합니다. 브라우저 프리뷰 기간에, 우리는 이 흩어진 비트(bits)를 모아 spec 저장소에 단일한, 일관된 규격을 작성할 겁니다.

끝으로, 여러분은 지금 파이어폭스의 디버거 소스 보기에서 렌더링된 WebAssembly 텍스트 포맷을 볼 수 있습니다만, 온전한 디버거는 아직 동작하지 않습니다(우리가 거의 근접하긴 했지만요!). 한편 실험을 해 보실 분들께는 역사와 전통을 자랑하는(the time-honored tradition of) printf-디버깅을 사용하실 필요가 있습니다.

우리는 이런 요소들을 걷어내면서 이미 많은 흥미진진한 실험들을 접하고 있고, 이를 향후 몇달간 더 많이 접하길 기대합니다. 전반적인 디자인이나 reference interpreter나 특정 브라우저 구현에 관련된 여러분의 피드백 여부에 따라 피드백을 제공할 수 있는 많은 장소가 있습니다: webassembly.org에서 피드백 링크 목록을 모아놨습니다. 해피 해킹!

이 글은 Luke Wagner의 WebAssembly Browser Preview의 한국어 번역입니다.

작성자: Mincheol Im

https://twitter.com/mincheolim

Mincheol Im가 작성한 문서들…


댓글이 없습니다.

댓글 쓰기