feat: release Dever 0.1.4 with enforceable project guidance
This commit is contained in:
1 parent
201bdee372
commit
89629c2197
86 files changed
+2798
-338
No files matched your search
+6
-7
@@ -467,13 +467,13 @@ File 的 create_new/open/read/write/close 与共享别名、同步 Stream 的共
|
||||
|
||||
`llvm::emit_application` 已接通独立 CMD 与 HTTP/REST 应用入口。CMD 保持完整名称和单个 JSON 对象输入;混合 HTTP/CMD 项目执行 CMD 时不绑定监听器。`llvm/api.rs`、`api_context.rs`、`rest.rs` 与 `application_commands.rs` 生成静态路由、具体输入/输出、Claims/Identity 及权限描述符,复用已有 JWT/业务 verify、站点、RBAC、database-only 租户、Cookie/Header、Upload 与日志实现,不另建协议栈或向业务传入动态 Value。非 public 路由缺少认证或精确权限时,源码与私有 ABI 两处均拒绝;权限 key 仍不含 HTTP method。
|
||||
|
||||
完整应用和可达日志的 CMD 共用 invocation-owned `application::Session`,只读取一次 `config/setting.json`。数据库、迁移临时池、租户 manager 和 lifecycle 均由该 owner 持有;子任务先排空,再在同一 runtime 中关闭连接池、刷新日志。POST/PUT/DELETE 输入解码后开始事务,输出编码后提交,成功才发布响应 metadata。租户管理入口沿用 migrate/owner/component 合同,缺少 ready marker、租户身份或启用组件不能回退平台库。Upload 经 Port/Adapter 消费到存储,部分解码失败清理 affine owner。私有 CLI 和 Linux managed daemon 编译已接 LLVM;正式目标 packs 未交付。
|
||||
完整应用和可达日志的 CMD 共用 invocation-owned `application::Session`,只读取一次 `config/setting.json`。数据库、迁移临时池、租户 manager 和 lifecycle 均由该 owner 持有;子任务先排空,再在同一 runtime 中关闭连接池、刷新日志。POST/PUT/DELETE 输入解码后开始事务,输出编码后提交,成功才发布响应 metadata。租户管理入口沿用 migrate/owner/component 合同,缺少 ready marker、租户身份或启用组件不能回退平台库。Upload 经 Port/Adapter 消费到存储,部分解码失败清理 affine owner。私有 CLI 和 Linux managed daemon 编译已接 LLVM;签名发行包提供 Linux x86_64 编译资源,Linux ARM64 应用资源通过显式 target 扩展准备。
|
||||
|
||||
`llvm/external.rs` 接通 checked external Adapter;选中的 Setting 成功解码后才启动 Worker,具名输入/输出和声明业务错误复用 typed wire codec。缺失可空输出字段、额外字段、错类型和未声明错误均为运行故障。`llvm::emit_application_with_resources` 消费原打包器的 `EmbeddedResource`,与 Rust backend 共用摘要/去重,运行时复用安全提取和受管 launch;不查找宿主解释器。`runtime-external` 与编译器 SDK 分离。`component::Session` 由每次 task 根持有,传播到子任务、blocking 和 API;supervisor 挂在根 Scope,短命调用者退出不关闭共享 Worker。根退出先停止接收和关闭 Worker,再排空 Scope,typed 原始错误保留并附加清理原因。显式 shutdown 被取消时仍保留 Task owner,根可继续排空;普通 Test 仍只有 fake。
|
||||
|
||||
`llvm/jobs.rs` 接通 Job-only、API/worker/all、持久 payload、事务内入队、每次 User verify/精确权限/组件重验与租户迁移。`job::resources::Resources` 持有本次入口的 StorageBinding、Spec 和 Clock,复用已有 store/worker/cron/lease fencing;同步 handler 共用既有 bounded blocking,异步 handler 共用 typed coroutine。服务策略只在实际启动服务时校验,入队 CMD 和租户管理无需 HTTP/worker 配置。编译期的租户组件归属不等于部署启用了 tenant;两后端共用 `job::require_components`,仅在启用租户时要求身份并查询组件状态。Job 保持原有 HTTP 请求/身份 getter 禁用规则,不伪造请求上下文。
|
||||
|
||||
`llvm::emit_test_suite` 复用每个 checked `test_program` 的 fake、effect/failure 和可达闭包,在同一 IR 中按声明符号隔离各 case。稳定 index 选择私有文件名入口;fault 按同一 index 查询大小、渲染和释放,业务载荷保持具体类型。普通测试用独立进程和临时 SQLite;不读取部署配置、启动生产 Adapter/Lib 或服务,无数据库用例也不初始化无关 Model。断言保留源码位置,虚拟时钟和 drain 复用生产队列;根 Scope 排空后关闭 Session,再释放注册表、时钟和入口锁。测试 CLI 切换仍属于后续统一后端阶段。
|
||||
`llvm::emit_test_suite` 复用每个 checked `test_program` 的 fake、effect/failure 和可达闭包,在同一 IR 中按声明符号隔离各 case。稳定 index 选择私有文件名入口;fault 按同一 index 查询大小、渲染和释放,业务载荷保持具体类型。普通测试用独立进程和临时 SQLite;命令读取配置和锁中的依赖信息,但不连接部署数据库或启动生产 Adapter/Lib、服务,无数据库用例也不初始化无关 Model。断言保留源码位置,虚拟时钟和 drain 复用生产队列;根 Scope 排空后关闭 Session,再释放注册表、时钟和入口锁。测试 CLI 已使用同一 LLVM 后端;`test_runner` 按身份筛选执行索引,负责每例超时、输出捕获及自身进程组回收。
|
||||
|
||||
`llvm/database.rs`、`database_rows.rs`、`orm*.rs`、`database_schema.rs` 和 `transaction.rs` 接通 Model;API 应用通过 Session 同时支持平台库与租户物理库。SQL/DDL 与关联查询复用 `native/orm.rs` 的纯构造函数,不生成 Rust、不复制数据库驱动。持久化固定标量在 ABI 边界转换为既有 `orm::Value`,业务记录和错误仍保持具体类型。Row/Rows/RowStream/Related 是不透明所有者;ToOne 保留可空关联,ToMany 按 998 个父键分块并使用既有 per-parent 限额 SQL。启动按实际数据库分组先迁移全部 Model,再建立外键;数据迁移与 Seed 复用原历史校验、事务和顺序规则。
|
||||
|
||||
@@ -491,7 +491,7 @@ Linux `deverd` 已接可信编译 IPC。managed core 提交逻辑源码、无秘
|
||||
|
||||
原生发行包作者入口 `sdk/native-release.rs` 从独立作者根的 `config/setting.json` 读取显式输入及摘要,复用既有 runtime manifest、验证器和 Ed25519 发行协议。制作器复制并复核四 profile、CRT 和核心/LLVM 文件,在私有 staging 中签名,再以不覆盖方式原子发布;私钥不进入产物。`runtime-pack` Cargo profile 为 base/sqlite/postgres/both 分别生成保留链接符号的优化 archive,共享一个构建缓存。相同输入和密钥的重复打包一致,不等同于跨机器源码构建一致。
|
||||
|
||||
作者配置的可选 `runtimes` 已接 Python/Node/Go 完整运行/构建输入,制作器与 Worker 共用 manifest 和文件闭包校验。排序且固定元数据的 gzip/tar、registry 描述统一进入顶层发行签名;Go SDK、Adapter 和依赖的编译共用 `-trimpath`,避免随机临时目录改变 Worker 与共享缓存身份。LLVM 的二进制资源附件复用既有摘要去重,在 verify 前初始化常量,IR 仍限8 MiB;附件最多4096项、单项128 MiB/总256 MiB,共享编译请求384 MiB、产物320 MiB,不透明 artifact 仍64 MiB。Linux x86_64 三生态签名安装、受管 `check/run/build`、三条共享缓存及移除源码/机器安装后无系统语言环境的独立执行已通过,包含Python/Node源码构建原生依赖与离线收据重放。Linux签名首装、旧签名模板升级、篡改拒绝、双项目及真实双UID共享核心亦已通过自有完整验收。Linux root 沙箱、真实第三方高级依赖、双 CMS/PG 和 LLVM 容量报告已补齐;公开首次安装包、六平台产品代码/资产、受限 AppArmor 非 root 入口与完整质量门仍未完成。各阶段证据及限制见当前生产化任务。
|
||||
作者配置的可选 `runtimes` 已接 Python/Node/Go 完整运行/构建输入,制作器与 Worker 共用 manifest 和文件闭包校验。排序且固定元数据的 gzip/tar、registry 描述统一进入顶层发行签名;Go SDK、Adapter 和依赖的编译共用 `-trimpath`,避免随机临时目录改变 Worker 与共享缓存身份。LLVM 的二进制资源附件复用既有摘要去重,在 verify 前初始化常量,IR 仍限8 MiB;附件最多4096项、单项128 MiB/总256 MiB,共享编译请求384 MiB、产物320 MiB,不透明 artifact 仍64 MiB。Linux x86_64 三生态签名安装、受管 `check/run/build`、三条共享缓存及移除源码/机器安装后无系统语言环境的独立执行已通过,包含Python/Node源码构建原生依赖与离线收据重放。Linux签名首装、旧签名模板升级、篡改拒绝、双项目及真实双UID共享核心亦已通过自有完整验收。Linux root 沙箱、真实第三方高级依赖、双 CMS/PG 和 LLVM 容量报告已补齐;受限 AppArmor 非 root 入口和定向 CI 质量门也已完成。公开 Linux x86_64 v0.1.3 发行包的匿名下载、在线首装和更新已验收;Linux ARM64 应用交叉构建已支持,其他宿主平台的产品代码及完整发行资产仍待适配。长时间压力测试不能由这些定向结果替代。
|
||||
|
||||
database 租户模式把 verify 返回的内部 tenant ModelId 放入同一 task-local 调用域。`global type` 继续使用平台连接,其他 Model、自动 REST 与 Job 通过 `StorageBinding` 选择已显式迁移且 fingerprint 匹配的租户物理库;缺少上下文或 ready marker 直接失败。runtime tenant manager 对 `(connection, tenant_id)` 池设置总量与 idle 回收,生成的 `tenant migrate` 入口按稳定顺序迁移全部 tenant Model/Job 后才写本地和 control marker;PostgreSQL 先通过控制库幂等建租户库。User Job 持久化 Provider/站点/session/租户声明和已通过的能力名,Worker 重新调用静态 verify 并使用最新权限复核,不能把历史任务降级为 System。table/field 模式尚未实现,不能在固定表 SQL 上只补一个配置分支。
|
||||
|
||||
@@ -534,7 +534,7 @@ Dever 的默认工作流是本地离线:
|
||||
- `run` 在临时位置生成程序、执行并清理;
|
||||
- `build` 只写入明确指定且尚不存在的输出路径,避免误覆盖文件。
|
||||
|
||||
`run` 和 `build` 需要当前机器已经具备与编译器匹配的本地原生后端。正式发行工具应随发行包提供或在安装时明确检查它,不能在一次构建过程中临时联网补齐。当前尚未交付面向最终用户的完整发行工具链。
|
||||
`run` 和 `build` 使用与编译器匹配、经签名校验的本地原生资源,不能在一次构建过程中临时联网补齐。Linux x86_64 已提供面向最终用户的二进制发行工具链、首次安装入口、共享服务和版本化 skill;应用开发不需要系统 Rust、LLVM、Python、Node 或 Go。额外生态和目标资源由显式准备命令安装,普通 run/build 保持离线。
|
||||
|
||||
内置标准包 AST 在进程内缓存;每线程只保留上一份按有序路径和完整文本精确匹配的检查结果,含错误与警告。新的 CLI 进程仍完整检查源码和 API 基线,没有持久化 HIR 格式。
|
||||
|
||||
@@ -597,11 +597,10 @@ Dever 的默认工作流是本地离线:
|
||||
|
||||
## 19. 当前边界
|
||||
|
||||
本文描述的是当前语言和已经接通的编译架构,不代表所有生态能力都已完成。SQLite/PostgreSQL 类型安全 ORM 已使用编译器拥有的 `ModelSchema`/`QueryPlan`、具体生成代码和薄方言 executor 接入;Model、事务、迁移、Seed、关联和 typed native SQL 的合同见 [语言开发指南](LANGUAGE.md#13-modelorm-与数据库) 与 [Database Guidelines](.trellis/spec/backend/database-guidelines.md)。当前仍未交付的主要部分包括:
|
||||
本文描述的是当前语言和已经接通的编译架构,不代表所有生态能力都已完成。SQLite/PostgreSQL 类型安全 ORM 已使用编译器拥有的 `ModelSchema`/`QueryPlan`、具体生成代码和薄方言 executor 接入;Model、事务、迁移、Seed、关联和 typed native SQL 的合同见 [语言开发指南](LANGUAGE.md#13-modelorm-与数据库) 与 [Database Guidelines](.trellis/spec/backend/database-guidelines.md)。Package 的注册表解析与锁定、Linux 签名安装和更新流程已实现。当前仍未交付的主要部分包括:
|
||||
|
||||
- WebSocket-over-HTTP/2、子协议/扩展、CONNECT、推送及更完整的 HTTP 生态;
|
||||
- package 注册表和正式安装发行流程;
|
||||
- 跨平台发行验证;
|
||||
- ARM64 原生宿主编译器、macOS/Windows 产品适配与完整发行;Linux x86_64 到 ARM64 的应用交叉构建已实现;
|
||||
- 用 Dever 自身实现编译器。
|
||||
|
||||
这些能力应建立在现有语义和系统原语边界之上,不能通过在 CLI 或运行时中增加隐藏业务逻辑来绕开语言设计。
|
||||
|
||||
Reference in new issue
Block a user