开发者现在可以使用 WebAssembly 直接在 Web 浏览器中运行 Pharo,这是一种以快速和即时迭代著称的 Smalltalk 环境。这一开发进展允许用户以便携的方式探索突现结果和艺术构建,尽管它在浏览器处理鼠标输入和画布缩放方面引入了特定挑战。
浏览器中的 Pharo
主要来源介绍了一个通过 WebAssembly 使 Pharo 能够在 Web 浏览器中运行的项目。Pharo 是一个 Smalltalk 环境,开发者通常非常看重在构建项目(例如扫雷克隆版)过程中看到中间结果或非预期结果的能力。
一些观察者认为其技术机制是使用 Emscripten 编译的字节码解释器。由于 WebAssembly 具有有限的执行模型,目前还没有尝试对镜像代码进行 JIT 或预编译,这对于像 Smalltalk 这样的动态语言来说是一个显著的限制。
用户体验与技术摩擦
Hacker News 上的评论者指出了当前实现中的特定技术漏洞。例如,一名用户报告称该环境在 Firefox 中渲染不正确,当浏览器缩放时,鼠标点击无法与画布对齐。
另一位评论者指出,由于软件与硬件之间的摩擦,这种体验可能会感觉很“简陋”。他们认为,在浏览器中运行完整环境需要大量的资源和驱动程序,才能使体验与原生操作系统保持一致。
权衡与局限性
虽然浏览器移植提高了可访问性,但讨论中的一些参与者质疑这一举措是否违背了使用 Pharo 的核心目的。这种权衡涉及以牺牲原生环境中无缝性能为代价来换取便携性。
关于如何构建代码以及如何克服 WebAssembly 执行模型对 Smalltalk 动态功能的限制,仍存在未解决的问题。目前的用户建议通过 CSS 调整(例如移除特定的变换缩放)作为解决渲染问题的临时变通方法。
