Commit Graph

591 Commits

Author SHA1 Message Date
pjh123 8a35dcd06e deps/builtins: regress 启用 utf16 feature + 单元向匹配入口回归钉三则——vendor fork 的字节字面量优化 gate 已运行时化(逐编译 byte_literals 参数),全局启用 utf16 feature 不再关掉 str 路径的字节 pass 与执行器起始谓词快路径,str IR 编译与执行保持逐位不变;本侧纯加性:根 manifest 依赖增 utf16 feature(patch 注释补启用后果说明),新增三枚直走 regress API 的回归钉(孤立 surrogate 单元命中 GC=Surrogate 而代理对/普通字符不命中、代理对单元序列按单码点匹配 ≡ str 路径、well-formed 语料单元路径匹配 ≡ str 路径),为后续孤立 surrogate 消费面重构钉住单元入口契约 2026-09-13 19:40:48 +00:00
pjh123 f088858cf4 emit/vm: 可删全局内置集撤 globalThis 与 TypedArray 两名——现行规范 globalThis 为 c:true 可删(真删清槽)、%TypedArray% 无全局名(删不存在属性返 true),宿主名排除面收窄至 $262,delete 子集 A/B 逐文件零翻转 2026-09-13 17:07:51 +00:00
pjh123 650b8c00cc builtins/vm: ZDT 直读 5 方法绑定(toInstant/toPlainDate/toPlainDateTime/toPlainTime/startOfDay)——纪元槽直读零时区换算、本地分量经 plain_parts 换算、startOfDay 当地午夜含范围校验,ZDT 语料 45 文件 fail→pass 2026-09-13 17:06:10 +00:00
pjh123 29040d429d deps/vm: vendor regress 0.11.1 补 Script/Script_Extensions 的 Unknown(Zzzz) 取值——上游表缺未分配码点集取值,规范合法模式 \p{Script=Unknown} 编译期 SyntaxError;fork 纯增量(0 行改动上游行,仅补区间表与解析臂),回归钉四则(未分配匹配/已分配不匹配/sc·scx·Zzzz 别名/既有取值不扰动) 2026-09-13 14:45:33 +00:00
pjh123 c7a9b273fa types/vm/runner: JsString 布局补 size_of/offset_of 编译期锚(实测 32B、utf16_len@24,tag 并入载荷首字无独立索引字),eval fn-decl 抛后描述符改显式值读钉住,non-definable-global-var 复测全绿撤 skip 条目 2026-09-13 12:26:24 +00:00
pjh123 c80944d375 emit/vm: 受限词法名集回滚三常量——eval 为可配置全局属性属合法遮蔽(规范自有属性臂无静态受限臂),class eval 维持解析期拒绝独立钉住(类体恒严格,与受限集无关) 2026-09-13 12:26:12 +00:00
pjh123 699059aee5 emit/vm: delete 全局可写内置标识符真删属性并清镜像槽——新增 DELETE_GLOBAL_PROP_C,可删名集自可写划分单源派生(除 globalThis 与宿主名),test262 delete JSON 用例由红转绿 2026-09-13 12:26:01 +00:00
pjh123 50674ee4f5 builtins/vm: matchAll 编译正则载体专型标签,释放/深拷贝经 RegExp 同一守卫,止逐调用 Box 泄漏 2026-09-13 11:05:52 +00:00
pjh123 c564ec539b emit/kernel: 可写 builtin 全局标识符写双写全局属性,三常量描述符对齐规范 c:false,受限词法名集补 eval
- 谓词注册表化:targets_readonly_builtin 解析条件抽公共助手,新增
  targets_writable_builtin / is_writable_builtin_global(BUILTIN_GLOBALS
  减只读三常量派生,不复制名单)+ 只读/可写划分漂移守卫单测
- 12 个赋值族写点(简单/复合/更新/逻辑赋值、解构两臂、for-in/for-of
  标识符目标)补双写臂:STORE_VAR 后 0x98 同步全局对象属性(既有可写
  属性原地更值、保 e/c 位),裸读镜像与 globalThis 反射不失步
- for-in 头 tier 写点移除 builtin 名例外:可写 builtin 名迭代键照规范
  覆写全局属性(三常量仍由拦截臂跳过)
- 三常量(undefined/NaN/Infinity)全局描述符 configurable 翻正为
  false:delete 拒绝、属性保留,描述符读同步
- 脚本顶层受限词法名集 3→4(补 eval,静态受限臂):let/const/class
  eval 顶层声明编译期 SyntaxError
- 配套钉:7 处既有钉随 c 位翻正 + 2 枚 for-in/eval 形态钉反转,新增
  global_builtin_writable_tests(16 钉:双写六形态 + 遮蔽/strict/eval/
  宿主名面)

test262 子集:built-ins/global 29/29、三常量族 20/20、11.13.1-4 7/7、
assignmenttargettype plain 8/8 全绿;language/global-code 17 失败文件
双树单跑一致(pre-existing);annexB assignmenttargettype 7 个 parse
error 为既有解析器缺口
2026-09-13 10:46:10 +00:00
pjh123 1fd3bbf9e0 test: promise 结算值与挂起帧 BigInt 唯一引用 unit 级确定钉——完整收集后仍登记 session 表 2026-09-13 09:05:57 +00:00
pjh123 1fdb7aca2d fix: eval 代码顶层函数声明撞不可写全局内置——sloppy 编译期首指令 TypeError、strict 函数声明不落全局 2026-09-13 09:05:54 +00:00
pjh123 fd125ac8ea test: boolean/Map/Set 测试辅助占位对象改统一入口分配——epoch 置位与对象表登记一步闭合 2026-09-13 07:35:10 +00:00
pjh123 675b6c10e9 fix: 顶层函数声明名并入 A 侧 tier 路由——再赋值/裸读与全局属性收敛单一真值 2026-09-13 02:05:31 +00:00
pjh123 16c1c3ecf1 fix: Map/Set 键按 SameValueZero 值等值——运行期构造字符串/BigInt 键查找闭合 2026-09-13 01:26:31 +00:00
pjh123 c49cdbf9c5 fix: 迭代器包装对象分配走统一入口登记 epoch 对象表——执行期 epoch 换新只晋升表内对象,绕过登记的包装器/结果对象在换新后悬垂,闭合 2026-09-13 00:41:48 +00:00
pjh123 6aff1101f3 fix: 顶层受限全局名 lexical 声明编译期拒绝——let/const undefined|NaN|Infinity 撞 GDI 三常量 SyntaxError 2026-09-12 22:45:24 +00:00
pjh123 41a3aef29e fix: CREATE_CLOSURE 跨 run 帧按执行帧表代际解析——嵌套闭包错代盖写闭合,挂起恢复重设活跃代际,OOB 消息上界对齐实际查表代际 2026-09-12 22:04:42 +00:00
pjh123 bf08803071 fix: 顶层 var 声明带初始化撞不可写全局用户属性 strict 抛 TypeError——用户名声明处写点改 session 解析 PutValue 语义,builtin 名保 GDI 写点;序言缺失分支全局不可扩展两模式对齐抛 TypeError 2026-09-12 21:36:10 +00:00
pjh123 60274baca8 fix: rerun 恢复顶层 this——清空寄存器文件后依赖 this 的顶层写(顶层 var 全局同步写)在重执行中不再静默丢弃 2026-09-12 21:36:10 +00:00
pjh123 d9c469e9d0 fix: 子模块表代际注册表——跨 run 存活函数按创建期表代解析子模块,索引悬空与静默错模块闭合 2026-09-12 19:27:22 +00:00
pjh123 473f73a1f6 fix: 原生盒 mark 边收集去对象预过滤——盒内字符串/BigInt 边并入 live 标记闭合 sweep 悬垂 2026-09-12 18:10:03 +00:00
pjh123 e368751f59 fix: 晋升 Promise 克隆迁移原件 reactions 并接结算链——in-run collect 后结算走克隆引用时原件侧消费者永久丢失洞闭合 2026-09-12 17:22:51 +00:00
pjh123 44c16cab8a fix: 顶层 var 读写直连全局对象属性单一真值——GDI 序言 + 声明处同步删除,类原型 session 直分防晋升克隆 identity 分裂,自增减 int 保持 2026-09-12 15:48:32 +00:00
pjh123 4b807b5b90 fix: 晋升 Promise 的结算传导到克隆——原件 fulfill/reject 时同步结算克隆
顶层 var 读侧引用晋升克隆,而原件随 epoch 释放;此前克隆是 pending 态静态
副本,原件结算不传导,克隆排队反应永不触发(表现为存 pending Promise 的顶层
var 后续 then 悬挂)。clone 时不再复制反应(原件结算自带触发,避免双触发),
pending 原件记克隆指针,fulfill/reject 结算后传导到克隆。
2026-09-12 12:05:55 +00:00
pjh123 7756ccbaee fix: PlainMonthDay/YearMonth toString 非 iso8601 日历补年份/日分量与日历注解
auto/缺省形(含 toJSON/toLocaleString 同形)对非 iso8601 日历恒输出裸
MM-DD / ±YYYY-MM:按 TemporalMonthDayToString/TemporalYearMonthToString,
showCalendar ∈ {always,critical} 或 calendar ≠ iso8601 时补参考年(PMD)/
参考日(PYM),注解按 FormatCalendarAnnotation(auto 仅非 iso 出 [u-ca=…]、
never 无注解、critical 前置 !)。ShowCalendar 拆分 auto/never(原 Omitted
合并两者致注解表不可表达),注解表独立成 helper 供两站点复用。
2026-09-12 08:27:46 +00:00
pjh123 e520b0dd93 fix: full reset 清空未捕获异常侧通道(跨 epoch 残留悬垂)
clear_execution_state 漏清 last_uncaught_value:原生错误后残留的原值
持 epoch 对象指针,reset/full_reset 的池回收后悬垂,后续原生错误经
raise_call_error 消费残留值即 UAF。侧通道属执行期状态,随异常状态一并
清空;补 reset/full_reset 两边界钉。
2026-09-12 08:27:42 +00:00
pjh123 4538dcd9a8 fix: Duration add/subtract 范围判据按存储分量加权和(对齐 IsValidDuration)
逐分量尾检误接受加权和落在 [2^53 s, 2^53 s + 86400 s) 的输入(各分量
均低于 2^53 秒上限而总和越界);按输入精确和校验又漏掉精确和低于上限、
而存储分量经 f64 舍入后达上限的情形。改按平衡后存储时间分量(含 days)
的纳秒加权和与 2^53 秒上限比较——校验对象与内部槽位的 float64 可表示
整数存储语义一致,判据与构造器/from 的 validate_duration_values 同式。
补加权和边界钉(恰 = 2^53 s 抛 RangeError、2^53 s − 1 s 通过并平衡到
day 级)。
2026-09-12 08:27:40 +00:00
pjh123 8f1be23c04 feat: Temporal.PlainYearMonth until/since——year/month 单位差值(缺省 smallest month / largest year)、参考日三元全等早返与按日 1 的 day 级范围 2026-09-12 07:24:33 +00:00
pjh123 6c9dbdaa06 feat: Temporal.PlainYearMonth with/toPlainDate——字段 bag 覆盖(month→monthCode→year)、monthCode 两段校验与 day 级日期合成 2026-09-12 07:24:28 +00:00
pjh123 db0521f950 feat: Temporal.PlainYearMonth add/subtract——时长转换复用、低阶单位拒绝与按日 1 的 (年,月) 范围 2026-09-12 06:51:10 +00:00
pjh123 32cfc066f1 feat: Temporal.PlainYearMonth compare/equals——(年,月,参考日) 三元比较与 ToTemporalYearMonth 共享件 2026-09-12 05:51:03 +00:00
pjh123 4dc475d2fa feat: Temporal.PlainYearMonth.from——年-月串解析/字段 bag/实例复制与 (年,月) 范围 2026-09-12 05:38:24 +00:00
pjh123 5362595b17 feat: Temporal.PlainMonthDay equals/with/toPlainDate——三元比较、字段覆盖与 constrain 日期合成 2026-09-12 04:52:28 +00:00
pjh123 2fcae4fbca feat: Temporal.PlainMonthDay.from——ISO 串解析/字段 bag/实例复制与 overflow 语义 2026-09-12 04:23:44 +00:00
pjh123 e4e278dd19 feat: PlainMonthDay/PlainYearMonth toLocaleString(默认形串)与 valueOf(TypeError)绑定 2026-09-12 03:49:18 +00:00
pjh123 e33e7a1eb7 feat: PlainMonthDay/PlainYearMonth 对象地基——构造器/getter/toString/toJSON 注册与 BuiltinWorld 接线 2026-09-12 03:42:48 +00:00
pjh123 390b72e3bd perf: 执行期 GC 收集——扩展 mark 跟随 epoch 臂、活 epoch 对象晋升 session(克隆体置活防同轮原地 sweep 误放)、死 session 对象原地释放出表,for-in 门控(活跃迭代器 + 挂起状态盒)与分配包络水位触发 2026-09-12 00:25:56 +00:00
pjh123 f1d2f7cb47 test: 顶层模块共享护栏钉——平表顶层与宿主 Arc 同一实例(含 full_reset 后二次 run),run 后宿主缓冲 IC 扩展字恒零且 Vm.bytecode 为 COW 私有拷贝 2026-09-11 22:24:17 +00:00
pjh123 3169e8f2f9 perf: run 签名改 &Arc<CompiledModule>,顶层模块跨 run 共享——collect_flat_modules 顶层改 Arc::clone 消除逐 run 常量池深拷贝,全调用点 Arc 包装迁移 2026-09-11 22:19:13 +00:00
pjh123 542236a15a fix: clear_transient 补清 overflow 态(id 空间完整复位)+ kernel 增加 active_vms 计数,sweep/重建/kernel-drop 三处 debug_assert 守卫'清空时点无存活 VM' 2026-09-11 21:42:55 +00:00
pjh123 a6f9a018f7 chore: rustfmt vm_support.rs 格式残留 2026-09-11 21:06:59 +00:00
pjh123 c39f35fc1e style: 死闭包 A/B 差分单测行宽归一 2026-09-11 20:53:42 +00:00
pjh123 c6dfa3be79 test: 死闭包双放回归单测补字节账目 A/B 差分断言——两条同构 arrow 仅 upvalue 数不同(3 vs 0),两次收集账目差即 upvalue 列表 Box 字节数,退回死分支不释放(泄漏)旧行为差分为 0 即转红 2026-09-11 20:20:00 +00:00
pjh123 4c3ac707f7 fix: 直 session 分配站(函数对象/prototype 子对象/标签模板数组)补 session 堆账目,配单 run 分配包络高水位 O(1) 采样锚与执行期 churn 峰值校准用例 2026-09-11 19:44:07 +00:00
pjh123 ad0405fe51 fix: full_reset/run 边界换新 Bump 替代原地 reset——旧 epoch/session arena 全量归还系统分配器、容量不跨 reset 保留,配 arena 保留锚校准用例 2026-09-11 19:43:55 +00:00
pjh123 487c6a9559 fix: sweep 死对象分支释放死闭包 upvalue 列表 Box(死对象不克隆、Box 独占,恰好一次释放后置空防收尾双放),配 mem_closure_dead_leak RSS 斜率校准用例 2026-09-11 18:32:43 +00:00
pjh123 b17119ce16 fix: 脏重建方法 wrapper/构造器/global 槽跨轮复用迁移——FnWrapperKey 四分件键(加 label 消解同名原型 next/return/throw 碰撞)登记表继承止 S2 每轮 wrapper 无界累积,global 槽原位更新堵住旧构造器滞留 UAF 与每轮 +3 槽无界增长 2026-09-11 18:06:19 +00:00
pjh123 4095ad2c1d fix: JS 重入边界 hop 计数每 64 跳强制顶层分配上限采样——堵 native 泵送小重入双上限结构性永不采样盲区 2026-09-11 16:29:38 +00:00
pjh123 f3533167b5 fix: Iterator.from 鸭子回退包装器创建时缓存 next 闭包——getter 恰触发一次,消费期零重读,getter 抛错透传 2026-09-11 16:29:35 +00:00
pjh123 ee32b2c682 fix: 选择性重建收尾重指保留对象 proto 槽并恰好释放一次被替换旧 P 对象属性区——含保活钉住对属性区,本体钉保留作重指遗漏兜底 2026-09-11 13:34:47 +00:00