웹 어셈블리를 써보자! 하고 간단하게 시작해 봤다.
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 버전 안 바꿨으면 됐겠지. 내 미숙함을 체감하는 시간이었다.