Motivation
To make LTLMoPWeb3D fully client-side with no back-end API needed.
Summary
Nowadays, we can use newer technology like WebAssembly (WASM) and WASI to run native code directly in the browser. So we could compile LTLMoP's Python code to a WASI binary and run that in the browser instead of accessing an API.
Implementation Details
Specifically, I was looking at using container2wasm to convert the LTLMoP Docker image (from #42 / VerifiableRobotics/LTLMoP#82) to a WASI binary and then run it in the browser via either browser_wasi_shim or @runno/wasi.
The Spec Editor could then directly run the compilation commands in the browser instead of making API requests to the LTLMoP API.
Concerns
While LTLMoP is mostly Python, it also relies on Java code and native C and Fortran even (via numpy / scipy / BLAS). Each of those should be possible to compile to WASI, but there may or may not be problems getting them all to work together.
Motivation
To make LTLMoPWeb3D fully client-side with no back-end API needed.
Summary
Nowadays, we can use newer technology like WebAssembly (WASM) and WASI to run native code directly in the browser. So we could compile LTLMoP's Python code to a WASI binary and run that in the browser instead of accessing an API.
Implementation Details
Specifically, I was looking at using
container2wasmto convert the LTLMoP Docker image (from #42 / VerifiableRobotics/LTLMoP#82) to a WASI binary and then run it in the browser via eitherbrowser_wasi_shimor@runno/wasi.The Spec Editor could then directly run the compilation commands in the browser instead of making API requests to the LTLMoP API.
Concerns
While LTLMoP is mostly Python, it also relies on Java code and native C and Fortran even (via
numpy/scipy/ BLAS). Each of those should be possible to compile to WASI, but there may or may not be problems getting them all to work together.