pjh123
|
0c750fa74c
|
emit/kernel/vm/builtins: 常量池键编码 + 键物化真实串值面 + 16 回归钉——emit 侧字面量/键/模板统一改存无标志键编码:lone_surrogates 字面量与模板 cooked 按 oxc marker 解码还原真单元序列(FFFD+hex4≠fffd→surrogate 单元、FFFD+fffd→FFFD、FFFD+非 hex 防御臂),无标志串 encode_key(encode_utf16()) 入池(BMP 无 FFFD 键恒等 = 现值,池条目零漂移),string_pool 集中收口 9 处入池点;interner string_ptr 由单元物化(含孤立→FlatU16、良形→Flat);键物化面改真实 JS 串值(key_si_to_js_value 经 decode_key,Object.keys/ownKeys/entries/Reflect.ownKeys/json reviver 键同源;整数键反解数字串);批内修复三处子集 A/B 差分撞出回归:replace $n 展开按 spec GetSubstitution 重写(digitCount 2/1、越界回退 1 位、越界含 $0 原文输出,node 13 用例对照钉住)、String 构造器 Symbol 路径按 new.target 分流(String(sym)→描述串、new String(sym)→TypeError,恢复 to_string_for_string_constructor)、padStart/padEnd 未给 fill 时按单空格补(原 lossy 串取 'un' 杂质,pre-existing 一并归零);迭代器 dispose 钉改回真值断言(String(Symbol.dispose) 现合法返回描述串);property-escapes 613/0/0(B167 基线 582/31/0,31 归零)、String 子集 963/250/10 vs BASE 949/264/10(14 修 0 回归)、for-of +1(string-astral-truncated)、五 crate 113 套件 2680/0、clippy/fmt 零新增(JSON 面与全量 test262 收尾在 131.2 后续 commit 闭合)
|
2026-09-14 03:04:23 +00:00 |
|
pjh123
|
3acac721b0
|
types/kernel/vm/builtins: JsString UTF-16 载荷层(FlatU16 变体 + 单元入口)——原 UTF-8 载荷只存 well-formed 串、孤立 surrogate lossy 转 U+FFFD 回写,FromCodePoint/属性转义与字符串面码点语义皆破;现载荷直存 [u64;3](Flat well-formed / FlatU16 单元序列 / Cons 拼接),utf16_len 独立 32 位字,32B 布局锚保持;from_units 智能路由(含孤立→FlatU16),as_str 仅限 Flat,units/units_borrowed 单元借用,as_lossy_str 宽容读;string_forge 编解码 surrogate 感知(孤立 surrogate 逃逸 hex4 编码、解码展开 astral 代理对、string_ptr 由单元物化);VmHost 单元物化/分配/查询入口 + runtime_api 单元 API;字符串内置全法单元化(charAt/slice/substr/split/replace/search/match/matchAll 单元定位;空模式边界:search→0、match→[""]、replace 插 0 位、matchAll 游标耗尽守卫;接收者 ToString 错误原样传播);正则内置单元化(exec/test/search/symbol_* 单元文本,替换串 \u{...} 与孤立 surrogate 文本处理,lastIndex 与 matchAll 游标单元化);字符串迭代器码点化(高代理+后续低代理成对产出,astral 值回真实码点);String(Symbol) 抛 TypeError;回归钉更新五处(charAt/split/slice/substr 单元精确语义 + dispose 钉改 TypeError 断言);四 crate 全绿(oxide_vm 98 套件 2403 测)+ clippy/fmt 零新增
|
2026-09-13 22:42:10 +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
|
a98d5251e1
|
fix: 永久串静态表首用竞败者改返槽内值——Err 载荷是本值非槽值,自释后返自身指针成悬垂
|
2026-09-13 07:35:10 +00:00 |
|
pjh123
|
d9c469e9d0
|
fix: 子模块表代际注册表——跨 run 存活函数按创建期表代解析子模块,索引悬空与静默错模块闭合
|
2026-09-12 19:27:22 +00:00 |
|
pjh123
|
e33e7a1eb7
|
feat: PlainMonthDay/PlainYearMonth 对象地基——构造器/getter/toString/toJSON 注册与 BuiltinWorld 接线
|
2026-09-12 03:42:48 +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
|
a8c668002b
|
perf: test262 runner 重建与 sweep 双钟互斥——重建迭代不再对 doomed 核白做 50k 清理,sweep 文档对齐两边界契约
|
2026-09-11 21:19:08 +00:00 |
|
pjh123
|
22ae7e2642
|
chore: PermInterner 模块注释去历史叙述(写语义不写历史)
|
2026-09-11 21:06:59 +00:00 |
|
pjh123
|
389ce0e6af
|
refactor: PermEntry 布局钉改 repr(C)——字段序(指针, 长度)连续 16B 由 repr(C) 保证(非 pack),尺寸断言即 ABI 钉
|
2026-09-11 20:53:42 +00:00 |
|
pjh123
|
55727a2e01
|
perf: should_rebuild_perm 改 advisory 建议上限 Option——键数超阈值(严格大于)返回 Some(阈值取 2 的幂后加倍) 供宿主重建后写入新 kernel 不再立即触顶,预设 None 恒 None,3 单测钉默认/恰阈值/未达三面
|
2026-09-11 20:53:42 +00:00 |
|
pjh123
|
5b0affe065
|
perf: PermEntry 瘦身——删存储侧零消费的 8B hash 字段(24B→16B,键寻址仍经 DashMap 哈希键,计算保留存储删除),get_hash 随之删除,布局以尺寸 const 断言钉死
|
2026-09-11 20:20:00 +00:00 |
|
pjh123
|
b8167d4d84
|
perf: kernel 寿命配置化——零消费者死旋钮 max_dead_strings 换 advisory 重建阈值 perm_interner_max_entries(预设全 None 零漂移)+ KernelCore::should_rebuild_perm 宿主边界查询,3 单测钉默认面/阈值面/未达阈值面
|
2026-09-11 20:20:00 +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
|
ee32b2c682
|
fix: 选择性重建收尾重指保留对象 proto 槽并恰好释放一次被替换旧 P 对象属性区——含保活钉住对属性区,本体钉保留作重指遗漏兜底
|
2026-09-11 13:34:47 +00:00 |
|
pjh123
|
fa4ee6861b
|
refactor: BuiltinWorld P 字段枚举抽统一入口 all_p_fields——session 收尾清单单点维护,新增字段不再漏行
|
2026-09-11 13:32:23 +00:00 |
|
pjh123
|
6268275689
|
docs: 绑定层对象登记表字段注释对齐选择性重建继承模型(并入新 world 后仍由 session 收尾统一释放)
|
2026-09-11 11:26:48 +00:00 |
|
pjh123
|
9493b889b6
|
fix: 选择性重建后被替换家族的属性区无人释放——重建点按脏标记恰好释放一次
|
2026-09-11 08:50:59 +00:00 |
|
pjh123
|
e2e68fe0ad
|
fix: full_reset 脏重建后方法 wrapper 原型链悬空——旧 Function/Object 对保活
|
2026-09-11 08:50:45 +00:00 |
|
pjh123
|
227dfe008f
|
fix: test262 runner 进程 RSS 无界增长——session 收尾统一释放内建裸堆区/upvalue 别名 + 每测试分配上限 256MiB(任务 116)
- 泄漏修复:KernelSession 收尾(teardown_intrinsic_protos/free_session_upvalues)
释放内建对象 Box::into_raw 裸堆区(release_raw_heap 四区置空幂等)与
session upvalue 原件/晋升克隆别名去重释放;bindings 原生盒负载边、
session_gc 边记录、vm_props 属性区同步收尾
- 失控测试封顶:runner kernel max_alloc_bytes=256MiB(dispatch 采样口径
run_alloc_bytes/run_alloc_bytes_full),超限计 memory-limit 失败而非拖垮
进程 RSS(arena 高水位 GB 级 × 多 worker = 宿主 OOM)
- 归属:RSS 泄漏 pre-existing(HEAD 无 WIP 同现);identifiers escaped
unicode 挂死族另立 B132(pre-existing,supervise 超时自愈)
- 验证:build/clippy/四 crate 测试全绿零新增告警;language 前 5000 测试
单窗峰值 330MB(旧 ~4.5MB/测试 单调增长→88GB OOM 签名消失),
窗口间峰值 0.17-1.6GB 有界、逐测试释放回基线
|
2026-09-11 03:55:59 +00:00 |
|
pjh123
|
c87edd404a
|
fix: 全局三常量描述符翻可配置,var 重复声明以 builtin 镜像值保留现存值
|
2026-09-10 04:16:08 +08:00 |
|
pjh123
|
c7b54cb181
|
feat: String.raw/groupBy/withResolvers/f16round/__defineGetter__ 低垂果实批量实现
|
2026-08-22 10:26:00 +08:00 |
|
pjh123
|
c514ab35a3
|
feat: 实现 console 全局对象 (log/warn/error/info/debug/trace)
|
2026-08-21 22:29:21 +08:00 |
|
pjh123
|
76504fa963
|
refactor: 资源栈类型注释改为纯语义描述
|
2026-08-16 19:23:10 +08:00 |
|
pjh123
|
fbfa3f5ccf
|
feat: DisposableStack/AsyncDisposableStack 对象类型标签与两栈原型字段入世界
|
2026-08-16 19:14:48 +08:00 |
|
pjh123
|
e100bfb8b4
|
feat: SuppressedError 内置错误实现(三字段属性序 + 构造器接线)
|
2026-08-16 19:04:09 +08:00 |
|
pjh123
|
9f13d107ec
|
feat: Iterator helpers 基建——Symbol.dispose 注册与 %IteratorHelperPrototype%
|
2026-08-16 14:44:47 +08:00 |
|
pjh123
|
885c43e0e4
|
refactor: match 可改 ? 的等价改写
|
2026-08-16 14:04:25 +08:00 |
|
pjh123
|
c59ad64e7d
|
fix: 全局构造器与内置对象属性改非枚举与规范对齐
|
2026-08-16 02:29:42 +08:00 |
|
pjh123
|
2359c4e0a4
|
feat: 迭代器原型基建:%IteratorPrototype% 链 + 各集合迭代器原型
新增 %IteratorPrototype%(含 @@iterator 返回自身,经原型链被全部迭代器
继承,it[Symbol.iterator]() === it 恒等)与 %ArrayIteratorPrototype%/
%MapIteratorPrototype%/%SetIteratorPrototype%/%StringIteratorPrototype%/
%RegExpStringIteratorPrototype%(链到 %IteratorPrototype%);Array/Map/Set/
TA/String/matchAll 迭代器包装统一挂对应原型;补 Array/String 的 @@iterator
别名绑定。集合迭代器原型不含 return 方法(规范集合迭代器无 return)。
|
2026-08-15 22:57:03 +08:00 |
|
pjh123
|
c052f5a619
|
feat: Function.prototype[Symbol.hasInstance] 绑定与 bound 函数构造语义
@@hasInstance 按 OrdinaryHasInstance 实现(非可调用 this 返回 false、
prototype 非对象抛 TypeError、bound 链递归到最内层 target);
new boundFn() 解包 [[BoundTargetFunction]] 链后转发构造:绑定实参前置、
新对象原型取 target.prototype、new.target 替换为最内层 target。
|
2026-08-15 22:40:45 +08:00 |
|
pjh123
|
528f893e63
|
fix: 错误对象属性枚举性、toString 标签与构造器调用语义
- message/name 属性改非枚举(CreateNonEnumerableDataPropertyOrThrow),
Object.keys/for-in/JSON.stringify 不再泄漏错误信息
- 新增 Error 家族对象标签,Object.prototype.toString 输出 [object Error],
含子类型与用户子类(沿原型链判定)
- Error 家族构造器补 length=1,函数调用忽略 this 一律新建对象
- JSON.stringify 序列化仅含可枚举自身属性(规范 EnumerableOwnPropertyNames)
|
2026-08-15 21:30:28 +08:00 |
|
pjh123
|
9a7fe9777d
|
perf: typeof 改 js_type 单次提取并复用进程级静态字符串消除每次分配
|
2026-08-15 16:09:19 +08:00 |
|
pjh123
|
350b65c091
|
perf: 字符串 +/+= 二元拼接改 Cons rope 惰性扁平化消除 O(n²)
JsString 拆 Flat/Cons 变体:Cons 经独立 ConsNode 保存左右子节点 + O(1)
字节长 + 惰性扁平化产物缓存(OnceLock 原子发布,产物挂节点生命周期)。
concat_strings 接线:总长 ≤ 128B 的小链急切扁平(与 rope 前同款,拼接即
消费场景零开销),大链 O(1) 链接——大段重复拼接从 O(n²) 拷贝降为 O(n)
链接,文本在消费点(.length/==/string_ref/方法族)首次扁平化后缓存。
GC 兼容:mark 收口 mark_string_live 传播 Cons 子节点与产物闭包(显式栈
防深链爆栈);sweep/full_reset 共用 drop 辅助连带释放产物;节点字节记账
用 O(1) byte_len。rope 节点登记 session 字符串表,与执行期字符串 GC
(指令边界触发)天然兼容。JsString 结构 32B 与 rope 前同 bin,小串路径
零结构回退;unsafe impl Send/Sync 论证同 StringPtr(perm 恒 Flat)。
|
2026-08-15 14:32:08 +08:00 |
|
pjh123
|
b479fb4a4d
|
fix: rebuild 时泄漏保活旧 function/object 家族消除 wrapper 悬垂原型 UAF
|
2026-08-15 04:05:16 +08:00 |
|
pjh123
|
1c5676e614
|
perf: ASCII 单字符缓存 + 字符串迭代器游标收尾
|
2026-08-14 12:11:54 +08:00 |
|
pjh123
|
4f80fb4fb6
|
fix: builtin 快照数组与枚举判别值错位致符号/时间族永久脏
|
2026-08-14 05:50:46 +08:00 |
|
pjh123
|
62991cfa4b
|
feat: 新增 Symbol.species well-known symbol 绑定(Symbol.species 解析/键槽/内建对象)
|
2026-08-12 12:50:53 +08:00 |
|
pjh123
|
c287708ddc
|
feat: 补 entries/keys/findLastIndex/toSorted/toReversed/toSpliced/with
|
2026-08-12 03:42:42 +08:00 |
|
pjh123
|
aa51d57660
|
feat: BigInt 构造器 ToPrimitive 语义、toString(radix)、asIntN/asUintN
|
2026-08-12 02:23:27 +08:00 |
|
pjh123
|
66712e05a5
|
feat: Temporal PlainDateTime 基础实现
|
2026-08-11 21:32:15 +08:00 |
|
pjh123
|
90a162d39a
|
feat: Temporal Instant 时区转换
|
2026-08-11 20:54:25 +08:00 |
|
pjh123
|
b9686e000d
|
feat: Temporal 时长差值与纯日期差值
|
2026-08-11 12:38:31 +08:00 |
|
pjh123
|
078688070d
|
feat: 实现最小 BigInt 子集(字面量/算术/比较/构造器,Temporal 前置)
|
2026-08-10 23:02:31 +08:00 |
|
pjh123
|
924b8fd4e0
|
feat: Temporal 最小子集(Temporal.Now/Instant/PlainDate/PlainTime)
|
2026-08-10 18:18:39 +08:00 |
|
pjh123
|
a5a910a24e
|
feat: for-await-of + Symbol.asyncIterator + AsyncFromSyncIterator
|
2026-08-10 03:21:37 +08:00 |
|
pjh123
|
cd1bc206a5
|
fix: symbol 作属性键独立编码,不再塌缩为空串
|
2026-08-09 16:09:49 +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
|
826d9fd0a2
|
feat: RegExp.prototype 实现 Symbol.match/replace/search/split/matchAll
|
2026-08-08 22:33:32 +08:00 |
|