Bagaimana menentukan versi paket yang dibutuhkan dalam paket Anda?

9

Saya memiliki beberapa paket sekarang, dan di bagian PackageRequires saya ingin meletakkan semua paket yang saya butuhkan di dalamnya, meletakkannya sepertinya membutuhkan nama dan versi. Di mana Anda menentukan nomor versi? Misalnya saya punya (cl-lib "0,5"), tetapi bagaimana cara terbaik untuk menentukan versi minimum yang dapat saya gunakan? Saya dapat melihat versi saat ini, tetapi apa cara terbaik untuk menentukan nilai min yang dibutuhkan? Juga, beberapa paket yang diperlukan tidak memiliki versi yang ditentukan dalam file mereka. Dalam hal itu, apa yang direkomendasikan?

pengguna78810
sumber

Jawaban:

7

Gunakan versi yang Anda tulis paketnya. Itu baseline paling aman yang bisa Anda dapatkan, kecuali jika Anda secara eksplisit memeriksa setiap fungsi yang Anda gunakan. Dari sana, Anda hanya bisa berharap bahwa pengelola paket itu tidak pernah diam-diam merusak kompatibilitas mundur ...

Adapun paket yang bahkan tidak memiliki nomor versi apa pun, saya tidak akan menggunakannya sama sekali. Jika pengelola bahkan tidak repot untuk versi yang tepat, bagaimana Anda bisa mempercayai mereka dengan hal lain?

lunaryorn
sumber
1

Rekomendasi saya:

  • Mulai dengan fungsi, variabel, makro, dll. Yang sebenarnya digunakan kode Anda. Jika ia menggunakan sesuatu yang diperkenalkan di versi tertentu Emacs atau pustaka sumber fungsi, maka mulailah dengan itu sebagai versi minimum Anda.

  • Versi fungsi yang Anda gunakan mungkin tidak sesuai dengan versi asli fungsi, saat pertama kali diperkenalkan. Mungkin lebih banyak argumen ditambahkan. Periksa apakah itu penting untuk penggunaan khusus Anda. Jika tidak maka Anda bisa mengabaikannya. Jika ya, maka temukan versi sumber terlama yang mendukung apa yang diharapkan kode Anda.

  • Uji. Dapatkan salinan versi perpustakaan apa pun yang Anda klaim Anda dukung sebagai minimum, dan cobalah.

  • Terkadang perubahan kecil dilakukan pada suatu fungsi, dan kode Anda secara mendasar tidak membutuhkan versi yang lebih baru. Tetapi mungkin perlu disesuaikan, untuk mendukung lebih dari satu versi (jika itu yang Anda inginkan). Anda mungkin perlu menguji apakah fungsi tersebut ada ( fboundp) atau memiliki tanda tangan / urutan panggilan yang tepat. Untuk yang terakhir, subr-aritydapat membantu dengan built-in, tetapi Anda mungkin perlu menggunakan condition-caseuntuk fungsi Lisp (memanggil dengan jumlah arg yang diperluas, dan menangani kesalahan jumlah-argumen yang salah dengan menelepon dengan arg yang lebih sedikit).

Drew
sumber