Files

3.3 KiB
Raw Permalink Blame History

01 · 模块、依赖与部署

项目目录

Tessera/
├── Cargo.toml / Cargo.lock      Rust 依赖和固定解析结果
├── src/
│   ├── main.rs                 组合入口、事件循环和共享发布状态
│   ├── shell/                  原生窗口、可收起侧栏、开发工具、管理控件
│   ├── runtime/                本机 API、VM worker、执行、事件与异步任务
│   ├── model/                  托管对象、挂载、绑定、依赖和发布数据
│   ├── render/                 布局、绘制、命中、字体与软件光栅化
│   └── bridge/                 Endor 与宿主 UI 类型及行为的连接
├── examples/                   Endor 示例程序,保留原文件名与入口
├── docs/
│   ├── architecture/           本套架构说明和 UML 源文件
│   └── media/                  已有建模视频与字幕
├── scripts/                    本地原生打包及 UML 文档渲染
└── vendor/aster/               独立 Git 子模块:语言、编译器、VM

target/ 是忽略的构建产物,不是源码目录。示例与媒体保留原位置,避免破坏已有引用。完整源码职责见 逐文件清单。

组件关系

箭头表示主要运行时调用/数据流,不宣称是无环的 Rust import 图。

组件与主要数据流

放大 SVG · 编辑 UML 源码

标准 UML 组件表示见 components.puml。System UI 只依赖低层几何、文本和画图,不导入 Endor VM 或 guest bridge;开发工具的执行逻辑由外层提供。

线程与进程

执行位置 核心所有物 交互方式
GUI / winit 主线程 TesseraApp、原生 Window、Surface、侧栏、页面视角交互 读已发布快照;发 viewport、输入和窗口命令
tessera-agent-api tiny_http 接收循环、请求观察 对写入做校验并进入最多 8 条的构建队列;读取当前发布状态
tessera-endor-worker 活跃 ReplSession、候选 VM、托管对象图 串行执行程序、回调、布局/绘制协议及任务完成交付
输入发送线程 有界输入客户端 把原生输入转为本机 HTTP 请求;不执行 VM
按需 I/O 池 文件/HTTP 工作及取消控制 不持有托管根;通过 mailbox 回传文本/错误
系统 curl 子进程 fetchText 的实际 HTTP 传输 有超时、大小和协议限制;不是业务服务

进程与线程部署

放大 SVG · 编辑 UML 源码

可编辑部署图:deployment.puml。Aster 作为 Cargo path dependency 编译到同一应用,不是额外 VM 服务;Lyra 和 Hestia 不在应用依赖链中。

入口定位

  • 启动:src/main.rs → runtime/api::start → shell/app::TesseraApp。
  • 请求路由和有界队列:runtime/api.rs;VM 所有权与发布:runtime/api/worker.rs。
  • 启动 Endor 主程序/Console:runtime/endor_host.rs。
  • 类型安装:bridge/ui_bridge/bootstrap.rs;原生 Block 方法:calls.rs。
  • 组合最终画面:render/scene.rs;写入像素:render/software_renderer.rs。