Saya memperhatikan beberapa pengelola paket terkenal memilih untuk tidak menggunakan sistem manajemen paket Emacs (ESS?) Atau mengeluh tentang keterbatasannya (Helm).
Mengutip dari Helm 's README.md :
PERINGATAN : Karena konsep package.el yang buruk yang bertugas mengambil file helm dan mengompilasinya, pengguna sebagian besar mengalami kesalahan saat meningkatkan dari melpa dan daftar-paket. Untuk menghindari hal ini, Async telah ditambahkan sebagai ketergantungan pada helm untuk memaksa package.el mengkompilasi file-nya di lingkungan yang bersih. Orang-orang yang menginstal dari git dan menggunakan make file tidak akan menderita dari masalah ini dan tidak memerlukan Async meskipun direkomendasikan karena memperbaiki instalasi semua paket lain yang dapat Anda instal dengan package.el from (m) elpa. Lihat FAQ untuk info lebih lanjut.
Apa batasan teknis yang tepat yang dimiliki oleh sistem manajemen paket saat ini yang dapat mereka singgung, dan mengapa paket perlu digunakan async
sebagai ketergantungan?
sumber
Jawaban:
Masalah yang Anda maksudkan adalah ketika Anda memutakhirkan sebuah paket dari dalam sesi Emacs di mana paket itu sudah digunakan, versi lama dari paket itu kadang-kadang akan mengganggu selama kompilasi versi baru, yang mengarah ke file yang salah dikompilasi.
Ada perbaikan sementara untuk itu di Emacs-25, tetapi AFAIK masalahnya masih ada di 24.5.
sumber
Dengan pengecualian ProofGeneral, saya tidak mengetahui adanya paket Emacs utama yang tidak tersedia di beberapa arsip ELPA. Secara khusus, ESS menggunakan MELPA sejak tiga tahun . Dan PG adalah cerita tersendiri, dan jelas tidak mewakili seluruh ekosistem Emacs.
ELPA jelas memiliki kekurangannya, tetapi untuk sebagian besar paket ini berfungsi dengan baik, bahkan untuk paket besar seperti Magit. Helm adalah satu-satunya paket yang saya lihat mengeluh tentang ELPA. Saya tidak yakin apa yang sebenarnya mereka keluhkan, tapi saya kira ini tentang kompilasi:
Selama peningkatan, Emacs mengkompilasi versi baru paket di lingkungan di mana versi lama masih dimuat. Biasanya, ini tidak membahayakan sama sekali, tetapi dapat merusak makro dalam situasi tertentu. Emacs akan mengkompilasi versi baru terhadap implementasi lama dari makro, yang dapat menyebabkan kerusakan jika kode baru bergantung pada perubahan spesifik dalam makro itu.
Namun, sebagai pengelola paket, saya sangat tidak setuju dengan pernyataan ini. Saya cenderung menyalahkan Helm daripada ELPA atau Emacs. Menurut pendapat saya, pernyataan itu hiperbola, dan masalahnya hanyalah gejala makro penggunaan berlebihan dan ab.
Jika Anda menggunakan banyak makro dan — bahkan lebih buruk lagi — memasukkan kode non-sepele ke dalam tubuh makro, Anda hanya harus menyadari implikasi yang dimiliki oleh kompilasi byte ini dan Anda harus berhati-hati untuk menjaga kompatibilitas mundur dengan makro Anda sendiri. dalam paket Anda. Tidak melakukannya, dan bukannya menyalahkan, bukan hal yang baik untuk dilakukan. 2 sen saya.
sumber