ReviewOS

home-lang/home

Bun parity: unify global and fetch resource timing with the Node timeline

#873
Open chris opened this 8 days ago ·
8 days ago

Resource timing option checkpoint (2026-10-12): source and verified evidence. Node perf_hooks delegates setResourceTimingBufferSize to the owned native global API, preserving WebIDL unsigned-long conversion for fractional/string sizes and the shared buffer limit. Named clearResourceTimings uses ordinary string conversion before exact-name filtering; numeric and toString object names clear the matching entry.

54/54 Debug steps; 26 native groups; 40 unchanged pinned originals: 168 passed cases plus twenty-five process checks, zero failures/skips/filters and two upstream TODOs. Fourteen ABI controls (452 assertions) and 32 report-validator controls pass. All 573 artifacts and 83 replayed reports validate, retaining eleven negative outcomes. Node reference controls, Home pre-fix numeric-clear failure, both builds and three tested source hashes remain retained. Source bytes are unchanged across build-test/CI-only main integration. Pickier explicitly scans three JS sources, matching baseline three errors and 61 warnings, zero new findings.

Remaining: The unchanged zero-argument markResourceTiming assertion remains contradicted by actual valid resource creation (#874); it was not weakened or credited. Native performance/fetch parity #869/#873/#872, HTTPS #875/#532, general Promise/native producers #877, directory #878, corpus #876 and context #871/#856 remain open. The native transfer prototype is preserved but unverified; its crash control was not rerun and receives no credit. Full Bun-suite, Release/ASAN and all-platform proof remain open. Two TODOs receive no pass credit.


Binary ALPN/static SNI checkpoint (2026-10-10, corpus retains failure): source c3dd1b308 and verified evidence. TLS config owns explicit-length ALPN bytes through clone/free/transfer/equality/hash and socket consumers. HTTP selectors reference each retained context's config, including registered SNI contexts. Valid binary IDs, caller-buffer mutation, preference/context-content discrimination and trusted SNI controls pass. 21 native groups; ten ABI tests/684 assertions; five Zig tests; 54/54 Debug steps. Seven unchanged files retain 60 passes plus three process checks and one registered failure/failed file (#874), no skips/TODOs. All 76 committed archives and seven restored reports validate, including the failure. Initial string-conversion compile failure remains. #875/#532 remain open for dynamic callbacks/SNI handoff, reload, malformed-list validation and wider lifetime/platform coverage. Excluded regression files remain unverified; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open.

HTTPS static ALPN checkpoint (2026-10-10, corpus retains failure): selector 264bf4d93, forwarding d21ce2d58 and verified evidence. HTTPS options now preserve ALPNProtocols and normalize array/buffer forms; the HTTP SSL_CTX selector reads server-owned config. Valid list preference, encoded buffer and reused-connection controls negotiate real HTTP/1.1 with certificate verification enabled. 20 native groups; ten ABI tests/684 assertions; five Zig tests; 54/54 Debug steps. Seven unchanged files retain 60 passes plus three process checks and one registered failure/failed file (#874), no skips/TODOs. All 75 committed archives and seven restored reports validate, including the failure. The initial namespace compile error remains. #875/#532 remain open for dynamic callbacks, SNI handoff, reload, encoding/length edges and wider lifetime/platform coverage. Excluded regression files remain unverified; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open.

Fetch DNS/negotiated protocol checkpoint (2026-10-10, corpus retains failure): source 2dd946c6a and verified evidence. Resolver requests record monotonic lookup timestamps; the owned connector notifies typed HTTP owners at resolution, and TLS snapshots copy actual negotiated ALPN bytes. Usockets context.c uses exact qualified source selection, avoiding unrelated vendor basenames. Valid local lookup and trusted TLS-listener ALPN controls pass. 20 native groups; ten ABI tests/684 assertions; five Zig tests; 54/54 Debug steps. Seven unchanged files retain 60 passes plus three process checks and one registered failure/failed file (#874), no skips/TODOs. All 79 committed archives and seven restored reports validate, including the failure. #875 tracks HTTPS server ALPN option forwarding; absence of negotiation remains unset. DNS cache/coalescing/cross-thread and synchronous-cache edges, proxy/unix/other protocols remain in #873/#869. Excluded regression files remain unverified; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open.

Fresh TCP/TLS fetch phase checkpoint (2026-10-10, corpus retains failure): source 7f0eb8a88 and verified evidence. Direct connect creation/open and TLS handshake callbacks publish measured connect-start/end and secure-start fields. Pooled requests leave new handshake fields unset; proxy/unix paths are not mislabeled. Valid fresh/pooled TCP and trusted local TLS controls pass. 20 native groups; ten ABI tests/684 assertions; four Zig tests; 52/52 Debug steps. Seven unchanged files retain 60 passes plus three process checks and one registered failure/failed file (#874), no skips/TODOs. All 76 committed archives and seven restored reports validate, including the failure. Initial wrong-CA/unnormalized-URL control failures remain; final verification uses the issuing CA without bypass. DNS, proxy/unix, protocol/ALPN, HTTP/2/3, complete redirect/cross-origin, failure/data/file and partial-consumption coverage remain open in #873/#869. Excluded regression files remain unverified; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open.

Fetch response-phase/cork checkpoint (2026-10-10, corpus retains failure): source 4652005a4 and verified evidence. HTTP/1 snapshots distinguish first interim response from final headers, preserve redirect interval/final-hop start and keep one original-URL entry. A valid reuse control traced suppressed early hints to unmatched request corking; the Node adapter now uncorks its own request cork on the next tick. The ineffective ended-bit attempt is removed. 19 native groups; ten ABI tests/684 assertions; four Zig tests; 52/52 Debug steps. Seven unchanged files retain 60 passes plus three process checks and one registered failure/failed file (#874), no skips/TODOs. All 99 committed archives and seven restored reports validate, including the failure. Initial failed controls and disk refusal remain. Complete cross-origin/redirect/protocol exposure, DNS/TLS/connection phases, HTTP/2/3, failure/data/file cases and partial-consumption accounting remain open in #873/#869. Previously excluded regression files remain unverified and were not rerun; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open.

Automatic HTTP/1 fetch resource checkpoint (2026-10-10, corpus retains failure): source 42ef6e765 and verified evidence. HTTP-thread snapshots measure request preparation, first response header data, transport completion and encoded bytes; tasklets accumulate decoded delivered bytes and publish once into the shared global/Node timeline. Valid local plain/stream/gzip/canceled-body controls pass with observer identity and sizes. 19 native groups; ten ABI tests/684 assertions; four Zig tests; 52/52 Debug steps. Final seven unchanged files retain 60 passes plus three process checks and one registered failure/one failed file (#874), no skips/TODOs. All 143 committed archives and seven restored reports validate, including the failure. HTTP/2/3, DNS/TLS/connection phases, complete redirect/informational timings, failed requests, data/file schemes and partial-consumption accounting remain open in #873/#869; missing timestamps are not fabricated. Previously excluded regression files remain unverified and were not rerun. Initial compile diagnostics/disk refusals remain; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open under #66.

Shared global/Node resource checkpoint (2026-10-10, scope retains failure): source cc2d9c356 and verified evidence. Global/Node creation, constructors, queries, clearing/resizing and observers share entry identity and timeline state. The full pinned global-object implementation and JSPerformance now compile from Home, excluding external objects; constructor modules initialize at bootstrap/test-realm setup. A boolean weak sweep and noinline sample frame repair conservative retention without relaxing the lifetime assertion. Final seven unchanged files: 60 passes plus three process checks, one registered failure/one failed file, no skips/TODOs; 18 ordinary native groups; ten ABI tests/684 assertions; four Zig tests; 52/52 Debug steps. All 373 committed archives and seven restored reports validate, including the failure. #874 tracks the legacy zero-argument no-op assertion. A prior Deno SIGTRAP and a historical web constructor regression remain unverified/excluded after static corrections; no passing credit is assigned to those files. Initial compile/stale-binary/constructor/lifetime failures and disk refusal remain visible. Automatic fetch and remaining interoperability stay open in #873/#869; #872, full Bun suite and Release/ASAN/all-platform verification remain open.

Home now creates Node resource entries with timing/body/cache metadata, owns a resource buffer and overflow lifecycle, routes buffered resource observers, and compiles ResourceTiming/PerformanceResourceTiming/NetworkLoadMetrics from Home. Source: https://github.com/home-lang/home/commit/456552ef6f35471e956bbe1f7c520622c2dd8250.

Global manual creation/queries/clear/resize/observer paths now share the owned Node resource state and constructor identity. Automatic HTTP/1 fetch now publishes measured request/response/completion and body-size snapshots. HTTP/2/3, DNS/TLS/connection phases, full redirect/informational timelines, failure/data/file schemes, partial-consumption and native base-class/platform semantics remain open. The manual API checkpoint does not prove automatic fetch or complete resource integration.

Acceptance:

  • Implement global resource creation and automatic fetch timing from actual request milestones.
  • Unify resource identity, query results, clear/resize behavior, overflow recovery and observer delivery across Node and global APIs.
  • Preserve class/receiver semantics and teardown ownership through both paths.
  • Expand unchanged upstream coverage and ordinary valid fetch/resource conformance; retain failures and avoid assertion edits or filename-specific behavior.
  • Complete remaining resource argument/coercion, selective clearing and native base-class interactions.

Parents: #869 and #66. Darwin arm64 manual Node API conformance is a checkpoint, not full resource or Bun-suite parity.

8 days ago

Node resource timing/buffer checkpoint (2026-10-10): source 456552ef6 and verified evidence. Node resource entries expose live timing/body/cache/status/delivery data; queries, clearing, buffered observation, overflow recovery and listener/property handlers use the shared registry. Three WebCore resource/metrics implementations compile from Home, replacing external objects; eight selected implementation/header files match the pin with ABI/cache validation. Nine unchanged files: 81 passes plus three process checks, zero failures/skips/TODOs; 17 native groups; ten ABI tests/684 assertions; four Zig build-support tests; 48/48 Debug steps. All 88 committed archives and nine restored reports validate. Global WebCore creation/overflow and automatic fetch do not yet share the Node timeline; #873 tracks completion. Further arguments/selective clearing/native base-class interactions and broader performance semantics remain in #869. Windows/Linux/wider startup coverage, #872, remaining native/API ownership, complete Bun suite and Release/ASAN/all-platform verification remain open.

8 days ago

Shared global/Node resource checkpoint (2026-10-10, scope retains failure): source cc2d9c356 and verified evidence. Global/Node creation, constructors, queries, clearing/resizing and observers share entry identity and timeline state. The full pinned global-object implementation and JSPerformance now compile from Home, excluding external objects; constructor modules initialize at bootstrap/test-realm setup. A boolean weak sweep and noinline sample frame repair conservative retention without relaxing the lifetime assertion. Final seven unchanged files: 60 passes plus three process checks, one registered failure/one failed file, no skips/TODOs; 18 ordinary native groups; ten ABI tests/684 assertions; four Zig tests; 52/52 Debug steps. All 373 committed archives and seven restored reports validate, including the failure. #874 tracks the legacy zero-argument no-op assertion. A prior Deno SIGTRAP and a historical web constructor regression remain unverified/excluded after static corrections; no passing credit is assigned to those files. Initial compile/stale-binary/constructor/lifetime failures and disk refusal remain visible. Automatic fetch and remaining interoperability stay open in #873/#869; #872, full Bun suite and Release/ASAN/all-platform verification remain open.

8 days ago

Automatic HTTP/1 fetch resource checkpoint (2026-10-10, corpus retains failure): source 42ef6e765 and verified evidence. HTTP-thread snapshots measure request preparation, first response header data, transport completion and encoded bytes; tasklets accumulate decoded delivered bytes and publish once into the shared global/Node timeline. Valid local plain/stream/gzip/canceled-body controls pass with observer identity and sizes. 19 native groups; ten ABI tests/684 assertions; four Zig tests; 52/52 Debug steps. Final seven unchanged files retain 60 passes plus three process checks and one registered failure/one failed file (#874), no skips/TODOs. All 143 committed archives and seven restored reports validate, including the failure. HTTP/2/3, DNS/TLS/connection phases, complete redirect/informational timings, failed requests, data/file schemes and partial-consumption accounting remain open in #873/#869; missing timestamps are not fabricated. Previously excluded regression files remain unverified and were not rerun. Initial compile diagnostics/disk refusals remain; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open under #66.

8 days ago

Fetch response-phase/cork checkpoint (2026-10-10, corpus retains failure): source 4652005a4 and verified evidence. HTTP/1 snapshots distinguish first interim response from final headers, preserve redirect interval/final-hop start and keep one original-URL entry. A valid reuse control traced suppressed early hints to unmatched request corking; the Node adapter now uncorks its own request cork on the next tick. The ineffective ended-bit attempt is removed. 19 native groups; ten ABI tests/684 assertions; four Zig tests; 52/52 Debug steps. Seven unchanged files retain 60 passes plus three process checks and one registered failure/failed file (#874), no skips/TODOs. All 99 committed archives and seven restored reports validate, including the failure. Initial failed controls and disk refusal remain. Complete cross-origin/redirect/protocol exposure, DNS/TLS/connection phases, HTTP/2/3, failure/data/file cases and partial-consumption accounting remain open in #873/#869. Previously excluded regression files remain unverified and were not rerun; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open.

8 days ago

Fresh TCP/TLS fetch phase checkpoint (2026-10-10, corpus retains failure): source 7f0eb8a88 and verified evidence. Direct connect creation/open and TLS handshake callbacks publish measured connect-start/end and secure-start fields. Pooled requests leave new handshake fields unset; proxy/unix paths are not mislabeled. Valid fresh/pooled TCP and trusted local TLS controls pass. 20 native groups; ten ABI tests/684 assertions; four Zig tests; 52/52 Debug steps. Seven unchanged files retain 60 passes plus three process checks and one registered failure/failed file (#874), no skips/TODOs. All 76 committed archives and seven restored reports validate, including the failure. Initial wrong-CA/unnormalized-URL control failures remain; final verification uses the issuing CA without bypass. DNS, proxy/unix, protocol/ALPN, HTTP/2/3, complete redirect/cross-origin, failure/data/file and partial-consumption coverage remain open in #873/#869. Excluded regression files remain unverified; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open.

8 days ago

Fetch DNS/negotiated protocol checkpoint (2026-10-10, corpus retains failure): source 2dd946c6a and verified evidence. Resolver requests record monotonic lookup timestamps; the owned connector notifies typed HTTP owners at resolution, and TLS snapshots copy actual negotiated ALPN bytes. Usockets context.c uses exact qualified source selection, avoiding unrelated vendor basenames. Valid local lookup and trusted TLS-listener ALPN controls pass. 20 native groups; ten ABI tests/684 assertions; five Zig tests; 54/54 Debug steps. Seven unchanged files retain 60 passes plus three process checks and one registered failure/failed file (#874), no skips/TODOs. All 79 committed archives and seven restored reports validate, including the failure. #875 tracks HTTPS server ALPN option forwarding; absence of negotiation remains unset. DNS cache/coalescing/cross-thread and synchronous-cache edges, proxy/unix/other protocols remain in #873/#869. Excluded regression files remain unverified; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open.

8 days ago

HTTPS static ALPN checkpoint (2026-10-10, corpus retains failure): selector 264bf4d93, forwarding d21ce2d58 and verified evidence. HTTPS options now preserve ALPNProtocols and normalize array/buffer forms; the HTTP SSL_CTX selector reads server-owned config. Valid list preference, encoded buffer and reused-connection controls negotiate real HTTP/1.1 with certificate verification enabled. 20 native groups; ten ABI tests/684 assertions; five Zig tests; 54/54 Debug steps. Seven unchanged files retain 60 passes plus three process checks and one registered failure/failed file (#874), no skips/TODOs. All 75 committed archives and seven restored reports validate, including the failure. The initial namespace compile error remains. #875/#532 remain open for dynamic callbacks, SNI handoff, reload, encoding/length edges and wider lifetime/platform coverage. Excluded regression files remain unverified; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open.

8 days ago

Binary ALPN/static SNI checkpoint (2026-10-10, corpus retains failure): source c3dd1b308 and verified evidence. TLS config owns explicit-length ALPN bytes through clone/free/transfer/equality/hash and socket consumers. HTTP selectors reference each retained context's config, including registered SNI contexts. Valid binary IDs, caller-buffer mutation, preference/context-content discrimination and trusted SNI controls pass. 21 native groups; ten ABI tests/684 assertions; five Zig tests; 54/54 Debug steps. Seven unchanged files retain 60 passes plus three process checks and one registered failure/failed file (#874), no skips/TODOs. All 76 committed archives and seven restored reports validate, including the failure. Initial string-conversion compile failure remains. #875/#532 remain open for dynamic callbacks/SNI handoff, reload, malformed-list validation and wider lifetime/platform coverage. Excluded regression files remain unverified; full Bun suite, #872 and Release/ASAN/all-platform coverage remain open.

8 days ago

Resource timing option checkpoint (2026-10-12): source and verified evidence. Node perf_hooks delegates setResourceTimingBufferSize to the owned native global API, preserving WebIDL unsigned-long conversion for fractional/string sizes and the shared buffer limit. Named clearResourceTimings uses ordinary string conversion before exact-name filtering; numeric and toString object names clear the matching entry.

54/54 Debug steps; 26 native groups; 40 unchanged pinned originals: 168 passed cases plus twenty-five process checks, zero failures/skips/filters and two upstream TODOs. Fourteen ABI controls (452 assertions) and 32 report-validator controls pass. All 573 artifacts and 83 replayed reports validate, retaining eleven negative outcomes. Node reference controls, Home pre-fix numeric-clear failure, both builds and three tested source hashes remain retained. Source bytes are unchanged across build-test/CI-only main integration. Pickier explicitly scans three JS sources, matching baseline three errors and 61 warnings, zero new findings.

Remaining: The unchanged zero-argument markResourceTiming assertion remains contradicted by actual valid resource creation (#874); it was not weakened or credited. Native performance/fetch parity #869/#873/#872, HTTPS #875/#532, general Promise/native producers #877, directory #878, corpus #876 and context #871/#856 remain open. The native transfer prototype is preserved but unverified; its crash control was not rerun and receives no credit. Full Bun-suite, Release/ASAN and all-platform proof remain open. Two TODOs receive no pass credit.

8 days ago

The merged inspector event increment is held behind a reproducible native fetch gap. With a server sending headers and a partial body but withholding completion, Node emits resource timing on explicit cancellation and signal abort; the current Home executable emits neither.

A draft 29b090c76 terminates explicit response-body cancellation rather than draining indefinitely and records the actual native failed/aborted response terminal timestamp. Aborted responses with measured headers can publish their timing once. Finalizer abandonment remains separately handled. The Node-backed termination control passes; normal Home build is active, with no Home pass credit yet.

This addresses native behavior rather than extending the failed 20ms test delay. Previous merged failure and later passing diagnostic remain retained. Inspector full acceptance and collection remain open in #888/#885; full parity remains #66.

8 days ago

The first repaired build passed 56/56 but the unread-response cancellation control failed. Diagnostic isolates the missing path: the unstarted native stream has a null controller, and ReadableStreamCancel returned without canceling the existing native source. Signal-abort timing now publishes; unread cancellation still did not terminate or publish.

Recovery 72e2c4e68 adds cancellation of that existing source without pulling/starting it, clears the lazy start, and preserves the real abort terminal milestones. Normal rebuild is queued. The first failing control and diagnostic remain retained; no pass credit or main publication yet.

8 days ago

The combined cancellation source 72e2c4e68 now builds normally (56/56) and passes all six focused Home checks: unread response cancellation and signal abort, the unchanged fetch-resource-timing assertion, connection timing, stream cancellation, inspector context events, and the withheld-body trace. Cancellation and abort each publish exactly one measured resource entry. The first repaired build's failed cancellation control remains retained.

The broader inspector/unchanged-original/native/ABI/report batch is queued behind a confirmed live machine validation job before main publication. Full resource-timing/body-size/protocol acceptance remains #873; collection/controller/console/backend gaps remain #885/#888/#428. No full-suite or all-platform parity claim.

8 days ago

Native fetch cancellation and inspector context events (2026-10-13) landed in source 85a079965 with verified evidence bef919e3f. Unread native streams cancel their existing source without starting/pulling; explicit response cancellation terminates HTTP; actual abort terminal milestones publish one resource entry. Signal abort and withheld-body cancellation controls pass, and the original 20ms timing assertion is unchanged. Context creation notifications now arrive before createContext returns, including callback-driven disconnect; retirement removes exposed/native handle maps. Normal build: 56/56. Entire published main tree is identical to the normally rebuilt validated recovery tree. Six focused controls, 31 native groups in total, seven Node/seven Home realm controls, 14 ABI tests/453 assertions and 32 report-validator tests pass; lint/format/docs checks pass. Twenty unchanged originals retain 53 passed cases, one failed expectation and 17 process checks, with zero skips/TODOs/filters/retries. All 64 report outcomes match, including twelve negatives; no #886 credit. Earlier merged timing failure and unread-cancel failure remain archived. Additional integration build is queued and uncredited. #873 retains full timing/protocol/body-size policy; #885/#888/#428 retain VM collection, console/controller roots and full backend/retirement/teardown. Full Bun suite and Release/ASAN/Linux/Windows remain incomplete.

Source, initial context-event evidence, merged-main failure evidence and final cancellation evidence are all preserved on origin/main. Native retirement completion remains unproven because general VM collection still fails; map cleanup is an implemented increment, not a lifetime acceptance claim.

Sign in to comment on this issue.