Skip to content

Conversation

@wingo
Copy link
Collaborator

@wingo wingo commented Sep 26, 2025

This PR adds support for jco. However, nothing passes yet:

  • jco run needs --env and --dir argument support
  • jco doesn't yet support some of the component model (lowering async imports, i think)
  • jco only does wasip2 and wasip3 IIUC

Sample run:

~/src/wasip3/wasi-testsuite$ JCO="npx --prefix=../jco jco" ./run-tests -r adapters/jco.py 
Running test suite WASI C tests [wasm32-wasip1] with jco 1.15.0
______________

Running test suite WASI Rust tests [wasm32-wasip3] with jco 1.15.0
!!!!!!!!!!!!!!!!!!!
Running test suite WASI Rust tests [wasm32-wasip1] with jco 1.15.0
______________________________________________
Running test suite WASI Assemblyscript  tests [wasm32-wasip1] with jco 1.15.0
____________
===== Test results =====
jco 1.15.0: FAIL: 19/19 tests failed (72 skipped)
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-mkdir-rmdir.wasm
  npx --prefix=../jco jco run tests/rust/testsuite/wasm32-wasip3/http-fields.wasm
  npx --prefix=../jco jco run tests/rust/testsuite/wasm32-wasip3/test-stat-at-root.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-stat.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-read-directory.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-io.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-is-same-object.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-symbolic-links.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-rename.wasm
  npx --prefix=../jco jco run tests/rust/testsuite/wasm32-wasip3/monotonic-clock.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-open-errors.wasm
  npx --prefix=../jco jco run tests/rust/testsuite/wasm32-wasip3/multi-clock-wait.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-metadata-hash.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-unlink-errors.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-flags-and-type.wasm
  npx --prefix=../jco jco run tests/rust/testsuite/wasm32-wasip3/wall-clock.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-hard-links.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-advise.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-set-size.wasm

Cc @vados-cosmonic.

@wingo
Copy link
Collaborator Author

wingo commented Dec 18, 2025

FWIW, jco still fails:

$ JCO="npx --prefix=../jco jco" ./run-tests -r adapters/jco.py 

Running test suite WASI Rust tests [wasm32-wasip3] with jco 1.15.4
!!!!!!!!!!!!!!!
Running test suite WASI Rust tests [wasm32-wasip1] with jco 1.15.4
______________________________________________
===== Test results =====
jco 1.15.4: FAIL: 15/15 tests failed (46 skipped)
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-stat.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-read-directory.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-io.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-is-same-object.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-rename.wasm
  npx --prefix=../jco jco run tests/rust/testsuite/wasm32-wasip3/monotonic-clock.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-open-errors.wasm
  npx --prefix=../jco jco run tests/rust/testsuite/wasm32-wasip3/multi-clock-wait.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-metadata-hash.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-flags-and-type.wasm
  npx --prefix=../jco jco run tests/rust/testsuite/wasm32-wasip3/wall-clock.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-hard-links.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-advise.wasm
  npx --prefix=../jco jco run --dir tests/rust/testsuite/wasm32-wasip3/fs-tests.dir::fs-tests.dir tests/rust/testsuite/wasm32-wasip3/filesystem-set-size.wasm
  npx --prefix=../jco jco run tests/rust/testsuite/wasm32-wasip3/http-response.wasm

I don't think jco supports --dir yet, but if I take an example that doesn't use dirs:

$   npx --prefix=../jco jco run tests/rust/testsuite/wasm32-wasip3/wall-clock.wasm
ERROR: Error: unexpectedly undefined local import 'getResolution', was 'getResolution' available at instantiation?
file:///tmp/Zdu0iw/wall-clock.js:40
  const err = new Error("unexpectedly undefined local import 'getResolution', was 'getResolution' available at instantiation?");
              ^

Error: unexpectedly undefined local import 'getResolution', was 'getResolution' available at instantiation?
    at file:///tmp/Zdu0iw/wall-clock.js:40:15
    at ModuleJob.run (node:internal/modules/esm/module_job:195:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:336:24)
    at async file:///tmp/Zdu0iw/_run.js:7:19

Node.js v18.19.1

Cc @vados-cosmonic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant