Як визначити потрібну версію пакета у своєму пакеті?


9

Зараз у мене є декілька пакунків, і в розділі PackageRequires я хотів би помістити всі необхідні мені пакунки, але, здається, потрібні ім'я та версія. Де Ви визначаєте номер версії? Наприклад, у мене є (cl-lib "0,5"), але який найкращий спосіб визначити мінімальну версію, яку я можу використовувати? Я бачу поточну версію, але який найкращий спосіб визначити необхідне мінімальне значення? Також деякі необхідні пакети не мають в своєму файлі версії, вказаної. У тих випадках, що рекомендується?

Відповіді:


7

Використовуйте версію, для якої ви написали пакунок. Це найбезпечніша базова лінія, яку ви можете отримати, якщо ви чітко не перевірите кожну функцію, яку ви використовуєте. Відтепер ви можете лише сподіватися, що технічне обслуговування цього пакету ніколи не мовчить порушити сумісність назад ...

Що стосується пакетів, у яких навіть немає жодної версії, я б взагалі не використовував їх. Якщо сервіс навіть не турбується про належну версію, як ви можете довіряти їм щось інше?


1

Моя рекомендація:

  • Почніть з функцій, змінних, макросів тощо, якими фактично використовується ваш код. Якщо він використовує щось, що було введено в заданій версії Emacs або з вихідної бібліотеки функції, то починайте це як мінімальну версію.

  • Версія функції, яку ви використовуєте, може не відповідати початковій версії функції під час її введення. Можливо, було додано більше аргументів. Перевірте, чи це має значення для вашого конкретного використання. Якщо ні, то ви можете проігнорувати це. Якщо так, то знайдіть найдавнішу версію джерела, яка підтримує те, що очікує ваш код.

  • Тест. Отримайте копію будь-якої версії бібліотеки, яку, як ви заявляєте, підтримуєте як мінімум, і спробуйте.

  • Іноді в функції вносяться незначні зміни, а ваш код принципово не потребує нової версії. Але це може знадобитися адаптувати для підтримки декількох версій (якщо це те, що ви хочете). Можливо, вам доведеться перевірити, чи функція існує ( fboundp) чи має правильну послідовність підпису / виклику. Останнє subr-arityможе допомогти з вбудованими модулями, але вам може знадобитися використання condition-caseфункцій Lisp (дзвінки з розширеним числом аргументів та обробка помилки з помилковою кількістю аргументів шляхом виклику меншою кількістю аргументів).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.