pjh123
|
a00ef2a7c6
|
feat: Iterator.prototype 返回迭代器方法(map/filter/take/drop/flatMap)
|
2026-08-16 16:38:45 +08:00 |
|
pjh123
|
327893043b
|
feat: Iterator.prototype 终端方法(forEach/every/some/find/reduce/toArray)
|
2026-08-16 16:02:14 +08:00 |
|
pjh123
|
2bee797da8
|
fix: Temporal 日历注解白名单化,u-ca 校验扩到 18 项内置日历
|
2026-08-16 15:19:45 +08:00 |
|
pjh123
|
95729403ef
|
feat: Iterator 构造器本体支持 subclass 基座
|
2026-08-16 15:09:41 +08:00 |
|
pjh123
|
1f2a020585
|
feat: Iterator helpers 基建——Symbol.dispose 注册与 %IteratorHelperPrototype%
|
2026-08-16 14:44:47 +08:00 |
|
pjh123
|
5df04a8e58
|
chore: 全仓 rustfmt 格式化归拢
|
2026-08-16 12:50:36 +08:00 |
|
pjh123
|
16793d3b36
|
fix: 异常值通道配对——忽略调用槽配对、unwind 接住清槽、生成器参数初始化不覆盖异常值
|
2026-08-16 11:29:50 +08:00 |
|
pjh123
|
afa79aa5fb
|
fix: Date 多参构造年 0-99 按规范映射到 1900-1999
|
2026-08-16 10:58:50 +08:00 |
|
pjh123
|
e97473c8ad
|
fix: Date 普通调用忽略参数并移除 RFC2822 panic
|
2026-08-16 10:58:12 +08:00 |
|
pjh123
|
8ac26fc01f
|
fix: IC 快速路径 symbol 原始值走 Symbol.prototype 链
|
2026-08-16 10:31:34 +08:00 |
|
pjh123
|
19fcdd73d0
|
fix: Date 构造器缺省字段与溢出滚动语义符合规范
多参缺省字段固定为日=1、时分秒毫秒=0(不再取当前时刻);
月/日/时等分量越界按 MakeDay/MakeTime 滚动进位,负月同样归一;
单参字符串与 Date.parse 支持时区偏移(Z/+hh:mm/+hhmm)折算 UTC,
修复此前 NaiveDateTime 解析静默丢弃偏移的问题。
|
2026-08-16 03:43:42 +08:00 |
|
pjh123
|
1a2d8682ae
|
fix: builtins 对象分配统一走 alloc_object 登记消除高频路径泄漏
|
2026-08-16 03:36:02 +08:00 |
|
pjh123
|
5de959e2bd
|
fix: String 方法 Symbol 参数抛 TypeError 且缺参按 undefined 查找
as_string 由兜底转换改 Result 化:Symbol 与其余转换失败抛
TypeError,对象 ToString 抛出的原生异常经 take_uncaught_value
原样传播,不再静默降级为空串/占位文本。17 处调用点统一经
try_string! 抛错。
indexOf/includes/startsWith/endsWith/lastIndexOf 删除缺参短路:
searchString 缺省按 ToString(undefined)="undefined" 参与查找,
'undefined'.indexOf() 现得 0。
类正则对象(Object.create(RegExp.prototype))默认 toString 抛
TypeError 的 replace/split 用例随异常传播行为更新断言。
|
2026-08-16 02:08:13 +08:00 |
|
pjh123
|
e448c642a5
|
fix: 迭代器原型形状补全(Iterator.prototype/string 中继层/next 原型化)
|
2026-08-15 23:36:01 +08:00 |
|
pjh123
|
ec32e42ce5
|
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
|
c230edeb57
|
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
|
d83d598221
|
fix: parseInt/parseFloat 对象参数按 ToString 完整转换并传播异常
对象参数走 ToPrimitive(string hint) 后取串解析(toString 结果可见),
Symbol 抛 TypeError,对象方法抛出的原始异常原样传播。
|
2026-08-15 22:32:14 +08:00 |
|
pjh123
|
2669967967
|
fix: parseInt/parseFloat 前缀解析与 radix 语义符合规范
|
2026-08-15 21:40:27 +08:00 |
|
pjh123
|
07d6c83c6b
|
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
|
b706b8c506
|
feat: Object keys 系列合并数组元素区,assign 按规范过滤枚举/触发 getter
walk_own_keys 返回值语义改为绝对存储索引:数组对象先枚举元素区
(跳过 hole),命名属性偏移到元素区之后;shape 槽位计数含 symbol 键
与物理存储对齐(修 symbol 键错位读值)。delete_own_property /
REST / SPREAD 四连锁点同步去偏移,REST/SPREAD 删除独立元素区循环
(由 walk_own_keys 统一覆盖,防重复键)。
Object.assign 增补:源只取可枚举自身属性;取值改 ordinary_get
(accessor 触发 getter,receiver=源);提交写 receiver 修正为 target
(目标同名 setter 的 this 指向 target)。
|
2026-08-15 21:04:24 +08:00 |
|
pjh123
|
970c2e988e
|
feat: freeze/seal/preventExtensions 写路径拦截(逐属性 meta + extensible 检查)
freeze/seal 逐属性改写 meta(数据属性 writable/configurable=false,
访问器 configurable=false,含数组元素区),使 has_prop_meta() 恒 true,
IC 直写路径自动失效;ordinary_set/create_named_prop_fast/
set_or_create_prop_value/define_* 增补 extensible/frozen 检查,
SET_ELEM 直写入口回落 ordinary_set 或拒绝新元素。
引擎未实现 strict 标志,赋值失败统一 raise_type_error(sloppy 静默留待后续)。
|
2026-08-15 20:55:20 +08:00 |
|
pjh123
|
f4e790978d
|
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
|
1c70d0343d
|
fix: Function.prototype.apply 解除实参上限,native 大实参集走 spill 溢出区
apply 曾把实参数组静默截断到 55 个(寄存器窗口限制),导致
String.fromCodePoint.apply(null, codePoints) 这类大参数集调用只取前 55 个。
改为直接物化全部实参经 TailCall 下发:字节码目标走帧参数区(spill 栈)任意
个数;native 目标新增 spill 溢出区通道,寄存器窗口(253)之外的实参转存
spill 栈(GC 根、嵌套安全),builtin 经 VmHost::native_arg_count/native_arg_at
读取,String.fromCodePoint 迁移为新接口。大实参集不再静默截断。
|
2026-08-15 20:31:32 +08:00 |
|
pjh123
|
1b9974fe7f
|
fix: BigInt64Array/BigUint64Array 与 DataView BigInt 存取走真 BigInt 语义
TA 元素读写按 kind 分流:BigInt 类型走 ToBigInt(Number 入参抛 TypeError、
写入 mod 2^64 截断、读出为真 BigInt 值),数值类型走 ToNumber 且显式拒绝
BigInt 值;消除 64 位整数经 f64 中转的静默精度丢失。
- runtime_api 新增公共 to_bigint_full / string_to_bigint_full,bigint 构造器
与 asIntN/asUintN 改调公共版消除双实现
- sort/toSorted 默认序对 BigInt 类型按 i64/u64 值比较;reverse/copyWithin/
filter/toReversed/with 消除无谓数值中转
- 构造器第一参数非对象统一走 ToIndex(bool/null/BigInt/字符串),Symbol 抛
TypeError
- DataView get/setBigInt64/getBigUint64 返回 BigInt 值、入参按 ToBigInt 校验
- 测试:精度往返 / TypeError / mod 2^64 / 字节序 / 排序 / 回调值类型断言
|
2026-08-15 20:04:48 +08:00 |
|
pjh123
|
f63b41454f
|
fix: 字符串索引体系改 UTF-16 code unit 语义(astral 字符正确)
|
2026-08-15 19:34:55 +08:00 |
|
pjh123
|
31296ed16d
|
perf: 相等/严格相等/ToNumber 改 js_type 单次提取收敛并修复混合 tag 严格相等 ±0 语义
|
2026-08-15 15:50:35 +08:00 |
|
pjh123
|
f9c639426d
|
perf: f64 转字符串去中间分配并加整数 double 快路径
|
2026-08-15 15:06:43 +08:00 |
|
pjh123
|
f2535ffc77
|
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
|
b860fdf5ee
|
fix: string.search 无参调用越界 panic,参数读取守卫前置返回 -1
|
2026-08-15 04:28:01 +08:00 |
|
pjh123
|
b82fe9af32
|
fix: 对象建键入口统一走 property_key_si 规范化,数字键不再分裂
Object.fromEntries/JSON.parse/new Map 对象 entry/rest 解构静态 excluded
四处直接 intern 动态字符串键绕过整数键区间映射,规范数字键分裂为
字符串键与整数键两个键。统一经 string_key_si 规范化:规范数字串映射
整数键,其余 intern 字符串键,与 property_key_si 字符串分支口径一致。
make_int_key 增加 debug 断言兜底索引越界。
|
2026-08-14 22:37:46 +08:00 |
|
pjh123
|
57f8a474fa
|
fix: replaceAll 类正则对象统一走 ToString 文本路径与 replace 对齐
|
2026-08-14 21:15:00 +08:00 |
|
pjh123
|
f7866585d1
|
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
|
bd9b981362
|
perf: replace 字符串 pattern 走共享借用零拷贝并修 replace 语义
|
2026-08-14 12:54:27 +08:00 |
|
pjh123
|
e1747ca560
|
perf: ASCII 单字符缓存 + 字符串迭代器游标收尾
|
2026-08-14 12:11:54 +08:00 |
|
pjh123
|
c2aea3f8e9
|
fix: split 分隔符为 RegExp 子类对象时按字符串语义切分
|
2026-08-14 10:44:23 +08:00 |
|
pjh123
|
ae58508760
|
chore: 清理 oxide_builtins clippy 告警
|
2026-08-14 05:26:35 +08:00 |
|
pjh123
|
84984f864d
|
perf: 字符串构造类方法改借用免整串拷贝
|
2026-08-13 23:13:34 +08:00 |
|
pjh123
|
1b6b4e335b
|
perf: 字符串只读扫描方法改借用免整串拷贝
|
2026-08-13 22:32:38 +08:00 |
|
pjh123
|
1ea9c76ab4
|
perf: 数组迭代方法元素读取走密集直读快路径
|
2026-08-13 18:12:49 +08:00 |
|
pjh123
|
2c62830a1d
|
perf: 数组整数键走独立 si 区间免字符串往返
|
2026-08-13 17:47:55 +08:00 |
|
pjh123
|
e62bc54f08
|
perf: 收紧字符串借用语义消除跨分配点 UB
|
2026-08-13 16:24:00 +08:00 |
|
pjh123
|
e826a65f3c
|
perf: 字符串 for-of 迭代改字节游标增量推进(B4 初步)
|
2026-08-13 15:03:48 +08:00 |
|
pjh123
|
3ae2f2d9b7
|
perf: new_string_owned 零拷贝路径替代 new_string 二次克隆(B2)
|
2026-08-13 14:55:08 +08:00 |
|
爱特每羊队
|
3f45f38f51
|
feat: module natives(命名空间对象/导出读写/star 合并/seal/eval/data + 链接检查)
- __moduleObject:null 原型命名空间,带 @@toStringTag=Module(w/e/c=false)
- __moduleSet:定义不可写/可枚举/不可配置导出属性
- __moduleGet:模块命名空间 exotic Get(缺失导出抛 TypeError)
- __moduleLinkGet:import 绑定链接期检查(缺失导出抛 SyntaxError)
- __moduleStar:export * 合并,冲突名跳过(dst 已有属性省略)
- __moduleSeal:封冻命名空间
- __moduleEval:同步执行依赖模块并返回命名空间
- __moduleData:json/text 数据模块命名空间
|
2026-08-12 17:37:33 +08:00 |
|
爱特每羊队
|
1323a0564b
|
feat: Duration.total 支持字符串/原始值 relativeTo 语义(无效与越界字符串 RangeError、数字/null 等 TypeError、days 日历路径),total 子集 41/29
|
2026-08-12 16:58:57 +08:00 |
|
爱特每羊队
|
5e38623fee
|
feat: Temporal.Duration.prototype.round(无日历单位路径:选项校验+24h 天舍入+按最大单位平衡,绑定注册)
|
2026-08-12 16:16:22 +08:00 |
|
爱特每羊队
|
ad547d5cd8
|
feat: Temporal.Duration.prototype.add(分量精确求和+按最大单位平衡+范围校验,绑定注册);add 子集 32/0
|
2026-08-12 14:50:13 +08:00 |
|
爱特每羊队
|
f16e39dd98
|
fix: Instant 参数转换按规范——非字符串原始值直接抛 TypeError(from/compare/equals/since/until)
|
2026-08-12 14:33:16 +08:00 |
|
爱特每羊队
|
0cd98084da
|
feat: Temporal.PlainDateTime.prototype.equals(实例/字符串/对象/ZDT 统一比较,绑定注册)
|
2026-08-12 14:27:25 +08:00 |
|
爱特每羊队
|
d5b45d5b24
|
fix: Temporal PlainDate/PlainDateTime.from 表示范围边界、leap second、constrain 下限与实例转换
|
2026-08-12 14:17:28 +08:00 |
|