This repo is a small native TypeScript compiler zoo for a shared set of Effect-based Node programs.
The rule for this repo is that compilers are tested against the same blessed source files:
src/effect/logger.tssrc/effect/forking.tssrc/effect/web.ts
| Category | Blessed source | Node | Perry | Porffor |
|---|---|---|---|---|
| logger | src/effect/logger.ts |
npm run node:logger |
npm run compile:perry:logger |
npm run compile:porffor:logger |
| forking | src/effect/forking.ts |
npm run node:forking |
npm run compile:perry:forking |
npm run compile:porffor:forking |
| web | src/effect/web.ts |
npm run node:web |
npm run compile:perry:web |
npm run compile:porffor:web |
npm run typecheck
npm run smoke:nodeThe web server target is long-running:
PORT=3000 npm run node:web
curl -i http://127.0.0.1:3000/
curl -i http://127.0.0.1:3000/api/healthPerry and Porffor intentionally target the same Effect sources. A failure is useful data and should be recorded with the command and error.
Perry:
npm run compile:perry:logger
npm run compile:perry:forking
npm run compile:perry:webPorffor:
npm run compile:porffor:logger
npm run compile:porffor:forking
npm run compile:porffor:webGenerated binaries are written to dist/ and are intentionally ignored by git.
- Node/tsx smoke checks pass for the shared Effect logger and forking targets.
- Node/tsx web smoke passes for the shared Effect web target at
/and/api/health. - Perry native compilation has worked for the Effect web target, but the resulting web binary starts without opening a listening socket on this machine.
- Perry native compilation for the logger target previously stalled after the Perry runtime rebuild with no output binary. Keep this as a focused runtime smoke case.
- Porffor is pointed at the same Effect sources with
--module. npm run porffor:loggercurrently fails withError: porffor: no generation for ImportDeclaration.npm run compile:porffor:loggerandnpm run compile:porffor:webcurrently produce binaries, but those binaries exit withUncaught.npm run compile:porffor:forkingcurrently fails withTypeError: Cannot read properties of undefined (reading 'startsWith').