¿Cómo determinar la versión del paquete que se requiere en su paquete?

9

Ahora tengo un par de paquetes, y en la sección PackageRequires me gustaría incluir todos los paquetes que necesito, parece que requiere el nombre y la versión. ¿Dónde se determina el número de versión? Por ejemplo, tengo (cl-lib "0.5"), pero ¿cuál es la mejor manera de determinar la versión mínima que puedo usar? Puedo ver la versión actual, pero ¿cuál es la mejor manera de determinar el valor mínimo necesario? Además, algunos paquetes requeridos no tienen una versión especificada en su archivo. En esos casos, ¿qué se recomienda?

usuario78810
fuente

Respuestas:

7

Use la versión para la que escribió el paquete. Esa es la línea de base más segura que puede obtener, a menos que verifique explícitamente cada función que utiliza. A partir de ahí, solo puede esperar que los mantenedores de ese paquete nunca rompan en silencio la compatibilidad con versiones anteriores ...

En cuanto a los paquetes que ni siquiera tienen ningún número de versión, no los usaría en absoluto. Si el responsable de mantenimiento ni siquiera se molesta en el correcto control de versiones, ¿cómo puede confiar en ellos con algo más?

Lunaryorn
fuente
1

Mi recomendación:

  • Comience con las funciones, variables, macros, etc. que su código realmente usa. Si usa algo que se introdujo en una versión dada de Emacs o de la biblioteca fuente de la función, comience con eso como su versión mínima.

  • La versión de la función que utiliza puede no corresponder a la versión original de la función, cuando se introdujo por primera vez. Quizás se agregaron más argumentos. Compruebe si eso es importante para su uso particular de la misma. Si no, entonces puedes ignorar esto. En caso afirmativo, busque la versión de origen más antigua que admita lo que su código espera.

  • Prueba. Obtenga una copia de cualquier versión de la biblioteca que afirme que admite como mínimo y pruébela.

  • A veces se han realizado cambios menores en una función, y su código no necesita fundamentalmente una versión más nueva. Pero es posible que deba adaptarse para admitir más de una versión (si eso es lo que desea). Es posible que deba probar si la función existe ( fboundp) o si tiene la secuencia correcta de firma / llamada. Para este último, subr-aritypuede ayudar con condition-caselas funciones integradas, pero es posible que deba usar para las funciones de Lisp (llamar con el número expandido de args y manejar un error de número incorrecto de args llamando con menos args).

Dibujó
fuente