Можно использовать любые языки, для которых есть компиляторы в WASM (WebAssembly).
Например: C, C++, C#, D, Elixir, Erlang, Free Pascal, Go, Rust.
Но без JS всё равно не обойтись: WASM-код выполняется не сам по себе, а вызывается из JS-кода.
Кроме того, для некоторых языков существуют компиляторы непосредственно в JS. Но это менее эффективно, т.к. интерпретатор JS-кода медленнее интерпретатора WASM-кода.