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
@@ -1,39 +1,57 @@
|
||||
# Dever
|
||||
|
||||
Dever 是面向应用开发的编译型语言,提供类型检查、命名输出、穷尽分句、值与资源语义、结构化并发,以及 JSON、HTTP/1.1、HTTP/2、SSE、WebSocket、TLS 和 SQLite/PostgreSQL 类型安全 ORM。源码支持 `.dever` 和带说明的 `.dever.md`,两者使用相同语言规则。
|
||||
Dever 是用于开发应用的编译型语言,自带 API、数据库操作、权限、租户和后台任务。源码可以写成 `.dever`,也可以把代码和说明放在 `.dever.md` 中。
|
||||
|
||||
## 安装与开始
|
||||
|
||||
当前开发机支持 Linux x86_64,要求 glibc 2.39 或更新版本。首次安装需要 Bash、curl、`/usr/bin/python3` 3.9+、支持 Ed25519 的 `/usr/bin/openssl` 和管理员权限;非 root 用户通过 `/usr/bin/sudo` 提权。
|
||||
目前支持 Linux x86_64 开发机,要求 glibc 2.39+。首次安装需要 Bash、curl、Python 3.9+、支持 Ed25519 的 OpenSSL 和管理员权限。详细条件见 [安装指引](skills/references/install.md)。
|
||||
|
||||
```sh
|
||||
curl -fsSL https://git.dever.cc/shemic/dever/raw/branch/main/install | bash
|
||||
dever new my_app
|
||||
dever fmt my_app --check
|
||||
dever check my_app
|
||||
dever test my_app
|
||||
dever run my_app -- hello.greeting.greet '{"name":"Dever"}'
|
||||
dever build my_app --output my_app/program
|
||||
./my_app/program hello.greeting.greet '{"name":"Dever"}'
|
||||
```
|
||||
|
||||
发行包可从 [Releases](https://git.dever.cc/shemic/dever/releases) 下载。安装使用 `/opt/dever` 和 `/usr/local/bin/dever`,并安装共享服务;详情见 [安装与更新](skills/references/install.md)。应用开发无需克隆编译器源码或安装 Rust、LLVM、Python、Node、Go 开发环境。
|
||||
这会创建一个问候程序,再把它编译成独立可执行文件。开发应用无需克隆编译器源码或安装 Rust、LLVM、Node、Go。安装包也可从 [Releases](https://git.dever.cc/shemic/dever/releases) 下载。
|
||||
|
||||
`dever new my_app --markdown` 创建等价的 Markdown 项目。项目目录必须是新目录;`build` 输出必须是新文件,父目录必须存在。生成程序从可执行文件同级的 `config/setting.json` 读取配置,部署时保留这个目录结构。独立程序无需 Dever 编译器或应用源码;使用外部 Lib 时,所需运行资源随程序嵌入。
|
||||
用 `dever new my_app --markdown` 创建 Markdown 项目。新项目目录、构建输出文件都不能已存在,父目录必须存在。部署时把 `config/setting.json` 放在程序同级;目标机器无需安装 Dever。
|
||||
|
||||
## 让 AI 开发
|
||||
|
||||
新项目已生成 `AGENTS.md`。已有项目在根目录执行:
|
||||
|
||||
```sh
|
||||
dever skill install
|
||||
```
|
||||
|
||||
命令自动使用项目对应版本的 skill,把开发规则写入 `AGENTS.md`;保留其他内容,重复执行只更新 Dever 规则块。不需要指定 AI 技能目录或复制文档。
|
||||
|
||||
规则要求 AI 先读开发指引,禁止擅自加旧版本兼容、重复实现、空包装和业务硬编码。AGENTS 负责指导 AI,编译器检查能判定的违规;不能保证 AI 永远不会写错代码。
|
||||
|
||||
## 检查与更新
|
||||
|
||||
```sh
|
||||
dever fmt my_app --check
|
||||
dever check my_app
|
||||
dever test my_app --filter hello.greeting
|
||||
```
|
||||
|
||||
`fmt` 查格式,`check` 查源码与配置,`test` 执行所选测试。测试默认每例最多 60 秒,可加 `--timeout-ms 5000` 调整。`check` 不启动程序,普通测试不连接部署数据库;验证范围见 [开发指引](skills/references/development.md#验证范围)。
|
||||
|
||||
```sh
|
||||
sudo dever update
|
||||
dever version
|
||||
dever skill install <新的AI技能目录>/dever-language
|
||||
```
|
||||
|
||||
核心与配套 AI skill 一起更新。已有项目可在 `config/setting.json` 的 `dever.version` 锁定准确版本,并用 `dever skill path <project-root>` 查找对应指引。普通 `check/test/run/build` 不检查更新、不隐式联网。
|
||||
`update` 一起更新 Dever 与配套 skill。项目可在 `config/setting.json` 的 `dever.version` 锁定版本;`dever skill path my_app` 查看它使用的指引。普通 `check/test/run/build` 不检查更新、不隐式联网。
|
||||
|
||||
## 应用开发
|
||||
|
||||
应用按 `module/<component>/<domain>/<role>` 组织;role 为 App、Domain、Model、Port、Adapter、API 或 Job。API 声明入口,App 编排业务,Domain 表达内聚规则,Model 定义持久化合同,Port/Adapter 接入外部能力。跨领域只调用目标 App,其他角色保持领域私有。
|
||||
代码放在 `module/<组件>/<领域>/`。API 声明入口,App 编排业务,Domain 写业务规则,Model 定义数据,Port/Adapter 接入外部能力,Job 声明后台任务。只创建需要的文件,跨领域调用 App。
|
||||
|
||||
源码不写 `package`、`import` 或 `main`,入口由 API、CMD 和 Job 声明生成。HTTP 默认要求认证和权限,仅单条 `public` HTTP 声明允许匿名访问。配置集中在 `config/setting.json`,不从环境变量读取。应用测试放在 `test/<component>/<domain>/<topic>`。
|
||||
不需要 `package`、`import` 或 `main`。HTTP 默认有权限检查,匿名接口显式写 `public`。配置放 `config/setting.json`,测试放 `test/<组件>/<领域>/`。
|
||||
|
||||
- [语言开发指南](LANGUAGE.md):语法、标准包、并发、Model、权限、租户、Job 和外部调用。
|
||||
- [应用开发规范](skills/references/development.md):目录、函数职责、复用、配置、测试和交付。
|
||||
@@ -41,12 +59,11 @@ dever skill install <新的AI技能目录>/dever-language
|
||||
- [Markdown 源码规范](MARKDOWN-SYNTAX.md):说明与代码的一致性要求。
|
||||
- [CMS 示例](examples/README.md):同步维护的普通源码和 Markdown 实现。
|
||||
- [External Worker SDK](sdk/README.md):Python、JavaScript 和 Go Adapter 开发。
|
||||
|
||||
`dever fmt <root> --check` 检查格式;`dever check <root>` 静态检查语言、目录、配置、API 基线及生产入口可达性,不执行应用。`dever test <root>` 执行项目全部应用测试,没有筛选参数;按改动选择验证,不默认运行大型项目的完整套件、真实数据库或性能测试。
|
||||
- [VS Code 插件](editor/vscode/README.md):安装语法高亮插件。
|
||||
|
||||
## 依赖与应用目标
|
||||
|
||||
Dever Package 复用业务组件;Python、JavaScript、Go 生态依赖称为 Lib。通过显式 `dever package` 或 `dever lib` 命令准备依赖并写入 `dever.lock`,后续运行和构建使用锁定结果。已有锁的项目在新机器用 `dever lib install <root>` 恢复,不重新选择版本。相同版本的工具和资源由多个用户、项目共享。
|
||||
Dever 组件叫 Package,Python、JavaScript、Go 依赖叫 Lib。用 `dever package` 或 `dever lib` 准备依赖,后续运行和构建使用 `dever.lock`。具体用法见 [依赖指引](skills/references/libraries.md)。
|
||||
|
||||
Linux x86_64 开发机可以生成 Linux ARM64 应用:
|
||||
|
||||
@@ -56,13 +73,7 @@ dever lib update my_app --target linux-aarch64
|
||||
dever build my_app --target linux-aarch64 --output my_app/program-arm64
|
||||
```
|
||||
|
||||
没有外部依赖时省略 `lib update`;已有匹配目标的锁时改用 `lib install`。依赖及原生扩展必须支持目标架构。省略 `--target` 时使用本机目标,`run/test` 也在本机执行。ARM64 应用目标不代表提供 ARM64 宿主编译器;macOS、Windows 宿主安装暂未提供。
|
||||
|
||||
Linux 外部调用使用 OS 沙箱,需要系统允许所需 namespace 和 `openat2`;受限 AppArmor 环境还需要安装器配置的专用策略。系统策略不满足要求时明确失败,不退回无沙箱执行。HTTP/2 暂不支持 WebSocket-over-HTTP/2、CONNECT 或服务端推送。完整能力及限制见语言指南。
|
||||
|
||||
## 编辑器
|
||||
|
||||
[VS Code 语法插件](editor/vscode/README.md) 通过独立 VSIX 安装,支持 `.dever` 和 Markdown 中的 Dever 代码块、括号配对、自动闭合、缩进及 `#` 注释。无需先安装编译器;目前不提供补全、跳转、格式化或实时诊断。`dever update` 不负责更新编辑器插件。
|
||||
没有外部依赖时省略 `lib update`;已有目标锁时改用 `lib install`。依赖必须支持 ARM64。当前不提供 ARM64、macOS 或 Windows 开发机安装包;平台和沙箱条件见 [安装指引](skills/references/install.md)。
|
||||
|
||||
## 编译器源码开发
|
||||
|
||||
|
||||
Reference in new issue
Block a user