(2022-02-13)
- dioxusを使ってwebでもdesktopでも動くアプリを作りたい
- プラグインシステムを作りたい
- けどプラグインもRustで書きたい
- → wasm
- →wasmerにはwasmer-jsというものがあってどうやらwasm環境でも動かせる?
環境 (2022-02-13)
- arch on wsl
- Rustはなるべくnightlyを使わないようにしたい
プロジェクト作成 (2022-02-13)
構成はこんな感じにする
(どうでもいいけどこういうときvimだとファイラーのテキスト直接コピーできて便利だな)
app以下はdioxus-cliで作る
(2022-02-13)
ワークスペースのルートCargo.toml
ここで
resolver = "2"
を指定するのが重要。こうしないとcfgでfeature出し分けができない(超ハマった)(2022-02-13)
appのCargo.toml
これでビルド時に切り替えられる
プラグイン側wasmを作る (2022-02-13)
- wasm-packを使うべき?
- それとも
wasm32-unknown-unknown
かwasm32-wasi
? -
wasmer-rust-example/wasm-sample-app at master · wasmerio/wasmer-rust-example
Example of WebAssembly embedding in Rust using Wasmer - wasmerio/wasmer-rust-examplegithub.com
- lapceというエディタのプラグインが参考になりそう?
(2022-02-13)
あれ?ワークスペースごとにターゲットの設定できるんだっけと思ったら案の定nightly限定機能みたいなのでしょうがないのでnightlyにする
https://github.com/rust-lang/cargo/issues/7004
https://doc.rust-lang.org/cargo/reference/unstable.html#per-package-target
https://doc.rust-lang.org/cargo/reference/unstable.html#per-package-target
(2022-02-13)
とりあえずプラグイン側だけビルドしてwatを見てみる
結果
普通のアセンブリは全然わかんないけどwatは割と見ただけでわかる感じ
(2022-02-13)
よくわからないけどdioxusはスレッドセーフではなくてwasmからstateにアクセスできない?
Rust初心者すぎて何もわからないのでとりあえずdioxusとの連携はなかったことにする
Rust初心者すぎて何もわからないのでとりあえずdioxusとの連携はなかったことにする
(2022-02-13)
数時間の格闘の末についにHello Worldの出力に成功した
wasmerは昔の情報しかなくてつらみがあった
wasmerは昔の情報しかなくてつらみがあった
(2022-02-13)
こんな感じ
(2022-02-13)
File not found · zellij-org/zellij
A terminal workspace with batteries included. Contribute to zellij-org/zellij development by creating an account on GitHub.
github.com
これを見るとzellijではメモリ操作みたいな面倒くさいことをせずにwasiの標準入出力でデータをやり取りしているみたい
こっちのほうが大分楽そう
こっちのほうが大分楽そう