deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Emacs 31.1 öne çıkan tek bir özellik olmadan geldi; unexec kaldırıldı ve tree-sitter kurulumu basitleşti

GNU Emacs 31.1, öne çıkan tek bir değişiklik olmadan yayınlandı — planlanan garbage collector Emacs 32'ye sarktı — ancak bu sürüm eski unexec dumper'ı kaldırıyor ve tree-sitter dilbilgisi kurulumunu basitleştiriyor.

Emacs 31.1 öne çıkan tek bir özellik olmadan geldi; unexec kaldırıldı ve tree-sitter kurulumu basitleşti

Emacs 31.1 yayınlandı ve Mastering Emacs'a göre — sürüm incelemesi Hacker News ana sayfasında öne çıktı — bu, tek bir gösterişli özellikten ziyade artımlı iyileştirmelerden oluşan bir sürüm. Bu döngü için düşünüldüğü bildirilen yeniden tasarlanan garbage collector Emacs 32'ye ertelendi.

Buna rağmen en etkileyici değişiklik yine bir silme işlemi: Emacs 27'den beri kullanımdan kaldırılmış durumda olan geleneksel unexec dumper artık tamamen gitti.

Unexec dumper gitti

Bunun neden önemli olduğunu açıklamak için Mastering Emacs, on yıllar öncesine dayanan bir mühendislik sorununu özetliyor. Emacs'ı derlemek önce temacs üretir; C motorunu ve Lisp yorumlayıcısını içeren ama standart kütüphanenin pek azını barındıran minimal bir çekirdek. Tüm o Lisp kodunu başlangıçta belleğe yüklemek yavaş ve kaynak tüketen bir iş olduğu için Emacs yıllarca bu sorunu unexec ile çözdü: her şeyi bir kez yükleyip sürecin bellek segmentlerini doğrudan yeni bir çalıştırılabilir dosyaya yazıyor, böylece tüm standart kütüphane hazır durumdayken başlayan bir ikili dosya elde ediliyordu.

Bu hile, upstream'in sonunda desteklemeyi bıraktığı glibc'deki özel kancalara dayanıyordu. Yaklaşık on yıl önce Daniel Colascione'un geliştirdiği portable dumper, ham bellek dökümünü Emacs'ın iç durumunun yapılandırılmış bir serileştirmesiyle değiştirdi ve yıllardır varsayılan dumper mekanizması oldu. 31.1'de eski unexec kodu tamamen kaldırıldı ve portable dumper artık m68k a.out hedeflerini de kapsıyor.

Tree-sitter dilbilgileri kurulması kolaylaşıyor

Makaleye göre Emacs'ın tree-sitter entegrasyonu hâlâ iki engel tarafından geri tutuluyor: major modlar özellikle tree-sitter için yazılmak zorunda ve çoğu zaman orijinallerinin yüzeysel yeniden uygulamaları oluyor; ayrıca dilbilgilerinin kurulumu — hem tree-sitter kütüphanesinin ABI'siyle hem de her dilbilgisinin beklenen sürümüyle, özellikle Windows'ta, eşleşmesi gerektiğinden — hataya açık olagelmiş. Emacs 31.1 ikinci soruna çözüm getiriyor: artık hakkında bilgi sahibi olduğu tree-sitter modları için doğru dilbilgisini kurmayı önerebiliyor.

Editördeki yaşam kalitesi değişiklikleri

Birkaç küçük değişiklik öne çıkıyor:

  • Emacs yapılandırma dizini içindeki user-lisp/ dizini artık özyinelemeli olarak byte-compile ediliyor, autoload cookie'leri için taranıyor ve load-path'e ekleniyor; böylece kullanıcılara az önce clone ettikleri bir paketi nasıl çalıştıracakları sorusuna yerleşik bir yanıt geliyor.
  • Emacs 30.1'de tanıtılan, yüzen bir child frame yerine *Completions* penceresi üzerinden çalışan yerleşik buffer içi tamamlama arayüzü completion-preview-mode, çok çeşitli yeni özelleştirme seçenekleri kazanıyor.
  • C-x w öneki altında gruplanan window-layout-rotate-clockwise gibi yeni komutlar pencere düzenlerini döndürüyor.
  • Point ve mark'ı takas eden C-x C-x, artık bölgeyi etkinleştirmeyecek şekilde yapılandırılabiliyor — bu davranış daha önce transient-mark-mode'u aşmak için özel kod gerektiriyordu.
  • Pano erişimi ve fare olaylarını destekleyen terminallerde xterm-mouse-mode artık varsayılan olarak etkin; menüler tıklanabilir hale geliyor ve fare davranışı beklendiği gibi çalışıyor; nil olarak ayarlamak eski davranışı geri getiriyor.

Derleme, paketleme ve başlangıç değişiklikleri

Sürüm ayrıca çeşitli kurulum ayrıntılarını yeniden düzenliyor. Emacs'ın kendi ctags programı artık derlenmiyor veya kurulmuyor; kullanıcılara Universal Ctags'a yönlendirme yapılıyor ya da eski davranış için etags --ctags çalıştırılabiliyor. Yeni --with-systemduserunitdir yapılandırma seçeneği, Emacs'ın sunucusunu çalıştırmak için bir systemd kullanıcı birimi kurmasını sağlıyor; makale bunu öneriyor.

GCC 4 veya sonrasıyla derlenen 32-bit x86 sistemlerinde configure, SSE2 var olduğunda artık varsayılan olarak -mfpmath=sse, aksi halde -fno-tree-sra kullanıyor; bu, Emacs'ın nadir durumlarda yanlış davranmasına yol açabilen GCC hata kaydı 58416'ı aşıyor. Son olarak, site-start.el artık kullanıcının early-init.el dosyasından önce yükleniyor; böylece sistem yöneticileri package-directory-list'i genişletmek gibi erken aşama özelleştirmeleri yapabiliyor.

Neden önemli

Emacs sürümleri nadiren manşet olur ve 31.1 bunda dürüst: gösterecek tek bir özellik yok. Ama değişikliklerin toplamı, eski borçlarını sessizce kapatan bir projeyi anlatıyor. Unexec'in kaldırılması, portable dumper'ın çoktan gereksiz kıldığı, glibc içlerine kök salmış bir taşınabilirlik yükünü sona erdiriyor. Otomatik tree-sitter dilbilgisi kurulumu, Emacs'ta modern sözdizimi farkındalıklı düzenlemenin önündeki en pratik engeli kaldırıyor. Ve terminal fare desteği gibi varsayılanlar, editörün yeni gelenlerin beklediği şekilde davranmasını sağlıyor. Emacs'ın geriye dönük uyumluluktaki bu kadar uzun tarihine sahip bir proje için, çoğunlukla silen, basitleştiren ve cilalayan bir sürümün kendisi başlı başına haber.

  • #emacs
  • #open-source
  • #text-editors
  • #tree-sitter
  • #software-release

İlgili yazılar