js-pdk
js-pdk copied to clipboard
Windows Support
I believe the tools we use support windows, so we just need to add windows to our CI and publish workflows:
- https://github.com/extism/js-pdk/blob/main/.github/workflows/publish.yml
- https://github.com/extism/js-pdk/blob/main/.github/workflows/ci.yml
But testing may yield some other issues.
Windows build incompatibilities
install-wasi-sdk.shdoesn't work because 1) it's a shell script, 2) windows doesn't have real CURL, it's mapped to Invoke-WebRequest. Should probably implement this as a .ps1 script for windows- the makefile uses the syntax
cd -. The equivalents on Win are push-location and pop-location. I'm not sure if thecd -is used to fix the pwd to always be correct in case the previous cd commands failed or if it's just a shorthand way to undo a previous cd. If the latter, this incompatibility could be fixed by just updating tocd ../..and not using this syntax.
I worked around these issues by
- Changing all
cd -tocd ../..in the cli and core scripts - reproducing the
install-wasi-sdk.shscript manually- downloading the 12.0 wasi sdk release for windows directly from github
- placing it in a
wasi-sdkfolder - setting
$env:QUICKJS_WASM_SYS_WASI_SDK_PATH = "C:/Code/js-pdk/wasi-sdk"
- running
make
Windows runtime incompatibilities
- the
install.shscript doesn't work because it's a shell script. need an equivalent .ps1 script or should be on Chocolateybinaryenneeds to be installed manually- I installed binaryen by downloading the zip and placing it on the filesystem at C:\Tools\binaryen-version_117 and then - adding a PATH to the bin folder
- extism-js is able to build .wasm output files but it has weird error output:
PS C:\Code\js-pdk\examples\simple_js> ..\..\target\release\extism-js.exe .\script.js -i .\script.d.ts
child not found in parent
UNREACHABLE executed at D:\a\binaryen\binaryen\src\passes\Precompute.cpp:838!
the built wasm file is callable, but that's the extent I've tested it.
..\..\extism.exe call .\index.wasm greet --input "Luke" --wasi
Hello, Luke!
@lukevp that's really good progress! I will try to see if we can package your findings and make things smoother for Windows users next week