What's a terminal? Why is it being emulated? On this week's episode, Matt and Kris are joined by Mitchell Hashimoto to discuss his newest project Ghostty, the Zig programming language, thoughts and feelings about Go, and more. As always, catch some Unpopular Opinions at the end of the episode.
Want to hear even more from Mitchell? This episode features bonus content for our Fallthrough Fan and above subscribers! Go to https://fallthrough.fm/subscribe to become a supporter and enjoy bonus content and higher quality audio today, and additional perks and benefits when we add them in the future.
Thanks for tuning in and happy viewing!
Notes & Links:
- How to reset the terminal in Ghostty (from 04:41)
- Ghostty reset keybinding: https://ghostty.org/docs/config/keybind/reference#reset
- Sunsetting Cursed Terminal Emulation (from 18:22): https://arcan-fe.com/2025/01/27/sunsetting-cursed-terminal-emulation/
- XTGETTCAP in Ghostty (from 23:31): https://mitchellh.com/writing/ghostty-devlog-004#xtgettcap-563
- ncurses terminfo database (from 25:14): https://invisible-island.net/ncurses/terminfo.ti.html
- Gnome VTE (from 36:55): https://gitlab.gnome.org/GNOME/vte
- Mongoose embedded web server (from 52:28): https://mongoose.ws
- libuv (from 52:40): https://libuv.org
- freetype (from 52:44): http://freetype.org
- HarfBuzz (from 52:45): https://harfbuzz.github.io
- Pixman (from 52:48): https://www.pixman.org
- libxev (from 52:58): https://github.com/mitchellh/libxev
- z2d (from 53:01): https://github.com/vancluever/z2d
- Scripto Continua (from 01:25:26): https://en.wikipedia.org/wiki/Scriptio_continua
Chapters:
00:00:00 - Intro
00:00:06 - Become a subscriber: https://fallthrough.fm/subscribe
00:00:46 - What is Ghostty?
00:02:45 - Consequences of cat'ing binaries
00:03:44 - Ghostty's journey to release
00:05:58 - Ghostty's team structure
00:07:35 - What terminal are we using?
00:08:15 - Ghostty's Dev Tools
00:14:12 - What are escape sequences?
00:16:20 - What are terminal emulators emulating?
00:19:25 - The ossification of SSH & Terminfo
00:27:16 - Ghostty Terminfo workaround
00:28:31 - Shell in the Ghostty
00:34:50 - libghostty
00:39:24 - The most difficult part in implementing Ghostty
00:43:13 - Why Zig?
00:47:23 - How to build with Zig
00:56:42 - The Zig Standard Library
01:00:08 - Social feedback creates bleh languages
01:04:02 - Go's place in the modern world
01:13:07 - On handling feedback
01:20:57 - Join the Ghostty development community
01:22:46 - Mitchell's thoughts on GitHub (subscriber only)
01:24:12 - Mitchell's Unpop
01:25:30 - Matt's Unpop
01:27:47 - Kris' Duolingo Streak
01:30:38 - Kris' Unpop
01:34:05 - Outro
Host: @sudomateo
Co-Host: @skriptble
Guest: Mitchell Hashimoto
Beats by Breakmaster Cylinder (https://www.breakmastercylinder.com)
Socials:
Website - https://fallthrough.fm
BlueSky - https://bsky.app/profile/fallthroughfm.bsky.social
Threads - https://threads.net/@fallthroughfm
X/Twitter - https://x.com/fallthroughfm
LinkedIn - https://linkedin.com/company/fallthrough
Instagram - https://instagram.com/fallthroughfm