Skip to content

Implement FetchHeaders private ABI and native adapters #375

Description

@chrisbbreuer

Parent: #134

Child of #140, #163, and #164. Implement all 25 pinned WebCore__FetchHeaders__* entries against one exact Headers representation, including standalone native handles and consumer adapters.

Scope

  • Complete the shared create, createFromJS, cast, clone, cloneThis, toJS, ref-lifetime, count, copy, append, put, get, has, remove, isEmpty, and fast-header operations.
  • Implement the pinned UWS, H3, PicoHeaders, and UWS response adapter boundaries from their exact revisioned layouts; do not guess or dereference unvalidated foreign records.
  • Implement createValue/createValueNotJS from the pinned StringPointer/ZigString span contract.

Acceptance

  • JavaScript-created and native-created Headers values share one canonical ordered representation with an unspoofable engine brand.
  • Header names and values follow Fetch validation and normalization, duplicate combination, Set-Cookie separation, insertion ordering, and WebIDL exception behavior.
  • Handles have explicit VM/realm ownership and native lifetime semantics; null, stale, foreign-VM, and exception paths are deterministic.
  • Fast HTTPHeaderName indexes map exactly to the pinned enum and have parity with general get/has/remove operations.
  • copyTo and callback/output strings have documented ownership and remain valid for the consumer-required lifetime.
  • External request/response adapters are covered by exact-layout fixtures and reject unsupported layouts rather than exposing partial behavior.
  • Add focused engine tests plus compiled Home and Bun declaration/runtime fixtures in Debug and ReleaseSafe.
  • Refresh both inventories, concise ABI/API docs, CI, and parent progress. Root benchmark numbers change only after a new accepted benchmark run.

Children

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions