1장. 웹어셈블리란 무엇인가
웹어셈블리로의 여정
자바스크립트의 진화
구글과 네이티브 클라이언트
모질라와 asm.js
웹어셈블리의 탄생
웹어셈블리가 정확히 무엇이고 어디에 사용할 수 있는가?
공식적인 정의
Core Specification
자바스크립트와 Web API
그렇다면 웹어셈블리가 자바스크립트를 대체할까?
어디에서 사용할 수 있을까?
어떤 언어가 지원되는가?
C와 C++
Rust
다른 언어들
웹어셈블리의 한계는 무엇인가?
가비지 컬렉션(이 없음
DOM에 대한 직접적인 접근이 없음
오래된 브라우저에 대한 지원이 없음
Emscripten과의 관계
Emscripten의 역할
EMSDK와 Binaryen
요약
질문
추가 자료
2장. 웹어셈블리의 요소 - Wat, Wasm 그리고 JavaScript API
공통 구조와 추상 구문
Wat
정의와 S-표현
값, 타입 그리고 명령
개발 과정에서의 역할
바이너리 포맷과 모듈 파일
정의와 모듈 개요
모듈 섹션
자바스크립트 API와 Web API
웹어셈블리 저장소와 객체 캐시
모듈 로딩과 웹어셈블리 네임스페이스 메소드
WebAssembly 객체
WasmFiddle을 이용한 개념 연결
WasmFiddle이란?
C 코드에서 Wat로
Wasm에서 자바스크립트로
요약
질문
추가 자료
3장. 개발 환경 세팅
개발 툴 설치
운영체제와 하드웨어
패키지 매니저
Git
Node.js
GNU make와 rimraf
VS Code
VS Code 설정
설정과 사용자 정의 관리
확장 프로그램 개요
C/C++와 웹어셈블리를 위한 설정
다른 유용한 확장 프로그램들
Bracket pair colorizer
웹을 위한 설정
책 예제 코드 저장소 복제
로컬 서버 설치
브라우저 확인
다른 툴들
맥OS를 위한 iTerm2
우분투를 위한 Terminator
윈도우를 위한 cmder
Zsh와 Oh-My-Zsh
요약
질문
추가 자
이 책의 구성
1장, ‘웹어셈블리란 무엇인가’에서는 웹어셈블리의 기원과 기술에 관해 개요를 간략하게 설명한다. 웹어셈블리가 어떻게 사용되고, 어떤 프로그래밍 언어가 지원되는지, 현재 어떤 제한이 있는지 설명한다.
2장, ‘웹어셈블리의 요소 - Wat, Wasm, 그리고 자바스크립트 API’에서는 웹어셈블리를 구성하는 요소를 설명한다. 텍스트 포맷과 바이너리 포맷을 자세히 설명하며 이와 관련된 자바스크립트 API와 Web API에 대해서도 설명한다.
3장, ‘개발 환경 세팅’에서는 웹어셈블리로 개발하는 데 사용되는 도구를 알아본다. 각 플랫폼별 설치 방법과 개발 경험을 향상시키기 위한 권장 내용도 포함한다.
4장, ‘필수 종속성 설치’에서는 각 플랫폼별로 설치가 필요한 툴체인 설치 방법을 제공한다. 4장을 통해 C와 C++를 웹어셈블리 모듈로 컴파일할 수 있게 될 것이다.
5장, ‘웹어셈블리 모듈 생성과 로딩’에서는 Emscripten을 이용해 웹어셈블리 모듈을 만드는 방법과 컴파일러 출력물에 영향을 주는 플래그를 컴파일러에 전달하는 방법을 설명한다. 브라우저에서 웹어셈블리 모듈을 로딩하는 기술에 대해서도 설명한다.
6장, ‘자바스크립트와의 상호작용과 디버깅’에서는 Emscripten의 Module 객체와 브라우저의 전역 WebAssembly 객체와의 차이에 대해 자세히 설명한다. Emscripten이 제공하는 기능과 소스 맵을 만드는 절차에 대해서도 설명한다.
7장, ‘웹 어셈블리 애플리케이션 만들기’에서는 웹어셈블리 모듈과 상호작용하는 자바스크립트 회계 애플리케이션을 만들어 볼 것이다. 회계 거래를 계산하고 자바스크립트와 컴파일된 웹어셈블리 모듈 간에 데이터를 전단하기 위한 C 코드를 작성할 것이다.
8장, ‘Emscripten으로 게임 포팅’에서는 기존의 C++ 게임을 Emscripten을 이용해서 웹어셈블리로 포팅하는 과정을 단계별로 설명한다. 기존의 C++ 코드를 검토한 후에는 게임이 브라우저에서 실행될 수 있도록 적절히 파일을 수정할