-
Runtime Deno digabungkan ke Emacs sehingga bisa menggunakan JavaScript/TypeScript
-
Mesin V8 lebih dioptimalkan dibanding VM Elisp
-
Kekurangan Emacs dalam pemrosesan asinkron dan multi-threading bisa ditangani dengan JavaScript (
Async/Await, Web Worker), dan juga mendukung WebAssembly -
Akselerasi GPU dimungkinkan secara eksperimental dengan
native-compyang mengubah Elisp menjadi Native Code dan menggunakan WebRender milik Firefox sebagai compositor
Beberapa waktu lalu ini juga sempat muncul di Hacker News.
6 komentar
Saya dulu hanya pernah memakai Spacemacs, jadi tidak terlalu paham soal Emacs, tetapi saya membaca bagian di bawah ini di halaman utamanya dan menurut saya menarik. Pada akhirnya, tampaknya kuncinya adalah mengaktifkan ekosistem melalui peningkatan performa dan perluasan dukungan bahasa lewat Deno.
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) => {
};
Implementasi JS emacs-ng mencatat kecepatan lebih dari 50 kali lipat dibanding emacs 28 tanpa native-comp untuk menghitung fib(40). Dengan native-comp pada level 3, JS tetap lebih dari 15 kali lebih cepat. Ini, bersama Async I/O dari Deno, WebWorkers, dan WebAsm, memberi Anda alat untuk menjadikan Emacs pengalaman yang lebih mulus dan cepat tanpa harus memasang alat tambahan untuk dijalankan sebagai proses latar belakang atau mengkhawatirkan versi shared library - performa penuh dengan SEMUANYA di lapisan scripting.
Sebenarnya, ekstensibilitasnya sendiri tidak buruk.
Makro khas Lisp
Binding bahasa native lewat dukungan modul dinamis (proyek seperti tree-sitter adalah contoh yang representatif)
Dukungan
libvtermdan Xwidget juga memungkinkan penggunaan emulator terminal dan browser native secara internal..https://github.com/canatella/xwwp
Masalahnya ada pada I/O dan thread.
Karena I/O belum diimplementasikan secara asinkron, file berukuran besar bisa menyebabkan freezing, dan meskipun membuat thread mendukung konkurensi, itu bukan paralelisme, jadi saat beban meningkat masalah pasti muncul.😢😢😢
Namun proyek ini
https://github.com/DavidDeSimone/ng-async-files
terlihat menunjukkan upaya untuk mendukung pemrosesan file secara asinkron, jadi saya jadi tertarik.
Selain itu, bisa ikut memanfaatkan ekosistem NPM yang sangat luas.
https://emacs-ng.github.io/emacs-ng/main-features/
Karena ini adalah layer tambahan yang ditambahkan secara ketat, patch dari upstream bisa diterapkan dengan rapi.
Sebagai contoh yang representatif, kemarin saya mencoba menggabungkan branch
native-compdari mirror Emacs,jumlah commit-nya lebih dari 1200, tetapi conflict hanya muncul di sekitar 4–5 file.
https://github.com/emacs-mirror/emacs/tree/feature/native-comp
https://github.com/emacs-ng/emacs-ng/pull/185
Tahu-tahu saya jadi bergabung dengan tim ini juga, hehe
Wah, keren sekali. Semangat!!
Terima kasih!!