Files
core/README.md
T

91 lines
4.9 KiB
Markdown
Raw 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.
# Dever
Dever 是用于开发应用的编译型语言,自带 API、数据库操作、权限、租户和后台任务。源码可以写成 `.dever`,也可以把代码和说明放在 `.dever.md` 中。
## 安装与开始
目前支持 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 run my_app -- hello.greeting.greet '{"name":"Dever"}'
dever build my_app --output my_app/program
./my_app/program hello.greeting.greet '{"name":"Dever"}'
```
这会创建一个问候程序,再把它编译成独立可执行文件。开发应用无需克隆编译器源码或安装 Rust、LLVM、Node、Go。安装包也可从 [Releases](https://git.dever.cc/shemic/dever/releases) 下载。
用 `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
```
`update` 一起更新 Dever 与配套 skill。项目可在 `config/setting.json` 的 `dever.version` 锁定版本;`dever skill path my_app` 查看它使用的指引。普通 `check/test/run/build` 不检查更新、不隐式联网。
## 应用开发
代码放在 `module/<组件>/<领域>/`。API 声明入口,App 编排业务,Domain 写业务规则,Model 定义数据,Port/Adapter 接入外部能力,Job 声明后台任务。只创建需要的文件,跨领域调用 App。
不需要 `package`、`import` 或 `main`。HTTP 默认有权限检查,匿名接口显式写 `public`。配置放 `config/setting.json`,测试放 `test/<组件>/<领域>/`。
- [语言开发指南](LANGUAGE.md):语法、标准包、并发、Model、权限、租户、Job 和外部调用。
- [应用开发规范](skills/references/development.md):目录、函数职责、复用、配置、测试和交付。
- [dever-language skill](skills/SKILL.md):面向 AI 的应用开发指引。
- [Markdown 源码规范](MARKDOWN-SYNTAX.md):说明与代码的一致性要求。
- [CMS 示例](examples/README.md):同步维护的普通源码和 Markdown 实现。
- [External Worker SDK](sdk/README.md):Python、JavaScript 和 Go Adapter 开发。
- [VS Code 插件](editor/vscode/README.md):安装语法高亮插件。
## 依赖与应用目标
Dever 组件叫 Package,Python、JavaScript、Go 依赖叫 Lib。用 `dever package` 或 `dever lib` 准备依赖,后续运行和构建使用 `dever.lock`。具体用法见 [依赖指引](skills/references/libraries.md)。
Linux x86_64 开发机可以生成 Linux ARM64 应用:
```sh
dever target add linux-aarch64
dever lib update my_app --target linux-aarch64
dever build my_app --target linux-aarch64 --output my_app/program-arm64
```
没有外部依赖时省略 `lib update`;已有目标锁时改用 `lib install`。依赖必须支持 ARM64。当前不提供 ARM64、macOS 或 Windows 开发机安装包;平台和沙箱条件见 [安装指引](skills/references/install.md)。
## 编译器源码开发
[源码仓库](https://git.dever.cc/shemic/dever) 使用 Rust;`crates/dever-core` 负责语言检查与编译,`crates/dever-runtime` 提供运行时,`crates/dever-cli` 提供命令,`library/` 保存标准 Dever 源码。架构及语义实现见 [实现原理](IMPLEMENTATION.md)。
构建编译器需要 Rust 1.95+、锁定的 Cargo 依赖和准备好的 LLVM 18/LLD SDK;仅构建 CLI 不足以运行应用,还需要匹配的应用编译资源。生产应用编译使用 LLVM/LLD,不调用系统 Rust/Cargo/cc。
永久测试位于根目录 `test/`,按修改选择最小定向检查,例如:
```sh
cargo test --offline -p dever-tests --test core_semantics
```
语言接口直接迭代,源码调用方须同步更新。旧语法回归材料位于 `examples/old/`,不要用作新项目模板。