- 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
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
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
O zaman farkın ne olduğunu bilmiyorum. Belki de değerlendirmem eksik kalmış olabilir
Ü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
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
1980'lerde de bu şekilde yeni yazılımlara isim verildiğini hatırlıyorum
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
Faydalı bir proje gibi görünüyor, umarım gelişir
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
İş 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
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 --releasebiçiminderelease modunu belirleyebilir
Kullanıcı da doğrudan
--releaseverebilirGö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
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
çoklu monitör ya da sanal masaüstü kullanımında sorun olmaz
Xorg'daki gibi XML protokol spesifikasyonlarını kod üretimi için kullanmaması ilginç