Files
core/README.md
T

80 lines
5.8 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 是面向应用开发的编译型语言,提供类型检查、命名输出、穷尽分句、值与资源语义、结构化并发,以及 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/`,不要用作新项目模板。