2 poin oleh GN⁺ 2025-12-25 | Belum ada komentar. | Bagikan ke WhatsApp
  • Phoenix adalah server X baru yang ditulis sepenuhnya dari nol dengan bahasa Zig tanpa melakukan fork dari Xorg yang ada, dengan tujuan menjadi alternatif modern
  • Saat ini, Phoenix dapat menjalankan aplikasi sederhana yang menggunakan grafis GLX, EGL, dan Vulkan secara nested di dalam server X yang sudah ada, dan belum mendukung mode standalone
  • Demi kesederhanaan, Phoenix hanya mendukung aplikasi yang ditulis dalam 20 tahun terakhir dan perangkat keras dalam 15 tahun terakhir, serta bekerja tanpa antarmuka driver server
  • Untuk meningkatkan keamanan, pesan protokol diparsing secara otomatis, dan akses antar aplikasi dibatasi dengan struktur isolasi berbasis permintaan izin
  • Mendukung teknologi modern seperti HDR, VRR, multi-monitor, dan compositor bawaan, serta merencanakan kompatibilitas Wayland dan perluasan protokol X11

Gambaran umum Phoenix

  • Phoenix adalah server X modern untuk menggantikan server Xorg, sebuah implementasi yang sepenuhnya ditulis ulang dengan bahasa Zig
    • Bukan fork dari Xorg, dan mengarah pada struktur yang lebih sederhana dan aman
  • Saat ini belum sepenuhnya siap dipakai, dan hanya mendukung mode nested di dalam server X yang sudah ada
    • Dapat melakukan rendering berakselerasi perangkat keras berbasis GLX, EGL, dan Vulkan

Tujuan

Kesederhanaan

  • Server ini dibuat lebih sederhana daripada Xorg, dengan hanya mendukung sebagian dari protokol X11
    • Hanya mencakup fitur yang dibutuhkan aplikasi yang ditulis dalam 20 tahun terakhir
  • Menargetkan hanya perangkat keras dalam 15 tahun terakhir yang mendukung Linux DRM dan Mesa GBM
  • Tidak menggunakan antarmuka driver server terpisah seperti Xorg
    • Strukturnya mirip dengan compositor Wayland

Keamanan

  • Menjamin keamanan melalui parsing otomatis pesan protokol
    • Melalui opsi build Zig ReleaseSafe, perilaku ilegal seperti indeks array yang melewati batas dapat dideteksi otomatis
  • Secara default aplikasi dijalankan dalam isolasi antar aplikasi
    • Interaksi dengan aplikasi lain hanya dimungkinkan melalui permintaan izin GUI atau izin yang telah diberikan sebelumnya
    • Contoh: aplikasi perekam layar hanya dapat merekam jendela yang ditentukan
  • Saat akses dibatasi, klien menerima data dummy alih-alih error
  • Shortcut global berfungsi bila menyertakan tombol modifier seperti ctrl, shift, dan lainnya
    • Jika ingin memakai shortcut global tanpa modifier, diperlukan izin eksplisit
  • Melalui opsi tertentu, perilakunya dapat diubah agar sama seperti Xorg

Dukungan teknologi modern

  • Mendukung teknologi display modern seperti multi-monitor, refresh rate yang berbeda, VRR, dan HDR
  • Alih-alih satu framebuffer tunggal, tiap display diproses secara independen

Peningkatan pemrosesan grafis

  • Secara default menyediakan rendering tanpa tearing dan compositor bawaan
    • Akan dinonaktifkan otomatis bila menjalankan compositor eksternal (seperti picom)
    • Jika aplikasi fullscreen mematikan vsync, perilaku akan disesuaikan untuk aplikasi tersebut
  • Menargetkan pengurangan latensi vsync dan compositor

Standar baru

  • Mendefinisikan dan mendokumentasikan properti DPI per monitor (randr property)
    • Aplikasi dapat melakukan penskalaan konten sesuai DPI tiap monitor

Ekstensi protokol X11

  • Jika diperlukan fitur baru seperti HDR, Phoenix berencana menambahkan ekstensi protokol X11

Kompatibilitas Wayland

  • Mempertimbangkan kemungkinan adanya aplikasi yang hanya mendukung Wayland
    • Phoenix dapat mendukung Wayland secara langsung, atau dijalankan melalui bridge Wayland–X11 (misalnya 12to11)

Server display nested

  • Dapat berjalan secara nested dengan akselerasi perangkat keras di dalam X11 atau Wayland
    • Berguna untuk debugging Phoenix serta pengujian window manager dan compositor
    • Di lingkungan Wayland, dapat dimanfaatkan sebagai server alternatif untuk Xwayland

Bukan tujuan (Non-goals)

  • Bukan bertujuan menjadi pengganti total server Xorg
    • Xorg tetap mempertahankan lebih banyak fitur X11 dan dukungan perangkat keras lawas
  • Beberapa screen X11 tidak didukung (hanya multi-monitor yang didukung)
  • Pemanggilan GrabServer tidak berlaku
  • Klien/server endian-swap akan ditinjau ulang bila diperlukan
  • Tidak mendukung GLX tidak langsung (rendering jarak jauh)
    • Kompleksitasnya tinggi, dan streaming jarak jauh lebih efisien
    • Jika perlu, rendering jarak jauh dimungkinkan melalui proxy GLX

Perbedaan dengan protokol X11

  • Sebagian protokol inti X11, seperti fitur terkait font, belum diimplementasikan
  • Encoding string secara default menggunakan UTF-8
    • Namun ada pengecualian jika protokol secara eksplisit menetapkan ISO Latin-1

Instalasi dan build

  • Perintah instalasi:
    zig build -Doptimize=ReleaseSafe
    sudo zig build install -p /usr/local -Doptimize=ReleaseSafe
    
  • Penghapusan harus dilakukan manual dengan menghapus /usr/local/bin/phoenix
  • Build untuk pengembangan:
    zig build
    
    • Biner hasil: ./zig-out/bin/phoenix
    • Dapat menjalankan dan melakukan build sekaligus: zig build run

Pembuatan dokumentasi protokol X11

  • Perintah: zig build -Dgenerate-docs=true
    • Hasil: file .txt dibuat di dalam ./zig-out/protocol/
    • Ini adalah dokumentasi yang dibuat otomatis dengan gaya dokumen resmi, dan fitur ini masih dalam pengembangan

Dependensi

  • Zig 0.14.1
  • x11 (xcb) — untuk mode nested X11 (-Dbackends=x11)
  • wayland (wayland-client, wayland-egl) — untuk mode nested Wayland (-Dbackends=wayland, saat ini belum didukung)
  • drm (libdrm, gbm) — untuk mode standalone (-Dbackends=drm, saat ini belum didukung)
  • OpenGL (libglvnd) — menyediakan gl dan egl

Belum ada komentar.

Belum ada komentar.