deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (hnrss.org)

Ghostty 1.4.0, tam Kitty grafik desteğiyle geliyor; macOS'ta I/O %55'e kadar hızlandı

Ghostty 1.4.0, Kitty dışındaki ilk terminal olarak Kitty grafik protokolünü tamamen uyguluyor; ayrıca scrollback sıkıştırması, büyük I/O hızlandırmaları ve bir dizi güvenlik düzeltmesi içeriyor.

Ghostty 1.4.0, tam Kitty grafik desteğiyle geliyor; macOS'ta I/O %55'e kadar hızlandı

Ghostty terminal emülatörü, büyük performans ve bellek iyileştirmeleri ile Kitty grafik protokolünün eksiksiz bir uygulamasını sunan kilometre taşı niteliğindeki 1.4.0 sürümünü yayımladı — projenin sürüm notlarına göre bunu başaran Kitty dışındaki ilk terminal.

Yedi aylık çalışma

Sürüm, 172 katkıcından gelen 2.889 commit'i kapsayan yedi aylık bir geliştirme sürecinin ürünü. Öne çıkan özelliklerin ötesinde notlar, Ghostty'nin desteklediği her platform için yüzlerce küçük düzeltme ve iyileştirmeden, ayrıca bir dizi güvenlik yamasından bahsediyor.

Kitty dışında ilk tam Kitty grafik uygulaması

Ghostty artık Kitty grafik protokolünün eksik kalan son iki büyük parçası olan animasyon ve göreli yerleşimi (relative placement) destekliyor. kitten icat ile gösterilen bir GIF gibi hareketli görüntüler artık terminalde tek bir sabit kare yerine oynatılıyor; kare iletimi, birleştirme ve oynatma kontrolünün tamamı destekleniyor. Terminal penceresi görünmediği sürece animasyonlar duraklatılıyor. Göreli yerleşim, bir programın bir görüntüyü diğerine göre konumlandırmasını sağlıyor; böylece alt görüntü, üst görüntüyle birlikte hareket ediyor.

Bakımcılar ayrıca belirtimlere ve Kitty'nin kendisine karşı bir uyumluluk turu yaparak düzinelerce davranış farkını giderdi. Görüntüler artık scroll bölgelerinde metinle birlikte kayıyor, bir görüntü kimliğini yeniden iletmek eski görüntünün yerini alıyor ve geçersiz görüntü verisi artık sessizlik yerine hata döndürüyor — bu durum önceden istemcileri asılı bırakabiliyordu.

Görüntü işleme de hızlandı. Görüntü yükleri byte byte yerine SIMD ile toplu olarak ayrıştırılıyor; bu da projenin benchmark'larında büyük görüntü aktarımlarının ayrıştırılmasını x86_64 Linux üzerinde 64 MiB'lik görüntü verisiyle ölçüldüğünde yaklaşık 16 kat hızlandırıyor.

Bu eklemelerle Ghostty ve kütüphanesi libghostty, yayımlanan belirtimin %100'ünü kapsıyor — Kitty dışında bunu başaran ilk terminal.

Daha hızlı I/O ve ayrıştırma

En büyük kazanımlardan biri şaşırtıcı bir keşiften geldi: macOS'ta çekirdek, okuma tamponu ne kadar büyük olursa olsun bir pseudo-terminal'den yapılan her okumayı kabaca 1 KiB ile sınırlıyor. Ghostty önceden her okumayı geldiği gibi işliyor, her kilobaytta okuma başına ek yük ödüyor ve yazan program ayrıştırma sırasında bloke halde bekliyordu.

Ghostty 1.4 artık pty'yi bir thread üzerinde okurken ayrıştırmayı başka bir thread'te yapıyor; bu da uçtan uca I/O veriminizi 1.3.x'e kıyasla macOS'ta %25 ila %55 artırıyor — M4 Max üzerinde düz ve Unicode metinle ölçüldü.

VT ayrıştırıcısı da daha hızlı: Düz ASCII metindeki benchmark verimi 128 MB/s'den 725 MB/s'ye, yani 5,7 kat arttı; CJK metin işleme 3,4 kat hızlandı ve gerçek dünya asciinema terminal kayıtlarından oluşan 2,6 GB'lık veri kümesi yaklaşık %25 daha hızlı işleniyor. Bu değişiklikler birlikte, macOS'ta 150 MB'lık bir metin dosyasını cat'leme süresini 1,5 saniyeden 566 milisaniyeye indirdi.

Daha düşük bellek kullanımı

Ghostty artık görünmeyen scrollback'i şeffaf biçimde sıkıştırıyor ve metin ağırlıklı tipik geçmişler için bu sayfaların kullandığı fiziksel belleği %70 ila %90 azaltıyor. Sıkıştırma yalnızca terminal boştayken çalışıyor ve sayfalar geriye kaydırırken ya da ararken gerektiğinde açılıyor; bu yüzden proje I/O veriminde ölçülebilir bir etki bildirmiyor. Özellik macOS ve 64-bit Linux'ta kullanılabiliyor ve sayesinde terminal başına varsayılan scrollback sınırı 10 MB'dan 50 MB'a çıkarıldı; dolı bir scrollback genellikle eski 10 MB sınırından daha az fiziksel bellek kullanıyor.

Diğer yandan, yeni boş bir terminal macOS'ta artık 1.3.1'deki 128 KiB yerine yaklaşık 16 KiB terminal sayfa belleği kullanıyor; serbest bırakılan scrollback belleği terminal kapanana kadar tutulmak yerine işletim sistemine geri veriliyor; gizli sekmeler GPU kaynaklarını bırakıyor ve bir görünür, 20 gizli sekmeyle macOS'ta GPU belleği yaklaşık 385 MiB'den 18 MiB'e düşüyor. Bir sekmeyi yeniden oluşturmak bir milisaniyenin altında sürüyor.

Güvenlik düzeltmeleri

Sürüm bir dizi güvenlik bültenini kapatıyor. En önemlisi, kötü niyetli Kitty grafik komutları önceden Ghostty'yi çökterebiliyor ya da kilitleyebiliyor, devasa bellek ayırmalarına zorlayabiliyor ve sınırlı durumlarda izin verilen geçici dizinlerin dışındaki dosyaları okuyup silebiliyordu; bunun için yalnızca kötü niyetli çıktının görüntülenmesi gerekiyordu. Diğer düzeltmeler satır sonu karakteri olarak carriage return'ü değerlendirmeyen yapıştırma korumasını, tmux kontrol modu düzenleri üzerinden gelen çökmeleri, küçük scrollback sınırlarında scrollback bellek bozulmasını, hazırlanmış dizin adlarından rastgele escape dizileri gönderen zsh shell entegrasyonunu ve macOS'ta hazırlanmış hyperlink'lere command-tıklamanın olası rastgele komut çalıştırmasına yol açmasını ele alıyor. Bakımcılar CVE'lerin talep edildiğini ama GitHub tarafından henüz atanmadığını söylüyor.

macOS 27 desteği

Ghostty 1.4, kod adı Golden Gate olan macOS 27'yi destekliyor; bu büyük ölçüde sekme düzenleri, yerel sekme çubuğunun görünümü ve diğer görsel sorunları kapsayan uyumluluk düzeltmeleriyle sağlandı. Sürüm, macOS 13 Ventura'ya kadar tamamen uyumlu kalıyor.

Neden önemli

Ghostty hızla büyüyen bir açık kaynak terminal ve bu sürüm aynı anda üç cephede ilerletiyor: protokol eksiksizliği, verim ve bellek ayak izi. Kitty dışında tam bir Kitty grafik uygulamasına sahip ilk terminal olmak, görüntüleyiciler, dosya yöneticileri ve grafikler gibi görüntü ağırlıklı terminal uygulamaları için bir uyumluluk engelini kaldırıyor. Güvenlik düzeltmeleri — bir kısmı yalnızca kötü niyetli çıktı görüntülenerek ya da güvenilmeyen bir klonlanmış depodan bir dizine girilerek istismar edilebilir durumda — mevcut kullanıcılar için tek başına güncelleme sebebi. macOS pty keşfi ise terminal I/O'nun en eski katmanlarında bile hâlâ önemli ve düzeltilebilir verimsizliklerin gizli olduğunu gösteriyor.

  • #terminal
  • #open-source
  • #performance
  • #ghostty
  • #kitty-graphics

İlgili yazılar