8P by neo 18일전 | favorite | 댓글 1개

새로운 실험적 백엔드

  • V8, Wasmi, WAMR 지원이 추가됨
  • 이제 Wasm-C-API 사양을 지원하는 모든 인터프리터 또는 런타임을 Wasmer에 쉽게 통합할 수 있음
  • V8 통합을 통해 V8 디버거 및 Chrome Devtools를 통한 훌륭한 디버깅 경험을 제공
  • V8을 백엔드로 사용한다는 것은 WebAssembly 예외 및 가비지 컬렉션을 기본적으로 지원한다는 의미이기도 함

iOS 지원 (WAMR, Wasmi, V8 바인딩 통해 제공)

  • Wasmer는 새로운 인터프리터 모드를 통해 iOS 장치에 WebAssembly를 제공함
  • V8, Wasmi, WebAssembly Micro Runtime(WAMR)의 기능을 활용하여 개발자는 이제 iOS에서 WebAssembly 모듈을 원활하게 실행할 수 있음
  • 코드베이스에 변경 사항이 필요하지 않으며, Apple 생태계에서 고성능 애플리케이션 작성이 가능해짐

코드베이스 슬림화

  • Wasmer 5.0 출시를 위해 Wasmer 코드베이스를 가능한 한 슬림하게 만드는 데 중점을 둠
  • Wasmer에서 사용하는 일부 종속성은 오랫동안 유지 관리되지 않았거나 더 새롭고 안전한 크레이트에 의해 중복됨
  • 지난 2년 동안 Emscripten 바인딩이 대부분 사용되지 않았으므로 지원을 중단하고 종속성을 정리한 결과 Wasmer 코드베이스에서 순수하게 2만 줄의 코드가 삭제됨

성능 향상

  • 모듈 역직렬화는 이제 최대 50% 더 빨라짐 (즉, Module::deserialize를 호출하거나 wasmer run을 통해 모듈을 실행할 때)
  • 이러한 개선 사항은 모듈을 역직렬화하는 데 사용하는 제로 복사 역직렬화 라이브러리인 rkyv의 중요한 업데이트를 활용하고 있음

업그레이드된 컴파일러: Cranelift 및 LLVM 18

  • 최신 Cranelift 통합으로 인해 런타임 속도가 크게 향상되어 WebAssembly 모듈이 그 어느 때보다 빠르게 실행됨
  • Wasmer 5.0에는 이제 LLVM의 최신 버전(18)이 포함되어 있어 개발자가 도구 체인의 최신 최적화에 액세스할 수 있음
  • LLVM 업그레이드는 호환성과 성능을 향상시켜 복잡한 WebAssembly 모듈을 컴파일하고 실행하기 위한 강력한 기반을 제공함
  • Wasmer 5.0은 또한 실험적인 LoongAarch64 지원과 함께 제공됨
  • 컴파일러의 최신 버전으로 coremark를 벤치마킹한 결과, LLVM과 Cranelift는 Wasmer v4.4.0에 비해 v5.0에서 약 8% 더 빠름

GN⁺의 의견

  • Wasmer 5.0의 출시는 WebAssembly 생태계에 큰 이정표가 될 것으로 보임. 특히 iOS 지원과 다양한 백엔드 옵션 제공은 WebAssembly의 적용 범위를 모바일 애플리케이션까지 크게 확장시킬 수 있을 것으로 기대됨
  • V8, Wasmi, WAMR 등 다양한 런타임을 백엔드로 지원함으로써 개발자들은 자신의 요구사항에 가장 적합한 런타임을 선택할 수 있게 되었음. 이는 WebAssembly의 유연성과 호환성을 높이는 데 크게 기여할 것으로 보임
  • 코드 베이스 슬림화와 최신 컴파일러 도입을 통한 성능 최적화 노력도 주목할 만한 부분임. 이는 Wasmer가 단순히 기능 추가에 그치지 않고 지속적인 품질 개선에도 노력을 기울이고 있음을 보여줌
  • 한편 Emscripten 바인딩 지원 중단은 아쉬운 부분이나, WASI와 WASIX 등 새로운 표준의 등장으로 인해 그 필요성이 줄어들었다는 점에서 합리적인 선택으로 보임
  • 종합하면 Wasmer 5.0은 WebAssembly의 발전상을 잘 보여주는 릴리스로, 앞으로도 Wasmer가 WebAssembly 생태계를 선도하는 주요 프로젝트 중 하나가 될 것으로 전망됨. 다만 아직 실험 단계인 기능들의 안정성과 성숙도를 높이기 위한 지속적인 노력이 필요해 보임

Hacker News 의견

  • 성능 그래프가 혼란스럽고 저주받은 것처럼 보임. 로그 스케일로 표시된 경우도 있고, 어떤 경우에는 무엇을 말하려는지 이해하기 어려움. 예를 들어, "Argon 2"라는 그래프는 거의 모든 막대가 같은 길이로 표시되어 있지만, 개별 막대는 밀리초 단위로 다른 숫자로 표시됨.
  • V8을 백엔드로 사용하면 WebAssembly 예외 처리와 가비지 컬렉션을 지원하게 됨. 이와 관련된 더 많은 소식을 기대하고 있음. wasm-gc가 동일한 런타임 내에서 다른 모듈 간에 호스트 데이터/문자열을 공유할 수 있는지, 아니면 단일 모듈에만 국한되는지 궁금함.
  • Wasmer의 랜딩 페이지에서 무엇을 하는지 이해하기 어려움. 모든 것을 어디서나 실행한다고 하지만, 실제로 무엇을 하는지 명확하지 않음. 개발자 지향적인 제품으로 보이지만, 기술적인 설명보다는 유행어가 많음.
  • Wasmtime에 만족하고 있으며, WASM 컴포넌트 모델과 WASI 기반 플러그인 시스템을 해킹 중임. 재미있게 작업 중임.
  • WASM을 프로젝트에 활용할 좋은 사례를 아직 찾지 못했음. Raspberry Pi를 어떻게 활용할지 모르는 것과 비슷한 상황임. Rust 비동기 프로젝트를 위해 WASM을 선택할 이유가 명확하지 않음.
  • Cross-Origin Isolated 헤더가 필요하지 않은 솔루션이 있었으면 좋겠음. 여전히 이전 버전을 사용 중임.
  • WASM이 Electron 앱의 리소스를 덜 소모하는 대체재로 기능할 수 있는지 궁금함. WASM은 DOM 접근이 없지만, 확장에서 추가될 수 있는지 의문임.
  • 이 솔루션이 어떤 문제를 해결하는지 모르겠음. 모든 JavaScript 런타임에는 이미 WASM 엔진이 내장되어 있지 않나?
  • 이 솔루션이 Node.js 코드를 샌드박스에서 안전하게 평가할 수 있게 해주는지 궁금함.
  • 성능 그래프를 읽기 어려움. 천 단위 구분 기호로 쉼표와 점이 모두 사용되고 있으며, 정밀도가 임의로 1, 2, 3자리로 반올림되고 있음.