Strict-only. Hardened by default.
Cynic.
A JavaScript engine that has heard enough.
Primordials freeze before dependencies get ideas. Async, modules, proper tail calls, and WebAssembly all run. The Wasm engine is called Sarcasm, because of course. Ready for production? Eventually.
01 / Runtime contract
Strict mode isn't a mode.It's a worldview.
Cynic narrows JavaScript deliberately. The defaults suit embedded, server-side, and capability-oriented hosts. Compatibility choices stay visible instead of sneaking in through historical accident.
- 01
- No sloppy excuses
- Every script uses strict semantics. Sloppy mode and the Annex B compatibility layer are absent by design. Nobody misses the second set of assignment rules.
- 02
- Frozen before first contact
- Primordials freeze before user code runs.
--unhardenedis the explicit opt-out for code that still believes monkey-patching is a personality. - 03
- Permission, not ambience
- Runtime code construction and WebAssembly compilation are separate host grants:
--allow=evaland--allow=wasm. Ask clearly or get nothing. - 04
- Built here, bugs included
- Parser, bytecode, interpreter, garbage collector, regular expressions, JIT tiers, and Wasm runtime are implemented in Zig. The blame stays local.
02 / Execution
Three tiers.One place to crawl back to.
Hot code moves from bytecode interpretation into native tiers. Every optimized path can reconstruct exact Lantern state when reality disagrees with the optimizer. Reality tends to do that.
Register-bytecode interpreter and semantic reference. Slow enough to be honest.
Single-pass baseline compiler. Same frames, same unwinder, less waiting.
Feedback-driven SSA optimizer with checked execution and precise interpreter recovery.
Validated Wasm interpreter plus a baseline JIT, because one engine was apparently not enough.
03 / Progress
Here's how it's actually doing.
Cynic tracks conformance and performance in public. Each report says what was run, what counts, and where the engine still falls short.
04 / Compatibility boundary
Things Cynic won't do for you.
No sloppy mode
There is no second set of binding, assignment, and call semantics hiding behind a missing directive. Strict is the language here.
No Annex B
HTML comments, legacy octal forms, web-only built-ins, and related compatibility syntax stay outside. The web survived. Barely.
No ambient compilation
String evaluation and Wasm byte compilation require independent host permission. --allow=eval exists if you insist.
Run the engine