카테고리 없음

MDN의 'Rust를 WebAssembly로 컴파일하기' 를 따라해 봤다.

hyuckkim 2022. 2. 19. 00:41

웹 어셈블리를 써보자! 하고 간단하게 시작해 봤다.

Rust를 WebAssembly로 컴파일하기 - 웹어셈블리 | MDN (mozilla.org)

 

Rust를 WebAssembly로 컴파일하기 - 웹어셈블리 | MDN

여러분이 Rust 코드를 가지고 있다면 WebAssembly로 컴파일 할 수 있습니다. 이 튜토리얼은 Rust 프로젝트를 컴파일하여 기존 웹 애플리케이션에서 사용하기 위해 알아야 할 모든 것을 설명합니다.

developer.mozilla.org

이글이다.

 

대충 러스트로 패키지를 만들어 npm에 올리고 그걸 받아서 사용하는 시나리오다.

 

wasm-pack에서 문제가 생겼다.

대충 구글링 결과 최신버전에서 펄 언어가 윈도우용 분기를 안만들어서 생긴 일 같다. (모름)

rust - can't install cargo wasm-pack - Stack Overflow

 

can't install cargo wasm-pack

When i run cargo install wasm-pack on windows 10 64-bit i get this error: error: failed to run custom build command for `openssl-sys v0.9.65` Caused by: process didn't exit successfully: `C:\Users\

stackoverflow.com

친절한 한 분이 직접 깃허브 페이지까지 파가며 대체 툴을 만들었다.

wasm-pack을 윈도우 환경에서 cargo 밖에서 따로 다운받을 수 있게 만들어 놨다.

wasm-pack (rustwasm.github.io)

 

wasm-pack

To install wasm-pack, if you are running a *nix system (Unix, Linux, MacOS), run the following in your terminal, then follow the onscreen instructions. curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh

rustwasm.github.io

cargo install wasm-pack 대신 이 명령어를 쓰면 되겠다. 여기서 몇십 분 삽질 했다.

 

계정 생성은 순조롭게 넘어갔다.

자본주의자들이 계정 생성에서 오류가 나게 내버려 둘 리가 없다.

 

javascript 외부함수 호출이 신기했다.

extern으로 alert같은 자바스크립트 함수를 호출할 수 있군.

하지만 마땅히 쓸 곳이 생각나지는 않는다. 거의 대부분의 조작이 오브젝트 메소드였던거 같은데...

 

컴파일 / 빌드 부분에서 내 이름 넣어야 되는 부분이 많다.

이거 아무 생각 없이 하나라도 안 고치면 진행 안된다는 걸 수차례 겪었다.

다행히 이번에는 막힘 없이 잘 됐다.

 

마지막에 서버 실행하는 데 문제가 생겼다.

패키지 몇 개가 deprecated 상태라며 진행이 안 됐다.

npm에서 webpack, webpack-cli, webpack-dev-server 세 개의 버전을 찾아서 최신 버전을 적었다.

 

파싱 실패 오류가 나왔다. webpack 5부터는 webassembly 사용이 기본으로 안된다는 내용이다. experiments.asyncWebAssembly: true를 추가하면 실행된다고 한다.

 

그리고 index.html이 public 폴더에 있어야 되더라. 

 

아마 webpack 버전 안 바꿨으면 됐겠지. 내 미숙함을 체감하는 시간이었다.