Files

6.1 KiB

06 · 当前进展、限制与验证

截至 2026-10-25,可以用 Endor 建立共享对象、多 Page 的原生交互应用,在 Console 中持续修改它们,并用已有开发工具观察源码和本机 API。这是可工作的桌面宿主及语言 UI 集成阶段,不是完整 LMS、浏览器或云 IDE。

进展矩阵

领域 已有实现与证据位置 尚未完成 / 不能据此推断
语言运行 固定版本 Aster Reader、Parser、Compiler、VM;完整程序和持久 Console,runtime/endor_host.rs 不等于 Endor 全语言、全部数值指令或所有 trait/effect 语法均已完整实现
对象与类型 托管 Block/Cell/Data、原生名义类型、源类与原生子类、方法签名和能力检查,bridge / model 仍受当前 Aster 版本的表达式、注解和 effect 实现子集限制
活界面 共享对象绑定、Mount、source/native measure/arrange/paint/hitTest、缓存及刷新预算 不保证每次刷新只做局部 O(变更数) 工作;无 GPU 渲染后端
页面/窗口 默认页、真实多 Page、标签关闭重开、原生多窗口、带代际校验的拖放 混合 DPI 跨屏、真实触屏与动画帧时序没有完整硬件验收
桌面交互 统一 chrome、原生按钮对齐、双击 zoom/restore、高密度滚动、hover 淡入淡出 Fill 并未接 macOS 私有精确平铺接口;非 macOS 构建本轮未验证
事件 capture/target/bubble、代码/native 共用分发、Subscription、Mount 生命周期回调 preventDefault 尚无额外宿主默认动作可取消
异步 timer、文件读取、fetchText、协作调度、owner/key 取消 不是完整浏览器网络栈;fetchText 使用系统 curl,无完整产品权限体系
开发工具 Console/Sources/Network/Settings 四个独立 Page 云 source provider 默认断开;工具发现 UI 延后;状态不持久化
示例 学生成绩示例、七页 Campus LMS、共享提交/成绩更新、建模录屏 全部虚构数据;预设评分,不连接 Canvas,不具备真实认证/上传/成绩计算服务
本机 API 仅 loopback、有界队列、版本和失败保留,runtime/api* loopback 不是完整授权系统,执行预算不是不可信代码沙箱
分发 可构建 Finder 可启动的 macOS 开发 bundle 没有发行签名、公证、安装器和本轮跨平台发布验证

推荐看这几个实物

  1. 默认页源码:理解“页面本身就是 Endor 程序”。
  2. 默认页的“共享对象示例”入口:展示一个状态对象的两处绑定;更多源码见 examples README。
  3. Campus LMS 源码 与 操作说明:七个真实 Page 共享课程和提交对象。
  4. 建模视频 与 中文字幕:已有实际窗口操作记录,静音、采样帧率有说明。
  5. GET /agent:运行中的实时 API 指南,优先于长期静态样例推断接口。

当前本地开发方式(2026-11-10)

页面/宿主设计更新:支持 window、vertical、horizontal、canvas 四种空间;顶部标签条由可收起左侧栏替代。实现、测试与原生验收边界见 页面空间说明。下文 150 项测试及原窗口结构属于前一次移除 CI 的交付记录。

项目已移除 CI/CD 工作流、Docker 工具链定义及远程验证脚本。开发、构建、现有测试与原生窗口验收改在本机执行,命令见 项目验证说明。以下保留 2026-10-25 整理时的验收记录,不代表本次检查结果。

本次使用 macOS / Rust 1.91.1:格式检查、150 项现有测试、all-target Clippy(拒绝 warnings)、打包脚本语法检查及 release app 构建均通过。应用已启动,GET /agent 与 GET /code 返回正常,窗口报告 1280 × 800 的逻辑 viewport;通过实际 REPL 创建/关闭临时标签页,页面数为 1 → 2 → 1。首次页面查询误用了不存在的 ui.pages(),返回 422;改为 ui.window().pages().count 后通过。原生 UI 检查工具启动失败,本次没有窗口外观、真实鼠标交互或跨屏验收证据。Aster 保持固定版本,未修改源码或 gitlink。

下一步优先补齐真实窗口的共享对象、标签拖放和退出清理验收,然后定义本地 .endor 文件的打开、保存及重启恢复方式。当前 Sources 的云文件 provider 默认断开,源码/设置尚不持久化。此外,在线 API 指南仍有旧的标签高度、overflow 箭头和增量布局状态说明,需要与现有实现及测试统一。

2026-10-25 整理验证方式

本轮是整理,不扩展业务功能。沿用工作约定:格式、cargo clippy --all-targets --offline -- -D warnings、原生 release 打包、真实窗口和少量人工 API 操作;不执行 cargo test、自动 smoke 脚本或 Docker。Clippy 会编译检查已有测试代码,但不代表测试已经执行。

最终实际执行结果见 整理清单的验收记录。架构图已用官方 PlantUML JavaScript 引擎在本地生成 SVG 和 PNG,并检查实际图片。渲染工具临时安装在仓库外,不需要 Java、原生 Graphviz 或在线服务;详见 UML 图册的重建步骤。

后续建议顺序

以下是后续建议,不是本轮已经实现或已承诺排期的功能。

  1. 把多 Page、关闭重开、跨窗拖放、共享字段刷新作为固定人工验收场景,优先暴露状态与生命周期问题。
  2. 沿稳定接口继续拆分 ui_bridge 的刷新协调和 app 的输入路由,减少大模块;不要仅为“分层”额外复制对象模型。
  3. 明确保存/恢复与文件 provider 的产品语义,再选择持久化格式和后端。
  4. 根据真实应用需求推进 Aster 运算与类型能力,避免用 UI 层预设值冒充完整业务计算。
  5. 在增加可信外部运行能力前明确权限、执行隔离与分发机制。