Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
4d5aa69
docs: plan indexed data structures and maintainable storage boundaries
Eric-Song-Nop Sep 10, 2026
575a11d
test(perf): add fixed-work data structure scaling workloads
Eric-Song-Nop Sep 10, 2026
ba43045
perf(map): index SameValueZero keys without record snapshots
Eric-Song-Nop Sep 10, 2026
1ed4a35
perf(set): reuse hashed key lookup for membership and set operations
Eric-Song-Nop Sep 10, 2026
6f9f8b7
docs(perf): record indexed collection scaling and conformance evidence
Eric-Song-Nop Sep 10, 2026
5755719
perf(object): replace unchanged property slots before cloning layouts
Eric-Song-Nop Sep 10, 2026
97850fc
docs(perf): record constant-width property update measurements
Eric-Song-Nop Sep 10, 2026
2629e3e
perf(modules): index immutable import and export tables
Eric-Song-Nop Sep 10, 2026
773cd24
test(perf): cover module import and reexport scaling
Eric-Song-Nop Sep 10, 2026
6762177
perf(compiler): index scope names while preserving binding order
Eric-Song-Nop Sep 10, 2026
227b8bc
docs(perf): record module lookup scaling and remaining costs
Eric-Song-Nop Sep 10, 2026
6b8fb82
perf(compiler): index reusable string constants at the append boundary
Eric-Song-Nop Sep 10, 2026
b11f1d1
docs(perf): record compiler scaling including the scope regression
Eric-Song-Nop Sep 10, 2026
bb8032b
perf(string): compare and hash flat code units without rope traversal…
Eric-Song-Nop Sep 10, 2026
1d8c58c
perf(array): batch sparse length truncation at the layout boundary
Eric-Song-Nop Sep 10, 2026
e5c49a1
perf(compiler): index source coordinates once for all debug sites
Eric-Song-Nop Sep 10, 2026
72553b9
docs(perf): record flat strings, batched arrays and source-index evid…
Eric-Song-Nop Sep 10, 2026
30a2dae
docs(test): record focused conformance for the indexed compiler and a…
Eric-Song-Nop Sep 10, 2026
cf54916
perf(collections): reclaim records behind monotonic iterator identities
Eric-Song-Nop Sep 10, 2026
cb19ac2
test(perf): cover iteration after churn with a paused collection cursor
Eric-Song-Nop Sep 10, 2026
7cc8b0b
test(perf): vary collection history independently of query counts
Eric-Song-Nop Sep 10, 2026
6aa76f3
docs(perf): record collection reclamation, capacity bounds and throug…
Eric-Song-Nop Sep 10, 2026
383a2e1
perf(string): memoize long key hashes within each collection seed
Eric-Song-Nop Sep 10, 2026
d43f6fd
docs(perf): record bounded hash memo gains and integer control confir…
Eric-Song-Nop Sep 10, 2026
645283d
perf(object): use compact dictionary slots for dynamic property deletion
Eric-Song-Nop Sep 10, 2026
d98dace
docs(perf): record dictionary deletion scaling and representation costs
Eric-Song-Nop Sep 10, 2026
e5262e5
perf(atom): keep integer property keys in their immediate representation
Eric-Song-Nop Sep 10, 2026
e6b560b
perf(typed-array): classify immediate integer keys without string rou…
Eric-Song-Nop Sep 10, 2026
5940038
perf(arguments): prepare properties before a single object publication
Eric-Song-Nop Sep 10, 2026
cfa17fc
perf(regexp): batch named captures and result metadata publication
Eric-Song-Nop Sep 10, 2026
596c788
perf(heap): preflight small edge transactions without a hash table
Eric-Song-Nop Sep 10, 2026
9b92bb7
test(perf): measure integer keys and batched builtin construction
Eric-Song-Nop Sep 10, 2026
529b248
perf(array): reuse indexed dictionary storage after dense conversion
Eric-Song-Nop Sep 10, 2026
82677da
docs(perf): record holey Array scaling and shared storage rationale
Eric-Song-Nop Sep 10, 2026
4dfaea4
perf(vm): update Number operands in place on the value stack
Eric-Song-Nop Sep 10, 2026
609e7f2
perf(vm): borrow ordinary call arguments from the activation stack
Eric-Song-Nop Sep 10, 2026
40f001a
docs(perf): record numeric stack gains and flat borrowed-call timing
Eric-Song-Nop Sep 10, 2026
5f8cb47
test: preserve frozen fixtures and guard borrowed call ownership
Eric-Song-Nop Sep 10, 2026
95013e9
refactor: remove redundant index casts and collection temporary
Eric-Song-Nop Sep 10, 2026
6195e69
test: align borrowed argument canary with formatted call expression
Eric-Song-Nop Sep 10, 2026
888fab5
test: keep throw propagation mutation on the runtime call entry
Eric-Song-Nop Sep 10, 2026
78ca467
docs: record unchanged full Test262 outcomes on final engine source
Eric-Song-Nop Sep 10, 2026
0da4a11
docs: map maintenance tasks to data structure owners and invariants
Eric-Song-Nop Sep 10, 2026
fb23b99
docs: record final architecture gate and build validation
Eric-Song-Nop Sep 10, 2026
ae33d79
docs(perf): compare all scaling workloads against the original baseline
Eric-Song-Nop Sep 10, 2026
837962a
docs(perf): retain the complete fixed microbench and V8 matrix
Eric-Song-Nop Sep 10, 2026
4870446
docs(perf): record hardware reductions and remaining interpreter costs
Eric-Song-Nop Sep 10, 2026
b11f2be
docs: close the data structure plan with final evidence and scope dec…
Eric-Song-Nop Sep 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ Neither is a general untrusted-bytecode loader or Feature Parity claim.
- [Engine module responsibilities](docs/architecture.md)
- [Current implementation status](docs/status.md)
- [Profiling and external benchmarks](docs/profiling.md)
- [Data structure improvement plan](docs/data-structure-plan.md)
- [Pinned Test262 baseline and metric definitions](docs/test262.md)
- [Parity acceptance contract](docs/parity.md)
- [Playground build and trust boundary](docs/playground.md)
Expand Down
254 changes: 254 additions & 0 deletions docs/data-structure-plan.md

Large diffs are not rendered by default.

233 changes: 233 additions & 0 deletions docs/reports/collection-records-history.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
{
"before_commit": "e5c49a1",
"after_commit": "cf54916",
"cpu_affinity": [
2
],
"repeat": 3,
"metric": "whole-process wall nanoseconds; lower is better",
"binaries": {
"before": "0a9a2a8d56fcbff20f3966419d65f72451ba29fca55aaaa7d668ad02c89f6cd9",
"after": "71871ac007dd0dadd3981efec15853fd34dabb5b4833d17d9ee84d90575146d7"
},
"summary": [
{
"case": "map-iterate-churn",
"size": 1024,
"engine": "before",
"eligible": true,
"successful_wall_ns": [
49626890,
50007842,
49864163
],
"failures": [],
"median_wall_ns": 49864163
},
{
"case": "map-iterate-churn",
"size": 1024,
"engine": "after",
"eligible": true,
"successful_wall_ns": [
27174563,
31898499,
27260994
],
"failures": [],
"median_wall_ns": 27260994
},
{
"case": "map-iterate-churn",
"size": 8192,
"engine": "before",
"eligible": true,
"successful_wall_ns": [
221851985,
221362333,
222695222
],
"failures": [],
"median_wall_ns": 221851985
},
{
"case": "map-iterate-churn",
"size": 8192,
"engine": "after",
"eligible": true,
"successful_wall_ns": [
41483460,
39263988,
41487068
],
"failures": [],
"median_wall_ns": 41483460
},
{
"case": "map-iterate-churn",
"size": 65536,
"engine": "before",
"eligible": true,
"successful_wall_ns": [
1589407140,
1602775291,
1590186580
],
"failures": [],
"median_wall_ns": 1590186580
},
{
"case": "map-iterate-churn",
"size": 65536,
"engine": "after",
"eligible": true,
"successful_wall_ns": [
141326556,
141108720,
138963991
],
"failures": [],
"median_wall_ns": 141108720
},
{
"case": "set-iterate-churn",
"size": 1024,
"engine": "before",
"eligible": true,
"successful_wall_ns": [
50214960,
44936398,
45342196
],
"failures": [],
"median_wall_ns": 45342196
},
{
"case": "set-iterate-churn",
"size": 1024,
"engine": "after",
"eligible": true,
"successful_wall_ns": [
27753295,
27062003,
26997845
],
"failures": [],
"median_wall_ns": 27062003
},
{
"case": "set-iterate-churn",
"size": 8192,
"engine": "before",
"eligible": true,
"successful_wall_ns": [
208014451,
198134600,
181752811
],
"failures": [],
"median_wall_ns": 198134600
},
{
"case": "set-iterate-churn",
"size": 8192,
"engine": "after",
"eligible": true,
"successful_wall_ns": [
40030962,
39845095,
39680488
],
"failures": [],
"median_wall_ns": 39845095
},
{
"case": "set-iterate-churn",
"size": 65536,
"engine": "before",
"eligible": true,
"successful_wall_ns": [
1264207309,
1263684745,
1271485500
],
"failures": [],
"median_wall_ns": 1264207309
},
{
"case": "set-iterate-churn",
"size": 65536,
"engine": "after",
"eligible": true,
"successful_wall_ns": [
143795111,
137148815,
163623266
],
"failures": [],
"median_wall_ns": 143795111
}
],
"workloads": [
{
"case": "map-iterate-churn",
"size": 1024,
"operations": 4096,
"path": "/home/eric/.lody/repos/github---pocket-stack---quickjs-oxide/worktrees/3f2d5b2b-29f5-4704-9934-53dff8ae8163/target/scaling-collection-history/workloads/map-iterate-churn-1024/workload.mjs",
"expected": "4097\n",
"files": {
"workload.mjs": "602e5bdb1663d7e56bab39960d57c1ecc445251905a26f40c1149a6ad8259fba"
}
},
{
"case": "map-iterate-churn",
"size": 8192,
"operations": 4096,
"path": "/home/eric/.lody/repos/github---pocket-stack---quickjs-oxide/worktrees/3f2d5b2b-29f5-4704-9934-53dff8ae8163/target/scaling-collection-history/workloads/map-iterate-churn-8192/workload.mjs",
"expected": "4097\n",
"files": {
"workload.mjs": "ef7a12420099a5716c9cc257b7adb4ce84fbca95f6999fae2ed56bc9ef093352"
}
},
{
"case": "map-iterate-churn",
"size": 65536,
"operations": 4096,
"path": "/home/eric/.lody/repos/github---pocket-stack---quickjs-oxide/worktrees/3f2d5b2b-29f5-4704-9934-53dff8ae8163/target/scaling-collection-history/workloads/map-iterate-churn-65536/workload.mjs",
"expected": "4097\n",
"files": {
"workload.mjs": "0fb237f722775b078f2ef8202510fc41a9c19ee1b7d316322b57541600a335d0"
}
},
{
"case": "set-iterate-churn",
"size": 1024,
"operations": 4096,
"path": "/home/eric/.lody/repos/github---pocket-stack---quickjs-oxide/worktrees/3f2d5b2b-29f5-4704-9934-53dff8ae8163/target/scaling-collection-history/workloads/set-iterate-churn-1024/workload.mjs",
"expected": "4097\n",
"files": {
"workload.mjs": "93d9c61c9e38c1148813644f2ea8af529974d13dc05e4d4d90b996d2bb609e48"
}
},
{
"case": "set-iterate-churn",
"size": 8192,
"operations": 4096,
"path": "/home/eric/.lody/repos/github---pocket-stack---quickjs-oxide/worktrees/3f2d5b2b-29f5-4704-9934-53dff8ae8163/target/scaling-collection-history/workloads/set-iterate-churn-8192/workload.mjs",
"expected": "4097\n",
"files": {
"workload.mjs": "ece4cea5683f9169c8adc27d06912877129f54ab50d271a9a0e054d58a424af9"
}
},
{
"case": "set-iterate-churn",
"size": 65536,
"operations": 4096,
"path": "/home/eric/.lody/repos/github---pocket-stack---quickjs-oxide/worktrees/3f2d5b2b-29f5-4704-9934-53dff8ae8163/target/scaling-collection-history/workloads/set-iterate-churn-65536/workload.mjs",
"expected": "4097\n",
"files": {
"workload.mjs": "4f610d568074833825e9651d15351c062cd52f46ac675640e608b02d869f8e16"
}
}
]
}
Loading