Implement full WASI snapshot_preview1 with 46 registered host functions, per-context hook/registry isolation, and a single-unit public API. WASI Preview1 (15 new handler units): - Tier 1: fd_write, fd_read, fd_close, fd_seek, fd_prestat_get, fd_prestat_dir_name, fd_fdstat_get, proc_exit, environ_*, args_* - Tier 2: clock_time_get, clock_res_get, random_get - Tier 3: 14 fd_* stubs, 10 path_* stubs (ENOSYS) - Tier 4: poll_oneoff, proc_raise, sched_yield, 4 sock_* stubs Per-context isolation: - Move WASIHooks (12 hook table) and HostFuncRegistry onto TWASMProcessContext — each context is fully independent - Dynamic registry: starts at 16 entries, doubles on demand, no cap - All 15 preview1 handlers read hooks from context, not globals Glue API (wasm.pas): - Single entry point: wasm_init, wasm_load, wasm_set_*, wasm_register_wasi_preview1, wasm_register_host_func, wasm_resolve_imports, wasm_start, wasm_prepare_start, wasm_tick, wasm_dump_state - WASURO.lpr simplified to use only the wasm unit Refactoring: - Rename leb128.pas -> wasm.types.leb128.pas (updates 40+ opcode units) - New wasm.types.wasi.pas with WASI errno/filetype constants - New wasm.types.context.pas fields for hooks + registry types - New wasm.vm.setup unit (find_start, count_func_imports) - New wasi.emu.hooks for emulator-side hook implementations - Add read_uint16, write_uint16 to wasm.types.heap Testing: - 10 new test units: hooks, registry, glue, stubs, clock, random, extensibility, call, types, vm.setup (1087 tests / 232 units) - E2E WAT test runner (wat.ps1) with 9 integration tests: hello, exit42, multiwrite, prestat, fdstat, environ, clock, clockres, random 121 files changed, 5391 insertions(+), 267 deletions(-)
7 lines
55 B
Plaintext
7 lines
55 B
Plaintext
bin
|
|
lib
|
|
AGENTS.md
|
|
GAP_ANALYSIS.md
|
|
*.pdf
|
|
doc/WASI.md
|