1. 宿主声明能力
每个能力组用 `api "cap"` 声明,`extern` 只允许在 api 块中出现。
API-first scripting
LNS 的目标不是成为通用系统脚本,而是在封闭宿主中提供安全、可审计、高效率的用户自动化层。
每个能力组用 `api "cap"` 声明,`extern` 只允许在 api 块中出现。
用户脚本 import 可信契约模块,调用 `gpio.write`、`sensor.read` 这类受控入口。
底层 API 可以再包一层纯脚本库,用 `export` 提供更稳定、更易用的用户接口。
声明库文件 `.lnb` 自动匹配同名 C 头文件,生成 `api/extern` 契约和 C glue。
封闭系统最重要的问题不是“能不能调用函数”,而是“哪些函数可以被用户调用”。把能力契约放进语法,解释器、文档、绑定生成、权限审计都能看到同一份结构化信息。
// trusted/gpio.lns
api "gpio" {
extern void write(int pin, num value);
extern num read(int pin);
}
// user.lns
import gpio;
function led_on() {
gpio.write(2, 1);
}
只声明签名,实现由宿主注册。
api "timer" {
extern void after(int ms, function callback);
}
用 LNS 自己封装业务逻辑。
export function int clamp(int v, int lo, int hi) {
return v < lo ? lo : v > hi ? hi : v;
}