劳工
进行中的工作
为运行而设计的WebAssembly系统接口的实验性实施 云花岗工人
使用量
import { WASI } from '@cloudflare/workers-wasi';
import mywasm from './mywasm.wasm';
const wasi = new WASI();
const instance = new WebAssembly.Instance(mywasm, {
wasi_snapshot_preview1: wasi.wasiImport
});
await wasi.start(instance);
发展
nvm use --lts
构建和测试
git clone --recursive [email protected]:cloudflare/workers-wasi.git
cd ./workers-wasi
make -j test
用 Docker 构建
git clone --recursive [email protected]:cloudflare/workers-wasi.git
cd ./workers-wasi
cat ./Dockerfile | docker build -t workers-wasi-build -
docker run --rm -it -v $(pwd):/workers-wasi workers-wasi-build
测试
我们的目标是与其他WASI执行方案互换。 整合测试在当地使用 迷你灯 对照下列测试套房:
(52/52)https://github.com/caspervonb/wasi-test-site -- -- 套房 互联网档案馆的存檔,存档日期2013-12-21(28/42)https://github.com/bytecodealliance/wasmtime/tree/main/crates/test-programs/wasi-tests 页面存档备份,存于互联网档案馆 (简体中文)
页:1
以电子文件系统执行为基础 小费 包含. 软链接和硬链接都尚未得到支持.
以下调用尚未支持并返回 ENOSYS
fd_readdirpath_linkpath_readlinkpath_symlinkpoll_oneoffsock_recvsock_sendsock_shutdown
时间戳是使用 Date.now() 它已经 独一无二的行为 在工人平台 安全原因这影响到执行
clock_res_getclock_time_getfd_filestat_set_timespath_filestat_set_times
TODO( 移动)
杂项任务 :
- path rename( 更新已打开的 fds 的旧路径)
- 固定预打开接口( 使用对象), 并更新选项 docs
- 文档中节点选项和我们选项的相差( 流/ fs)
- fd 关闭(stdio)
- fd 重数(stdio)
- fd read/fd write 与重新编号的 stdio 无效
- 适当更新文件时间戳