Kobako:為什麼要有 Filesystem 原生支援
最近 Kobako 更新到 v0.28.0 後,改善了原本對 MessagePack 高度依賴的設計,這是從八月 COSCUP 結束後的第一個大改版。
然而,當我們要迎接明年(2027 年)的 AI 應用時,在 Ruby 生態系還缺少怎樣的能力,我認為答案再次回到四月份我在日本 RubyKaigi 和朋友分享的「虛擬檔案系統(Virtual Filesystem)」上,因此 Kobako 也即將支援這個特性。
最近 Kobako 更新到 v0.28.0 後,改善了原本對 MessagePack 高度依賴的設計,這是從八月 COSCUP 結束後的第一個大改版。
然而,當我們要迎接明年(2027 年)的 AI 應用時,在 Ruby 生態系還缺少怎樣的能力,我認為答案再次回到四月份我在日本 RubyKaigi 和朋友分享的「虛擬檔案系統(Virtual Filesystem)」上,因此 Kobako 也即將支援這個特性。
在 Kobako:執行腳本已經看過一個完整的運作是怎樣設計的,但是現有的設計還有一些不方便的地方,當我們想將一個 Ruby 的物件在沙盒(Sandbox)中呼叫時,卻很難直接使用到那些回傳值。
當我們有了標準輸出能力後,執行腳本是否正常就可以順利地被驗證,這表示我們可以開始真正的來把 Ruby 跑在 Kobako 的沙盒(Sandbox)環境下。
解決 mruby 在 WebAssembly 執行的基本條件後,是時候開始考慮能夠有更多實際的應用方式,至少要讓一個腳本可以執行,然後順利看到 Hello World 這樣的訊息,但是 mruby 本身的設計並沒有考慮 WASI(WebAssembly System Interface)環境,因此有很多 Gem 是無法使用的。
在 Kobako:WebAssembly 的記憶體交換中解決了 Ruby 和 WebAssembly 互動的問題,也讓 Ruby 和 mruby 的數值能夠有互相交換的能力,基本上已經把「沙盒(Sandbox)」的問題處理乾淨。
然而 Kobako 的開發仍在非常初期,因為還有許多實際使用才會遇到的問題需要解決,其中一個就是「決定怎麼停下來」這樣的問題。
Sumitsubo 是我用來將「規格」變成實際可驗證程式碼的工具,在 Sumitsubo:把規格做成 Linter 的初期試做中採用了 JSON 來描述規格,然而在調查有沒有相似工具時,意外發現直接讓 Markdown 變成結構化的資訊來源,就可以用寫文件的方式來設計工具。
前幾篇說明了選擇 MessagePack 的過程,然而使用 WebAssembly 還要能夠互動,跟原生的套件互動方式有一點不太一樣。
理由是我們要打造的是沙盒(Sandbox)來隔離不安全的程式碼,這表示操作基本上是接近單向的,在沙盒中執行的程式,是不能碰到任何宿主(Host)的記憶體,那麼原本預想的方法呼叫,就需要一些特別的方式來處理。