Split out from #1021. The async-lowering architectural problem #1021 was opened for is fixed (#1041); express/hono/fastify in-process self-fetch all pass on v0.5.1152. The remaining nestjs fixture is a different problem — a native-link wall, not async lowering — so it gets its own issue.
Symptom
tests/release/packages/nestjs-hello now resolves deps and compiles past the earlier CommonJS/buffer walls, reaches native linking, and fails on undefined default-wrapper symbols for modules that are import barrels / type-only / interface re-export surfaces:
undefined reference to `__perry_wrap_perry_fn_node_modules_rxjs_src_index_ts__default'
undefined reference to `perry_fn_node_modules_rxjs_src_index_ts__default'
undefined reference to `perry_fn_node_modules_rxjs_src_operators_index_ts__default'
undefined reference to `perry_fn_node_modules_uid_dist_index_mjs__default'
undefined reference to `__perry_wrap_perry_fn_node_modules__nestjs_core_router_interfaces_routes_interface_js__default'
undefined reference to `__perry_wrap_perry_fn_node_modules__nestjs_platform_express_interfaces_nest_express_application_interface_js__default'
Call sites emit default-call / default-wrapper references for these modules, but no object file defines the matching symbols because the module is a barrel/type-only re-export with no concrete default function definition.
What's needed
Make default-import / default-call lowering either:
- follow re-exported module surfaces back to the concrete default binding, or
- avoid emitting callable default references for type-only / interface barrels.
Reproduce
cd tests/release/packages/nestjs-hello
npm install
../../../../target/release/perry entry.ts -o ./out
The fixture's fixture.sh reports SKIP while WALLS.md is present, so the release sweep records the gap without going red. See tests/release/packages/nestjs-hello/WALLS.md (Wall 1) for the running provenance.
Prior work
Split out from #1021. The async-lowering architectural problem #1021 was opened for is fixed (#1041); express/hono/fastify in-process self-fetch all pass on v0.5.1152. The remaining nestjs fixture is a different problem — a native-link wall, not async lowering — so it gets its own issue.
Symptom
tests/release/packages/nestjs-hellonow resolves deps and compiles past the earlier CommonJS/buffer walls, reaches native linking, and fails on undefined default-wrapper symbols for modules that are import barrels / type-only / interface re-export surfaces:Call sites emit default-call / default-wrapper references for these modules, but no object file defines the matching symbols because the module is a barrel/type-only re-export with no concrete default function definition.
What's needed
Make default-import / default-call lowering either:
Reproduce
cd tests/release/packages/nestjs-hello npm install ../../../../target/release/perry entry.ts -o ./outThe fixture's
fixture.shreports SKIP whileWALLS.mdis present, so the release sweep records the gap without going red. Seetests/release/packages/nestjs-hello/WALLS.md(Wall 1) for the running provenance.Prior work