微软加入字节码联盟,参与推进WebAssembly发展
2019 年,Mozilla 公司和其他一些机构合作成立了全新的 Bytecode Alliance(字节码联盟),旨在夯实 WebAssembly 和 WebAssembly System Interface (WASI) 等标准,并将 WebAssembly 扩展至浏览器之外。
近日,字节码联盟宣布正式成为 501(c)(3) 非营利组织,参与组建的企业 / 组织包括 Fastly、英特尔、Mozilla 和微软,同时字节码联盟还新增了六家成员组织:ARM、DFINITY Foundation、Embark Studios、谷歌、Shopify 以及加州大学圣迭戈分校,旨在同步推进软件的模块化、安全化与高速化进程。
官宣成为非营利组织并扩大成员规模,字节码联盟能够在更为广泛的环境中推广模块化、安全化与高性能化应用程序开发理念。
作为联盟成员,微软 Azure Core Upstream 首席项目经理 Ralph Squillace 表示:“WebAssembly 与新兴 WebAssembly System Interface (WASI) 规范能够提升云原生解决方案的默认安全水平,同时也有助于解决片上系统(SoC)及微控制器单元(MUC)等「微边缘」场景下的计算难题。”
Holley 提到,技术社区努力转变软件构建方式的举措,将为小型团队开辟出一条安全、快速打造大型项目的新道路。
“易于组合、缺陷隔离与高性能这三大核心要素的实现既需要正确的技术支持,也要求我们在整个生态系统中协同努力、同时配合正确的部署流程。”
官宣成为非盈利组织之后,字节码联盟董事会成员 Bobby Holley 在声明中表示目前的软件开发流程中充斥着一系列令人费解的取舍与妥协,“要想构建大型产品,我们根本不可能从零开始构建各个组件。但是,过度依赖于其他供应方的复杂供应体系又会给整个开发链条带来无数隐患,进而损害程序成果的安全性与稳定性。”
“容器等工具确实可以带来一定程度的隔离,但同时也增加了新的运营开销,而且仍然无法把组件按不同供应商细化区分开来。这一切因素继续巩固大型企业的优势,让这些拥有更高管理水平、更强审计能力的组织继续把控着更为丰富的供应链资源。”
而在字节码联盟的眼中,WebAssembly 是一种无需妥协即可实现代码灵活组合、提升安全性并加快开发速度的有效方法。
WebAssembly 是由高级语言(例如 C/C++ 或其他高级语言)生成的低级字节码。与 JVM 等通用堆栈机不同,WebAssembly 更类似于汇编类编程语言或结构化堆栈机。作为高级代码的编译目标,行业通常会将 WebAssembly 或 wasm 库添加至 Web 应用程序中以处理高计算量操作。
Wormhole 联合缔造者兼开源开发人员 Feross Aboukhadijeh 在采访邮件中曾提到,WebAssembly 拥有两大核心优势。
一是 WebAssembly 允许开发人员使用现有 C 与 C++ 代码库,而且只需少量甚至无需任何修改就能直接运行在 Web 之上。这一点对于重用 ffmpeg 这类陈旧代码非常重要,免去了开发者使用 JavaScript 进行重写的麻烦。
二是 WebAssembly 允许使用 Rust 编写某些性能关键组件,再以接近原生的性能水平加以运行。WebAssembly 属于低级代码,因此性能与可预测性都要比 JavaScript 更好。
过去的 20 年,我们架构软件的方式发生了根本性的变化。2003 年之前,开发人员很难能够重用代码,但是现在很多代码库都是由模块构建的,那么未来代码形式又会如何发展呢?
字节码联盟认为,Web Assembly、WebAssembly System Interface (WASI), WebAssembly Micro Runtime (WAMR) 以及 Lucet 等其他相关代码基础设施项目有望成为现代软件开发的重要基础,帮助更多开发者从容管理 npm、PyPl 以及 crates.io 等向来难以保护的软件包注册表。
软件包注册表的本质,就是以往编写完成的代码库。开发者可以直接将其导入自己的项目当中,快速处理之前已经解决的问题。这种方式虽然能够节省大量时间,但如果导入的模块存在缺陷或疏漏,则极易招致安全问题。
WebAssembly 给出的解决方案是 nanoprocesses,这项技术为每个 wasm 模块或库创建内存层面的隔离沙箱。而字节码联盟的一项重要使命,就是使用这种基于 wasm 的隔离化 nanoprocesses 取代微服务。
当前的软件体系结构并不能保证安全性,而这点正在被攻击者以惊人的速度利用,也许 wasm 会是解决这个问题的答案。
原文链接:
https://www.theregister.com/2021/04/28/microsoft_bytecode_alliance/