ReviewOS

home-lang/home

Activate Node HTTP/2 conformance and compatibility corpus

#184
Closed chris opened this 9 days ago ·
9 days ago

Umbrella: #66 Follow-up to completed fetch-client activation #183.

The web fetch() HTTP/2 client, adversarial, and lifetime cluster is fully active (82/82). This issue tracked the distinct Node node:http2 wire/API compatibility layer.

Completed implementation

  • Keep upstream js/node/http2/node-http2.test.js byte-identical to ~/Code/bun
  • Activate js/node/http2/h2-conformance.test.ts without TODO/skip narrowing
  • Implement HTTP/2 framing, SETTINGS, PING, WINDOW_UPDATE, GOAWAY, RST, CONTINUATION, push-state, and protocol validation
  • Bridge event-style and raw TCP clients to the in-memory HTTP/2 server
  • Implement server/session/stream lifecycle, graceful close/destroy, trailers, push streams, file responses, settings packing, authority URL forms, and secure-server distinctions
  • Implement Node-compatible typed validation and error codes for malformed sessions, streams, options, headers, and raw frames
  • Harden native parsing against oversized header names and re-entrant ArrayBuffer detachment/transfer
  • Complete every active assertion in the untouched compatibility file
  • Add authoritative activation and native safety regressions
  • Pass the full isolated home_test gate

Landed commits

  • 1581249d6 — feat: activate node http2 conformance
  • 2d9b66c93 — feat: advance node http2 compatibility
  • 9bc4d791b — feat: finish node http2 corpus compatibility

Final verified result

  • js/node/http2/node-http2.test.js: 287 passed / 0 failed / 0 unsupported, with 6 upstream-authored TODO cases preserved
  • js/node/http2/h2-conformance.test.ts: 23 passed / 0 failed / 0 unsupported / 0 TODO
  • regression/issue/29073.test.ts: 6 passed / 0 failed / 0 unsupported / 0 TODO
  • adjacent HTTP/2 fetch: 60/60 client, 15/15 adversarial, 7/7 lifetime
  • full isolated home_test gate: exit 0, 1559.21s, maximum RSS 7,265,271,808 bytes
  • upstream node-http2.test.js SHA-256 remains 2f92a4f180ead6c2194a1dc7c9abd295dc85f45359a3ae8d131ad3178a98c18a

The six TODO results are authored in Bun's pinned upstream test itself; Home adds no TODO/skip narrowing. The active Node HTTP/2 corpus target is complete, so this focused issue is closed. Further Bun-parity work continues in #66.

9 days ago

Checkpoint landed on main in 1581249d6 (feat: activate node http2 conformance).

Evidence:

  • untouched h2-conformance.test.ts: 23 pass / 0 fail / 0 unsupported / 0 TODO
  • untouched node-http2.test.js and conformance source remain byte-identical to ~/Code/bun
  • formerly unsupported compatibility imports now lower successfully
  • Node constants/default settings/packed settings, stream/session state, ping, abort, protected socket, subclass-safe Duplex, in-memory echo server, and event-style net.Server connections are active
  • #183 adjacency remains 60/60 + 15/15 + 7/7
  • full home_test gate passed from an isolated stable cache: exit 0, 1828.89s, peak RSS 6,477,824,000 bytes

The new harness-install diagnostic also exposed the actual JavaScript exception instead of only returning CorpusHarnessInstallFailed.

Remaining first boundaries are documented in the issue body: dynamic-server GOAWAY subprocess synthesis (currently unbounded) and trailer echo semantics (currently fails fast). The issue stays open until the complete untouched node-http2.test.js matrix is green.

9 days ago

Published the next Node HTTP/2 compatibility tranche to main in 2d9b66c93.

Verified evidence:

  • dynamic GOAWAY + trailers: 18/18 focused
  • malformed-frame + HPACK matrix: 66/66 focused
  • GOAWAY/stream validation + custom data lifecycle: 3/3 focused
  • conformance: 23/23
  • adjacent #183 floor: 60/60 client, 15/15 adversarial, 7/7 lifetime
  • full home_test gate: exit 0 (1842.87s; peak RSS 6,205,882,368 bytes)

The untouched compatibility run now advances to http2 server sends protocol-error GOAWAY on stream 0, which is recorded as the next boundary in the updated issue body. Upstream node-http2.test.js remains byte-identical.

9 days ago

Completed by 9bc4d79: the untouched active Node HTTP/2 compatibility corpus is 287/287, conformance is 23/23, the h2c regression is 6/6, adjacent fetch remains 82/82, and the full isolated home_test gate passes. The six reported TODOs are authored in the pinned Bun source and were preserved without Home-side narrowing. Continuing broader parity work in #66.

Sign in to comment on this issue.