8 月 3 日,WebAssembly CG 将调查 JavaScript 字符串语义/编码是否超出接口类型提案的范围。这一决定可能会得到谷歌 (C++)、Mozilla (Rust) 和字节码联盟 (WASI) 的支持,他们似乎有共同的兴趣,专门在 WebAssembly 中推广 C++、Rust 和非 Web 语义和概念。如果投票通过(这很可能),AssemblyScript 将受到严重影响,因为由于无法解决的正确性和安全问题,必须弃用它开发的工具,该决定强加于使用类似 JavaScript 的 16 位字符串语义的语言及其用户。我们期望,AssemblyScript 保证数据完整性的唯一可行方法是将其对接口类型的依赖替换为对引用类型的依赖,并从 JavaScript 导入其标准库。虽然无法知道全面的影响,但这种转变可能会导致范围过大,或者,如果可以完成,可能会影响在 Wasmtime 和 Wasmer 等 WASI 主机上运行 AssemblyScript 的用户,因为 JavaScript 标准都不是这些平台上将不提供库或 GC。因此,在这些平台上使用未来版本的 AssemblyScript 可能不再可行,我们强烈建议避免使用早期版本,因为这些版本不安全。我们认为,由此产生的 Web 平台、编程语言和安全漏洞,以及 AssemblyScript 项目的特别不幸的结果,应该被阻止,但经过多年的专注而徒劳的努力,我们也不得不得出结论,我们对巨头无能为力.作为 TypeScript 的变体,无需学习新语言,即可轻松编译为 WebAssembly。与现有的 Web 生态系统集成 - 无需设置繁重的工具链。只需 npm 安装即可! #!runtime=stub/** 计算第 n 个斐波那契数。 */export function fib(n: i32): i32 { var a = 0, b = 1 if (n > 0) { while (--n) { let t = a + ba = bb = t } return b } return a}#!html<textarea id="output" style="height: 100%; width: 100%" readonly></textarea><script>loader.instantiate(module_wasm, { /* 导入 */ }) .then (({exports }) => { const output = document.getElementById('output') for (let i = 0; i <= 10; ++i) { output.value += `fib(${i}) = ${exports.fib(i)}\n` } })</script>
AssemblyScript 是在 Apache 许可下发布的免费开源软件,版本 2.0,构建于 Binaryen 并基于 WebAssembly 规范。它是由以下很棒的人带给您的:“您现在无需学习新语言即可编写 WebAssembly,并利用 WebAssembly 可能为您提供的所有这些好处。我认为这有点强大。 AssemblyScript 绝对可用,而且非常有趣!” – Surma,Web 开发人员的 WebAssembly(Google I/O '19)“AssemblyScript 的设计考虑了 WebAssembly 和代码大小。它不是我们用于新目的的现有语言,而是为 WebAssembly 设计的语言。它具有很好的 wasm-opt 集成,事实上它是用它构建的,并且很容易获得良好的代码大小。” – Alon Zakai,Shipping Tiny WebAssembly Builds(WebAssembly 峰会)“我选择了 AssemblyScript,因为它具有高级别的可读性和低级控制。它就像一种高级语言,但你会得到那种低级的感觉,如果你愿意,你甚至可以直接编写 WebAssembly 内在函数。” – Peter Salomonsen,WebAssembly Music(WebAssembly 峰会)大多数核心团队成员和大多数贡献者在空闲时间从事这项开源工作。如果您将 AssemblyScript 用于一项严肃的任务或计划这样做,并且您希望我们在它上面投入更多时间,请捐赠给我们的 OpenCollective。通过赞助该项目,您的徽标将显示在下方。非常感谢你的支持!如果您有只有人类才能回答的问题,想向其他人展示您的工作,或者只是想与其他 AssemblyScript 人员一起出去玩,请务必加入我们的 Discord 服务器!您可以在那里找到#announcements、#help 等频道。