Come determinare la versione del pacchetto da richiedere nel pacchetto?


9

Ho un paio di pacchetti ora, e nella sezione PackageRequires vorrei mettere tutti i pacchetti di cui ho bisogno, a quanto pare richiede il nome e la versione. Dove si determina il numero di versione? Ad esempio ho (cl-lib "0.5"), ma qual è il modo migliore per determinare la versione minima che posso usare? Posso vedere la versione corrente, ma qual è il modo migliore per determinare il valore minimo necessario? Inoltre, alcuni pacchetti richiesti non hanno una versione specificata nel loro file. In questi casi, cosa è raccomandato?

Risposte:


7

Usa la versione per cui hai scritto il pacchetto. Questa è la base più sicura che puoi ottenere, a meno che tu non controlli esplicitamente ogni funzione che usi. Da lì in poi, puoi solo sperare che i manutentori di quel pacchetto non rompano mai silenziosamente la compatibilità all'indietro ...

Per quanto riguarda i pacchetti che non hanno nemmeno un numero di versione, non li userei affatto. Se il manutentore non si preoccupa nemmeno del corretto controllo delle versioni, come puoi fidarti di loro con qualsiasi altra cosa?


1

La mia raccomandazione:

  • Inizia con le funzioni, le variabili, le macro, ecc. Effettivamente utilizzate dal tuo codice. Se utilizza qualcosa che è stato introdotto in una determinata versione di Emacs o della libreria di origine della funzione, inizia con quella come versione minima.

  • La versione della funzione che si utilizza potrebbe non corrispondere alla versione originale della funzione, quando è stata introdotta per la prima volta. Forse sono stati aggiunti più argomenti. Verifica se questo è importante per il tuo particolare utilizzo. In caso contrario, puoi ignorarlo. Se sì, allora trova la versione di origine più vecchia che supporta ciò che il tuo codice si aspetta.

  • Test. Ottieni una copia della versione della libreria che ritieni di supportare come minimo e provala.

  • A volte sono state apportate piccole modifiche a una funzione e il codice non ha fondamentalmente bisogno di una versione più recente. Ma potrebbe essere necessario adattarlo, per supportare più di una versione (se è quello che vuoi). Potrebbe essere necessario verificare se la funzione esiste ( fboundp) o ha la sequenza di firma / chiamata corretta. Per quest'ultimo, subr-aritypuò aiutare con i built-in, ma potrebbe essere necessario utilizzare condition-caseper le funzioni Lisp (chiamando con il numero espanso di args e gestendo un errore di numero errato di args chiamando con meno args).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.