Commit Graph

27 Commits

Author SHA1 Message Date
pjh123 7900bb92e6 feat: defer 依赖不发 __moduleEval,构造 deferred 对象并逐名预注册 2026-10-09 13:10:22 +00:00
pjh123 94823783cd style: 修 rustfmt 格式化差异 2026-10-08 06:36:29 +00:00
pjh123 66735f802f refactor: string_forge 与命名空间绑定常量迁入 oxide_types 中立层 2026-10-08 05:03:05 +00:00
pjh123 5239ff74b8 feat: 捕获 cell 换键地基——绑定增 cell_idx 并解析点按绑定身份取索引 2026-10-05 12:01:49 +00:00
pjh123 a0fe780a6e feat: 补全 star 与再导出路径的自导入别名回写 2026-10-04 12:57:25 +00:00
pjh123 2b565a4996 refactor: 移除 lexical 预声明函数的死参数 global_lexical 2026-09-28 19:12:13 +00:00
pjh123 c4ce29c6f2 fix: 词法声明遮蔽内置名不再占镜像槽并拒写臂全局解析 2026-09-20 11:16:13 +00:00
pjh123 1433d47329 fix: 被捕获词法绑定入口建 TDZ 占位 cell 并跳过陈旧静态守卫 2026-09-20 09:08:44 +00:00
pjh123 3de0f8a6cb feat: 跨模块可重赋导出活读 2026-09-18 00:46:06 +00:00
pjh123 1855775956 fix: 模块 var 与函数导出实例化期预初始化 2026-09-18 00:32:29 +00:00
pjh123 39183f449c fix: 模块写穿按绑定槽过滤并覆盖更新赋值路径 2026-09-18 00:32:12 +00:00
pjh123 f53918f287 feat: 星号导出歧义名从命名空间省略 2026-09-18 00:19:29 +00:00
pjh123 ed65b5282f feat: 模块命名空间枚举读活值并支持写穿 2026-09-18 00:02:21 +00:00
pjh123 cafac572fa feat: 模块命名空间导出条目表与预注册 2026-09-17 23:47:04 +00:00
pjh123 5768febadb fix: 自导入别名与源同时捕获时合并单元 2026-09-17 23:10:48 +00:00
pjh123 2bd6da4b00 fix: 模块自导入绑定改为源绑定活别名 2026-09-17 22:54:06 +00:00
pjh123 c1dcc7a8f3 fix: 默认导出匿名函数与类设置隐式名 2026-09-17 22:16:17 +00:00
pjh123 f751b7b7bb docs: 统一预扫描与模块链接注释措辞 2026-09-17 15:55:20 +00:00
pjh123 fa4c9edb81 refactor: 闭包捕获分析拆目录并自由函数化去除接收者 2026-09-15 23:02:03 +00:00
pjh123 5cfd3162ba fix: 顶层模块求值完成值归空记录,依赖命名空间返回口径不变 2026-09-14 21:20:17 +00:00
pjh123 ca5c27574e fix: directive 序言字符串按源序先发射且完成值参与收敛 2026-09-14 21:07:10 +00:00
pjh123 647fb31af7 fix: 模块顶层路径归一绝对口径,自导入不再误判为外部依赖 2026-09-14 20:39:58 +00:00
pjh123 6aff1101f3 fix: 顶层受限全局名 lexical 声明编译期拒绝——let/const undefined|NaN|Infinity 撞 GDI 三常量 SyntaxError 2026-09-12 22:45:24 +00:00
pjh123 089179daab refactor: 函数 strict 标志入 IR/编译/缓存链(零行为地基) 2026-08-16 16:46:33 +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 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