@cloudcrane/app-runtime (英语)
将 CloudCrane app spec 构建为 HTML 页面: 相同的字节 光谱和运行时间版本,每一次。 它没有写代码,也没有使用AI:它 检查光谱,将其符号转换成CSS,将光谱作为数据放入页面, 并用 A2UI 的渲染器内插绘制它的运行时间 .
import { compile } from "@cloudcrane/app-runtime";
const { html, sha256, runtime } = compile(spec);
-
compile(spec)返回页面、其sha256和所建的运行时间 与(@cloudcrane/[email protected]+<hash>)它抛出CompileError当光谱不验证时列出每个问题. -
compile(spec, { runtime: "shared" })链接运行时间而不是内置 它: 页面名称runtimeFile().path(单位:千美元)/_cc/runtime/<version>-<hash>.js(中文(简体) ) 所以一个主机向每个special app和a提供一份 浏览器只运行这些字节 。 页面然后是几个KB. 内置为 默认,用于一个孤立的页面. -
每个运行时间版本被锁定在一个捆绑的散列上(
runtime-lock.json因此,一个 版本总是以同样的方式绘制应用程序. 运行时间的版本 (单位:千美元)runtimeVersiona. 仅当捆绑完成时才移动 软件包可以不使用它而释放. -
一个被编码的组件运行在一个被沙盒所覆盖的框架里(只有文字,所以它已经) 在封闭的阴影根中 通过a
MessagePort在CloudCrane的封锁下 封锁使得 边框( r)window.__ccFrame); 其他地方的跑步时间是同类的. 这个 页面驱动它:种子和输入,然后每个框的时钟暂停 并隐藏。 游戏工具把时钟变成固定的台阶,所以游戏动作 同样的时间和种子:game.start({ rate: 6, setup() {}, step() {}, draw(g, width, height) {} }); game.on("swipe", (dir) => {}); // also "tap" and "input" game.state = { score }; // shown at /ui/coded/<id>/state game.emit("over", { score }); // the screen's action for "over" runs game.random(); // seeded by the page页面套件按原样运行一个HTML页面,全屏. 内容
localStorage工作:它持有的东西在打开时被写入框中,每个 更改到页面,它保持它<data.key>.coded.<id>(单位:千美元) 因此它可以在重新装入和更新后存活下来,框架只看到 自己来的 两个包都通过window.__ccBus。 。 。 .一个组件的框架允许设备具有 spec 特性
uses声明(其allow),页面也必须允许它们用于框架(在 权限政策,geolocation=*而不是说(self)) (中文(简体) ). 浏览器给出一个 框架没有它自己的来源 没有相机或麦克风, 所以一个页面包 spec 声明或随页面的出处运行, 则不再分开 从页面上写出来的, 游戏工具 保持分开. -
@cloudcrane/app-runtime/host: 主机发布 spec apps 在其中需要什么 导入(验证、编译、获取蓝图).
每个页面的运行时间包含来自其他开源的代码
软件包;它们的许可证在 THIRD_PARTY_LICENSES.txt。 。 。 . zod 3.25是一个
相对依赖。 麻省理工学院有执照.