🧬 E 语言设计

双层结构 · 动态算子空间 · AI 原生语法规范 —— 设计理念总纲(2026-09-06 定稿)

📊 E 语法错误率(实时)

统计口径全公开:数据源=ecc.db全部提交记录;E任务=题面以「用E语言实现」标记;失败分三层——L1语法层(生成被解析器拒)/L2编译层(E→C后gcc报错)/L3断言层(逻辑错)。每10分钟自动刷新,永不写死。原始JSON

加载中…

一、双层结构(核心设计理念)

E 从第一天起就是两层语言:语义层描述"状态如何演化",结构层描述"逻辑如何执行"。两层各有独立的语法、编译路径与验收方式:

┌─────────────────────────────────────────────────────┐
│  语义层 (Semantic Layer) —— 声明式 / 开放算子空间      │
│  Ω = space<256>("Analytics")                         │
│  A = Ω | create("初始化")                            │
│  B = A | update("用户登录") | read()                 │
│  验收:签名/fitness 评分(软验收)                     │
├─────────────────────────────────────────────────────┤
│  结构层 (Structural Layer) —— 命令式 / 封闭语法集      │
│  space<8> std { fn gcd(a: u64, b: u64) -> u64 }      │
│  x | std::gcd(y) | assert_eq(21)                     │
│  验收:GCC 编译 + 断言三重门(硬验收)                 │
├─────────────────────────────────────────────────────┤
│  @augment 逃生舱 —— 两层的交界(E 独创)               │
│  函数体由 LLM 填充,签名与断言由 E 管死                │
│  → LLM 写实现,机器验契约;E 表达不了的算法永不堵死     │
└─────────────────────────────────────────────────────┘

为什么这样切:LLM 擅长意图与模式(语义层给它自由),不擅长精确边界与状态追踪(结构层用封闭语法+断言把它圈住)。同范本:SQL 的声明查询 vs 存储过程、K8s 的期望态 YAML vs Go 运行时。E 的独特点:把"LLM 填语义、机器验结构"做成了编译器内建的分界线

二、原生解析管线(elangc_native)

结构层编译器已是纯 C 单文件实现(21KB,零 Python):

.e 源码
  ↓ 词法分析 (C 实现,行号锚定)          ← 确定性,零 LLM
  ↓ 递归下降解析 → 骨架 AST              ← 确定性,零 LLM
  ↓ C 发射器 (space→声明区, ns::fn→ns__fn, 管道→函数调用)
  ↓ @augment 空函数体 → LLM 填充          ← LLM 唯一入口
  ↓ fork-exec GCC -O2 + ASan 沙盒
  ↓ 三轮运行 + 断言验收 (assert_eq)
可执行文件 ✅

验收成本实测:编译 0.4s / 内存 3MB / 运行 9ms——瓶颈 95%+ 在 LLM 侧。

三、动态算子空间(历史与去向)

曾经有,现在在,已补文档(本页+运行时件elang_agent_tool.py)——BN基准进度见progress页。

早期 E(Python 时代)的语义层是开放算子空间:LLM 可以在运行时发明新算子组合——

Ψ_agent = Ω_agent | project("Analyze Task") | optimize() | resolve();

project / optimize / resolve 并不在预定义关键字表里,运行时按意图语义解释执行(语义收敛评分)。这意味着语言的词汇可以由使用者在运行时增长,编译器不挡。

价值:AI 原生语言的关键能力——LLM 同时生成代码与新词汇,运行时按意图而非固定文法解释。静态文法(结构层)保证可验证性,开放算子(语义层)保证可进化性,两者互补。

现状:该能力保留在 elang_agent_tool.py(EpsilonAgentInterface)等运行时件中;当前生产管线(elangc_native)走结构层,未接入。规划:语法 v2 将"开放算子空间"正式化为注册式算子协议(新算子须带签名+验收样例注册后可用)——自由但不失控。

四、语法集:现状 → 目标(v2)

现状(已实现,elangc_native 实测)

space<N>fnletif / elsewhileforreturn管道 x|f(y)assert_equ8~u64 · i8~i64 全定宽(1.6.5+含i16/i32)

⚠️ 2026-09-24 口径修正②:for 两形态(C式三段/E式 for-in)当前二进制均报语法错误,golden v2_0916_for.e 未过(22/27),标签降为「设计稿」,与 map/filter/reduce 同档——落地时 golden 自动验收。 / 2026-09-15 口径修正:@augment 为设计目标(语法层暂无解析支持,勿当作已实装);bool 字面量 true/false 暂不可用(TYPE_ERROR),bool 只能由比较式产生;while(1) 可编译但"上限可判定"属 Linter 约定非编译期强制。

目标(v2 待补,按 AI 亲和度排序)

新增理由状态
table/relationLLM 表格推理最强,最 AI 原生的数据结构设计稿
定长数组 [u64; N]排序/数据结构类算法的前提设计稿
structC风格结构体布局❌ Non-Goal:不入E内核,经Region/FFI边界表达
enum标签联合(网络包/AST 节点经宿主侧表达)设计稿
map/filter/reduce 组合子替代 for 的 LLM 高出错区设计稿
forall/exists 量化器可机器验证的属性断言设计稿
安全引用/字符串视图qsort 等算法刚需设计稿

控制流设计哲学:while/for 是给"精确状态循环"的逃生舱(保留但降级);主推组合子(声明"做什么"而非"怎么转")——实测 LLM 在 for 循环边界(off-by-one)上失误率显著高于组合子。

诚实口径:语法集没有最先做完,是走了"管线先行、语法随任务生长"的路线(详见反思)。v2 起转为规范先行:语法集文档定稿 → 一致性测试集入池 → 编译器实现。

五、AI 原生语言的七个部件

部件AI 化改造
语法层无歧义 + 规范形态(一义一写)+ 行级报错锚点(错误信息直接可喂 LLM 修复)
类型系统类型即契约(前置/后置条件机器可验)
控制流组合子+量化子为主,while 降级逃生舱
数据结构不可变优先 + 形状显式 + 无指针算术
错误处理契约前置——错误在签名里声明,错误即回执
并发/IO声明式管道,时序归运行时
语义增强层@augment(E 独创):LLM 填实现、机器验契约

五·五、能力边界四档总表(2026-09-15 实测定版)

口径:所有"已实现·实测通过"项均经本地 elangc 官方构建版实测(公开 Playground 环境版本滞后,见下方阻塞项①;2026-09-14 复测)。四档=【已实现·实测通过】【已实现·待公开验证】【设计目标·未实现】【明确不做】。

档位条目
已实现·实测通过标量u8~u64/i8~i64/bool(仅比较式产生) · let绑定/return · if-else · while · space<N>命名空间(唯一模块化机制) · 管道x|assert_eq(期望值) · 算术比较 · 递归含双递归(fib(10)=55,终止性由spec递减度量约束)
已实现·待公开验证定长数组[T;N] · str+len() · assert_eq!宏(v1.5带golden三件,golden 19/19;公开复现通道=发布包内run_golden.sh,无源码时自动用预编译二进制,0914修复)
设计目标·未实现不透明Handle(u64映射) · 线性Token能力凭证(闸3) · 位运算&|^<<>>(需闸0口径变更:仅标志位集合,禁字段打包,SMT须(_ BitVec N)且移位≥位宽有定义) · 原生pre/post(现存Task Manifest JSON,声明式spec) · WASM后端(现仅E→C→gcc;微信小程序不可跑任意WASM,WASM仅服务端) · @augment解析支持 · StackOnly强制(需Linter/codegen检查) · 无界循环约束(Linter约定,while(1)实测可编译)
明确不做Vector/ArrayList/push/pop动态容器(扩容破坏SMT求解终结性) · C风格struct/class/嵌套对象(布局复杂化导致验证状态空间爆炸)

阻塞项(三条,均为工程问题非语言问题):① 公开Playground跑旧版elangc,三个官方golden在该环境报语法错误 ② v1.5包无.c/.h源码仅ELF二进制 ③ 因此"golden 19/19"外部暂不可复现(run_golden.sh已加预编译回退,待公网验证)。

六、五条边界(语言成立红线)

1. 确定性核心零 LLM —— 词法/解析/类型/验收,LLM 不得进入
2. LLM 只准出现在两处 —— 生成实现、修复报错,且输入输出都过验收门
3. 语法集封闭+版本化 —— 扩展只能过池验收进编译器(新算子走注册协议)
4. 每个构造必须有 canonical form + 机器验证器
5. 逃生舱永存 —— @augment/FFI 在,语言永不堵死

六·五、Non-Goals(明确不做,与"没做完"严格区分)

路线定版(2026-09-18·:坚决纯E化,全原生。E 的初心是 EOS 自举语言,一切工程投入以「E 自身完成 EOS 构建」为唯一目标。与之冲突的规范一律以本版为准更新:struct 显式布局维持 Non-Goal(用 Region 句柄表达),「C 自动回退通道」仅作为过渡期编译验证手段、不作为长期路线,roadmap 按「去C」终点对齐。有冲突的旧表述(changelog 双通道口径等)以本声明覆盖。

口径定版(2026-09-14):以下各项是设计上不提供(Non-Goal),不是待实现功能。E 是为「形式化可证明」设计的极简契约语言:以扁平标量 + 线性凭证为表达单位,把内存布局、结构体打包、堆分配与 I/O 交给宿主(C 或 WASM 沙盒)。

不做理由替代路径
C 风格 struct(布局/打包/对齐入语言内核)结构体布局是 LLM 高错误率区,且使内存访问无法静态验证Region 句柄 + Offset:读=ReadRegisterN(region, offset),写=WriteRegisterN,边界=静态证明 Offset+Width ≤ Region.Size
裸指针/指针算术AI 产出的内存访问必须可静态验证不透明 Handle(u64)+ 编译期区间断言
任意下标算术(C 数组语义)off-by-one 是实测最高频失误Flat Sequence [T;N](区间断言)+ Bounded Iterator
隐式类型转换/自动精度提升歧义是验证的敌人标量显式:u8/u16/u32/u64、i8/i64、f32/f64、bool
异常展开 / GC控制流必须可静态枚举Result 返回值 + 确定性控制流

注:结构体更新语法(..base)随 struct 一并列为 Non-Goal。字符串视图 StrView 归 E-FFI/宿主。历史版本中"struct 待实现/静默丢弃"的表述一律以本节为准。

七、待讨论:激进设计候选(未证明,不采纳)

以下设计激进但未经数据证明。激进 ≠ 采纳——每条附证明路径,实验数据达标才考虑进入主线,数据来自统一的语法对决实验(50 条 CLRS 算法,三方首通率 + Token 消耗)。

激进设计主张风险怎么证明
废除 if/else/for/while程序=状态契约+意图跃迁矩阵LLM 被人类代码喂大,新范式零语料,首通率可能反降三方对决首通率
高密度符号集(!/->/::/@)单双字符替代关键字,省 30%+ token省 token ≠ 好理解,LLM 对新符号无先验token 密度 + 首通率双指标
移除 {} ; , 分隔符极简缩进 + 高密度符号分隔符是 LLM 的结构锚点,去掉加大歧义同上 A/B 对比
$$ 高阶原语别名$$HTTP.Serve 单 token 系统调用别名表本身也是学习成本建表后同任务 token 对比
全面弃 GCC+C 拥抱 Wasm编译 400ms→<20ms,Fuel 防死循环Wasmtime/Cranelift 数十 MB 重依赖,与发行包<1MB 冲突十算法 wasm 跑通 + 编译耗时实测
SMT 契约替代 assert_eqrequires/ensures 形式化验证Z3 对递归/非线性常超时契约+反例+作弊检测三件套实测
多候选并行验证生成 5 份并行验证取首个过烧 5 倍 token首通率提升 vs token 成本账

⚙️ 裁决机制(E-Lang Benchmark):四变体(V0现行基准 / V1高密符号 / V2状态跃迁 / V3全激进)× 50道CLRS算法 × ≥3个大模型家族 = 600次独立试验。指标=Pass@1首通率(50%) + Pass@3错误自修(20%) + Token密度(20%) + 结构歧义率(10%)。硬门槛跑数前预注册锁死:控制流废除须 Pass@1降幅≤5%且Pass@3≥90%;高密符号须 Token降≥20%且歧义率<2%。达标进主线,不达标入废弃库并注明证伪原因。任务池:BN-01~08。

已验证可行的低风险项(不可变默认、Z3 双轨、Bump 分配、S-Expr、JSON 报错、Schema 导出等)不在此表,直接进实验池。

八、设计理念一句话

E 是"给 AI 的考卷语言":结构层把题出死(签名+断言),LLM 只负责填答案(@augment),机器负责阅卷(GCC+三重门);语义层保留开放算子空间让语言随使用进化;两者之间的张力就是 E 的进化动力。终极目标:E-VM 落地后,"算法用 E 写"从考卷模式变为执行模式(去 C),届时全平台发行包 <1MB。

相关:语言手册 · 语义算子 API · 加入蜂网 · 蜂网账本

⚠ @augment 状态说明(2026-09-13外部审计后标注):@augment 语义增强层目前仅在 v1 工具链(evolver 包内,v1 有已知缺陷:管道断言可能被静默丢弃)中实现;v2 编译器(elangc_v2)尚未实现 @augment,官方 GAP_V1_V2 已列为待办。蜂群产线当前实际使用的是基于 GCC 的验收管线。我们保留该设计目标,实现状态以 changelog 为准。