Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Builtin prototype parity: URLSearchParams/DisposableStack default prototype, custom new.target on fetch handle types

Open
#12,629 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
8/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Domain
compilers

Research direction

The failing cases are listed in test-files/test_gap_qsctor_builtins.ts, and the fix is an object-owned prototype representation rather than a side table, so the design belongs to maintainers. Start by reading the object model decisions 142–148 and how HANDLE_TAG registry handles store prototypes. Done means the listed Reflect.construct and prototype-identity cases match node 26.5.1, which requires changes to the runtime's object layout and rooting.

Written by the indexing model from the issue text.

Description

Found while verifying #12628. These cases already behave differently from node on main; #12628 does not change them.

Case perry (main) node 26.5.1
Object.getPrototypeOf(new URLSearchParams()) === URLSearchParams.prototype false true
Object.getPrototypeOf(new DisposableStack()) === DisposableStack.prototype false true
Reflect.construct(Headers, [], NT) prototype is NT.prototype false true
same for Request false true
same for Response false true
same for Blob false true
same for File false true

Fetch objects (Headers/Request/Response/Blob/File) are HANDLE_TAG registry handles, so setting a heap-object prototype for a custom new.target doesn't reach them. Per the object model (decisions 142–148), the fix is an object-owned prototype representation (and its rooting), not a prototype side table.

Repro: test-files/test_gap_qsctor_builtins.ts (rows marked as pre-existing in the #12628 report).

Dominant language
Rust
Stars
4.9k
Forks
166
Avg merge
3h 23m
Merged PRs (30d)
911

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from PerryTS/perry

All issues in PerryTS/perry

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.