Geri Dön
Neomacs: GPU ile görüntülenen Rust tabanlı GNU Emacs çatalı
SiTech AI Team3 წთ. საკითხავი

Neomacs: GPU ile görüntülenen Rust tabanlı GNU Emacs çatalı

Geliştirici Eval Exec, GitHub'da Neomacs adlı çalışma aşamasındaki GNU Emacs çatalını yayımladı. Yaklaşık 300 bin satırlık C çekirdeği Rust ile yeniden yazıldı, görüntüleme wgpu ile GPU'ya taşındı. Hedef, mevcut yapılandırmalarla tam uyumluluk.

NEO Emacs ya da Neomacs, geliştirici Eval Exec'in GitHub'da yayımladığı, henüz tamamlanmamış bir GNU Emacs çatalı. Proje, kullanıcıların hâlihazırda bağlı olduğu her şeyi koruyor: init.el, mevcut paketler ve klavye alışkanlıkları. Altyapı ise baştan kuruldu: görüntüleme motoru GPU üzerinde çalışıyor, yaklaşık 300 bin satırlık C çekirdeği Rust ile yeniden yazıldı.

Depoya göre dağıtılan neomacs ikili dosyasında artık C çekirdeği yok. Elisp yorumlayıcısı, bayt kodu sanal makinesi, çöp toplayıcı, taşınabilir dump, tamponlar, pencereler, klavye işleme, süreçler, yerleşim ve görüntüleme tamamen Rust ile yazıldı. Editörün Elisp yarısı olan lisp dizini GNU Emacs'tan korunuyor ve emacs-31 geliştirme hattıyla eşitleniyor.

Ayrı bir iş parçacığında GPU motoru

Mimari işi iki iş parçacığına bölüyor: Emacs iş parçacığı Elisp çalışma zamanına ve editör durumuna sahip, işleme iş parçacığı ise GPU'yu yönetiyor. Görüntüleme motoru Vulkan, Metal, DX12 ve OpenGL'i kapsayan wgpu üzerine kurulu; xdisp.c'nin yaklaşık 50 bin satırının yerini yaklaşık 4 bin satır Rust alıyor. Tamponlarda medya gösterilebiliyor: GStreamer üzerinden satır içi 4K video, GPU'da çözülen görseller, bir WPE WebKit tarayıcısı ve GPU terminali. Ayrı bir animasyon katmanı sekiz imleç modu, 21 kaydırma efekti ve on tampon geçişi sunuyor; hepsi Elisp'ten yapılandırılabiliyor.

Neden sıfırdan değil de çatal

SSS bölümü Emacs'i modern donanıma ayak uyduramamış 40 yıllık bir C kod tabanı olarak tanımlıyor. Sayılan sorunlar arasında 1980'lerin metin terminalleri için tasarlanmış, yalnızca işlemcide çalışan görüntüleme, yerleşik video oynatmanın olmaması ve boş duran bir GPU var. Projeye göre Elisp'te inline caching ve çalışma zamanı JIT optimizasyonu yok, çöp toplayıcı ise tüm programı durduruyor. Elisp tek iş parçacığında çalıştığı için tek bir yavaş çağrı tüm editörü donduruyor. Büyük dosyalar ayrı bir sorun: tüm dosya tek bir gap buffer'da tutulduğu için yüz megabaytlık bir günlük editörü yine de kilitliyor.

Sıfırdan yazmak yerine çatal oluşturmak bilinçli bir karar. GNU Emacs projede referans ve test oracle'ı olarak kalıyor: oracle testleri, TUI ızgara karşılaştırmaları ve GUI eşlik kontrolleri Neomacs'ı GNU Emacs ile karşılaştırıyor; böylece Rust ile yeniden yazılan her parçanın aynı davranışı ürettiği doğrulanıyor. Projeye göre değişiklikler upstream'e kabul edilemeyecek kadar kapsamlı, bu yüzden Neomacs hard fork olarak tanımlanıyor.

Durum ve uyumluluk

Neomacs açıkça alfa ve yapım aşamasında olarak etiketlenmiş: README pürüzler, uyumluluğu bozan değişiklikler ve eksik özellikler konusunda uyarıyor ve hata bildirimi istiyor. Taahhüt edilen sözleşme, gözlemlenebilir davranışta, yani anlam, davranış ve mantıksal görüntülemede yüzde 100 uyumluluk; bu çizginin altında ise daha iyi olma özgürlüğü var. Sıradaki hedefler gerçek çok iş parçacıklı Elisp ve eşzamanlı, duraklamasız çöp toplayıcı. Aynı ikili dosya hem GPU'da hem de terminalde çalışıyor; amd64 ve arm64 için hazır imajlar Docker Hub ve GitHub Container Registry'de yayımlanıyor. Yazı sırasında deponun yaklaşık 1.177 yıldızı ve 47 çatalı vardı.

SSiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.