jco
Rantai alat JavaScript untuk bekerja dengan Komponen WebAssembly
Proyek Aliansi Bytecode
Jco menyediakan rantai alat JS yang sepenuhnya asli untuk bekerja dengan Komponen WebAssembly dalam JavaScript.
Fitur-fiturnya meliputi:
"Mentranspilkan" binari Komponen Wasm ke dalam modul ES yang dapat berjalan di lingkungan JS apa pun.
Dukungan WASI Pratinjau2 di Node.js & browser (eksperimental).
Pembuatan komponen pembantu Wasm Tools, tersedia untuk digunakan sebagai perpustakaan atau perintah CLI untuk digunakan di lingkungan JS asli, serta pembantu pengoptimalan untuk Komponen melalui Binaryen.
Jalankan dan sajikan perintah seperti Wasmtime, sebagai implementasi JS dari dunia Command dan HTTP Proxy.
Perintah "Componentize" untuk dengan mudah membuat komponen yang ditulis dalam JavaScript (pembungkus ComponentizeJS).
Untuk membuat komponen dalam bahasa lain, lihat proyek Komponen Kargo untuk Rust dan Wit Bindgen untuk berbagai pembantu bindgen tamu.
npm instal @bytecodealliance/jco
Jco dapat digunakan sebagai impor perpustakaan atau sebagai CLI melalui perintah jco
.
Lihat halaman Contoh Alur Kerja untuk contoh penggunaan lengkap.
Penggunaan: jco <perintah> [pilihan] jco - Alat Komponen JS WebAssembly Alat Bindgen & Wasm Transpilasi Komponen JS untuk JS Pilihan: -V, --version menampilkan nomor versi -h, --help menampilkan bantuan untuk perintahPerintah: komponenisasi [pilihan] <js-source> Buat komponen dari modul JavaScript transpile [options] <component-path> Transpile Komponen WebAssembly ke JS + core Wasm untuk eksekusi JavaScript tipe [pilihan] <wit-path> Hasilkan tipe untuk WIT yang diberikan jalankan [options] <command> [args...] Jalankan komponen Perintah WASI serve [options] <server> [args...] Melayani komponen HTTP WASI opt [options] <component-file> mengoptimalkan komponen Wasm, termasuk menjalankan optimasi Binaryen wasm-opt wit [options] <component-path> mengekstrak WIT dari Komponen WebAssembly [wit komponen wasm-tools] cetak [pilihan] <input> cetak teks WAT WebAssembly untuk file biner [wasm-tools print] metadata-show [pilihan] [modul] ekstrak metadata produser untuk biner Wasm [pertunjukan metadata alat wasm] metadata-tambahkan [pilihan] [modul] tambahkan metadata produser untuk biner Wasm [tambahkan metadata alat wasm] parse [pilihan] <input> mem-parsing format teks Wasm ke dalam file biner [wasm-tools parse] baru [pilihan] <core-module> membuat komponen WebAssembly yang diadaptasi dari inti komponen Wasm [komponen wasm-tools baru] sematkan [pilihan] [modul inti] sematkan bagian pengetikan komponen ke dalam modul inti Wasm [penyematan komponen alat wasm] bantuan [perintah] tampilkan bantuan untuk perintah
Untuk bantuan dengan opsi perintah individual, gunakan jco <cmd> --help
.
Lihat Transpiling Docs untuk latar belakang dan informasi lebih lanjut.
Untuk langsung memanggil transpilasi di Rust, bindgen yang digunakan di Jco juga tersedia di crates.io sebagai js-component-bindgen.
Untuk komponen Wasm yang mengimplementasikan dunia Perintah WASI, disediakan utilitas jco run
untuk menjalankan aplikasi ini di Node.js.
jco run cowasy.component.wasm hello
Dengan menggunakan implementasi WASI preview2-shim, akses penuh ke primitif sistem yang mendasarinya disediakan, termasuk izin sistem file dan variabel lingkungan.
Untuk komponen HTTP Proxy, jco serve
menyediakan implementasi server JS:
jco serve --port 8080 server.wasm
Wasmtime umumnya menyediakan implementasi paling berkinerja untuk mengeksekusi dunia perintah dan proxy untuk digunakan. Implementasi ini lebih ditujukan ketika virtualisasi JS diperlukan atau merupakan pendekatan yang paling nyaman.
Catatan :
jco componentize
dianggap eksperimental, dan perubahan yang dapat menyebabkan gangguan dapat dilakukan tanpa pemberitahuan.
Untuk mengkomponenisasi file JS, jalankan:
jco componentize app.js --wit wit -n world-name -o component.wasm
Membuat komponen dari modul JS yang mengimplementasikan definisi dunia WIT, melalui penyematan mesin Spidermonkey.
Lihat ComponentizeJS untuk detail selengkapnya tentang proses ini.
transpile(component: Uint8Array, opts?): Promise<{ files: Record<string, Uint8Array> }>
Transpile Komponen ke JS.
opt(component: Uint8Array, opts?): Promise<{ component: Uint8Array }>
Optimalkan Komponen dengan proyek Binaryen Wasm-opt.
componentWit(component: Uint8Array, document?: string): string
Ekstrak dunia WIT dari biner komponen.
print(component: Uint8Array): string
Cetak WAT untuk biner Komponen.
metadataShow(wasm: Uint8Array): Metadata
Ekstrak metadata rantai alat produsen untuk komponen dan modul yang disarangkannya.
parse(wat: string): Uint8Array
Parsing WAT komentar untuk menghasilkan biner Komponen.
componentNew(coreWasm: Uint8Array | null, adapters?: [String, Uint8Array][]): Uint8Array
Alat pembuatan Komponen "Komponen WIT", secara opsional menyediakan satu set biner adaptor bernama.
componentEmbed(coreWasm: Uint8Array | null, wit: String, opts?: { stringEncoding?, dummy?, world?, metadata? }): Uint8Array
Alat penyematan komponen "Komponen WIT", untuk menyematkan jenis komponen ke dalam biner inti, sebagai kasus penggunaan lanjutan dalam pembuatan komponen.
metadataAdd(wasm: Uint8Array, metadata): Uint8Array
Tambahkan metadata produser baru ke komponen atau biner inti Wasm.
Lihat bab Berkontribusi di buku Jco.
Proyek ini dilisensikan di bawah lisensi Apache 2.0 dengan pengecualian LLVM. Lihat LISENSI untuk lebih jelasnya.
Kecuali jika Anda secara eksplisit menyatakan sebaliknya, setiap kontribusi yang dengan sengaja Anda kirimkan untuk disertakan dalam proyek ini, sebagaimana didefinisikan dalam lisensi Apache-2.0, akan dilisensikan seperti di atas, tanpa syarat atau ketentuan tambahan apa pun.