Merge remote-tracking branch 'home/v4' into v4
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build / build (push) Successful in 3m31s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build / build (push) Successful in 3m31s
				
			This commit is contained in:
		
							
								
								
									
										68
									
								
								content/WASIでmimiumをビルド&デバッグしてみる.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								content/WASIでmimiumをビルド&デバッグしてみる.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
#mimium #memo 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- std::path::canonicalize(std::fs::canonicalizeへのエイリアス)はプラットフォーム依存の挙動でwasmやWASIだとランタイムでErrを返して落ちるっぽい
 | 
			
		||||
 | 
			
		||||
## 環境構築
 | 
			
		||||
 | 
			
		||||
RustにWasiターゲットを追加する
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
rustup target add wasm32-wasip2
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
wasmtime(WASI用にビルドされたやつを動かすためのランタイム)のインストール
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
curl https://wasmtime.dev/install.sh -sSf | bash
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
なぜかMacだときちんと入らなかったので手動で落としてきて、`~/.wasmtime/bin/wasmtime`に配置しておく
 | 
			
		||||
 | 
			
		||||
## VSCodeでブレークポイントかけてデバッグする
 | 
			
		||||
 | 
			
		||||
launch.jsonにこういうのを追加する
 | 
			
		||||
 | 
			
		||||
```json
 | 
			
		||||
     {
 | 
			
		||||
            "type": "lldb",
 | 
			
		||||
            "request": "launch",
 | 
			
		||||
            "name": "Debug wasi executable",
 | 
			
		||||
            "cargo": {
 | 
			
		||||
                "args": [
 | 
			
		||||
                    "build",
 | 
			
		||||
                    "--bin=mimium-cli",
 | 
			
		||||
                    "--package=mimium-cli",
 | 
			
		||||
                    "--target=wasm32-wasip2"
 | 
			
		||||
                ],
 | 
			
		||||
                "filter": {
 | 
			
		||||
                    "name": "mimium-cli",
 | 
			
		||||
                    "kind": "bin"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "program": "~/.wasmtime/bin/wasmtime",
 | 
			
		||||
            "args": [
 | 
			
		||||
                "run",
 | 
			
		||||
                "--dir",
 | 
			
		||||
                ".",
 | 
			
		||||
                "-D",
 | 
			
		||||
                "debug-info",
 | 
			
		||||
                "target/wasm32-wasip2/debug/mimium-cli.wasm",
 | 
			
		||||
                "mimium-cli/examples/sinewave.mmm"
 | 
			
		||||
            ],
 | 
			
		||||
            "cwd": "${workspaceFolder}",
 | 
			
		||||
            "env": {
 | 
			
		||||
                "_NO_DEBUG_HEAP": "1"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
コマンドラインオプションとかはよしなにする。`_NO_DEBUG_HEAP`はWindows環境でデバッグすると極端に遅くなる時につける環境変数らしい。WSLだと関係ないのだろうか、よくわからん。
 | 
			
		||||
 | 
			
		||||
立ち上げてから動き始めるまで15秒くらいかかるので不安になるが、とりあえずブレークポイントは張れた。変数の中身とかきちんと覗けないのはあるが、落ちる原因の特定ぐらいまではできて便利。
 | 
			
		||||
 | 
			
		||||
## wasmtimeにはオーディオドライバがない(当たり前)
 | 
			
		||||
 | 
			
		||||
ここまでやってエラーで落ちることはなくなったが、Wasmtime上ではオーディオドライバをシステムとブリッジしてくれる仕組みがないので音が出ない。
 | 
			
		||||
 Submodule content/private updated: 60d5f4a80f...3ca80b5f5a
									
								
							
		Reference in New Issue
	
	Block a user