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

Backend Banter 20,2 тыс. 1 ч 4 мин 7 мин 17.03.2025
Главное

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

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

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

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

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

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

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

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

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

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

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

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

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

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

🔮 Текущий этап: архитектурное разделение и будущее текстовых платформ 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: текстовый интерфейс как идеальная среда для агентов 58:47

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

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

💬 Цитаты

«Я считаю, что привязывать свою идентичность к одному языку программирования — это плохая идея для инженера.»

Митчелл Хашимото 20:47

«Моя цель с Ghostty 1.0 — стать лучшим из существующих эмуляторов терминала, не усложняя интерфейс лишней графикой.»

Митчелл Хашимото 52:29
👥 Спикеры
🔗 Упомянутые сайты и проекты
📖 Термины
libghostty
Кроссплатформенное C-совместимое ядро эмулятора терминала, отвечающее за логику симуляции и рендеринг.
Бутстрэппинг (Bootstrapping)
Процесс сборки компилятора из исходного кода с помощью предыдущей доверенной версии того же компилятора.
Динамическая линковка
Метод сборки ПО, при котором внешние библиотеки подключаются к программе в момент запуска, а не вшиваются внутрь исполняемого файла.
📊 Цифры
🗓 Хронология
  1. 2019 год Период активного использования Terraform ведущим подкаста в качестве Go-разработчика.
  2. Конец 2023 года Митчелл Хашимото полностью прекращает работу в HashiCorp и покидает компанию.
  3. 26 декабря 2024 года Официальный публичный релиз эмулятора терминала Ghostty версии 1.0.
⚖️ Другая сторона
Технологии и IT Митчелл Хашимото Ghostty Zig HashiCorp Terraform