We rewrote the Ghostty GTK application 🔥 Горячее 💬 Длинная дискуссия
Ghostty GTK-часть переписана с нуля
Проект завершён: Linux/BSD-версия теперь полностью использует GObject из Zig и проверена Valgrind.
Что изменилось
- Zig-структуры обёрнуты в GObject; память управляется счётчиками ссылок.
- При обновлении конфига старый объект освобождается автоматически, когда исчезают ссылки.
- Появились сигналы, свойства, действия GTK и современные UI-файлы Blueprint.
- Новые виджеты добавляются быстрее (анимированная рамка, вкладки в заголовке и т.д.).
Valgrind Каждый коммит прогонялся под Valgrind.
- Потребовался большой suppression-файл (в основном GTK/драйверы).
- Найдены: утечка и неопределённое обращение в Zig-коде, ошибка
WeakRef
в GTK, которые иначе вызывали редкие краши.
Комментарии (194)
- Ghostty переписывает GUI на GTK/Zig, столкнувшись с проблемами GObject и управления памятью.
- Участники обсуждают, что GTK навязывает свою ООП-модель и счётчики ссылок, что сложно сочетать с Zig/Rust.
- Некоторые считают GTK не «родной» на Linux и предлагают Vala, Qt или собственный UI.
- Пользователи жалуются на баги прокрутки, копирования, nano и отсутствие поиска.
- Автор признаёт выбор GTK компромиссом ради кроссплатформенности и «родного» вида.