半年前,知名 Python 发行版 Anaconda 开发商推出了 PyScript —— 一款支持在浏览器中创建 Python 应用程序的框架。PyScript 基于 Pyodide 构建,Pyodide 由编译成 WebAssembly 的 CPython 3.8 解释器组成,允许在网页浏览器中运行 Python。Pyodide 可以安装来自 PyPi 的任何 Python 包。Pyodide 还包括一个外部函数接口,可以将 Python 包暴露给 JavaScript,并将浏览器 UI,包括 DOM,暴露给 Python。Anaconda 表示,为了让 PyScript 取得成功,他们必须对项目本身及其核心技术依赖进行战略性投资,例如 WebAssembly (Wasm) 和 Pyodide 开源项目(PyScript 的首选 runtime)。
基于上述目标,Anaconda 在过去的半年里一直在积极改进 PyScript 的技术基础设施,并在近日宣布加入了字节码联盟 (Bytecode Alliance),成为正式投票成员,希望帮助改进 Wasm 和 WASI 的标准。
Bytecode Alliance(字节码联盟)由 Mozilla、Fastly、Intel 与 Red Hat 联合成立,是一个推动 WebAssembly 标准化的组织,该联盟旨在通过协作实施标准和提出新标准,以完善 WebAssembly 在浏览器之外的生态。目前正在积极推动 WASI (WebAssembly System Interface),使 WebAssembly 能够安全地访问文件、网络和内存等系统资源。
在 Anaconda 看来,Wasm 对于 PyScript 起着至关重要的作用。类似的,WASI 在 Python 生态的 runtime 和模块中也扮演着至关重要的角色。他们希望与联盟合作共同推进这些标准。数据科学需要在任何地方都能运行 workload,比如本地 Python 环境、浏览器和云中 —— 这种可移植性是计算的未来。除了加入字节码联盟,Anaconda 也在大力支持 PyScript 依赖的核心开源项目 Pyodide,比如为其上游贡献代码,以及支持正在进行的开发工作。他们认为 Pyodide 的成功就是 PyScript 的成功,虽然有许多项目都实现了将 Python 引入浏览器,但 Pyodide 在弥补跨语言代理、打包和模块支持方面的开发差距方面做得非常出色。而且 Pyodide 在可预见的未来将会是 PyScript 的默认 runtime。Anaconda 希望把它作为一个重要的依赖关系来支持,并充分认识到它为 PyScript 带来的价值。虽然 Anaconda “押注” Pyodide,但同时也在积极尝试新的 runtime。最近他们展示了基于 MicroPython 的 PyScript 技术预览版,体验地址:https://pyscript.net/tech-preview/micropython/。Anaconda 表示,MicroPython 非常适合在缺少操作系统和资源有限的受限环境中运行。当他们在默认配置中将 MicroPython 应用到 Wasm 时,出现了令人兴奋的结果:这个新的 runtime 总大小仅为 303KB,可即时加载并在不到 100 毫秒的时间内开始执行 MicroPython 逻辑。Anaconda 认为 MicroPython 也对 PyScript 发挥了重要作用,尤其是在许多加载性能存在问题的开发场景中。因为 PyScript 可通过配置来支持多种 runtime,所以开发者可根据场景选择最适合的方案。