Wie bestimmen Sie die Paketversion, die in Ihrem Paket benötigt wird?

9

Ich habe jetzt ein paar Pakete und im Abschnitt PackageRequires möchte ich alle Pakete, die ich benötige, darin ablegen. Es scheint, als ob es den Namen und die Version erfordert. Wo bestimmen Sie die Versionsnummer? Zum Beispiel habe ich (cl-lib "0.5"), aber wie kann ich am besten die Mindestversion bestimmen, die ich verwenden kann? Ich kann die aktuelle Version sehen, aber wie kann der erforderliche Mindestwert am besten ermittelt werden? Außerdem ist für einige erforderliche Pakete keine Version in der Datei angegeben. Was wird in diesen Fällen empfohlen?

user78810
quelle

Antworten:

7

Verwenden Sie die Version, für die Sie das Paket geschrieben haben. Dies ist die sicherste Basislinie, die Sie erhalten können, es sei denn, Sie überprüfen explizit jede von Ihnen verwendete Funktion. Von da an können Sie nur hoffen, dass die Betreuer dieses Pakets die Abwärtskompatibilität niemals stillschweigend unterbrechen…

Pakete, die nicht einmal eine Versionsnummer haben, würde ich überhaupt nicht verwenden. Wenn sich der Betreuer nicht einmal um die richtige Versionierung kümmert, wie können Sie ihm dann noch etwas anvertrauen?

Mondhorn
quelle
1

Meine Empfehlung:

  • Beginnen Sie mit den Funktionen, Variablen, Makros usw., die Ihr Code tatsächlich verwendet. Wenn etwas verwendet wird, das in einer bestimmten Version von Emacs oder der Quellbibliothek der Funktion eingeführt wurde, beginnen Sie damit als Mindestversion.

  • Die Version der Funktion, die Sie verwenden, entspricht möglicherweise nicht der ursprünglichen Version der Funktion, als sie zum ersten Mal eingeführt wurde. Vielleicht wurden weitere Argumente hinzugefügt. Überprüfen Sie, ob dies für Ihre spezielle Verwendung von Bedeutung ist. Wenn nicht, können Sie dies ignorieren. Wenn ja, finden Sie die älteste Quellversion, die die Erwartungen Ihres Codes unterstützt.

  • Prüfung. Holen Sie sich eine Kopie der Version der Bibliothek, von der Sie behaupten, dass Sie sie mindestens unterstützen, und probieren Sie sie aus.

  • Manchmal wurden geringfügige Änderungen an einer Funktion vorgenommen, und Ihr Code benötigt grundsätzlich keine neuere Version. Möglicherweise muss es jedoch angepasst werden, um mehr als eine Version zu unterstützen (wenn Sie dies wünschen). Möglicherweise müssen Sie testen, ob die Funktion vorhanden ist ( fboundp) oder die richtige Signatur- / Aufrufsequenz hat. Letzteres subr-aritykann bei integrierten condition-caseFunktionen hilfreich sein, muss jedoch möglicherweise für Lisp-Funktionen verwendet werden (Aufrufen mit der erweiterten Anzahl von Argumenten und Behandeln eines Fehlers mit falscher Anzahl von Argumenten durch Aufrufen mit weniger Argumenten).

Drew
quelle