開発者は、迅速かつ即時的なイテレーションで知られるSmalltalkベースの環境であるPharoを、WebAssemblyを使用してWebブラウザ内で直接実行できるようになりました。この開発により、ユーザーはポータブルな方法で創発的な結果や芸術的な構築を探索できるようになりますが、ブラウザがマウス入力をどのように処理するか、およびキャンバスのスケーリングに関する特定の課題が生じています。

ブラウザ上のPharo

主なソースでは、WebAssemblyを介してPharoをWebブラウザで実行可能にするプロジェクトを紹介しています。PharoはSmalltalk環境であり、開発者は、マインスイーパーのクローンなどのプロジェクト構築中に、中間的な結果や意図しない結果を確認できる能力を重視することが多いです。

技術的な仕組みについては、一部の観察者によってEmscriptenでコンパイルされたバイトコードインタプリタであると信じられています。WebAssemblyは実行モデルが限定されているため、現在、イメージコードのJIT化や事前コンパイルの試みは行われておらず、これはSmalltalkのような動的言語にとって顕著な制約となっています。

ユーザー体験と技術的摩擦

Hacker Newsのコメント欄では、現在の実装における特定の技術的バグが特定されています。例えば、あるユーザーは、ブラウザをズームした際にマウスのクリックがキャンバスと一致しなくなるため、Firefoxで環境が正しくレンダリングされないと報告しました。

別のコメントでは、ソフトウェアとハードウェアの間の摩擦により、体験が「ハック的」に感じられる可能性があると指摘されました。彼らは、ブラウザでフル環境を実行するには、体験をネイティブオペレーティングシステムに合わせるために、多大なリソースとドライバが必要であると主張しました。

トレードオフと制限事項

ブラウザへの移植はアクセシビリティを向上させますが、議論に参加した一部の者は、この動きがPharoを使用する核心的な目的を損なうのではないかと疑問を呈しました。このトレードオフは、ネイティブ環境で見られるシームレスなパフォーマンスを犠牲にして、ポータビリティを獲得することを意味します。

Smalltalkの動的な機能のためにWebAssemblyの実行モデルの制限をどのように克服するか、およびコードをどのように構築するかについては、未解決の疑問が残っています。現在のユーザーは、レンダリングの問題に対する一時的な回避策として、特定の変形スケールを削除するなどのCSS調整を提案しています。