Part of #1677. Blocked by #1681 — do not start until it is merged to main and parity-green.
Problem
find-my-way (Fastify's router) JITs its matcher from routes registered via scattered .on('GET', '/path', handler) calls during app startup. Capturing that at build time means staging the app's init phase — fragile. The realistic answer is a Perry-native equivalent.
Scope
For JIT libraries where the codegen input is assembled by imperative runtime calls and build-time evaluation (Phase 3) is infeasible:
- Ship a Perry-native equivalent behind
compilePackages.
find-my-way radix-tree matcher first — native route registration + lookup, no runtime new Function.
Acceptance criteria
- A Fastify routing sample resolves a representative route table with the native matcher, with no runtime
new Function.
- Byte-for-byte parity vs node on route resolution (params, wildcards, constraints as scoped).
- Merged to
main, lint clean, parity-green.
Follow-up (after this phase ships)
Re-evaluate whether perry-jsruntime / embedded V8 can be dropped from default builds entirely, using the Phase 0 instrumentation to confirm nothing in the target workloads still routes to it.
Part of #1677. Blocked by #1681 — do not start until it is merged to
mainand parity-green.Problem
find-my-way(Fastify's router) JITs its matcher from routes registered via scattered.on('GET', '/path', handler)calls during app startup. Capturing that at build time means staging the app's init phase — fragile. The realistic answer is a Perry-native equivalent.Scope
For JIT libraries where the codegen input is assembled by imperative runtime calls and build-time evaluation (Phase 3) is infeasible:
compilePackages.find-my-wayradix-tree matcher first — native route registration + lookup, no runtimenew Function.Acceptance criteria
new Function.main, lint clean, parity-green.Follow-up (after this phase ships)
Re-evaluate whether
perry-jsruntime/ embedded V8 can be dropped from default builds entirely, using the Phase 0 instrumentation to confirm nothing in the target workloads still routes to it.