Pertimbangan teknis bagi pengelola paket untuk tidak menggunakan manajer paket Emacs?

10

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 asyncsebagai ketergantungan?

Amelio Vazquez-Reina
sumber
1
Pertanyaan ini harus ditutup karena terlalu luas untuk situs ini, saya pikir. Lebih baik ditujukan pada forum diskusi. Coba [email protected] atau [email protected] atau Emacs reddit atau semacamnya. " Apa masalahnya sebenarnya? " Mengasumsikan ada satu masalah seperti itu, dan menanyakan apa masalah yang mungkin terjadi untuk paket apa pun (atau pengelola paket) terlalu luas.
Drew
2
ESS di-host di Melpa: melpa.org/#/ess , mungkin itu hanya masalah dokumentasi. Saya tahu banyak proyek, yang biasanya dapat diinstal melalui manajer paket sistem, tetapi memilih untuk tidak menyebutkan opsi itu tanpa alasan nyata (mungkin dengan asumsi bahwa jika Anda pergi sejauh mengunduh sumber / binari dari situs, maka Anda harus memiliki alasan untuk melakukannya). Saya tidak tahu masalah apa yang dimiliki Helm.
wvxvw
Judul Anda agak aneh bagi saya. Apakah Anda bermaksud menulis "manajer" dua kali, atau apakah Anda maksud sebagai pengelola?
Malabarba
1
Menulis sebagai pengembang ESS, beri tahu kami bagaimana kami dapat memperbaiki masalah - seperti komentar orang lain, ESS ada dalam MELPA.
Stephen Eglen

Jawaban:

19

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.

Stefan
sumber
9

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.

lunaryorn
sumber
2
FWIW, saya tidak setuju dengan ketidaksetujuan Anda: sementara saya setuju bahwa lebih baik untuk mencoba menghindari makro yang digunakan secara berlebihan, masalah kompilasi adalah nyata dan dapat mempengaruhi lebih dari panggilan makro (misalnya, pengaruhnya dapat dipicu oleh fungsi yang tidak dapat dipertanyakan juga, atau oleh fungsi yang disebut selama ekspansi makro). Dan ketika Anda digigit oleh masalah ini, file .elc Anda salah dan dapat berperilaku salah dengan berbagai cara menarik, sehingga sulit untuk mendiagnosis masalah, dan memperbaikinya memerlukan mencopot pemasangan + menginstal ulang paket (setelah Anda menemukan masalah dan paket mana yang perlu diinstal ulang
Stefan
1
@Stefan Saya tidak menyangkal masalah kompilasi. Saya digigit sendiri. Tapi saya tidak suka sikap yang bersinar melalui pernyataan ini, dan kurangnya apa yang saya sebut "sudut pandang yang seimbang". Helm digigit seburuk itu karena mereka juga membuat banyak kesalahan di pihak mereka, tetapi pernyataan mereka tidak mengakui hal itu. Menurut pendapat saya yang sederhana, fungsi panggil dalam tubuh makro adalah kesalahan. Macro hanya untuk sintaks, tetapi tidak pernah untuk fungsi. Tapi saya mengerti bahwa ini tampaknya menjadi subjek di mana komunitas Emacs Lisp memiliki banyak pendapat berbeda.
lunaryorn
ropemacs , jdee-emacs dan excorporate adalah paket penting yang tidak ada pada arsip ELPA (tergantung pada kriteria Anda untuk paket utama). Namun, sebagian besar paket adalah.
Wilfred Hughes