Skip to content

#800 radar: feature-gated APIs (http/net/https/zlib/crypto/async_hooks) false compile-fail — link ext crates so parity is measurable #1778

Description

@proggeramlug

Summary (radar methodology — not a parity bug, but blocks measuring parity)

The #800 node-core radar runs perry compile with PERRY_NO_AUTO_OPTIMIZE=1 (a per-compile speed hack) against a fixed-feature .a. But Perry's http/net/https/ws servers, zlib, crypto, and async_hooks live in perry-ext-* crates / cargo features that are only built + added to the link line by the auto-optimize path. So those tests compile fine but fail to link (Undefined symbols: _js_node_http_create_server, _js_net_create_server, ...) and get bucketed as compile-fail.

Impact

In the full sweep this is the dominant compile-fail cause — ~570 tests across:

  • http (237), net (99), https (41) — server symbols in perry-ext-http-server etc.
  • zlib (50), crypto (43), async_hooks (28), process (22), stream (14), child_process (12) — feature-gated stdlib.

These are not real gaps — Perry implements these APIs. The radar just isn't linking them, so http=4% / https=0% / net=8% / crypto=35% / zlib=19% / async_hooks=34% are all understated.

Fix options

  1. Pre-build a "kitchen-sink" runtime+stdlib + all perry-ext-* libs once, and have the radar link that full surface (keeps the fast PERRY_NO_AUTO_OPTIMIZE path).
  2. Or add a --auto-optimize mode to scripts/node_core_subset.py that drops PERRY_NO_AUTO_OPTIMIZE so the ext-crate link path runs (slower; rebuilds per feature-set).

Until fixed, exclude these compile-fails from the parity denominator (raw 12.5% → ~17.6% excluding the 377 network ones; higher still once the others are counted).

Context: full #800 radar sweep, perry 0.5.1028.

Metadata

Metadata

Assignees

No one assigned

    Labels

    parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystem

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions