pjh123
|
376a2a1e9e
|
refactor: 内置八文件内核访问器调用改经 VmHost 能力方法
|
2026-10-08 07:23:24 +00:00 |
|
pjh123
|
641e4f6065
|
refactor: 正则与缓冲区族符号键改经 realm 维度编码并推进版本
|
2026-10-07 04:13:18 +00:00 |
|
pjh123
|
214494d3d5
|
refactor: 退役 new_array 死参数与三十四处调用点
|
2026-10-03 04:32:20 +00:00 |
|
pjh123
|
ccd6b06b6e
|
refactor: 退役数组缓冲与正则与 promise 盒克隆重写族死函数
|
2026-10-02 21:46:41 +00:00 |
|
pjh123
|
79dcc1d553
|
fix: RegExp flags getter 对无槽对象按规范读旗访问器组串
|
2026-09-26 23:17:53 +00:00 |
|
pjh123
|
a7484480f6
|
fix: RegExp 构造器对未知旗与重旗抛 SyntaxError
|
2026-09-26 22:46:37 +00:00 |
|
pjh123
|
d773cc7282
|
fix: matchAll 迭代器 next 按规范重写为 RegExpExec 协议与内部槽语义
|
2026-09-26 14:35:21 +00:00 |
|
pjh123
|
fdd4783701
|
fix: 正则 v 标志零宽推进按码点口径
|
2026-09-25 14:17:21 +00:00 |
|
pjh123
|
81130ce9c7
|
fix: 正则非 u 标志按码元匹配,u/v 标志按码点
|
2026-09-25 09:22:33 +00:00 |
|
pjh123
|
01195ffb32
|
fix: match/search 走 GetMethod 派发,flags 归序与 normalize 校验
|
2026-09-25 06:23:11 +00:00 |
|
pjh123
|
72f9a063a4
|
feat: 七构造器绑定 Symbol.species 静态访问器
|
2026-09-22 17:23:15 +00:00 |
|
pjh123
|
fb9365bde2
|
fix: split 委托 Symbol.split 并补零宽与 limit 口径
|
2026-09-22 07:45:34 +00:00 |
|
pjh123
|
169f4b2984
|
fix: RegExp 构造器对象模式取原始模式文本
|
2026-09-22 07:45:28 +00:00 |
|
pjh123
|
29bad1e582
|
fix: 删 exec 尾部 lastIndex 重复写回并修正 flags 注释
|
2026-09-22 02:20:42 +00:00 |
|
pjh123
|
49c10ba20a
|
fix: String 替换臂收口 GetSubstitution 并补齐 $ 展开
|
2026-09-22 02:04:11 +00:00 |
|
pjh123
|
fb4a98b7c0
|
fix: exec/match 族补 indices 与 groups null 原型并收口空模式委托
|
2026-09-22 01:09:52 +00:00 |
|
pjh123
|
8d8c0607c6
|
fix: test y 标志按 lastIndex 锚定与失败置 0 语义
|
2026-09-22 00:35:58 +00:00 |
|
pjh123
|
0eb44413b1
|
style: 格式化 oxide_builtins 六文件消除 fmt 漂移
|
2026-09-22 00:16:03 +00:00 |
|
pjh123
|
66387b5638
|
fix: Symbol.replace $<name> 命名组替换 + groups 空对象不创建
|
2026-09-21 18:04:11 +00:00 |
|
pjh123
|
58a97f838c
|
fix: RegExp source getter EscapeRegExpPattern + groups 对象构建
|
2026-09-21 17:58:01 +00:00 |
|
pjh123
|
6ffb4d4653
|
fix: matchAll flags 读走 Get 语义传播 getter 抛错
|
2026-09-21 16:35:17 +00:00 |
|
pjh123
|
8e22c48b70
|
fix: RegExp source/flags 原型访问器与 GC 根追踪
|
2026-09-21 14:56:19 +00:00 |
|
pjh123
|
b4d281d109
|
feat: RegExp 五 Symbol 入口 live flag 直读与 lastIndex 替换收尾
|
2026-09-21 07:02:56 +00:00 |
|
pjh123
|
b1fade6afc
|
fix: RegExp exec 重写 sticky 锚定与 lastIndex 规范读写
|
2026-09-21 04:37:12 +00:00 |
|
pjh123
|
a25bc53377
|
feat: RegExp 八个 flag 只读访问器与 u/v 互斥校验
|
2026-09-21 04:09:52 +00:00 |
|
pjh123
|
46211a66a5
|
feat: 实现 RegExp.escape 静态方法
|
2026-09-21 01:27:41 +00:00 |
|
pjh123
|
6f70d7d09f
|
vm/kernel/emit/builtins: 动态源编码重设计 + 数值键 2^32 边界 + 单元域解码/Source 面——14 头独占 test262 回归 13 修 0 新增
全量 A/B 差分撞出 14 个头独占回归,本提交闭合 13(text-self.js 双树同败归 pre-existing):
数值键 u32 回绕(release 态,debug 为 panic 故单测未现):canonical_index_str/
units 的 v.checked_mul(10)? + d as u32 在乘积合法而和溢出 2^32 时静默回绕
(10 位数字串 "4294967296".."4294967299" 误判整数键 0..3,属性查找回
退、Object.keys 串键),改 checked_mul+checked_add 双段防溢出;str/units 各
钉一枚 2^30-1/2^30/2^32-1/2^32 边界(Group B 5 文件:defineProperty/
defineProperties 2^32 键族 + Array property-cast-number)。
decodeURI/decodeURIComponent 单元域重写(Group A 2 文件):decode_uri_units
按单元扫描(非 % 单元原样透传——孤立 surrogate 往返不再被 lossy 串值面
打碎),%XX 解单元入缓冲;string_arg_units 经 to_units_full 取单元。
动态源编码(eval/Function/$262.evalScript)重设计(Group A 6 文件 + value-u):
source_escape 旧设计把源码域反斜杠恒双写(与 marker 起始区分),但源码即
JS 程序、反斜杠恒为字面量内转义序列起始,双写改变程序语义——
/\u{1d306}/u 变 /\\u{1d306}/u,u 模式撞裸 { 直接 SyntaxError(value-u 回归
根因)。现反斜杠原样透传;孤立 surrogate/FFFD 单元仍以 \\uXXXX 转义文本
注入(Rust str 无法承载裸孤立 surrogate,转义文本是唯一注入形态);
source_escape_to_key 逆路径仅还原注入 marker(\\ud800..\\udfff/\\ufffd
小写转义文本 → FFFD+hex4 池键形态,物化 decode_key 还原原始单元,正则
.source 按原始源返回;用户转义文本 \\u0041/\\u{1d306} 等逐字透传),
\\+marker 拼接形态(数据反斜杠紧邻注入,S7.8.5_A1.4 族 cu=d800 断言)按
前瞻还原 [数据反斜杠, 单元]。source_encoded 标志经 Compiler→Emitter→CompileCtx
(嵌套继承)贯通,仅动态编译入口置位;静态源切片维持 pool_key_plain 不变。
RegExp [[Source]]/[[Flags]] 单元域(regexp 构造器):to_units_full →
new_string_units_owned 入键(旧 lossy to_string 把孤立 surrogate 单元打成
FFFD,src_match 探针 false);regress 编译仍 lossy(既有缺口,另行报告)。
三并钉:source_escape marker 形态 / 反斜杠透传 / decode_key∘to_key∘escape
闭环(含 \\+marker 相邻与 astral 对)。实测:Group A 8/8、Group B 5/5、
value-u 1/1;8178 文件回归子集(13 目录)双树 A/B 差分 HEAD-only=∅、
13 文件转双树同 pass;text-self.js 双树同 compile 败
(requested module export is not exported: default)归 pre-existing;
七 crate 单测 2879/1(唯一失败 compile_class_declaration_emits_constructor
为 HEAD~0 既有,本提交未引入)。
|
2026-09-14 07:16:00 +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
|
50674ee4f5
|
builtins/vm: matchAll 编译正则载体专型标签,释放/深拷贝经 RegExp 同一守卫,止逐调用 Box 泄漏
|
2026-09-13 11:05:52 +00:00 |
|
pjh123
|
c49cdbf9c5
|
fix: 迭代器包装对象分配走统一入口登记 epoch 对象表——执行期 epoch 换新只晋升表内对象,绕过登记的包装器/结果对象在换新后悬垂,闭合
|
2026-09-13 00:41:48 +00:00 |
|
pjh123
|
469ef7543b
|
perf: GC 字节账目补齐 + is_epoch_ptr O(1) + 分配热路径触发
|
2026-08-22 08:10:32 +08:00 |
|
pjh123
|
4029259255
|
fix: builtins 对象分配统一走 alloc_object 登记消除高频路径泄漏
|
2026-08-16 03:36:02 +08:00 |
|
pjh123
|
69152ad608
|
fix: 迭代器原型形状补全(Iterator.prototype/string 中继层/next 原型化)
|
2026-08-15 23:36:01 +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
|
0e32d663ce
|
fix: matchAll 空匹配推进至少一个字符,RegExp 补 GC 搬移深拷贝
matchAll 迭代器在空匹配(range.start == range.end)后把游标停在原位置,
同一位置反复空匹配导致死循环;改为按 UTF-8 字符边界推进(与 regress
find_iter 的 next_right_pos 一致),串尾空匹配把游标推到串长之后保证下轮
耗尽。
另修 RegExp 在 GC sweep 与 epoch 晋升中的指针别名:克隆只复制 native_fn 槽
的 Box 指针,源对象释放后克隆持悬垂指针,teardown 双重释放(heap 损坏)。
新增 clone_regexp_native 深拷贝已编译正则,sweep/promote 两处挂接,与
drop 配对保证单次释放。
|
2026-08-15 20:31:51 +08:00 |
|
pjh123
|
6c6d4320a6
|
perf: replace 函数 replacer 回调免每匹配整串复制
回调第 4 参(原字符串)由每匹配复制整串改为调用方预构一次:
原始字符串 receiver 直接复用原值零拷贝,对象 receiver 提升为单次会话串。
覆盖 String.prototype.replace/replaceAll 与 RegExp.prototype[Symbol.replace]
的函数 replacer 路径。补回调第 4 参断言测试与 fn-replacer 压测。
|
2026-08-14 21:00:43 +08:00 |
|
pjh123
|
781d0c832f
|
perf: 字符串构造类方法改借用免整串拷贝
|
2026-08-13 23:13:34 +08:00 |
|
pjh123
|
3ad80d6ed4
|
perf: new_string_owned 零拷贝路径替代 new_string 二次克隆
|
2026-08-13 14:55:08 +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 |
|
pjh123
|
dc6eed44f8
|
fix: RegExp flag 全量透传(u/s/y/d 生效,\p{...} unicode 属性可用)
|
2026-08-08 18:05:59 +08:00 |
|
pjh123
|
31542a2576
|
fix: 数组属性存储机制(array_prop_count 显式元素数 + shape 属性偏移 + IC/prop_forge 对齐)
|
2026-08-07 21:53:45 +08:00 |
|
pjh123
|
db04bc25c9
|
feat: 迁移到 regress 引擎(backref/lookaround/命名组/v-flag)+ 手动 \$ 展开 replace + exec 捕获组数组
|
2026-08-07 21:29:22 +08:00 |
|
pjh123
|
31e28a03a6
|
docs: 补充注释与格式化
|
2026-08-06 23:10:27 +08:00 |
|
pjh123
|
263fd255b6
|
docs: 添加 Rustdoc 注释
|
2026-08-05 21:46:47 +08:00 |
|
pjh123
|
7ba5da9513
|
refactor: 用户数字参数改走 coerce_number_bounded,对象参数支持 ToPrimitive
|
2026-06-27 13:49:37 +08:00 |
|
pjh123
|
f23d4e61b2
|
feat: 提取 oxide_builtins 独立 crate,泛型化 <H: VmHost>
|
2026-06-25 22:38:23 +08:00 |
|