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 提权。
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 下载。安装使用 /opt/dever 和 /usr/local/bin/dever,并安装共享服务;详情见 安装与更新。应用开发无需克隆编译器源码或安装 Rust、LLVM、Python、Node、Go 开发环境。
dever new my_app --markdown 创建等价的 Markdown 项目。项目目录必须是新目录;build 输出必须是新文件,父目录必须存在。生成程序从可执行文件同级的 config/setting.json 读取配置,部署时保留这个目录结构。独立程序无需 Dever 编译器或应用源码;使用外部 Lib 时,所需运行资源随程序嵌入。
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>。
- 语言开发指南:语法、标准包、并发、Model、权限、租户、Job 和外部调用。
- 应用开发规范:目录、函数职责、复用、配置、测试和交付。
- dever-language skill:面向 AI 的应用开发指引。
- Markdown 源码规范:说明与代码的一致性要求。
- CMS 示例:同步维护的普通源码和 Markdown 实现。
- External Worker SDK: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 应用:
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 语法插件 通过独立 VSIX 安装,支持 .dever 和 Markdown 中的 Dever 代码块、括号配对、自动闭合、缩进及 # 注释。无需先安装编译器;目前不提供补全、跳转、格式化或实时诊断。dever update 不负责更新编辑器插件。
编译器源码开发
源码仓库 使用 Rust;crates/dever-core 负责语言检查与编译,crates/dever-runtime 提供运行时,crates/dever-cli 提供命令,library/ 保存标准 Dever 源码。架构及语义实现见 实现原理。
构建编译器需要 Rust 1.95+、锁定的 Cargo 依赖和准备好的 LLVM 18/LLD SDK;仅构建 CLI 不足以运行应用,还需要匹配的应用编译资源。生产应用编译使用 LLVM/LLD,不调用系统 Rust/Cargo/cc。
永久测试位于根目录 test/,按修改选择最小定向检查,例如:
cargo test --offline -p dever-tests --test core_semantics
语言接口直接迭代,源码调用方须同步更新。旧语法回归材料位于 examples/old/,不要用作新项目模板。