用你团队说的语言写决策规则。 一门务实、类型安全的受控自然语言(CNL),把业务规则写成人类可读、可审计、可回放的源码——双引擎(Java + TypeScript)编译到同一份中间表示,字节级一致地执行。
Rules in the language your team speaks. Aster is a pragmatic, type-safe controlled natural language (CNL) for decision logic. Write business rules as human-readable, auditable, replayable source — compiled by two independent engines (Java + TypeScript) to one IR, producing byte-identical results.
Module Pricing.
Rule discountedPrice given amount as Int, produce Int:
If amount greater than 100
Return amount times 90 divided by 100.
Return amount.
amount = 200→180。同一条规则可用中文/德文/印地文关键词书写,编译结果完全一致。
| 想做什么 | 去哪 |
|---|---|
| 读文档、上手教程 | aster-dev(文档站 + Playground) |
| 在浏览器/Node 里编译规则 | aster-lang-ts(pnpm add @aster-cloud/aster-lang-ts) |
| JVM 上嵌入编译器 | aster-lang-core |
语言与引擎
- aster-lang-core — Java 核心编译器:多语言 CNL 源码 → 类型安全的 Core IR。生态的根。
- aster-lang-ts — TypeScript 编译器:浏览器/Node 端的第二引擎,与 core 双引擎 parity。
- aster-lang-truffle — GraalVM Truffle 运行时(依赖 core + runtime)。
- aster-lang-runtime — 运行时支持库。
平台与验证
- aster-lang-platform — Gradle 版本编目:统一各仓的依赖版本,单一真相源。
- aster-lang-validation — 两层验证框架。
- aster-lang-test — 跨引擎一致性样本库(tier1 等价 / tier2 分歧 / tier3 fixture)。
- aster-lang-template — 新语言包/模块脚手架模板。
语言包 · Lexicons
- aster-lang-locales — 官方语言包(en / zh / de)。
- aster-lang-hi — 印地文(Hindi)语言包。
语言包 (locales: en/zh/de, hi) platform(版本编目)
│ SPI 插件加载 │ 统一版本
▼ ▼
aster-lang-core ────────────────► 被各 JVM 仓依赖
│
├──► aster-lang-truffle (GraalVM Truffle 运行时;依赖 core + runtime)
└──► aster-lang-runtime
aster-lang-ts (独立的 TypeScript 引擎,与 core 双引擎 parity)
JVM 仓有前后依赖。从零构建时:
aster-lang-platform→./gradlew publishToMavenLocal(版本编目先就位)aster-lang-core→./gradlew publishToMavenLocal(被下游依赖)aster-lang-runtime→publishToMavenLocalaster-lang-truffle(依赖 core + runtime)- 其余仓按各自 README
aster-lang-ts 独立:pnpm install && pnpm run build。
各仓的详细命令、环境要求、贡献流程见其 README.md / CONTRIBUTING.md。
全部开源仓采用 Apache-2.0。安全问题请走各仓的 Security 标签页(Private Vulnerability Reporting)。
注:
aster-cloud/aster-api是 Aster Lang 的闭源商业实现,不在本开源生态内。