pjh123
bf08803071
fix: 顶层 var 声明带初始化撞不可写全局用户属性 strict 抛 TypeError——用户名声明处写点改 session 解析 PutValue 语义,builtin 名保 GDI 写点;序言缺失分支全局不可扩展两模式对齐抛 TypeError
2026-09-12 21:36:10 +00:00
pjh123
44c16cab8a
fix: 顶层 var 读写直连全局对象属性单一真值——GDI 序言 + 声明处同步删除,类原型 session 直分防晋升克隆 identity 分裂,自增减 int 保持
2026-09-12 15:48:32 +00:00
pjh123
3c277b6a73
docs: 隐式全局写边界注对齐读写登记集并集判定
...
调用点现传并集命中寄存器(含读侧登记的全局槽),旧注「仅 implicit_global_writes 命中」失实。
2026-09-11 12:44:48 +00:00
pjh123
430231236d
fix: 未声明标识符读写混合解析——读侧登记的全局槽写不穿透全局对象
...
未声明名由首次引用侧登记全局槽:读侧(LOAD_GLOBAL 槽)登记后,
后的写点只查写侧集合,补全局对象属性写被跳过——条件读走全局
属性、写落脚本内寄存器,脱节成死循环;更新式/复合式/逻辑赋值的
旧值又取自入口快照槽(读从不刷新槽),先读后写算出陈旧值。
写点隐式全局判定改读写登记集合取并(7 处),RMW 旧值读前经
LOAD_GLOBAL_TYPEOF 从全局对象取当前值(缺失按 undefined,sloppy
未解析引用 GetBaseValue 语义),读侧登记集合随继承绑定传入子
函数 ctx。
2026-09-11 10:14:56 +00:00
pjh123
1f37c4c9e6
fix: 全局 var 绑定 0x6F 按 CreateGlobalVarBinding 不更新既有不可写数据描述符,for-in 枚举断言修运算符优先级括号化
2026-09-10 05:55:03 +08:00
pjh123
c87edd404a
fix: 全局三常量描述符翻可配置,var 重复声明以 builtin 镜像值保留现存值
2026-09-10 04:16:08 +08:00
pjh123
b77a9322e5
fix: 不可写全局内置(undefined/NaN/Infinity)寄存器镜像写编译期拦截——sloppy 静默 no-op、strict 抛 TypeError
2026-09-09 23:17:01 +08:00
pjh123
2457f283fe
fix: 顶层 var 全局属性求值前创建(声明定时语义)+ 无初始化 var 声明不再抹槽值
2026-09-09 22:00:29 +08:00
pjh123
3f393b6acb
fix: eval 脚本 var 声明落全局 configurable:true——is_eval_script 穿透
2026-09-09 19:17:57 +08:00
pjh123
d9c2847730
fix: sloppy 未声明写隐式全局创建 + strict ReferenceError——DEFINE_GLOBAL_PROP_C 0x98
2026-09-09 18:44:38 +08:00
pjh123
0ffb5d2cf3
fix: tagged template 语义修正——cooked undefined/this绑定/site缓存/冻结 + groupBy getter 异常传播 + defineGetter setter 保留
2026-08-22 11:15:55 +08:00
pjh123
355230b745
fix: REPL 变量跨轮次丢失 —— let/const 脚本顶层写全局对象
2026-08-21 22:44:48 +08:00
pjh123
c7b238e518
feat: eval 全局注册与最小执行(间接 eval)
2026-08-16 22:25:33 +08:00
pjh123
e100bfb8b4
feat: SuppressedError 内置错误实现(三字段属性序 + 构造器接线)
2026-08-16 19:04:09 +08:00
pjh123
089179daab
refactor: 函数 strict 标志入 IR/编译/缓存链(零行为地基)
2026-08-16 16:46:33 +08:00
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