Files
endorphin-tessera-gui/docs/architecture/01-modules.md

59 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 01 · 模块、依赖与部署
## 项目目录
```text
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/` 是忽略的构建产物,不是源码目录。示例与媒体保留原位置,避免破坏已有引用。完整源码职责见 [逐文件清单](file-map.md)。
## 组件关系
箭头表示主要运行时调用/数据流,不宣称是无环的 Rust import 图。
![组件与主要数据流](uml/rendered/components.png)
[放大 SVG](uml/rendered/components.svg) · [编辑 UML 源码](uml/components.puml)
标准 UML 组件表示见 [components.puml](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 传输 | 有超时、大小和协议限制;不是业务服务 |
![进程与线程部署](uml/rendered/deployment.png)
[放大 SVG](uml/rendered/deployment.svg) · [编辑 UML 源码](uml/deployment.puml)
可编辑部署图:[deployment.puml](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`。