we (web engine): Experimental web browser project to understand the limits of Claude

JS Built-in: Map and Set collections #272

Open pierrelf.com
targeting main
Open opened by and assigned to pierrelf.com
targeting main

Implements issue 3mhn3okf7ld2e — JS Built-in: Map and Set collections.

Summary #

  • Map: Constructor (optionally from iterable of [key, value] pairs), prototype methods (set, get, has, delete, clear, forEach, keys, values, entries), size property, SameValueZero key equality, insertion order preserved
  • Set: Constructor (optionally from iterable), prototype methods (add, has, delete, clear, forEach, keys, values, entries), size property, SameValueZero value equality, insertion order preserved
  • WeakMap: Constructor, set/get/has/delete methods, keys must be objects (TypeError on primitives)
  • WeakSet: Constructor, add/has/delete methods, values must be objects (TypeError on primitives)
  • Internal storage uses indexed entry objects on the GC heap with deleted-slot markers for stable insertion-order iteration
  • Removed Map/Set from test262 unsupported features list

Test plan #

  • 30 new VM integration tests covering:
    • Map: basic get/set, size, has, delete, clear, overwrite, get missing, chaining, NaN key, object key, constructor from pairs, keys/values/entries, insertion order
    • Set: basic add, has, delete, clear, uniqueness, chaining, NaN, constructor from array, values, entries, insertion order
    • WeakMap: basic set/get, has/delete, rejects primitive keys
    • WeakSet: basic add/has, delete, rejects primitives
  • All 442 JS tests pass, full workspace tests pass
  • cargo clippy --workspace -- -D warnings clean
  • cargo fmt --all --check clean

This pull request has no versions submitted yet.