pjh123
c5c4916a8f
fix: 绑定侧解构计算键参与闭包捕获遍历防静默错值
2026-08-16 14:30:20 +08:00
pjh123
648842fd82
feat: new.target MetaProperty emit 支持(LOAD_VAR NewTarget)
2026-08-16 12:43:50 +08:00
pjh123
1229924af6
fix: var 捕获绑定函数与程序入口统一初始化为 undefined 消除 TDZ 误报
2026-08-16 12:34:10 +08:00
pjh123
744899aae9
fix: for-of/for-in 提前退出时按规范顺序完成 IteratorClose
...
return/break/continue 逃出 for-of 时此前完全不执行 IteratorClose:
BREAK/CONTINUE/RETURN 指令现在经 ext 字携带词法逃出的迭代器层数
(for-of + for-in 各 16 位),运行时在全部 finally 穿越之后、真正
跳转/返回之前按 LIFO 关闭——与规范 §13.7.5.4(循环体完成值已含
内部 try-finally 处理,IteratorClose 在后)顺序一致。
- emit 词法:LabelCtx 增加 for-of/for-in 深度计数,loop/switch/label
打开时快照,break/continue/return 按当前深度减目标深度计算逃出层数
(switch 内 break 以 switch 打开点为基准,目标循环自身不计入)
- 指令编码:brk/cont/ret 三参构造,lower 跳转路径补发 ext 字
- 运行时:dispatch_break/continue/return 读取逃出计数,无 finally 时
直接关闭后跳转/返回,有 finally 时随 Completion 悬挂由 TRY_FINALLY_END
在穿越完成后消费;生成器 .return()/.throw() 注入经 complete_generator_return
全关快照栈迭代器;return() 抛错经 unwind 替代完成值并关闭剩余迭代器
- 顺带:for-in 逃出残留(无 return() 语义,仅弹栈);for-await-of 的
异步迭代器不做同步关闭(return() promise 须 await,走异步机制)
- 新增 15 项回归测试:return/labeled break/continue/switch/while/finally
顺序/抛错优先/生成器注入/for-in/for-await-of 嵌套
2026-08-16 09:31:39 +08:00
pjh123
4e2644016b
test: $262 宿主对象最小绑定 + is not defined 判定白名单化
...
引擎侧:绑定 $262 宿主对象(evalScript/global/gc 可用,detachArrayBuffer/
createRealm/agent 抛 not supported 而非 ReferenceError),并加入编译期
已知全局表;引用 $262.* 的测试从全量 skip 转为真实执行。
runner 侧:is not defined 不再一票吞 skip——解析错误消息中的标识符名,
仅在缺失全局白名单($262/structuredClone/queueMicrotask)内才按能力
缺失跳过;其余 is not defined 按真实失败计入,修复后应转 PASS 的
测试恢复可见。
2026-08-16 02:47:02 +08:00
pjh123
75153a909d
fix: 未声明标识符读取抛 ReferenceError(typeof 特判返回 undefined)
2026-08-16 00:10:08 +08:00
pjh123
26db7ae07c
fix: TDZ 写与 const 赋值检查补全(含闭包捕获路径)
2026-08-15 21:55:43 +08:00
pjh123
ee7fa88ad7
chore: 清理 oxide_emit clippy 告警
2026-08-14 05:26:25 +08:00
pjh123
b32d525141
feat: emit 模块编译(快照式链接:依赖子模块闭包 + import/export 域)
...
- emit_program_module:模块顶层编译(is_global_scope=false,顶层 this undefined 由 VM 按标志绑定)
- emit_module_into_ctx:预声明/闭包分析识别 export 包裹声明与 import 绑定
- 依赖收集:import/re-export/star 的 source 去重、循环检测、json/text 数据模块
- 导入绑定初始化:__moduleLinkGet 链接期检查;self-import 别名语义(export 处回写)
- export 域:声明/重导出/export */export default 就地注册命名空间
- re-export 链接检查移至 prelude(先于 body 求值)
- emit_module_call 参数打包连续寄存器(CALL_NATIVE 契约)
- CompileCtx 增 module_ns_reg/module_dep_ns_regs/self-import 映射
- 拆分 declaration helper(export 声明复用);function/class 表达式 emitter 提升可见性
2026-08-12 17:37:33 +08:00
pjh123
0c22a0e968
fix: class 类名绑定经 dedicated cell 捕获(C===Cv 恒等)+ upvalue 写入 const guard(getter 赋值抛 TypeError)
2026-08-12 17:30:28 +08:00
pjh123
1824ef0df1
feat: num-bigint 接入任意精度 BigInt(字面量、算术、toString、asIntN/asUintN)
2026-08-12 03:15:18 +08:00
pjh123
1d45a34973
fix: 闭包捕获解构函数参数
2026-08-11 16:57:13 +08:00
pjh123
078688070d
feat: 实现最小 BigInt 子集(字面量/算术/比较/构造器,Temporal 前置)
2026-08-10 23:02:31 +08:00
pjh123
973778f181
fix: 块级 let/const/class 预声明 + TDZ 读取运行时抛 ReferenceError
2026-08-10 21:07:39 +08:00
pjh123
8a53bfb584
feat: 编译管线/类型层 crate 补全多级日志宏 + 关键路径日志
2026-08-10 17:56:28 +08:00
pjh123
020989a348
refactor: 清理 dead abstraction(oxide_api 空壳/空钩子/PersistentHeap/空目录)
2026-08-10 11:54:44 +08:00
pjh123
80cb1c2feb
feat: 循环 let/const 每迭代绑定(MAKE_CELL_FRESH + 解构捕获修复)
2026-08-10 10:18:39 +08:00
pjh123
e03ec0f635
fix: 脚本顶层 var/function 声明落 globalThis(DEFINE_GLOBAL_PROP 非可配置数据属性)
2026-08-10 03:52:17 +08:00
pjh123
5ced83e8c0
feat: async-generator 语义(async function*),yield/await 共存 + next 返回 Promise
...
- emit 识别 generator+async 组合,模块同时标记 is_generator/is_async
- 新增 AsyncGeneratorState:帧快照 + 请求队列 + 当前请求
- next/return/throw 返回 Promise,请求入队逐条处理
- YIELD 让出经 promise unwrap 后交付(yield rejected promise 关闭生成器)
- AWAIT 挂起保留当前请求,微任务恢复后继续执行
- %AsyncGeneratorPrototype% / %AsyncGeneratorFunction.prototype% 内建
- session GC / promote 支持异步生成器状态盒
- 普通 async 函数嵌套调用隔离外层异步生成器上下文
2026-08-10 01:52:03 +08:00
pjh123
85c192a747
feat: rest 参数(function f(...args)),实参区收集数组
2026-08-10 00:33:25 +08:00
pjh123
5a9a46483d
feat: Promise 静态方法(all/race/allSettled/any + AggregateError)+ async test262 解锁
...
- Promise.all/race/allSettled/any:共享聚合核心,逐元素 C.resolve + Invoke(then),
共享记录对象承载剩余计数/结果数组/能力闭包,元素处理器按模式结算
- AggregateError 内建(构造器 + prototype,Promise.any 拒绝路径依赖)
- 修复 capability_executor:能力已持有非 undefined 值时二次调用抛 TypeError
- test262 runner:移除 async flag 无条件 skip;解锁 asyncHelpers/promiseHelper/
doneprintHandle harness;注入 print 捕获 + ,run() 后按 marker 判定
- 排除 await-dictionary(Promise.allKeyed/allSettledKeyed 2025 proposal)特性
- iterator 遍历辅助改 pub 供 oxide_vm 复用
2026-08-09 23:25:36 +08:00
pjh123
fd47cd56d0
feat: async/await 语法支持(AWAIT 帧快照挂起/恢复 + 微任务驱动 + AsyncFunction intrinsics)
2026-08-09 22:02:15 +08:00
pjh123
783e89e4cb
feat: 生成器基础支持(YIELD 帧快照挂起/恢复 + GeneratorPrototype next/return/throw)
...
- 新增 YIELD/SUSPEND_BODY opcode;function* 识别与 yield emit
- GeneratorState 全量快照 VM 执行上下文(regs/pc/bytecode/spill/save/try/cell 栈段/迭代器)
- 调用时参数初始化(默认值/解构副作用与异常在 g() 时刻生效)
- %GeneratorPrototype%/%GeneratorFunction.prototype% 内建对象与 next/return/throw
- session GC trace 生成器状态 JsValues;闭包捕获分析补 yield/赋值目标扫描
2026-08-09 18:02:08 +08:00
pjh123
c8740bfb49
feat: 函数 length 属性(字节码函数/bind 包装器)+ getter/setter name 前缀
2026-08-09 15:38:45 +08:00
pjh123
c65f3be179
feat: TypedArray 原型方法族全量解锁(回调/查找/迭代/排序/ES2023 copy 族)
2026-08-09 13:18:50 +08:00
pjh123
2bebd822d0
feat: TypedArray 第一批解锁(%TypedArray% 构造器、原型访问器、of/from、bind 绑参、harness)
2026-08-09 12:26:31 +08:00
pjh123
6c79dbb21c
feat: class 私有成员语义(字段/方法/访问器 + brand 检查 + 契约修复)
2026-08-09 11:08:36 +08:00
pjh123
8669f55470
feat: class 公有字段 define 语义 + computed key 类定义期求值一次
2026-08-09 09:35:24 +08:00
pjh123
a0c271ef3c
fix: try 内 return 泄漏 TryHandler,异常跳回死函数 catch 死循环
2026-08-09 07:41:34 +08:00
pjh123
5611d90ad0
feat: with 语句、成员位/移位复合赋值、CALL_NATIVE 无目标修复
...
with 语句:新增 emit 支持,with 体内自由标识符动态解析(对象属性优先,
回退外层),支持读/写/复合赋值/自增自减/delete/var 初始化动态化,
TO_OBJECT opcode 处理原始值对象,顶层 this 绑定全局对象。
复合赋值:新增 6 个 COMPOUND_MEMBER_BIT_* opcode 支持成员位/移位复合赋值,
修复 computed member 复合赋值覆盖 bug,with 内标识符复合赋值动态化。
CALL_NATIVE:实现全局 isNaN/isFinite 并绑定,用户覆盖 builtin 名时
回退通用调用路径而非报错,局部遮蔽 builtin 名走普通 CALL。
test262: with 34 pass(基线 0),compound-assignment 320 pass(基线 223)
2026-08-09 07:22:46 +08:00
pjh123
cd214069cd
fix: try/finally 支持 break/continue/return 穿越 finally(completion 机制)
2026-08-08 12:38:25 +08:00
pjh123
bfcf132d73
feat: arguments 对象绑定(CREATE_ARGUMENTS + 帧实参 spill 区)
2026-08-08 00:01:22 +08:00
pjh123
4768e92ba8
fix: 括号包裹的匿名函数参与 name 推断(is_anonymous_function_definition)
2026-08-07 20:27:49 +08:00
pjh123
0c904563d1
fix: 默认参数/解构默认值函数名推断(SetFunctionName)
2026-08-07 20:15:35 +08:00
pjh123
261980f027
fix: 参数默认值 emit 前完成捕获分析 + 类方法支持 upvalue 捕获
2026-08-07 19:18:38 +08:00
pjh123
e3d8092088
fix: 闭包捕获/upvalue 分析纳入参数默认值表达式(含嵌套函数声明)
2026-08-07 19:04:25 +08:00
pjh123
76b3bcf6eb
fix: 顶层模块 param_layout.base 改 0 防父槽误判 + regalloc/VM 诊断日志
2026-08-07 17:13:57 +08:00
pjh123
66c952d2b2
feat: 实现默认参数(形参 initializer 与解构默认值)
2026-08-07 15:26:25 +08:00
pjh123
de67cc8eee
fix: 链式 upvalue 捕获支持多层嵌套函数引用深层变量
2026-08-07 14:56:51 +08:00
pjh123
31e28a03a6
docs: 补充注释与格式化
2026-08-06 23:10:27 +08:00
pjh123
50b843a72a
fix: 调用参数打包连续寄存器 + 捕获参数建 cell + TEMPLATE_STR ext 重映射(修复 JSON/closures/template 回归)
2026-08-06 19:33:05 +08:00
pjh123
9d619cd9bb
feat: liveness 驱动的精确二轮 dce_precise + is_top_level 标志(D-17/D-19/D-20)
2026-08-06 16:55:26 +08:00
pjh123
224d1347eb
refactor: 寄存器号 u8→u32 全链放宽,vreg 化去 checkpoint/reg_overflow
2026-08-06 16:31:16 +08:00
pjh123
af93f6702d
fix: 修复 clippy 阻塞(doc comment 空行 + single_match_else)
2026-08-06 00:45:49 +08:00
pjh123
263fd255b6
docs: 添加 Rustdoc 注释
2026-08-05 21:46:47 +08:00
pjh123
7c8f19f61a
refactor: 拆分 oxide_emit 为独立 emit pass crate(依赖倒置)
2026-08-05 20:13:18 +08:00