jco
WebAssembly 구성 요소 작업을 위한 JavaScript 도구 체인
바이트코드 얼라이언스 프로젝트
Jco는 JavaScript에서 WebAssembly 구성 요소 작업을 위한 완전한 기본 JS 도구 체인을 제공합니다.
기능은 다음과 같습니다:
Wasm 구성 요소 바이너리를 모든 JS 환경에서 실행할 수 있는 ES 모듈로 "트랜스파일링"합니다.
Node.js 및 브라우저에서 WASI Preview2 지원(실험적)
기본 JS 환경에서 사용하기 위한 라이브러리 또는 CLI 명령으로 사용할 수 있는 Wasm 도구 도우미의 구성 요소 빌드와 Binaryen을 통한 구성 요소용 최적화 도우미입니다.
명령 및 HTTP 프록시 세계의 JS 구현으로 Wasmtime과 같은 명령을 실행하고 제공합니다.
JavaScript(ComponentizeJS의 래퍼)로 작성된 구성 요소를 쉽게 생성하는 "Componentize" 명령입니다.
다른 언어로 구성 요소를 생성하려면 다양한 게스트 바인딩 생성 도우미에 대한 Rust 및 Wit Bindgen용 Cargo 구성 요소 프로젝트를 참조하세요.
npm 설치 @bytecodealliance/jco
Jco는 jco
명령을 통해 라이브러리 가져오기 또는 CLI로 사용할 수 있습니다.
전체 사용 예는 예제 워크플로 페이지를 참조하세요.
사용법: jco <명령> [옵션] jco - WebAssembly JS 구성 요소 도구 JS 구성 요소 변환 JS용 Bindgen 및 Wasm 도구 옵션: -V, --version 버전 번호를 출력합니다. -h, --help commandCommands에 대한 도움말을 표시합니다. 컴포넌트화 [옵션] <js-source> JavaScript 모듈에서 컴포넌트 생성 transpile [options] <comComponent-path> JavaScript 실행을 위해 WebAssembly 구성 요소를 JS + 코어 Wasm으로 변환합니다. 유형 [옵션] <wit-path> 지정된 WIT에 대한 유형 생성 run [options] <command> [args...] WASI 명령 구성요소 실행 Serve [옵션] <서버> [args...] WASI HTTP 구성 요소 제공 opt [options] <comComponent-file>은 wasm-opt Binaryen 최적화 실행을 포함하여 Wasm 구성 요소를 최적화합니다. wit [options] <comComponent-path> WebAssembly 구성 요소 [wasm-tools 구성 요소 wit]에서 WIT 추출 print [옵션] <input> 바이너리 파일에 대한 WebAssembly WAT 텍스트 인쇄 [wasm-tools print] 메타데이터 표시 [옵션] [모듈] Wasm 바이너리에 대한 생산자 메타데이터를 추출합니다. [wasm-tools 메타데이터 표시] 메타데이터-추가 [옵션] [모듈] Wasm 바이너리에 대한 생산자 메타데이터 추가 [wasm-tools 메타데이터 추가] 구문 분석 [옵션] <input>은 Wasm 텍스트 형식을 이진 파일로 구문 분석합니다. [wasm-tools 구문 분석] new [options] <core-module> 구성 요소 코어 Wasm [wasm-tools 구성 요소 새]에서 조정된 WebAssembly 구성 요소 생성 embed [옵션] [core-module] 핵심 Wasm 모듈에 구성 요소 입력 섹션 포함 [wasm-tools 구성 요소 포함] help [command] 명령에 대한 도움말 표시
개별 명령 옵션에 대한 도움말을 보려면 jco <cmd> --help
사용하세요.
자세한 배경 정보와 정보는 Transpiling Docs를 참조하세요.
Rust에서 변환을 직접 호출하기 위해 Jco에서 사용되는 bindgen을 crates.io에서 js-comComponent-bindgen으로 사용할 수도 있습니다.
WASI 명령 세계를 구현하는 Wasm 구성 요소의 경우 Node.js에서 이러한 애플리케이션을 실행하기 위해 jco run
유틸리티가 제공됩니다.
jco run cowasy.component.wasm hello
Preview2-shim WASI 구현을 사용하면 파일 시스템 및 환경 변수 권한을 포함하여 기본 시스템 기본 요소에 대한 전체 액세스가 제공됩니다.
HTTP 프록시 구성 요소의 경우 jco serve
JS 서버 구현을 제공합니다.
jco serve --port 8080 server.wasm
Wasmtime은 일반적으로 사용할 명령 및 프록시 세계를 실행하기 위한 가장 성능이 뛰어난 구현을 제공합니다. 이러한 구현은 오히려 JS 가상화가 필요할 때나 가장 편리한 접근 방식을 위한 것입니다.
참고 :
jco componentize
실험적인 것으로 간주되므로 예고 없이 주요 변경 사항이 적용될 수 있습니다.
JS 파일을 구성요소화하려면 다음을 실행하세요.
jco componentize app.js --wit wit -n world-name -o component.wasm
Spidermonkey 엔진 임베딩을 통해 WIT 세계 정의를 구현하는 JS 모듈에서 구성 요소를 생성합니다.
이 프로세스에 대한 자세한 내용은 ComponentizeJS를 참조하세요.
transpile(component: Uint8Array, opts?): Promise<{ files: Record<string, Uint8Array> }>
컴포넌트를 JS로 트랜스파일합니다.
opt(component: Uint8Array, opts?): Promise<{ component: Uint8Array }>
Binaryen Wasm-opt 프로젝트로 구성요소를 최적화합니다.
componentWit(component: Uint8Array, document?: string): string
구성 요소 바이너리에서 WIT 세계를 추출합니다.
print(component: Uint8Array): string
구성 요소 바이너리에 대한 WAT를 인쇄합니다.
metadataShow(wasm: Uint8Array): Metadata
구성요소 및 해당 중첩 모듈에 대한 생산자 도구 체인 메타데이터를 추출합니다.
parse(wat: string): Uint8Array
구성요소 WAT를 구문 분석하여 구성요소 바이너리를 출력합니다.
componentNew(coreWasm: Uint8Array | null, adapters?: [String, Uint8Array][]): Uint8Array
"WIT 구성 요소" 구성 요소 생성 도구로, 명명된 어댑터 바이너리 세트를 선택적으로 제공합니다.
componentEmbed(coreWasm: Uint8Array | null, wit: String, opts?: { stringEncoding?, dummy?, world?, metadata? }): Uint8Array
"WIT 구성 요소" 구성 요소 포함 도구는 구성 요소 생성의 고급 사용 사례로 구성 요소 유형을 핵심 바이너리에 포함하기 위한 것입니다.
metadataAdd(wasm: Uint8Array, metadata): Uint8Array
구성 요소 또는 핵심 Wasm 바이너리에 새로운 생산자 메타데이터를 추가합니다.
Jco 책의 Contributing 장을 참조하세요.
이 프로젝트는 LLVM 예외를 제외하고 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 라이센스를 참조하세요.
귀하가 명시적으로 달리 명시하지 않는 한, Apache-2.0 라이센스에 정의된 대로 귀하가 이 프로젝트에 포함하기 위해 의도적으로 제출한 기여는 추가 이용약관 없이 위와 같이 라이센스가 부여됩니다.