# От Terraform к Ghostty: Митчелл Хашимото о создании нового терминала на Zig

Источник: https://www.youtube.com/watch?v=586_BAMMOQ8
Канал: Backend Banter
Опубликовано: 17.03.2025

---

В новом выпуске подкаста Backend Banter сооснователь компании HashiCorp Митчелл Хашимото делится историей своего масштабного карьерного и технологического сдвига. Создатель Terraform и Vault рассказывает, как после десяти лет управления облачной инфраструктурой он вернулся к истокам низкоуровневого программирования и создал Ghostty — сверхбыстрый эмулятор терминала на языке Zig. Статья раскрывает путь проекта от домашнего хобби до громкого публичного релиза, анализирует неочевидные вызовы дистрибуции десктопного ПО в Linux и описывает прагматичную философию использования ИИ в современной разработке.

## 🏢 Истоки: эволюция основателя и возвращение к коду
[[JUMP:0:15]]

Митчелл Хашимото хорошо известен в ИТ-индустрии как человек, изменивший подход к управлению облачной инфраструктурой. Однако его карьерный путь внутри собственной компании развивался вопреки традиционным корпоративным шаблонам. Начав как CEO HashiCorp, спустя пять лет он перешел на позицию CTO, а затем сознательно выбрал роль рядового инженера (Individual Contributor), чтобы полностью сфокусироваться на написании кода. В конце 2023 года Хашимото окончательно покинул корпорацию. Размышляя о продуктовом наследии, Митчелл предполагает, что Terraform стал их самым массовым и популярным решением, охватившим множество отраслей, тогда как Vault оказал колоссальное влияние на индустрию, но остался более нишевым продуктом в сфере безопасности.

После ухода из HashiCorp Хашимото столкнулся с необходимостью найти новый ментальный вызов. Эмулятор терминала Ghostty родился не из рыночной боли или неудовлетворенности существующими инструментами, а из чистого желания учиться. Митчелл признается, что лучшим способом понять внутреннее устройство любой сложной технологии для него является создание ее упрощенной, пусть даже изначально несовершенной версии. Проведя более десяти лет в экосистеме языка Go, распределенных систем и серверного ПО, он захотел переключиться на кардинально противоположные задачи: десктопную разработку, прямое программирование GPU и низкоуровневые концепции управления памятью.

## 🚀 Переломные моменты: выбор Zig и отказ от мейнстрима
[[JUMP:11:40]]

Изначально Ghostty развивался как фоновый пет-проект. Переломным моментом, превратившим игрушку в серьезный рабочий инструмент, стало достижение базовой функциональности: как только эмулятор смог стабильно и без ошибок запускать текстовый редактор Vim, Хашимото полностью перевел на него свою ежедневную работу. Закрытое бета-тестирование среди друзей показало неожиданно высокую вовлеченность, а официальный публичный релиз состоялся 26 декабря 2024 года.

Выбор технологического стека стал ключевым этапом формирования проекта. Использование Go исключалось сразу из-за наличия сборщика мусора (garbage collection) и активного рантайма, которые мешают тонкой оптимизации производительности интерфейса. Гораздо более примечательным стал осознанный отказ от сверхпопулярного Rust в пользу относительно молодого языка Zig. Хашимото детально объясняет свою позицию, подчеркивая, что его критика Rust лежит скорее в эмоциональной и эстетической плоскости, нежели в рациональной:

* Написание и чтение кода на Rust лично у него «не вызывало радости», что критически важно для авторского проекта.
* Митчелл отмечает так называемую «проблему Scala» в экосистеме Rust: из-за злоупотребления мощными кастомными макросами метапрограммирования разные проекты часто выглядят так, будто они написаны на совершенно разных языках.
* Существует глубокое культурное различие: по наблюдениям Хашимото, сообщество Rust пропагандирует идею тотального переписывания мира с нуля, в то время как он сам предпочитает прагматично использовать проверенные временем C-библиотеки.

Zig предложил инженеру идеальный баланс. По мнению Хашимото, этот язык сохраняет простоту и предсказуемость C, но полностью избавляет от его главных исторических проблем — в частности, от хаоса в сборочных системах. Среди фундаментальных преимуществ Zig Митчелл выделяет бесшовную интероперабельность с C без накладных расходов на конвертацию форматов данных, а также мощную систему кросс-компиляции системного уровня, не уступающую по удобству инструментарию Go.

## 🐛 Ошибки и вызовы: суровая реальность Linux-дистрибутивов
[[JUMP:31:36]]

Переход от создания облачных SaaS-платформ к дистрибуции локального десктопного ПО вскрыл пласт проблем, с которыми серверные разработчики практически не сталкиваются. Главным вызовом для Ghostty стало стремление автора быть «добропорядочным гражданином» в мире Linux. Чтобы попасть в официальные репозитории таких консервативных дистрибутивов, как Ubuntu или Debian, приложение обязано использовать динамическую линковку библиотек вместо привычной для Go-сообщества статической сборки «всё в одном бинарнике».

Это повлекло за собой серьезные технические и организационные компромиссы:

* **Фрагментация версий зависимостей:** Стабильный Debian поставляет графические библиотеки версии 1.2, Ubuntu — 1.5, в то время как самый актуальный апстрим находится на отметке 1.8. Разработчикам Ghostty приходится внедрять в код огромное количество рантайм-проверок, чтобы программа не падала на старых системных библиотеках пятилетней давности.
* **Паранойя безопасности мейнтейнеров:** Политика Debian требует полной воспроизводимости сборки (bootstrapping) компилятора из исходников, написанных вручную, и исключает использование любых бинарных блобов. Так как современный компилятор Zig написан на самом себе, разработчики языка используют компиляцию минимального ядра в WebAssembly (WASM) для сборки полноценного компилятора. Однако для строгих правил дистрибутивов этот WASM-файл выглядит как непрозрачный закрытый блок, что временно блокирует Ghostty путь в стандартные пакетные менеджеры.
* **Замедление циклов обновления:** Если в macOS исправление критического бага доставляется пользователям мгновенно через встроенный автоапдейтер (ценой $100 в год за лицензию разработчика Apple), то в стабильных репозиториях Linux этот процесс может занимать от нескольких часов до нескольких лет. Хашимото признается, что это заставило его перестроить мышление: отказаться от философии «ship fast and break things» и испытывать жесткий стресс перед каждым замораживанием кода для LTS-релизов.

## 💡 Уроки: декомпозиция идентичности инженера и mail-сервер изнутри
[[JUMP:20:47]]

На основе своего опыта Митчелл формулирует важный манифест против привязки профессиональной идентичности инженера к конкретному языку программирования. Он считает деструктивной практику называть себя исключительно «Go-разработчиком» или «Rust-инженером». По мнению Хашимото, при наличии прочной базы компьютерных наук — глубокого понимания ограничений CPU, оперативной памяти, дискового ввода-вывода и принципов проектирования API — освоение любого нового синтаксиса до продуктивного уровня должно занимать не более одной-двух недель.

В качестве примера своей многолетней страсти к экспериментам ради понимания базовых протоколов Митчелл приводит личную историю. Задолго до Ghostty он написал с нуля собственный почтовый SMTP-сервер, используя исключительно стандартную библиотеку Go и сетевые сокеты TCP. Рискуя потерять важную корреспонденцию, он на 18 месяцев полностью перевел обработку всей своей входящей личной почты на этот самописный сервер. Этот эксперимент завершился успешно и принес инженеру колоссальное профессиональное удовольствие от осознания того, что он ежедневно использует инфраструктурный стек, созданный собственными руками от первого до последнего байта.

## 🔮 Текущий этап: архитектурное разделение и будущее текстовых платформ
[[JUMP:6:10]]

На текущем этапе Ghostty представляет собой не просто монолитное приложение, а гибкую архитектурную экосистему. Сердцем проекта является библиотека `libghostty`, написанная на Zig и имеющая C-совместимый интерфейс. Она полностью инкапсулирует в себе сложнейшую логику эмуляции, парсинг управляющих последовательностей и рендеринг текста. Официальные приложения для macOS (написанное на Swift с использованием AppKit и SwiftUI) и Linux (на базе GTK, Wayland и X11) — это, по сути, лишь высокотехнологичные демонстрации возможностей `libghostty`. Хашимото рассчитывает, что в будущем современные редакторы кода (такие как Zed или VS Code) смогут встраивать `libghostty` в качестве движка встроенного терминала.

Стратегия развития Ghostty разделена на две фазы:

1.  **Фаза 1 (Текущая):** Стать лучшим из существующих классических эмуляторов на рынке. Фокус смещен на чистую производительность интерфейса и безупречную поддержку современных стандартов. Ярким примером скрытого качества Митчелл называет полноценный 24-битный цвет: стандартный терминал macOS до сих пор ограничен 256 цветами, из-за чего консольные утилиты после перехода на Ghostty визуально преображаются.
2.  **Фаза 2 (Будущая):** Превратить терминал в современную платформу для интерактивных текстовых приложений. Хашимото утверждает, что текстовая среда незаслуженно стагнирует из-за привязки к стандартам сорокалетней давности. Его инновационная дорожная карта включает расширение протоколов терминала для поддержки нативных многопроцессных вкладок, генерации полноценных графических контекстных меню операционной системы вместо псевдографики и даже интеграцию легковесного движка WebKit для отображения веб-компонентов или документации прямо внутри панелей терминала.

## 🤖 Симбиоз с AI: текстовый интерфейс как идеальная среда для агентов
[[JUMP:58:47]]

В завершение дискуссии Хашимото затрагивает тему искусственного интеллекта. Собеседники сошлись во мнении, что наблюдаемый сегодня ренессанс текстовых интерфейсов напрямую связан с развитием больших языковых моделей, для которых структурированный текст является естественной и наиболее эффективной средой обитания. Программируемый, модульный терминал вроде Ghostty может стать ключевым элементом («руками и глазами») для автономных AI-агентов будущего, позволяя им запускать тестовые циклы, компилировать код и итерировать программные решения без необходимости сложной и нестабильной симуляции движений мыши по графическому экрану.

Свой личный подход к ИИ Митчелл описывает как строго прагматичный. В повседневной работе он использует связку из расширения GitHub Co-pilot в редакторе Neovim и подписки на ChatGPT Pro. Нейросети существенно сократили количество его поисковых запросов в Google. Хашимото делится показательным примером: перед релизом версии 1.0 ему потребовалось устранить неприятное мерцание интерфейса при программном перетаскивании вкладок в macOS. Не зная глубоко специфики внутренней работы AppKit, он отправил скриншот багов и описание симптомов в ChatGPT, который мгновенно выдал четыре точные строки кода на Swift, указавшие на нужные системные API. Вместо нескольких дней рутинного чтения документации Apple сложнейшая задача кастомизации иконок и логики рендеринга была успешно решена за два часа. Инструмент сработал как высокоэффективный «стероиды для автодополнения», кардинально ускорив вывод Ghostty на финишную прямую.