Here are some instruction to make everything work as well as possible.
Warning: this has not been tested on Windows and Mac, only Linux.
First, you need to build the stenm executables.
For that, you will need Cargo, and all the rustc stuff.
$ cargo build --releaseThese executables will be located at target/release/stenm.
You will need wasm-pack-unknown-unknown, it is strongly suggested to use npm to install it.
For example :
$ sudo npm install -g wasm-packThen you can build the web-assembly part in the stenm-wasm/ directory :
$ wasm-pack build --target web -- --features console_error_panic_hookThis will generate a pkg/ directory with two important files inside:
pkg/stenm.js: the "glue" JavaScript module to be imported.pkg/stenm_bg.wasm: the compiled WebAssembly module corresponding to the rust code insrc/lib.rs.
If you want to see the nice web interface in your favorite browser, you need to compile the elm code and connect it to its javascript ports properly.
We will first link the pkg/ directory that we created with a symlink :
$ ln -s <path to pkg/> <path to web-elm/static>/pkgThe worker is a thread, making the computations we need.
It takes the form of a javascript module (worker.mjs).
In order to get it to talk with the elm UI, we will transform it into a .js file with esbuild.
$ sudo npm install -g esbuildchanged 1 package, and audited 2 packages in 2s
found 0 vulnerabilities
$ esbuild worker.mjs --bundle --preserve-symlinks --outfile=worker.jsNow we have in web-elm/static/ the worker.js file that we wanted.
Finaly, we need the elm compiler for the elm language, the core of this project :
$ sudo npm install -g elm<Some warnings>
changed 1 package, and audited 2 packages in 2s
found 0 vulnerabilities
$ elm make src/Main.elm --optimize --output=static/Elm.jsWhen all of this is done, you can the the results by launching the python server :
python -m http.server 8080If you need to do this again, don't worry, I have prepared two scripts that you can check quickly in web-elm/static : launch.sh and launchElm.sh (you might have to make some ajustments, depending for example on the name of the python executables, either python or python3 between other choices).