Frage

In den Abhängigkeiten Abschnitt einer Kabale-Datei:

Build-Depends: base >= 3 && < 5, transformers >= 0.2.0

Ich möchte etwas tun

Build-Depends: base >= 3 && < 5, transformers >= 0.2.0 && < 0.3.0

(Obergrenzen für Versionen von Paketen setzen I hängen von)

oder nicht?

Ich werde ein reales Beispiel verwenden: mein „List“ Paket auf Hackage (List Monade Transformator und Klasse)

  • Wenn ich nicht das Limit setzen - mein Paket durch eine Änderung in „Transformers“ brechen könnte
  • Wenn ich das Limit platziere - ein Benutzer, Anwendungen „Transformatoren“, sondern wird mit einer neueren Version von ihm nicht in der Lage sein lift und liftIO mit ListT zu verwenden, da es nur eine Instanz dieser Klassen von Transformatoren-0.2.x ist

Ich denke, dass Anwendungen immer Obergrenzen setzen sollten, so dass sie nie brechen, so dass diese Frage nur über Bibliotheken ist:

Soll ich verwenden, um die obere Version Grenze auf Abhängigkeiten oder nicht?

War es hilfreich?

Lösung

Es ist eine explizite Politik obere Schranken zu empfehlen - siehe insbesondere Abschnitt 3 ( "Abhängigkeiten in Cabal "). Die anderen Antworten geben einige weitere Begründung für diese Richtlinie.

Kurz gesagt - die Obergrenze in Form von < A.(B+1) sein sollte, wobei A und B die ersten Elemente der aktuellen Version (A.B.C...) sind. Dies liegt daran, zunehmende A.B, dass die Version bricht alter APIs bedeuten sollte.

Andere Tipps

Denken Sie an die Ausfallarten:

  • Mit der oberen Grenze, entweder Ihr Paket baut oder Kabale meckert über eine unbefriedigte Build Abhängigkeit. Blame ist eindeutig zugeordnet.

  • Ohne die obere Grenze, Kunde hat eine neue Version von Transformatoren und es ist nicht rückwärtskompatibel. Ihre Software kann nicht bauen; GHC meckert darüber, wie Sie Ihren Code nicht kompiliert. Ihre Software sieht schlampige.

Setzen Sie im oberen gebunden.

IMO obere Schranken für die akzeptierten Versionsnummern setzen ist das Richtige zu tun. In Anbetracht der Semantik von Versionsnummern, die von Hackage gibt es sicherlich keine Garantie, dass Ihr Paket mit arbeiten, in diesem Fall, Transformatoren 0.3.0.

Ich habe keine wirkliche Diskussion darüber gesehen und obwohl es scheint nicht eine allgemeine Empfehlung zu seine Obergrenzen zu verwenden, mit Ausnahme des Basispaket.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top