API Level 4 新特性——Python/JS/HTTP 服务器/应用内浏览器
Level 4 是什么
API Level 4 不是加了几个新接口,而是运行时层面的彻底升级。变化量相当于把 Level 2/3 推翻重写,同时保持向后兼容。
变化清单:
| 维度 | 旧版(Level 2/3) | 新版(Level 4) |
|---|---|---|
| 运行时 | 旧版 wasmtime | 新版 wasmtime |
| WASI 版本 | 旧版 WASI | WASI Preview 3 |
| 宿主接口 | 部分同步部分 future | 全部改成 async func |
| HTTP 能力 | 无 | 内置 HTTP 服务器 |
| 浏览器能力 | 无 | 内置应用内浏览器 |
| 官方语言 | Rust | Rust + Python + JavaScript |
运行时升级
换用新版 wasmtime 后:
- wasmtime 持续维护更新
- WASI Preview 3 带来组件模型(Component Model)的优势
- Future / Promise 样板代码消除
组件模型
WASI Preview 3 引入了组件模型——这是 WebAssembly 生态的一次重大升级:
- 组件可以像拼积木一样组合,一个调用另一个
- 不需要网络层,组件间直接进程内互调
- 性能:从毫秒级降到纳秒级(六个数量级提升)
对 AstroBox 插件的意义:未来可以把复杂插件拆成多个小组件,分别开发、分别加载、灵活组合。
宿主接口改成 async func
旧版 Host API 混了同步和 future 接口,写起来有大量样板代码:
// 旧版
let result = host.do_something().await.unwrap();
// 如果是同步接口,直接调用
Level 4 统一改成 async func,消除了这个差异:
// 新版——不管宿主接口内部是同步还是异步,调用方统一用 .await
let result = host.do_something().await;
新增 HTTP 服务器
这是 Level 4 最令人兴奋的新能力。插件现在可以在 AstroBox 进程内启动一个 HTTP 服务器。
能做什么
- 创建本地 Web UI(比如插件设置页面)
- 接收外部 API 回调
- 暴露 REST API 给其他插件调用
- 接收 Webhook 通知
为什么重要
之前插件想提供 UI,要么和 AstroBox 的 UI 系统集成(受限于 AstroBox 的 UI 框架),要么用原生窗口(跨平台麻烦)。Level 4 直接内置 HTTP 服务器,插件可以:
- 起一个本地 HTTP 服务
- 用任何前端框架(React / Vue / Svelte / 原生 HTML)写 UI
- 通过 AstroBox 的应用内浏览器渲染
新增应用内浏览器
配合 HTTP 服务器,Level 4 还内置了应用内浏览器组件。插件可以:
- 在 AstroBox 内打开一个浏览器窗口
- 渲染自己起的 HTTP 服务器页面
- 用户点击、输入、操作都通过 WASI 浏览器接口和插件通信
能做什么
- 插件自带的设置面板(不用 AstroBox 原生 UI)
- 支付 / 登录授权页面(插件自己的 OAuth 流程)
- 在线文档 / 帮助中心
- 任何需要 Web 技术栈的界面
Python 与 JavaScript 成为官方语言
Python 支持
AstroBox Level 4 正式把 Python 作为官方支持语言。这意味着:
- Python 开发者不用学 Rust 就能写插件
- Python 的生态(requests / json / re 等标准库 + 第三方包)可用
- WASI 兼容的 Python 包(通过 Pyodide / wasmtime-python)
适合场景:数据处理、简单的资源源插件、脚本类工具。
JavaScript 支持
同样,JavaScript 也成为官方支持语言:
- 前端开发者零门槛
- WASI 兼容的 JS 运行时
- 适合需要写 Web UI 的插件(配合 HTTP 服务器)
语言选择建议
| 场景 | 推荐语言 |
|---|---|
| 高性能 / 底层能力 | Rust |
| 快速原型 / 数据处理 | Python |
| 需要 Web UI | JavaScript |
| 复杂系统 / 长期维护 | Rust |
Level 2/3 插件不受影响
旧版 API Level 2/3 的插件不会被移除,继续跑在旧版 wasmtime 上。AstroBox 会根据插件声明的 API Level 自动选择对应的运行时。
如果开发者想享受新特性,可以把插件升级到 Level 4,但这不是强制的。