v1.0 · 契约基线 ← 返回主页

E 语言文档

为人类与 AI 编写者提供的权威参考 · 契约基线 e_contract_v0 · 更新于 2026-09-05

1.E 是什么 稳定

E 是一门 LLM 专用语言(AI-Native Language for LLM):确定性骨架由编译器 100% 掌控,语义实现由 LLM 只填空函数体。它被设计为 EOS 操作系统的系统语言,目标是在 Linux 上先完全替换 Python、再完全替换 C。

设计哲学——意图即代码(Intent as Code):人类/高阶 Agent 只负责界定意图与验收(What:签名/类型/管道/断言),算法实现(How:while/if/循环体)由 LLM 通过 @augment 填充,GCC+断言门负责物理校验。E 刻意不提供手写过程式语句——这不是缺陷,是范式选择:单次 LLM 生成不可信,但「确定性骨架 + 演化漏斗」可累积可信。E 的正确用法:写契约,不写算法。

2.30 行快速上手

space<8> std {
  fn gcd(a: u64, b: u64) -> u64
}

fn std::gcd(a: u64, b: u64) -> u64 {
  // @augment: 欧几里得辗转相除法
}

fn main() -> i32 {
  x: u64 = 462
  y: u64 = 1071
  x | std::gcd(y) | assert_eq(21)
  return 0
}

这一个完整程序的五个部分:

  1. space<8> — 声明 8 字节对齐的内存域
  2. fn … -> — 函数签名(骨架,LLM 不可改)
  3. @augment — LLM 填充指令,只作用于紧邻的空函数体
  4. | — 管道:x | std::gcd(y) 等价于 std::gcd(x, y)
  5. assert_eq(21) — 断言验收,期望 gcd(462,1071)=21

3.获取与安装

# 下载 Linux 发行包(真编译器 v1.0 · 2026-09-05实测链)
curl -O https://eoslang.com/elang_linux_dist.zip
unzip elang_linux_dist.zip && cd elang

# 编译并运行文档示例(ASan沙箱 + LLM语义填充)
./elangc examples_gcd.e -o demo --asan --run
# 输出: [E] x => 21  →  运行通过 rc=0

# 离线模式(纯骨架,无需任何API key)
./elangc examples_gcd.e -o demo2 --no-augment
依赖声明(诚实口径):当前编译器骨架为 Python 实现、后端发射 C 文本经 GCC 编译、libc 为 C——三者分别对应路线图「第一相抛 Python / 第二相抛 C」。E 语言层本身不依赖任何 C 知识即可书写。

4.词法结构 稳定

元素规则示例
标识符[A-Za-z_][A-Za-z0-9_]*,区分大小写gcd、std、max_subarray
类型名基础类型关键字u64、f64、str
注释// 行注释(@augment 是其特殊前缀)// 普通注释
整数字面量十进制;支持 _ 分隔1071、1_000_000
浮点字面量标准小数/科学计数3.14、1e-9
运算符| -> :: = == != < > <= >= + - * / %—

5.类型系统 稳定

类别类型说明
无符号整数u80 ~ 255
u160 ~ 65,535
u320 ~ 4.29e9
u640 ~ 1.84e19(中间量推荐,防溢出)
有符号整数i8/i16±128 / ±32,768
i32±21.47亿(main 返回约定)
i64±9.22e18
f32/f64IEEE 754 单/双精度
其他bool str布尔 / 字符串
复合&T借用引用(只读视图)
溢出守卫(Gatekeeper v2):裸算术密集的实现会被 SEC-019 规则提示替换为 Safe-Math 原语;签名比对阶段 UB 直接判负。

6.声明与空间

6.1 space 内存域

space<N> 名字 { 函数签名… }   // N = 字节对齐(编译期校验)

space 是 E 的模块与内存契约单元:签名集合在其中声明,实现以 空间::函数 限定。

6.2 变量声明

x: u64 = 462          // 显式类型 + 初始化
sig: f64 = 0.35       // 浮点同样显式

变量声明必须显式类型(E 不做隐式推断——骨架确定性优先)。

7.函数

// 签名(域内声明;LLM 不可触碰)
space<8> math {
  fn fib(n: u64) -> u64
}

// 实现(域限定;函数体可留空交给 @augment,或由人类直接书写)
fn math::fib(n: u64) -> u64 {
  // @augment: 迭代版斐波那契, u64 中间量, 循环不递归
}

// main 约定
fn main() -> i32 {   // 返回 0 = 成功
  return 0
}

同一签名只能有一个实现;签名与实现的类型不一致在编译期直接拒绝(零容忍)。

8.管道操作符 | 稳定

管道是 E 的核心组合原语,从左向右读:

x | f(y)          ≡  f(x, y)
x | f(y) | g(z)  ≡  g(f(x, y), z)
data | load() | transform(n) | emit(out)

9.@augment 指令 稳定

@augment 是 LLM 与 E 语言的唯一接口。铁律边界:

LLM 可以LLM 不可以
填充紧邻的空函数体(C 语句子集)修改签名 / space 声明 / 管道结构 / assert
读取 goal 与 criteria 作为意图输入读取或修改验收与判分逻辑

提示词写法(决定通过率)

// ❌ 模糊(拒绝率高)
// @augment: 求最大公约数

// ✅ 具体(算法 + 关键优化点 + 边界)
// @augment: 欧几里得辗转相除,位运算优化,全零边界返回0

10.断言验收

x | std::gcd(y) | assert_eq(21)

验收三重门(全部通过才判 ✅):

  1. GCC 编译(-O3 -Wall -lm,含 ASan 沙盒轮)
  2. 3 轮运行(消除偶发通过)
  3. 签名比对(输出签名与 goal 的 criteria 一致)
反作弊声明:只打印"成功"而无真实行为、硬编码答案、忽略输入的候选程序,由 Gatekeeper v2 + 对抗测试集(SEC-087)负责识别与拒绝。验收逻辑与生成器物理隔离。

11.双轨编译器

.e 源码
  ↓ 轨道一:确定性骨架(词法/解析/类型契约/C发射)— 100% 确定性, 零 LLM
  ↓ 轨道二:LLM 语义增强(只填 @augment 空体, 失败自动重试降级)
  ↓ Gatekeeper v2 静态卡口(圈复杂度/递归深度/猴子补丁/裸算术)
  ↓ GCC + ASan 沙盒 → 三轮运行 + 签名比对
可执行文件 ✅

12.编译流水线状态

组件状态说明
词法器 / 解析器 / 骨架AST / 类型契约 / C发射已验证EB01-05 全过
意图桥 / Prompt组装 / 双轨编译 / 错误自愈 / 缓存已验证EB06-10 全过
测试harness / 回归 / Diff / 基准 / ASan钩子已验证EB11-15 全过
E-IR 字节码直发(去 C 文本)规划中SEC-061/062, ET03
编译器 E 自举(去 Python)规划中第一相里程碑

13.守门人 Gatekeeper v2 演进中

所有 .e 产物编译前必须通过的静态硬规则(SEC 池落地件):

规则阈值动作
SEC-001 圈复杂度函数 > 10拒绝编译 → 触发结构重构
SEC-011 递归深度无终止自递归拒绝编译
SEC-024 猴子补丁硬编码 if-else 链 ≥ 5 分支拒绝 → 强制抽象算法
SEC-019 裸算术> 20 处提示级 → Safe-Math 替换建议

14.流形算子(语义空间层)

Ω = space<256>("Analytics Core")     // 开辟张量语义空间
s1 = Ω | create("系统初始化")         // 增:流形锚定
s2 = s1 | update("用户登录")          // 改:流形演化
sig = s2 | read()                     // 查:签名坍缩 Σ
s3 = s2 | delete()                    // 删:拓扑剪枝

15.std 标准组件 400/400 已铸

400 条标准库组件全部通过 GCC 三连验收,作为 E-VM 原语重写的行为规格参考(完整清单见 进度页):

16.ETP 张量协议 施工中

ET01-02 已交付:64B 定长包头二进制线束(Magic|Opcode|Len|TensorPtr|CRC32)与 mmap 零拷贝张量沙盒(256MB 连续页,实测 15.5GB/s)。EPT 池 50 条规格攻坚中。

17.命名与风格

18.常见错误与规避

错误症状规避
改动了签名编译期拒绝: 签名不一致只填函数体
@augment 太模糊产物偏离意图 / 反复重试写算法名+关键优化点+边界
中间量溢出ASan 报 UB / 断言不符中间量用 u64/i64
管道嵌套过深解析失败 / SEC-001 拦截拆中间变量
函数体过长900s 超时拆函数,每函数单一职责
零除 / 越界Panic / ASan 中止先判界再访问;除法验非零

19.完整示例库

19.1 算法函数(池任务标准模板)

space<8> std {
  fn max_subarray(arr: &i64, n: u64) -> i64
}
fn std::max_subarray(arr: &i64, n: u64) -> i64 {
  // @augment: 卡丹算法,单扫O(N),全局/局部最大交替维护,全负数取最大元素
}

19.2 数据管线(语义算子流)

Ω = space<128>("Task Queue Stats")
s1 = Ω | create("队列初始化")
s2 = s1 | update("生产者入队 100")
sig = s2 | read()

19.3 生产接线(NE 原生替换模板)

space<8> poolstat {
  fn count_str(path: &str, needle: &str) -> i64
}
fn poolstat::count_str(path: &str, needle: &str) -> i64 {
  // @augment: 64KB缓冲流式读文件,memmem计数,防跨块漏匹配
}

20.规范演进

版本内容状态
v0契约基线(本页语法集)现行
v1E-IR 字节码规范(64 位定长指令集)规划 GUI-002
v1.xrequires/ensures 契约语法规划 SEC-002

本页随语法演进同步更新,真源为仓库 elang_frontend/e_contract_v0.md 与 docs/E_LANG_GUIDE.md。

📄 E语言路线图 G0版(待批准基线 0920)