80 lines
5.8 KiB
Markdown
80 lines
5.8 KiB
Markdown
# Dever
|
||
|
||
Dever 是面向应用开发的编译型语言,提供类型检查、命名输出、穷尽分句、值与资源语义、结构化并发,以及 JSON、HTTP/1.1、HTTP/2、SSE、WebSocket、TLS 和 SQLite/PostgreSQL 类型安全 ORM。源码支持 `.dever` 和带说明的 `.dever.md`,两者使用相同语言规则。
|
||
|
||
## 安装与开始
|
||
|
||
当前开发机支持 Linux x86_64,要求 glibc 2.39 或更新版本。首次安装需要 Bash、curl、`/usr/bin/python3` 3.9+、支持 Ed25519 的 `/usr/bin/openssl` 和管理员权限;非 root 用户通过 `/usr/bin/sudo` 提权。
|
||
|
||
```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 开发环境。
|
||
|
||
`dever new my_app --markdown` 创建等价的 Markdown 项目。项目目录必须是新目录;`build` 输出必须是新文件,父目录必须存在。生成程序从可执行文件同级的 `config/setting.json` 读取配置,部署时保留这个目录结构。独立程序无需 Dever 编译器或应用源码;使用外部 Lib 时,所需运行资源随程序嵌入。
|
||
|
||
```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` 不检查更新、不隐式联网。
|
||
|
||
## 应用开发
|
||
|
||
应用按 `module/<component>/<domain>/<role>` 组织;role 为 App、Domain、Model、Port、Adapter、API 或 Job。API 声明入口,App 编排业务,Domain 表达内聚规则,Model 定义持久化合同,Port/Adapter 接入外部能力。跨领域只调用目标 App,其他角色保持领域私有。
|
||
|
||
源码不写 `package`、`import` 或 `main`,入口由 API、CMD 和 Job 声明生成。HTTP 默认要求认证和权限,仅单条 `public` HTTP 声明允许匿名访问。配置集中在 `config/setting.json`,不从环境变量读取。应用测试放在 `test/<component>/<domain>/<topic>`。
|
||
|
||
- [语言开发指南](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 开发。
|
||
|
||
`dever fmt <root> --check` 检查格式;`dever check <root>` 静态检查语言、目录、配置、API 基线及生产入口可达性,不执行应用。`dever test <root>` 执行项目全部应用测试,没有筛选参数;按改动选择验证,不默认运行大型项目的完整套件、真实数据库或性能测试。
|
||
|
||
## 依赖与应用目标
|
||
|
||
Dever Package 复用业务组件;Python、JavaScript、Go 生态依赖称为 Lib。通过显式 `dever package` 或 `dever lib` 命令准备依赖并写入 `dever.lock`,后续运行和构建使用锁定结果。已有锁的项目在新机器用 `dever lib install <root>` 恢复,不重新选择版本。相同版本的工具和资源由多个用户、项目共享。
|
||
|
||
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`。依赖及原生扩展必须支持目标架构。省略 `--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` 不负责更新编辑器插件。
|
||
|
||
## 编译器源码开发
|
||
|
||
[源码仓库](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/`,不要用作新项目模板。
|