Compilers, Runtimes, and Funtimes | Ep 5
This week Kamran and Erik try to dissect the complex landscape of JavaScript and TypeScript compilers, transpilers, interpreters, engines, and runtimes (oh my!). What are the tools, what are they used for, why is the world so complicated, and what should you care about as a TS developer?
Week of February 3, 2025
- (04:55) - This Week in TypeScript: Node.js Corepack Issue Affects Users
- (06:16) - This Week in TypeScript: Vite and Vitest Security Vulnerabilities
- (07:18) - This Week in TypeScript: 2ality on Enum Patterns
- (08:51) - This Week in TypeScript: 2ality's Tutorial on Publishing ESM Packages with TypeScript
- (09:53) - This Week in TypeScript: Should We Move On to ESM-Only?
- (13:13) - This Week in TypeScript: HTTP2 Support Across Node.js, Bun, and Deno... Or Lack Thereof
- (14:14) - This Week in TypeScript: Nx Has Some New TypeScript Monorepo Guides
- (14:38) - This Week in TypeScript: Zero to Mastery Shares a TypeScript Cheat Sheet
- (15:09) - This Week in TypeScript: TS Comment Directives
- (17:21) - Deep Dive: Compilers and Runtimes
- (19:32) - Deep Dive: What's the Difference Between a Compiler and Transpiler?
- (21:11) - Deep Dive: Why Do We Need a TypeScript Compiler?
- (22:02) - Deep Dive: The TypeScript Compiler (TSC)
- (23:38) - Deep Dive: What's an Interpreter?
- (25:06) - Deep Dive: What's an Engine?
- (27:52) - Deep Dive: Recap So Far
- (28:31) - Deep Dive: Babel, the OG Transpiler
- (29:23) - Deep Dive: What is SWC?
- (31:12) - Deep Dive: Using the verbatimModuleSyntax TSConfig Flag
- (32:35) - Deep Dive: What is esbuild?
- (34:23) - Deep Dive: Okay, What's the Difference Between SWC and esbuild?
- (35:51) - Deep Dive: So, What is oxc Then??
- (37:03) - Deep Dive: Erik Says checker.ts is "Gigundous" (???)
- (37:58) - Deep Dive: Wait, oxc Can Output Type Declarations?!
- (39:34) - Deep Dive: Writing Your TypeScript So It Compiles Faster
- (41:10) - Deep Dive: What Does deno compile Do?
- (42:12) - Deep Dive: What Are The Different JS/TS Runtimes?
- (43:43) - Deep Dive: What Differentiates Bun from Deno?
- (45:26) - Deep Dive: Serverless JavaScript Runtimes (workerd, Vercel Edge)
- (46:48) - Deep Dive: Writing Isomorphic JavaScript or TypeScript
- (47:44) - Deep Dive: Who Will Stop This Madness?
- (50:11) - Deep Dive: Should Microsoft "Fix" TSC?
- (53:43) - Deep Dive: WHAT DOES ALL THIS MEAN?
- (57:36) - Secrets of the Handbook: Named Tuple Values
- (01:00:59) - Cool Stuff: Node ES Language Support Matrix
- (01:01:46) - Cool Stuff: VSCode Pretty TS Error Extension
Week of February 3, 2025
- 📌 PSA: Node.js LTS corepack registry key signing issue breaks people's CI/CD pipelines and npm/pnpm installations. If you are affected, check this issue out! It’s fixed now and backported to Node 20.18.3.
- 📌 PSA: There was a remote code execution vulnerability in Vitest, and a Vite dev server vulnerability. Update to the latest patch versions!
Community Highlights
- Blog Post: TypeScript enums: use cases and alternatives (Axel Rauschmayer)
- Blog Post: Tutorial: publishing ESM-based npm packages with TypeScript (Axel Rauschmayer)
- Blog Post: Move on to ESM-only (Anthony Fu)
- Blog Post: Fetch and HTTP/2 support in Node.js, Bun and Deno (George Haidar)
- Learning: Nx is doing cool stuff for TS monorepo setups and has a whole series on it
- Cheatsheet: Bookmark this TypeScript Cheat Sheet by Zero to Mastery (PDF version available)
- Book: Joshua Goldberg has a new Learning TypeScript book and shares a tip about TS comments
Compilers and Runtimes Deep Dive
- The JavaScript Runtime Environment (Jamie Uttariello)
- Wikipedia: ECMAScript Engines
- V8's interpreter, Ignition
- Hermes engine for React Native
- TSC, the official Microsoft TypeScript compiler
- SWC, a Rust-based compiler for JavaScript and TypeScript
- esbuild, a Go-based compiler for JavaScript and TypeScript
- oxc, a (new) Rust-based compiler by the creators of Vite
- Deno compile for creating binary executables
- Bun runtime, a drop-in replacement for Node
- workerd runtime by Cloudflare
- Vercel Edge Runtime
- A list of WebAssembly (WASM) runtimes
- WinterTC, a committee for unifying server backend runtime APIs
Links
- TypeScript 4.0's labeled tuple elements (playground link)
- Wondering what version of Node supports what ES features and syntax? https://node.green/
- Replace those ugly TS errors in VSCode with something more pretty
Sponsored by Excalibur.js
Excalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.
Music
Seahorse Dreams by Kubbi (Spotify)
Creators and Guests

Host
Erik Onarheim
Hi, my name is Erik 👋 I'm a software developer in Minneapolis ⛄I created a game engine for the web called Excalibur 🗡

Host
Kamran Ayub
Solopreneur, speaker, and Pluralsight author. Gamer dad. Dork. Corporate quitter bringing back summers off 🌞👉 Building a Goodreads for gamers: ktomg.com👉 React/Next.js courses: bit.ly/KamranOnPluralsight👉 Build your own safety net: kamranicus.com/money
