Ruby WASM/WASI ã®çºè¡¨ã«ããããã³ã·ã§ã³ãä¸ãã£ãã®ã§ãå¢ãã§ä½ã£ããã®ãçªã®æã§ç´¹ä»ããã¦ã³ã£ãããã¾ããã(ããã ãæ³¨ç®ããã¦ããã¨ãããã¨ã§ãã)
Ruby On Browserã¯51è¡ãããªãHTMLã§ã¾ã ã¾ã èåããªã®ã§ãã£ã¨ã¡ããã¨ãããã®ã試ãããæ¹ã¯æ¯éTryRuby playgroundã®CRuby 3.2.0dev ãã試ããã ããã
Ruby On Browserèªä½ãã¾ã ã¾ã çºå±ããã¦ããã¤ããã§ãããç¾ç¶Ruby WASM/WASIã触ã£ã¦ã¿ã¦ãããªãã¨æã£ããã¨ã§ãã
1. ç°¡åã«èªå好ã¿ã®ãã©ã¦ã¶Rubyãä½ãã
Try Rubyã®ããã«ãã©ã¦ã¶ä¸ã§ããã°ã©ãã³ã°è¨èªã試ãããã¨èªä½ã¯ç¾å¨ã¯ããã¾ã§çãããªãã§ãããã¯ã©ã¤ã¢ã³ããµã¤ãã ãã§(ãããã¨ã¦ãçãã³ã¼ãã§)åãããã®ã¯å¤§å¤é åçã§ããå人ã®PCãã¤ã³ãã©ãããä¸ã«å¥½ã¿ã®ã«ã¹ã¿ãã¤ãºãå ãããã©ã¦ã¶Rubyãç°¡åã«æ§ç¯ãããã¨ãã§ãã¾ãã
2. wasmãã¡ã¤ã«ã®å ¥ãæ¿ããç°¡å
Webã¢ããªèªä½ã¯ãã®ã¾ã¾ã«ãã¤ããªãã¡ã¤ã«ã® ruby.wasm ãå ¥ãæ¿ããã ãã§å¥ãã¼ã¸ã§ã³ã®Rubyã試ããã¨ãã§ãã¾ãã
3. ææ°çããã§ã«Nightlyãã«ãããã¦ãã
ãã§ã«CRubyã®ã¬ãã¸ããªã«åãè¾¼ã¾ãã¦ããããå¸¸ã«ææ°ã®.wasmãåãã®ã大ããã§ããNightlyãã«ã ã使ãã°ä¸çªç°¡åã«ææ°çã試ããç°å¢ã¨ãªãããã§ãã(2022-03-25ç¾å¨ã®ruby.wasmã¯9.8MiBãªã®ã§1é±éåä¿ç®¡ãã¦ããã¦ã70MiBç¨åº¦)

4. ãã¡ã¤ã«APIã使ãã
å é¨ã§ä½¿ã£ã¦ãã @wasmer/wasmfs ã¯ã¡ã¢ãªä¸ã«ä»®æ³ãã¡ã¤ã«ã·ã¹ãã ãæ§ç¯ã§ãããããFile.read, File.write ã®ãããªãã¡ã¤ã«APIããã©ã¦ã¶ä¸ã§åãããã¨ãã§ãã¾ãã(ä»å®é¨ä¸ã§ã)
WASIèªä½ã¯ãã¡ã¤ã«ã·ã¹ãã 以å¤ã«ã½ã±ããéä¿¡ãªã©ããµãã¼ããã¦ãããããå°æ¥çã«ã¯ require "net/socket"ãrequire "net/http"ãã§ããããã«ãªãããããã¾ããã夢ãåºããã¾ããã