2 puan yazan GN⁺ 2025-12-25 | 1 yorum | WhatsApp'ta paylaş
  • Phoenix, mevcut Xorg'u fork etmeden Zig diliyle sıfırdan yazılmış yeni bir X sunucusu olup modern bir alternatif olmayı hedefliyor
  • Şu anda GLX, EGL, Vulkan grafikleri kullanan basit uygulamaları mevcut X sunucusu içinde iç içe çalıştırabiliyor; bağımsız çalışma henüz desteklenmiyor
  • Basitlik için yalnızca son 20 yılda yazılmış uygulamaları ve son 15 yılın donanımlarını destekliyor; sunucu sürücü arayüzü olmadan çalışıyor
  • Güvenliği güçlendirmek için protokol mesajlarını otomatik ayrıştırıyor ve uygulamalar arası erişimi izin isteme temelli bir yalıtım yapısıyla sınırlıyor
  • HDR, VRR, çoklu monitör, yerleşik compositör gibi modern teknolojileri destekliyor; Wayland uyumluluğu ve X11 protokol genişletmeleri de planlanıyor

Phoenix genel bakış

  • Phoenix, Xorg sunucusunun yerini alabilecek modern bir X sunucusu; Zig diliyle tamamen sıfırdan yazılmış bir uygulama
    • Xorg'un bir fork'u değil; daha basit ve güvenli bir yapı hedefliyor
  • Şu anda tam anlamıyla kullanıma hazır değil; yalnızca mevcut X sunucusu içinde iç içe çalışma (nested mode) destekleniyor
    • GLX, EGL, Vulkan tabanlı donanım hızlandırmalı render gerçekleştirebiliyor

Hedefler

Basitlik

  • Xorg'dan daha basit bir sunucu olarak, X11 protokolünün yalnızca bir kısmını destekliyor
    • Yalnızca son 20 yılda yazılmış uygulamaların ihtiyaç duyduğu özellikleri içeriyor
  • Linux DRM ve Mesa GBM destekleyen son 15 yılın donanımlarını hedefliyor
  • Xorg'daki gibi ayrı bir sunucu sürücü arayüzü kullanmıyor
    • Wayland compositörlerine benzer bir yapı

Güvenlik

  • Protokol mesajlarının otomatik ayrıştırılması ile güvenlik sağlanıyor
    • Zig'in ReleaseSafe derleme seçeneği sayesinde dizi indeksinin taşması gibi geçersiz işlemler otomatik tespit ediliyor
  • Varsayılan olarak uygulamalar birbirinden yalıtılmış şekilde çalışıyor
    • Başka uygulamalarla etkileşim yalnızca GUI izin isteği veya önceden verilmiş yetki üzerinden mümkün
    • Örnek: ekran kaydı uygulaması yalnızca belirtilen pencereyi kaydedebilir
  • Erişim kısıtlandığında istemci hata yerine dummy veri alır
  • Küresel kısayollar, değiştirici tuşlar (ctrl, shift vb.) dahil olduğunda çalışır
    • Değiştirici tuş olmadan küresel kısayol kullanımı için açık izin gerekir
  • Bir seçenekle Xorg ile aynı davranış biçimine geçiş yapılabilir

Modern teknoloji desteği

  • Çoklu monitör, farklı yenileme hızları, VRR, HDR gibi güncel ekran teknolojilerini destekliyor
  • Tek bir framebuffer yerine her ekranı bağımsız olarak işler

Grafik işleme iyileştirmeleri

  • Varsayılan olarak tearing'siz render ve yerleşik compositör sunuyor
    • Harici bir compositör (picom vb.) çalıştırıldığında otomatik olarak devre dışı kalır
    • Tam ekran uygulama vsync'i kapatırsa buna göre ayarlanır
  • vsync ve compositör gecikmesini azaltmayı hedefliyor

Yeni standartlar

  • Monitör başına DPI özelliği (randr property) tanımlanıp belgeleniyor
    • Uygulamalar monitör başına DPI değerine göre içeriği ölçekleyebilir

X11 protokol genişletmeleri

  • HDR gibi yeni özellikler gerektiğinde X11 protokol genişletmeleri planlanıyor

Wayland uyumluluğu

  • Bazı uygulamaların yalnızca Wayland destekli olabileceği dikkate alınıyor
    • Phoenix Wayland'ı doğrudan destekleyebilir ya da Wayland–X11 köprüsü (ör. 12to11) üzerinden çalıştırılabilir

İç içe ekran sunucusu

  • X11 veya Wayland içinde donanım hızlandırmalı iç içe çalışma mümkün
    • Phoenix hata ayıklaması ve pencere yöneticisi/compositör testi için faydalı
    • Wayland ortamında Xwayland'a alternatif sunucu olarak kullanılabilir

Hedef dışı konular (Non-goals)

  • Xorg sunucusunun tamamen yerini almak amaçlanmıyor
    • Xorg, daha fazla X11 özelliği ve eski donanım desteğini sürdürür
  • Birden fazla X11 ekranı desteklenmiyor (yalnızca çoklu monitör destekleniyor)
  • GrabServer çağrıları etkisiz
  • Endian swap istemci/sunucu desteği gerekirse yeniden değerlendirilecek
  • Dolaylı GLX (uzaktan render) desteği yok
    • Karmaşıklığı yüksek ve uzaktan akış daha verimli
    • Gerekirse GLX proxy üzerinden uzaktan render mümkün olabilir

X11 protokolünden farkları

  • Yazı tipiyle ilgili özellikler gibi X11 çekirdek protokolünün bazı bölümleri uygulanmamış
  • Metin kodlaması varsayılan olarak UTF-8 kullanır
    • Ancak protokolde ISO Latin-1 açıkça belirtilmişse bu durum istisnadır

Kurulum ve derleme

  • Kurulum komutları:
    zig build -Doptimize=ReleaseSafe
    sudo zig build install -p /usr/local -Doptimize=ReleaseSafe
    
  • Kaldırma için /usr/local/bin/phoenix dosyasının elle silinmesi gerekir
  • Geliştirme derlemesi:
    zig build
    
    • Ortaya çıkan ikili dosya: ./zig-out/bin/phoenix
    • Çalıştırma ve derleme aynı anda yapılabilir: zig build run

X11 protokol belgeleri üretimi

  • Komut: zig build -Dgenerate-docs=true
    • Sonuç: ./zig-out/protocol/ içinde .txt dosyaları oluşturulur
    • Resmî belge stilinde otomatik üretilen dokümanlar; şu anda geliştirme aşamasında olan bir özellik

Bağımlılıklar

  • Zig 0.14.1
  • x11 (xcb) — X11 nested modu için (-Dbackends=x11)
  • wayland (wayland-client, wayland-egl) — Wayland nested modu için (-Dbackends=wayland, şu anda desteklenmiyor)
  • drm (libdrm, gbm) — bağımsız çalışma için (-Dbackends=drm, şu anda desteklenmiyor)
  • OpenGL (libglvnd)gl ve egl sağlar

1 yorum

 
GN⁺ 2025-12-25
Hacker News yorumları
  • X sunucusunu Wayland tarzında yeniden yapılandırma yaklaşımı ilginç görünüyor
    Görüntü sunucusu ile compositörün varsayılan olarak birleştirilmesi, uygulamaların varsayılan olarak izole edilmesi, GLX uzaktan erişim özelliğinin kaldırılması ve eski protokollerin cesurca terk edilmesi etkileyici
    Buna kimin ihtiyaç duyacağını bilmiyorum ama yapılan tercihlerin kendisi oldukça makul görünüyor

    • X11 kullanmak zorunda olanlar için XLibre'dan daha iyi bir seçenek gibi duruyor
    • Bizzat denemedim ama mevcut özellikler çıkarıldıysa sonuçta Wayland'a benzer bir durumda olacaktır
      O zaman farkın ne olduğunu bilmiyorum. Belki de değerlendirmem eksik kalmış olabilir
    • Eğer bu daha önce çıksaydı birçok kişi Wayland yerine bunu tercih ederdi
      Üstelik Wayland uygulamaları da çalışıyorsa gerçekten daha fazla kullanıcı tarafından seçilebilir
  • Phoenix adı fazlasıyla sık kullanılıyor
    Elixir framework'ünde de Phoenix var, başka projelerde de birkaç kez gördüğümü hatırlıyorum
    'Apollo' gibi yaygın bir isim; yeni bir proje yaparken önce arama yapmak gerektiğini düşünüyorum

    • Elixir ekosistemindeki Phoenix aslında daha az kafa karıştırıcı
      Orada bandit, cowboy, thousand island, ranch, mint, finch gibi daha özgün isimler var
      ExThing, ThingEx, Thingx gibi isim çakışmaları da yaygın olduğu için hangisinin standart olduğunu anlamak zorlaşıyor
    • Eskiden beri 'küllerinden doğan proje' sembolizmi için Phoenix adı sıkça kullanılıyordu
      1980'lerde de bu şekilde yeni yazılımlara isim verildiğini hatırlıyorum
    • Firefox da bir dönem Phoenix adını kullanmaya çalışmış ama ticari marka sorunu yüzünden dava edilmişti
      wxPython'da da Phoenix projesi var. Güzel ama fazla yaygın bir isim
  • Bu proje gerçekten harika
    Wayland'ı seviyorum ama portal protokolleri ve genişletme mekanizması konusunda hâlâ eksikler var
    Windows ya da macOS ile kıyaslandığında üretkenlik açısından zayıf kaldığı noktalar bulunuyor
    Güvenliği yerleşik bir X11 yeniden yazımı fikri heyecan verici bir yaklaşım

    • Uzun zamandır Wayland yerine toparlanmış bir X sürümü yapmanın daha iyi olacağını düşünüyordum
      Faydalı bir proje gibi görünüyor, umarım gelişir
    • Wayland'ın üretkenlik açısından yetersiz olduğunu söyledin; özellikle neyin eksik olduğunu merak ediyorum
    • Bence Windows ya da macOS tersine pencere yönetimi konusunda bile düzgün değil
      2000'lerin başında kurulumları bile zordu ve sıradan bir kullanıcının bizzat kurması neredeyse imkânsızdı
      Linux dağıtımları kurulum açısından çok daha kolaydı ve Windows yavaşlayınca yeni PC alınmasının sebeplerinden biri de buydu
    • Ben ise Wayland'da üretkenlik açısından bir eksiklik hissetmedim
      İş yerinde de GNOME + Wayland ile sorunsuz çalışıyorum
  • Böyle bir X koruma projesi görmek sevindirici
    Wayland'ı tercih etsem de X'in hâlâ gerekli olduğu alanlar olduğunu düşünüyorum
    Yeni bir geliştirme ekibinin bu yükü paylaşması gerekiyor

    • Ama bunun parçalanmaya yol açacağını düşünüyorum
      X11 artık tamamen geride bırakılmalı ve tek bir görüntü sunucusuna odaklanılmalı
  • Bu projenin ne kadar iyi çalışacağını bilmiyorum ama
    şirket merkezli tek tipleşme eğilimine karşı (ör. Wayland, GNOME, KDE'nin ücretli geliştiricileri)
    rakip projelerin çoğalmasının iyi olduğunu düşünüyorum
    Xorg'u modernize etmek için ne kadar finansman gerektiğini de merak ediyorum
    Wayland 2008'de çıktı ama aradan yaklaşık 20 yıl geçmesine rağmen kullanıcı ihtiyaçlarının tamamını karşılayamadı
    Şirketlerin istediği dar spesifikasyonlara göre şekillendiği için sınırları net biçimde görünüyor

  • Uygulama geliştiricileri build script içinde zig build --release biçiminde
    release modunu belirleyebilir
    Kullanıcı da doğrudan --release verebilir
    Görünüşe göre Phoenix'in yazarı resmî release olarak ReleaseSafe modunu seçmiş
    Bu arada Phoenix benim memleketimin de adı

  • Aynı yazarın geliştirdiği gpu-screen-recorder
    Wayland'da kullandığım en iyi ekran kaydedici
    4K 60fps kayıt da ek ayar gerektirmeden hemen çalıştı

  • xterm, emacs, xfig, ghostview gibi mevcut X11 uygulamalarının çalışıp çalışmadığını merak ediyorum

    • Eski X11 programlarının çoğu X11 drawing API'sine dayandığı için
      düzgün çalışmama ihtimalleri yüksek, ama implementasyonun kendisi basit
  • Çoklu ekran desteği hedef dışı olarak belirtilmiş,
    o hâlde sanal masaüstü destekleyen bir pencere yöneticisinde (i3 gibi) kullanılıp kullanılamayacağını merak ediyorum

    • X11'de “screen” terimi özel bir anlama sahip olduğu için, yalnızca tek ekran desteği olsa bile
      çoklu monitör ya da sanal masaüstü kullanımında sorun olmaz
    • Xinerama gibi bitişik çoklu monitör özellikleri daha sonra kolayca eklenebilecek bir yapıda
  • Xorg'daki gibi XML protokol spesifikasyonlarını kod üretimi için kullanmaması ilginç