Repository navigation
Expand Workers Node compatibility with X509 and native TLS upgrades - #71
Merged
Merged
Conversation
rdlabo
marked this pull request as ready for review
October 23, 2026 04:25
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Workers applications using Node APIs encounter missing exports, incomplete crypto/filesystem behavior, and no authenticated TLS upgrade for an existing native socket. This development checkpoint expands those implementations and adds reproducible comparison and native acceptance runners against workerd 1.20261012.1, compatibility date 2026-10-17.
The maintainer explicitly authorized merging this checkpoint after CI passed. This is a PR-specific exception to CONTRIBUTING's whole-module merge gate. No module is newly certified complete by this PR, and this authorization does not establish release acceptance or waive the gate for other changes.
Changes
/tmp, module/HTTP helpers, and stream cancellation fixes.Validation
Runtime evidence for commit
2467e00125fbab6a049fe185912aa82d4a966303(subsequent commits update documentation, type declarations, test harness separation, and CI dependency installation; SDK runtime behavior is unchanged):5286e982eee18c9d650c61fd9bd56531d91b4066627f6c7b352709b51e6f9937.Reproduce with
npm test,npm run typecheck,npm run format:check,npm run test:node-expansion --prefix demo,npm run test:node-completion --prefix demo, andnpm run test:package. Native preparation and commands are documented beside the runners. Generated local evidence is retained underartifacts/validation/x509-starttls/; it is not a tracked repository artifact.Remaining compatibility work
The inventory covers 70 modules: 64 surface-aligned, six with surface gaps, and zero certified for whole-module behavior. Surface alignment and passing selected profiles do not establish module completeness. Additional crypto options/error contracts, filesystem descriptor/cross-volume behavior, codec edge cases and inherited gzip/deflate behavior, and full TLS/HTTP state contracts remain open. Custom Duplex TLS wrapping is unsupported. X509 key checks and name options preserve the documented pinned Workers restrictions. The backend is not certified FIPS.
The maintainer's merge authorization does not establish complete Node compatibility. Release acceptance remains separate, and the limitations above remain in effect.
Independent review cycle
Separate manager and third-party acceptance reviewers inspected the final branch and independently checked the recorded package hash, native reports and test evidence. The manager identified a stale TLS README statement; commit
a101b03fa69514db9a7a357f7be03d9794a7e26bcorrects it, and both reviewers rechecked the correction. Typecheck and format were rerun successfully; the acceptance reviewer additionally ran 12 transport tests successfully.Both reviewers approve draft submission, with zero outstanding required corrections in this review. They do not approve whole-module acceptance, merge or release. Native results above were independently checked from complete stored reports, not rerun on simulators during the review. Earlier review cycles also corrected premature plaintext TLS writes, crypto constructor instances, DH validation, RSA/OAEP interoperability, and Hmac key encoding.
Local review records:
artifacts/reviews/node-completion/manager-round-4.mdandacceptance-round-4.md(generated local artifacts). Their conclusions and acceptance limits are reproduced here so this PR does not depend on access to those local files.CI verification after fixes
Final head
2b836878fb85b7a77bbb32217c24b6cdd0c505e6passed Compatibility, including aggregate CI, native iOS/Android embedding, and all three CodeQL analyses. No checks are failing or pending.The CI follow-up adds a directly resolvable crypto Wasm declaration, separates browser-only VFS/module setup from the real-workerd test entry without removing cases, and directs APT (including the hosted runner mirror list) to Ubuntu's HTTPS archive to prevent dependency-download timeouts. Test requirements and timeout limits remain unchanged. Local regression also passed the Workers Node contract, 66 Chromium/WebKit runtime tests, eight browser tests, and demo typechecking.