-
Alia v0.3.0
Pre-releaseAll checks were successfulRelease / release (push) Successful in 23sreleased this
2026-10-21 01:09:39 +08:00 | 6 commits to main since this release里程碑更新
- 自举(进行中):见
Plans/bootstrap-plan.md- 仓库与波次(2026-10-20):自举工程入库——
Bootstrap/Executor对应
Executor.git、Bootstrap/Manager对应Manager.git(Bootstrap/Tests属
Executor 仓库);最终在 Git 层面将Base/Executor/Base/Manager的仓库链接
由Executor_JS/Manager_JS更换为自举版本 - 修复:跨模块成员链实参分派失配——成员结合点判定改为「分隔字收尾(token 结构)
- 前缀裸调用(重解析)」双判定,
S.enterClosure closure.modScope with ...
类跨模块关键字调用不再把真实调用埋进嵌套成员目标(BootstrapRuntime case2
阻断清除);自举版tryParseAliasObjectCall同步补齐双判定
- 前缀裸调用(重解析)」双判定,
- 优化:自举解析前端参数解析记忆化(镜像 JS
_argParseMemo:表达式系参数、
范围 ≥6 记号、非别名值递归语境;程序号+首记号行列+长度代理数组身份)——
语言核装载js.alia解析 127s → 95s(-25%) - 优化:arena 清扫摊销触发(阈值
max(8192, arena规模/2),清扫标记成本
正比存活规模)——rs.alia 装载期 OOM 消除 - 优化:覆写分派匹配按调用位点缓存(
Runtime.matchAliasDispatch,实参 token
数组身份恒定,AST 静态 ⇒ 匹配结果缓存) - 性能归因(逐句计时实证,见
Plans/bootstrap-plan.md§仓库与波次):
rs.alia 装载成本主体为解释常数作用于巨型指令体(@compileEntry体 1,608 行
单句 58.6s),P5 批次子进程形态可行;Rust 版高性能形态为不动点达成后的
rs目标编译产物,四载具口径收口 - 收尾波:解释器去帧化(RTState/RTFrame 退役)——扁平显式作用域栈 + 模块命名空间
(真正的 import/export:模块级状态持久、闭包捕获定义语境、循环导入 set-then-populate);
解释器/编译驱动/ASTifier/Checker 全部项目化拆分;调用纪律落地(call 仅存无参执行
与动态分派逃逸口,已知模式一律语法式 + 辅助关键字);数据类归位 type 语句。 - 引擎:循环导入三载具支持(宿主 set-then-populate、js 惰性模块命名空间、nodejs 原位导出);
递归 type 记录检查(深度解析具名形状 + isAssignableTo 同一短路/可空解包前移);
成员结合优先于调用实参(别名对象调用实参中的成员链不再切断方法点识别);
原生包装类未声明成员返回绑定方法(修零参调用 undefined this 崩溃);
补齐表达式位new求值。 - 更新:类型注解解析递归进入数组元素类型、对象属性类型与泛型实参,
[P]、*[k: P]中的类名不再退化为裸类型名 - 更新:类型描述符的
toString()优先输出类名,[P]不再显示为[*[v:Number, ...]] - 更新:
type声明名记入类型描述符的declaredName,供成员与索引查找回查类型注册表 - 修复:类实例数组无法赋给以类名标注元素的数组字段
- 修复:以类名标注的数组元素无法传给类类型形参
- 修复:nodejs/js 后端
Object.set/Object.delete/Object.contact/Object.isObject编译为不存在的 JS 方法,运行期TypeError - 修复:nodejs/js 后端
Object.create生成Object.create(src),语义为设置原型,与解释器「复制成员」不符 - 修复:nodejs/js 后端
Object.assign为原地合并,解释器为非原地合并 - 修复:nodejs/js 后端
Object.has用in判定,会命中原型链成员,与解释器「仅自有键」不符 - 更新:
Object.*降级收敛为 js 后端的objectStaticCall,Call与AliasObjectCall两条路径共用 - 更新:运行时新增
__aliaObjectCreate/__aliaObjectAssign/__aliaObjectContact/__aliaObjectSet/__aliaObjectDelete/__aliaObjectIsObject/__aliaObjectToPlain/__aliaObjectToArray - 修复:nodejs/js 后端
String.toNumber/toBoolean/toArray编译为 JS 原生字符串上不存在的方法,运行期TypeError - 修复:nodejs/js 后端
==/!=缺少数组深比较,[1,2] == [1,2]恒为 false - 修复:解释器
valuesEqual在解包前判引用同一,Number(NaN)的同一性使n == n为 true,与编译产物的 IEEE 语义相反 - 更新:
String.toNumber语义为Number(str),非法串产出NaN,与as Number的报错语义不同(与解释器一致) - 更新:标准库
fs新增list/listRecursive,枚举目录直接子项与递归相对路径,结果排序、分隔符固定为/,供自举编译器枚举源码树 - 更新:新增错误码
FS_LIST_FAILED(中英双份) - 更新:编译指令体(
@compileEntry/@compileWith/@compileNode/@compileAlias/@compileClass)统一进入生成器模式,指令体内声明的编译期变量对同语言覆写体可见 - 更新:生成器模式下编译期动态字典的成员/下标赋值与数组实参不再作静态校验
- 更新:空对象字面量可赋给任意对象形态(Alia 对象运行期动态开放,形状注解为提示性)
- 修复:类型描述符解析时联合判定排在数组/对象形态之前,
[String | Code]被拆成非法成员 - 修复:语法式
new的构造实参按记号计数,new C [a]被记成 3 个实参 - 修复:rs 后端
mathExpr无参分支误传对象字面量*[] - 更新:rs 后端
CodeStr/CodeArr改用Dynamic,codeOf/argAt等助手按语义接受任意编译片段 - 归零:
Base/Core/src/backends/{js,nodejs,rs}.alia类型检查错误 40/36/128 → 0/0/0 - 更新:新增 AST dump 差分测试台(
Tests/Systems/AstDumpSystem.js),覆盖Base/Core、Tests/Native、Examples共 85 个文件,校验 dump 可复现、非确定字段已排除、对输入扰动敏感,并维护可复核的基线快照 - 修复:js/nodejs 后端控制流不产值——
switch的case体、尾位置与表达式位置的if/if-else/switch丢失取值(alias f -> String { switch ... }返回 undefined,let r = if ... {}生成非法 JS)- 更新:
@compileConfig新增controlFlowAutoReturn(js/nodejs 开启):内核对尾语句的控制流别名按表达式重编译后交还 return,使「栈末值即返回值」对控制流成立 - 更新:js 后端
if/if-else/switch覆写按_ctx.isExpression分支出值形式(IIFE +stackValueExpr体末句 return);内核_compileExpression对AliasCall与语句路径同序(先@compileAlias再回落@compileNode) - 更新:新增跨目标一致性测试
Tests/Systems/ControlFlowValueSystem.js(9 个场景)
- 更新:
- 更新:rs 后端维持语句形式(未开启
controlFlowAutoReturn),尾位置控制流产值为既有限制,随自举 P1 一并处理 - 修复:内核
_shouldAutoReturn排除表遗漏builtin:assign/builtin:add-assign/builtin:inc,与_compileStackWithReturn不一致 - 更新:自举 P1-1——新增
Bootstrap/(Alia 侧编译器),Tokenizer 与Base/Executor/ASTifier/Tokenize.js逐字段对齐,经差分测试台(Bootstrap/Tests/TokenizeSystem.js)在 85 文件 / 925 句 / 10,562 token 语料上与 JS oracle 逐 token 一致,解释与 nodejs 编译产物双模式通过- 更新:差分 fixture 采用定宽字段文本格式(零填充整数 + 码元计长),规避 JSON 嵌套结构导入的运行时限制
- 修复:js 后端
switch语句形式整体包 IIFE,同级多个 switch 的哨兵声明不再冲突
- 修复:对象字面量值扫描按记号内容而非类型识别括号,
*['value': '(', 'pos': 1]中 STRING 值含括号字符时该键与其后键被静默吞掉(与tryParseAliasObjectCall同一规则,按 token 类型识别) - 修复:Checker 对未声明接收者的成员/下标赋值零报错(
zz.k = 2静默写穿无关对象),现报TYPE_UNDEFINED_VARIABLE;类语境的self/this/super与编译指令语境名豁免 - 修复:字符串字面量下标赋值从未携带字面文本的类型描述符上取键名,恒为 undefined——闭合形态误放行、开放形态误报,现取 AST 节点文本
- 修复:
checkFile未向 Checker 传源文件目录,相对 import 的类型预加载依赖进程 cwd 侥幸解析 - 更新:跨模块类型流——Checker 预加载
export this模块的顶层具名 alias 签名(形参/返回类型/实参校验),mod.fn调用返回值不再退化为Value(运行期数组/对象身份本就完好) - 更新:自举 P1-2——新增
Bootstrap/split.alia:注释清洗(~:/~///,字符串内不算注释)与句子切分状态机(括号深度、引号、句首行列)与 JS 实现逐字段对齐,经差分测试台(Bootstrap/Tests/SplitSystem.js)在 85 文件清洗语料的 998 句上解释与 nodejs 编译产物双模式一致 - 更新:自举 P1-3——新增
Bootstrap/parse.alia(arena 数据模型表达式解析器,Bootstrap/tokenize.alia同步自main.alia拆出)与差分测试台(Bootstrap/Tests/ParseSystem.js):运算符优先级链、后缀链、数组/对象字面量、call 形式、as 后缀、括号分组、内建类型负号实参收集逐字段对齐,78 个表达式语料 dump 一致,解释与 nodejs 编译产物双模式通过 - 更新:自举 P1-4——新增
Bootstrap/alias.alia(alias 模式匹配与注册表:parseKeysContent 可空与复合类型形参、matchPatternRecursive 回溯、候选边界与 Stack 锚点剪枝、参数解析各类型、对象形状回落、alias 值递归守卫、alias 对象调用回落、择优与计分)与差分测试台(Bootstrap/Tests/AliasSystem.js):20 定义 × 39 流逐块一致(MATCH 31 / NOMATCH 7 / THROW 1),解释与 nodejs 编译产物双模式通过 - 更新:自举 P1.5 引擎缺口修复波——P1-3/P1-4 记录的 9 项语言缺口逐项复查:2 项真实缺陷修复,7 项重新定性关闭(多缺陷叠加表象 / Grammar 既定语义 / 收窄手段已具备),终态见
Plans/engine-gaps-plan.md - 更新:自举 P2-1——新增
Bootstrap/types.alia(类型描述符层:parse 全形态判定与顺序、括号深度 0 的联合/属性切分、toString 规范化、isAssignableTo 全分支含名义继承链、mergeTypes)与差分测试台(Bootstrap/Tests/TypeDescSystem.js):33 类型串 + 34 判定对 + 6 合并对逐条一致,解释与 nodejs 编译产物双模式通过 - 更新:自举 P2-2(进行中)——Checker 差分台架落地:
Bootstrap/Tests/ast-serialize.js(AST 行协议序列化器:location 展平、Code.tokens 预拼接、Prop 合成节点、#E 段终止)+Bootstrap/checker.alia(arena 装载器、扁平化作用域栈、变量声明/赋值全族、inferType 表达式族的诊断检查,~2,100 行)+Bootstrap/Tests/CheckerDiffSystem.js(语料诊断序列差分)- 更新:
types.alia全量内联到checker.alia(E11 跨模块开放形状 → Value 的唯一可靠绕开);Base/Executor/index.js新增options.skipCheck(自举过渡期:自举 Checker 代码在被替代前无法过被替代者全部检查) - 剩余:CheckerDiffSystem 的 29 片段诊断序列差分中,typed 声明路径(case 5 起)未产出诊断——需调试
checkVarDecl的 typeName 提取与 isAssignableTo 比较 - 修复:
ExpressionEvaluator.getObjectProperty的数组/字符串下标读取统一经wrapPrimitive包装化(与 pop 内建一致)——此前..拼接产出的裸 string 存入数组后读出,其内建方法(toNumber/trim)调用丢 this - 剩余:checker.alia 需通过现行 Checker 自身检查(31+ 处写法限制待清理)后方能进入差分调绿
- 记录:引擎缺口 E10(类型注解数组 + call push 构造元素的成员方法调用丢 this,见
Plans/engine-gaps-plan.md§3.5)——types.alia以手写 trim 绕开 - 修复:确定性解析错误在 alias 回溯匹配中被空 catch 吞没——对象字面量值的裸调用形态(典型:alias 助手声明在使用点之后)静默产出 null 或报误导性错误;现以
error.definitive标记穿透回溯,报错直达根因(Cannot parse 'helper s' as a value; ... declared before this point) - 修复:
print双呈现(行为契约决策:统一裸串)——解释器builtin:print对 String 值裸呈现,与 js/nodejs 编译产物一致;inspect/toDescription的描述语义不变;全部差分测试删除双编码比对逻辑 - 测试:新增
Tests/Systems/CrossModuleSystem.js(嵌套 alias/双层循环/容器与记录跨模块,解释器与 nodejs 产物一致);Bootstrap/aliasmain.alia拆除扁平化绕开,恢复readDef/parseDefText层级结构 - 更新:
Bootstrap/全面清除<Dynamic>——多态槽位用<Value>收窄、可空用?后缀、arena/工作栈用具名开放记录类型(AstNode/DumpFrame/AliasPart等);parse.alia补parseSubExpression/parseCallFormExpression供注册表感知解析 - 记录:P1-4 实测引擎缺口(嵌套 alias 语境内跨模块调用静默失败、嵌套数组 push 静默失败、跨模块开放类型字段读取退化 Value 等)见
Plans/bootstrap-plan.mdP1-4 节 - 更新:
Ok内建跨目标语义修复——契约(Grammar.md)为 null 判定(typeOf(val) != 'Null'),js 后端覆写与 rs 运行时ok_v原按 truthy 判定,Ok false编译产物为 false 与解释器分歧;js.alia 覆写改为x != null、runtime_rs.rs改为!matches!(.., Value::Null) - 测试:新增
Tests/Systems/OkNullSystem.js(8 场景 × interpret/js/nodejs/rs 四运行方式) - 记录:P1-3 实测引擎缺口(Checker 多模块导入序类型流、Object 成员读取 Value 包装、内建 pop 返回 Value 等)见
Plans/bootstrap-plan.mdP1-3 节,P2/P3 排期
- 更新:
- 更新:自举验收口径统一为四载具——解释器 + js/nodejs/rs 编译产物逐字节一致(
Bootstrap/Tests/carriers.js;rs 随ALIA_TEST_RS=1并入,cargo run --release运行);tokenize(924 句 / 10,554 行 dump)四载具全绿,split(84 文件 / 998 句)三载具通过(rs 余 2 处 IndexAccess 镜像位点类型错),parse/alias/typedesc 三载具通过;rs 遗留与镜像归一方案见Plans/bootstrap-plan.md§3.7- 修复:js 后端 import 内联不去重,同一模块多处导入各内联一份,共享状态模块(arena)跨模块断裂——现以
resolvedPath为键收集模块定义并统一提升到入口顶部,import 位点只留引用 - 修复:rs 后端
switch/multicase对原生类型化局部判等误用强类型eq_bool,改truthy(&eq_v(..));rustValueArgs(runtime::any归一)与原生数组 rawrustVecArgs分离 - 修复:rs 后端
splitComma按全部逗号切分形参类型串,[String, ...]被切碎致 fn 误入 Value 模式;改括号深度感知 - 修复:rs 后端
IndexAccess默认分支只看声明类型,运行期存储容器误走原生.get()/.chars();原生Vec.push(Value)未归一;模块 import 内联缺语句终结符;joinNativeArgs收到种类名'Vec'无法解包(现按实参类型补全,不可补全时退回注册表分发;AliasObjectCall参数类型改取def.pattern) - 修复:内核
_nativeReturnTypeOf对 Variable 尾语句只看_checkedTypeName,value-mode fn 返回值按错类型回转;Variable 尾优先取ctx.varTypes - 修复:
Bootstrap/typesmain.alia的readInt6双形参按三实参调用(解释器/nodejs 静默丢弃多余实参,rs 原生调用编译失败),统一为三形参readIntN - 更新:
Bootstrap/Tests/{Tokenize,Split,Parse,Alias,TypeDesc,CheckerDiff}System.js统一接入四载具 runner;含增补平面字符的句子/文件按语料过滤(rs 运行时无法表示孤立代理项)
- 修复:js 后端 import 内联不去重,同一模块多处导入各内联一份,共享状态模块(arena)跨模块断裂——现以
- 仓库与波次(2026-10-20):自举工程入库——
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- 自举(进行中):见