为 WebAssembly 设计
AssemblyScript 特别针对 WebAssembly 的功能集,使开发人员能够对代码进行低级控制。
熟悉的 TypeScript 语法
它与 TypeScript 的相似性使其易于编译为 WebAssembly,无需学习新语言。
触手可及
与现有的 Web 生态系统集成 - 无需设置繁重的工具链。只需 npm install
即可!
#!runtime=stub
/** Calculates the n-th Fibonacci number. */
export function fib(n: i32): i32 {
var a = 0, b = 1
if (n > 0) {
while (--n) {
let t = a + b
a = b
b = t
}
return b
}
return a
}
#!html
<textarea id="output" style="height: 100%; width: 100%" readonly></textarea>
<script type="module">
const exports = await instantiate(await compile(), { /* imports */ })
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 规范。它由以下令人敬畏的人们为您提供
为什么要选择 AssemblyScript?
“您现在无需学习新语言即可编写 WebAssembly,并利用 WebAssembly 可能为您带来的所有这些好处。我认为这很强大。AssemblyScript 绝对可用,而且非常令人愉快!” – Surma,面向 Web 开发人员的 WebAssembly(Google I/O '19)
“AssemblyScript 的设计考虑到了 WebAssembly 和代码大小。它不是我们为了新目的而使用的现有语言,而是一种专门为 WebAssembly 设计的语言。它与 wasm-opt 具有很好的集成,实际上它是用它构建的,而且很容易获得良好的代码大小。” – Alon Zakai,发布小型 WebAssembly 构建(WebAssembly 峰会)
“我选择 AssemblyScript 是因为它具有高级可读性和低级控制。它就像一种高级语言,但您可以获得低级的感觉,甚至可以根据需要直接编写 WebAssembly 本质指令。” – Peter Salomonsen,WebAssembly 音乐(WebAssembly 峰会)
感谢我们的赞助商!
大多数维护人员和贡献者在空闲时间进行这项开源工作。如果您将 AssemblyScript 用于一项严肃的任务或计划这样做,并且您希望我们投入更多时间,请捐赠给我们的 OpenCollective。通过赞助该项目,您的徽标将显示在下方。非常感谢您的支持!
加入我们的 Discord
如果您有只有人类才能回答的问题,想向其他人展示您正在进行的工作,或者只是想与其他 AssemblyScript 人员一起闲逛,请确保加入我们的 Discord 服务器!在那里,您会找到 #announcements、#help 等等的频道。