给封闭系统开放用户 API 的脚本层

C 风格语法,Lua 级效率,能力由宿主精确授予。

LNS 面向设备、网关、游戏、自动化工具等封闭系统。宿主只开放允许用户操作的 API,脚本侧用简单语法组合业务逻辑。

trusted/gpio.lnsapi 契约
api "gpio" {
  extern void write(int pin, num value);
  extern num read(int pin);
}

function pulse() {
  gpio.write(2, 1);
  var level = gpio.read(2);
  return level;
}
C-like花括号、分号、C 式控制流,工程师接手成本低。
Lua-class目标效率看齐 Lua,嵌入式场景优先。
API-first通过 api/extern 声明宿主能力,开放边界清晰。
Small core语法核心小,库和宿主绑定简单。

为什么不是直接开放系统能力?

封闭系统只暴露可控 API

脚本不能随意访问文件、网络、进程或裸内存。宿主通过能力组决定什么能被调用。

库就是契约 + 实现

底层库用 `api { extern ... }` 描述签名;纯脚本库用 `export` 暴露能力,用户直接 import。

语法简单,解析简单

所有声明都以关键字开头,禁止 `int x;` 这种裸声明,避免 C 式 typedef 消歧复杂度。

LNB 自动生成绑定

`mylib.lnb` 自动匹配 `mylib.h`,生成 LNS 契约和 C glue;自定义数据统一用 handle 传递。

显式 API 开放是 LNS 的核心创新

LNS 把“用户能做什么”放进语言表层。API 能力不是散落在运行时里的隐式全局函数,而是可审计、可授权、可替换的契约。

  • api 能力分组
  • extern 宿主绑定
  • import 后使用
  • 适合自动绑定生成
api "sensor" {
  extern num read(string id);
}

api "telemetry" {
  extern void report(string name, num value);
}

function on_tick() {
  var v = sensor.read("motion");
  telemetry.report("motion", v);
}

评价与建议