Geri qayıt
Neomacs: GPU ilə render olunan Rust dilli GNU Emacs fork-u
SiTech AI Team3 წთ. საკითხავი

Neomacs: GPU ilə render olunan Rust dilli GNU Emacs fork-u

Tərtibatçı Eval Exec GitHub-da Neomacs-ı yayımlayıb. Bu, GNU Emacs-ın hələ hazır olmayan hard fork-udur: təxminən 300 min sətirlik C nüvəsi Rust ilə yenidən yazılıb, render isə GPU-ya keçirilib. Məqsəd mövcud konfiqurasiya və paketlərlə tam uyğunluqdur.

NEO Emacs, yəni Neomacs, tərtibatçı Eval Exec-in GitHub-da yayımladığı, hələ tamamlanmamış GNU Emacs fork-udur. Layihə istifadəçilərin artıq vərdiş etdiyi hər şeyi saxlayır: init.el-i, mövcud paketləri və klaviatura vərdişlərini. Altyapı isə yenidən qurulub: render GPU-da işləyir, təxminən 300 min sətirlik C nüvəsi isə Rust ilə yenidən yazılıb.

Repozitoriyaya görə, yayımlanan neomacs binary-də artıq C nüvəsi yoxdur. Elisp interpretatoru, bayt kod VM-i, zibil toplayıcı, portativ dump, buferlər, pəncərələr, klaviatura emalı, proseslər, yerləşdirmə və render Rust ilə yazılıb. Redaktorun Elisp hissəsi olan lisp qovluğu GNU Emacs-dan götürülüb və emacs-31 inkişaf xətti ilə sinxronlaşdırılır.

Ayrı thread-də GPU mühərriki

Arxitektura işi iki thread arasında bölür: Emacs thread-i Elisp mühitinə və redaktor vəziyyətinə sahibdir, render thread-i isə GPU-nu idarə edir. Ekran mühərriki Vulkan, Metal, DX12 və OpenGL-i əhatə edən wgpu üzərində qurulub və xdisp.c-nin təxminən 50 min sətrini Rust-ın təxminən 4 min sətri əvəz edir. Buferlərdə media göstərmək mümkündür: GStreamer vasitəsilə sətir içi 4K video, GPU-da dekodlanan şəkillər, WPE WebKit brauzeri və GPU terminalı. Ayrı animasiya qatı səkkiz kursor rejimi, 21 sürüşmə effekti və buferlər arasında on keçid təklif edir; hamısı Elisp-dən konfiqurasiya olunur.

Niyə sıfırdan yox, fork

FAQ bölməsi Emacs-ı müasir avadanlıqlara uyğunlaşa bilməyən 40 illik C kod bazası kimi təsvir edir. Sadalanan problemlər arasında 1980-ci illərin mətn terminalları üçün nəzərdə tutulmuş, yalnız prosessorda işləyən render, daxili video oxutmanın olmaması və boş dayanan GPU var. Layihəyə görə Elisp-də inline caching və işləmə vaxtı JIT optimallaşdırması yoxdur, zibil toplayıcı isə bütün proqramı dayandırır. Elisp bir thread-də işlədiyi üçün tək yavaş çağırış bütün redaktoru dondurur. Böyük fayllar ayrı problemdir: bütün fayl vahid gap buffer-da saxlanılır, ona görə yüz meqabaytlıq log redaktoru yenə də kilidləyir.

Sıfırdan yazmaq əvəzinə fork etmək şüurlu qərardır. GNU Emacs layihədə istinad və test oracle-ı kimi qalır: oracle testləri, TUI şəbəkə müqayisələri və GUI paritet yoxlamaları Neomacs-ı daim GNU Emacs ilə müqayisə edir ki, Rust ilə yenidən yazılan hər hissənin eyni davranış yaratdığı yoxlanılsın. Layihənin sözlərinə görə, dəyişikliklər upstream-də heç vaxt qəbul olunmayacaq qədər dərindir, buna görə Neomacs hard fork adlanır.

Vəziyyət və uyğunluq

Neomacs açıq şəkildə alpha kimi işarələnib: README kobud kənarlar, uyğunluğu pozan dəyişikliklər və çatışmayan funksiyalar barədə xəbərdarlıq edir. Bəyan edilən müqavilə müşahidə olunan davranışda 100% uyğunluqdur; bu xəttin altında isə daha yaxşı olmaq azadlığı var. Növbəti hədəflər əsl çoxthreadli Elisp və paralel, fasiləsiz zibil toplayıcıdır. Eyni binary həm GPU-da, həm də terminalda render edir; amd64 və arm64 üçün hazır imiclər Docker Hub və GitHub Container Registry-də yayımlanıb. Məqalə yazılan vaxt repozitoriyanın təxminən 1 177 ulduzu və 47 fork-u var idi.

SSiTech

SiTech — AI ilə gücləndirilmiş veb hazırlanması

Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.