-
Emacs'e Deno runtime entegre edilerek JavaScript/TypeScript kullanılabiliyor
-
V8 motoru, Elisp VM'e kıyasla daha iyi optimize edilmiş durumda
-
Emacs'in yetersiz asenkron işleme ve çoklu iş parçacığı desteği JavaScript ile çözülebiliyor (
Async/Await, Web Worker); WebAssembly de destekleniyor -
Elisp'i Native Code'a dönüştüren
native-compve Firefox'un Webrender'ını compositör olarak kullanarak GPU hızlandırması mümkün (deneysel)
Kısa süre önce Hacker News'te paylaşılmıştı.
6 yorum
Emacs hakkında çok bilgim yok; geçmişte sadece Spacemacs kullanmıştım. Ama ana sayfadaki aşağıdaki bölümü okuyunca ilginç geldi. Sonuçta asıl mesele, Deno üzerinden performansı artırıp dil desteğini genişleterek ekosistemi canlandırmak gibi görünüyor.
Performance#
v8's world-class JIT offers the potential for massive performance gains. For a simple benchmark (fibonacci), using the following implementations:
(defun fibonacci(n)
(if (<= n 1)
const fib = (n) => {
};
emacs-ng'nin JS uygulaması, fib(40) hesaplamasında native-comp olmadan emacs 28'den 50 kattan fazla daha hızlı çalışıyor. native-comp seviye 3 ile ise JS, 15 kattan fazla daha hızlı. Bu da Deno'dan gelen Async I/O, WebWorkers ve WebAsm ile birlikte, Emacs'i daha akıcı ve daha hızlı bir deneyim haline getirecek araçları sunuyor; üstelik arka plan süreci olarak ek araçlar kurmanız ya da paylaşılan kütüphane sürümleriyle uğraşmanız gerekmeden — her şey betik katmanında, tam performansla.
Aslında genişletilebilirliğin kendisi kötü değil.
Lisp'e özgü makrolar,
native dil binding'leri için dinamik modül desteği (Tree-sitter gibi projeler bunun tipik örneği),
libvterm ve Xwidget desteği sayesinde native bir terminal emülatörü ve tarayıcıyı dahili olarak kullanabilmesi gibi...
https://github.com/canatella/xwwp
Sorun I/O ve thread'ler.
I/O asenkron olarak uygulanmadığı için büyük dosyalarda donma yaşanıyor; thread oluştursanız bile paralellik değil eşzamanlılık desteklendiğinden yük arttığında mutlaka sorun çıkıyor.😢😢😢
Ama bu proje,
https://github.com/DavidDeSimone/ng-async-files
gibi dosyaların asenkron işlenmesini desteklemeye yönelik bir çaba gösteriyor gibi göründüğü için ilgimi çekiyor.
Ayrıca NPM'in devasa ekosisteminden de yararlanabiliyor.
https://emacs-ng.github.io/emacs-ng/main-features/
Sıkı şekilde eklenen bir katman olduğu için upstream yamalarını temiz biçimde uygulamak mümkün.
Temsili bir örnek olarak, ben dün Emacs mirror’un
native-compdalını birleştirmeyi denedim,1200’den fazla commit vardı ama yalnızca 4-5 dosyada conflict oluştu.
https://github.com/emacs-mirror/emacs/tree/feature/native-comp
https://github.com/emacs-ng/emacs-ng/pull/185
Bir şekilde ekibe katılmış oldum haha
Vay canına, harika görünüyor. Başarılar!!
Teşekkürler!!