- libghostty, herhangi bir uygulamada kullanılabilecek bir gömülü terminal emülatörü kütüphanesi olarak geliştiriliyor
- İlk bileşen olan libghostty-vt, ayrıştırma ve durum yönetimi için optimize edilmiş, bağımlılıksız bir API
- Terminal emülasyonunun karmaşıklığı ve tekrar eden uygulama sorunlarını çözmek için ortaya çıktı; çapraz platform ve yüksek taşınabilirlik hedefliyor
- İleride klavye girdi işleme, GPU render etme, çeşitli framework entegrasyonları gibi ek kütüphane genişlemeleri planlanıyor
- Şu anda Zig API test edilebiliyor; C API de yakında yayımlanacak ve kullanıcı geri bildirimleri aktif biçimde dinleniyor
Giriş ve libghostty'nin geliştirilme arka planı
- libghostty, tüm uygulamalara modern, hızlı ve eksiksiz terminal emülatörü özelliklerini gömebilmek için tasarlanmış bir kütüphane projesi
- Bugün çok sayıda program ya terminal emülatörünü kendi yöntemiyle doğrudan uyguluyor ya da terminal işlevlerinin çok sınırlı bir biçimini ayrıca geliştiriyor
- Bu şekilde ayrı ayrı geliştirilen terminal emülasyonu implementasyonları çoğu zaman ad-hoc, tek seferlik kod tabanları oluyor; istisna durumları ve karmaşıklığı yeterince ele alamadıkları için sık sık eksiklik, hata ve performans düşüşü sorunları yaşıyorlar
- Çoğu geliştirici açısından terminal emülasyonu uygulamak temel iş alanı olmadığından, ortak ve yeniden kullanılabilir bir çözüm ihtiyacı bulunuyor
- libghostty, minimum bağımlılıkla tasarlanmış bir çapraz platform C API sunuyor; böylece çeşitli uygulamalar güvenilir ve hızlı terminal emülasyonu işlevlerinden yararlanabiliyor
libghostty-vt: ilk kütüphanenin başlangıcı
libghostty-vt, hiç bağımlılığı olmayan (hatta libc bile gerektirmeyen) bir kütüphane; terminal dizilerini ayrıştırma ile imleç konumu, stil, satır kaydırma gibi terminal durumunu koruma işlevleri için API sunuyor
- Bu terminal dizisi ayrıştırma işi yalnızca terminal emülatörünün çekirdek özelliği değil; aynı zamanda basit stil çıktısı gerektiren sitelerde de (GitHub Actions, Vercel build logları vb.) zorunlu bir rol oynuyor
- Terminal protokolü ayrıştırma yüzeyde basit görünse de uygulama zorluğu çok yüksek; gerçekten de Jediterm gibi çeşitli implementasyonlarda bazı dizilerin işlenmesinde sorun görülen örnekler var
- Bazı geliştiriciler yalnızca ANSI dizilerini basitçe ayrıştırmakla yetiniyor, ancak karmaşık stil işleme gereksinimleri (çeşitli RGB gösterim biçimleri vb.) ve tam uyumluluk beklentisi nedeniyle gelişmiş bir parser şart
- libghostty-vt, Ghostty'nin doğrulanmış çekirdeğinden çıkarıldı; SIMD optimize ayrıştırma, güçlü Unicode desteği, gelişmiş bellek yapısı, geniş protokol uyumluluğu (Kitty Graphics, Tmux Control Mode vb.) sunuyor
- Tek dosyalık sıfır bağımlılıklı C API olarak sağlanıyor; bu sayede tüm genel amaçlı diller ve ortamlara kolayca gömülebiliyor. Öncelikli destek macOS ve Linux (x86_64, aarch64) için; zamanla Windows, gömülü sistemler ve WASM gibi alanlara genişlemesi planlanıyor
- Ghostty GUI'den daha kapsayıcı bir hedef platform desteği mümkün
Uzun vadede genişleyecek libghostty
- libghostty-vt sonrasında girdi işleme (klavye kodlama vb.), GPU render etme (OpenGL, Metal), GTK widget'ı ve Swift framework'ü gibi ek işlevler sunan kütüphane ailesi peş peşe yayımlanacak
- Bu işlevsel genişlemeler modül bazında yapılandırılacak; böylece bağımlılıklar, kod boyutu ve bakım karmaşıklığı en aza indirilecek
libghostty-vt geliştirme durumu
libghostty-vtyi dışarıya bir Zig modülü olarak açan PR (pull request) yakın zamanda merge edildi; Zig geliştiricileri hemen kullanabiliyor
- C API'nin tanımlama çalışmaları sürüyor ve yakında test amaçlı sunulacak (çekirdek mantık zaten yıllardır Ghostty içinde kullanılan, doğrulanmış bir kaynak)
- Ghostty macOS uygulaması da dahili kullanım için C API kullanıyor, ancak mevcut dahili header'lar dışa açık yayın ve genel kullanım için uygun olmadığından tamamen yeni bir C API tasarlanıyor
- libghostty, Ghostty uygulamasından ayrı sürüm yönetimi yapıyor; şu anda alfa aşamasında ve erken benimseme ile dil binding geliştiricilerinin katılımı bekleniyor
- İlk etiketli sürümün 6 ay içinde çıkarılması hedefleniyor
Kullanıcı geri bildirimi çağrısı
- Şu anda API tasarım aşaması olduğu için gerçek kullanıcı görüşleri ve geri bildirimleri çok kritik
- Ghostty dışında da çeşitli topluluk üyeleri libghostty tabanlı projeler geliştiriyor ve daha fazla kullanıcının katılması umuluyor
- Projeyi kullanma fikirleriniz veya ihtiyaçlarınız varsa Ghostty Discord ya da e-posta üzerinden geliştiriciyle doğrudan iletişim kurulabiliyor
- libghostty şu anda alfa sürümünde; API henüz kararlı değil, ancak çekirdek mantık gerçek kullanımda kanıtlanmış yüksek bir kararlılık sunuyor
Gelecek görünümü ve etkisi
- Ghostty uygulamasının kararlılığa ulaşması sayesinde artık libghostty gibi daha büyük bir hedefe ilerlemek mümkün hale geldi
- libghostty çeşitli uygulamalarda yaygın biçimde kullanılırsa, Ghostty tek bir uygulamanın ötesinde daha büyük bir ekosistem etkisi ve etki alanı oluşturabilir
- libghostty'nin kullanımı arttıkça Ghostty'nin kendisi de daha zengin özellikler ve daha yüksek kararlılık kazanabilir
- Ghostty ve libghostty birbirini tamamlayan bir yapıda gelişecek ve hem geliştiricilere hem de kullanıcılara fayda sağlayacak
3 yorum
1.0'dan beri kullanıyorum; scroll ve arama olmaması dışında memnunum haha.
itermkullanıyordum ama buna yerleştim.Ghostty 1.0 çıktı - yüksek hızlı, çapraz platform terminal emülatörü
Hacker News görüşleri
Bu kişinin şirket kurup halka açtıktan, ardından milyarlarca dolarlık bir satış yaptıktan sonra yeniden kod yazma dünyasına dönmesi gerçekten efsanevi.
Bence Hashimoto'nun asıl dehası sadece çok zeki olması değil; sistemleri ve arayüzleri aşırı derecede modüler kurup birbirine bağımlılığı en aza indiren sıra dışı soyutlama yeteneği gerçekten hayranlık uyandırıyor. Rich Hickey'nin savunduğu Simple Made Easy felsefesini birebir uygulayan biri gibi geliyor. Yazdığı yazılımlar, doğru çalışmak zorundaymış gibi hissettiren bir yapıyla tasarlanmış. Ayrıca Ghostty'yi ilk kez denedim; iTerm2 ve Zsh/Powerlevel10k temasında hep hafif bir render gecikmesi olurdu, ghostty'de ise neredeyse anında tepki veriyor.
Gerçekten kıskandırıcı ama aynı zamanda bir rüya hayatı gibi. Servet kazandıktan sonra sadece projenin kendisi için üretmeye devam etmek, para için kaliteden ödün vermek zorunda olmamak. Bu bana Knuth'un eski bir sözünü hatırlatıyor.
Gerçekten de sevgiyle yapılan projeler giderek daha büyük başarı kazanıyor. Paraya saplantılı olunmadığında daha iyi sonuçlar üretilebildiğini gösteriyor. Öte yandan, böyle bir hayatı yaşayabilmek için belli bir sermayenin önceden mevcut olması gerektiği gerçeği, toplum yapımızı ve ekonomiyi yeniden düşündürüyor. Knuth'un dediği gibi, herkese biraz daha fazla zaman verilse muhtemelen herkes daha iyi işler çıkarabilir; ama her şeyi aceleye getirince çok şey feda ediliyor. Ve onun başka bir sözüyle,
Bu noktada şu soru doğuyor: Hayatı gerçekten kolaylaştıran ve sorunları gerçekten çözen insanları hak ettikleri gibi ödüllendiriyor muyuz, yoksa sadece anlamsız oyun skorlarını mı yükseltiyoruz? Daha çok efsane çıkarmanın yolu ne? Yönetim kuruluna kalitenin değerini anlatmak zorunda kalmadan, Mitchell gibi tutkusunun peşinden gidebileceği bir toplumu nasıl kurabiliriz diye düşünüyorum.
Onu gerçekten gördüm; çok sıcak ve iyi bir insandı. Hashicorp'u kurmadan önce Kiip'teyken bir konferansta birlikte öğle yemeği yemiştik. Mitchell tam anlamıyla gerçek bir hacker'dı. Bilgisayarla ilgili her şeyi içtenlikle sevdiği hissediliyordu. Özellikle dağıtık sistemler konferansında inanılmaz derinleşmişti. Ne yaparsa yapsın başarılı olacağına emindim. Ghostty'yi keşfedip kullanmaya başladığımdan beri memnuniyetle kullanıyorum.
Ve bu adam şimdi tty yazılımı geliştirmeye de kafayı takmış durumda; Unix teknoloji yığınının en tutkulu niş alanlarından biri.
ghostty'yi her gün kullanıyordum ama yaratıcısının Mitchell Hashimoto olduğunu ancak şimdi öğrendim; gerçekten çok havalı.
Ghostty gerçekten harika; gerçek bir omni-platform terminal emülatörünün mobile kadar genişleyebilmesi çok heyecan verici. Ghostty'nin Zig ile yazılmış olması da ilginç. Düzenli kullandığım ilk Zig tabanlı program ve depo yapısının Golang tarzıyla aynı olması bana eğlenceli geldi. https://github.com/ghostty-org/ghostty
pkg/,src/gibi dizin yapıları pek de iyi değil.Ghostty'yi gerçekten sevmek istiyorum ama bazı eksikleri var.
font-thicken-strengthile ayarlamayı denedim ama %100 aynı olmuyor. Muhtemelen Metal render karakteristiği nedeniyle bu ya imkânsız ya da çok zor. Gün boyu metin izleyen biri için bu gerçekten çok önemli.Mitchell'in geliştirici deneyimine kattığı tutku ve gösterdiği detay seviyesi gerçekten olağanüstü. 2011'de Santa Monica'da Vagrant'ı ilk kullandığım zamanki etkiyi hâlâ hatırlıyorum. iTerm2'yi asla bırakmayı düşünmüyordum ama Ghostty'yi görünce anında vuruldum.
Son zamanlarda ghostty'yi her gün kullanıyorum. Yakın zamanda geçiş yaptım. macOS'ta caps lock'u cmd olarak eşleyince cmd+c de gayet iyi çalışıyor. Varsayılan ayarlar akıllıca seçilmiş ve özelleştirmenin çok kolay olmaması dışında her şeyden memnunum. Gruvbox light tema da çok hoş görünüyor. Zig ile yazılmış olması da başlı başına çok havalı; Zig'in gerçek kullanım için yeterince hazır olup olmadığını merak eden biri için ghostty bunun cevabı olabilir. Başka bir terminale geri dönecekmişim gibi görünmüyor; gerçekten çok memnunum. Not: ghostty'ye bir de aerospace eklenince Mac'te neredeyse kusursuz bir yalnızca klavye ortamı oluşuyor.
Air Mac'imde ghostty kullanıyorum; abim kod yazarken kullandığı Mac'i bana vermişti. ghostty gerçekten çok iyi ve içtenlikle minnettarım. Küçük bir şey olabilir ama libc bağımlılığının olmaması nedense bana oldukça değerli geliyor.
visidata'nın frekans analizi histogramı düzgün render edilmiyordu; bazıları kare olarak doğru görünürken geri kalanı elmas içinde soru işareti olarak çıkıyordu. Bu sorun yüzünden hâlâ iTerm'i bırakamadım. Hangi anahtar kelimelerle arama yapmam gerektiğini bile bilmediğim için çözmek zor oldu.
Ghostty'nin metin reflow'unu (özellikle scrollback dahil) Neovim tabanlı terminallerde de çözebilmesini umarak yakından takip ediyorum. Ghostty'nin terminal ortamına yeni bir yenilik dalgası getirmesi beni çok sevindiriyor. https://github.com/neovim/neovim/issues/33155
ghostty'yi gerçekten kullanmak istiyorum ama cmd+f desteği olmadığı için henüz deneyemedim; yine de bu projenin gelişimini büyük bir heyecanla izliyorum.
https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
https://github.com/ghostty-org/ghostty/issues/189
/olarak eşlemek de mümkün.