astrid-runtime/sdk-js

JavaScript and TypeScript SDK for building Astrid capsules.

解决的问题

它提供了一种使用 JavaScript 和 TypeScript 而不是 Rust 来构建“胶囊”(隔离的可移植二进制文件)的方法。这允许开发人员使用熟悉的类 Node.js API 和 TypeScript 装饰器来创建模块化组件,这些组件可以在无需更改宿主 ABI 的情况下由 Astrid 运行时内核执行。

工作原理

该 SDK 使用构建流水线将 TypeScript 代码转换为 WebAssembly (Wasm) 组件。该过程包括:

  1. Typechecking: tsc 将 TypeScript 编译为 JavaScript。
  2. Bundling: esbuild 将代码和 SDK 打包成单个 ESM 模块。
  3. Componentization: ComponentizeJS 使用 StarlingMonkey 将包转换为 wasm32-wasip2 组件。
  4. Packaging: 基于 Rust 的工具将生成的 Wasm 文件和 Capsule.toml 配置打包成 .capsule 归档。

适用对象

在构建 Astrid 胶囊时比起 Rust 更喜欢 JavaScript 和 TypeScript 开发体验的开发人员,以及正在构建守护进程模式工作负载的开发人员(在这种情况下,JS 胶囊比 Rust 更大的二进制文件大小是可以接受的权衡)。

亮点

  • 熟悉的 API: 使用 node:fs/promisesnode:child_process 和 WHATWG fetch。
  • TypeScript 装饰器: 使用 @capsule@tool@install 等装饰器来定义胶囊行为和生命周期钩子。
  • 语言无关: 生成与 Rust SDK 相同的 .capsule 归档格式和 WIT 契约,使得从内核的角度来看二进制文件是可互换的。
  • 集成的构建工具链: 包含一个构建编排器,管理从源代码到最终归档的整个流水线。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目