2012-07-17 14 views

Antwort

18

Die Felder stammen aus der Datei .cabal des Pakets, die einige Metadaten für das Paket enthält. Viele Felder können Freiform-Werte haben, so dass der Entwickler selbst entscheidet, was in diesem Feld zu schreiben ist, und es gibt keine festen "Regeln" für das, was jedes Feld nicht enthalten darf.

Portabilität: Beschreibt, wie portabel das Paket zwischen Haskell-Compilern und manchmal auch zwischen Betriebssystemen ist. Die einzigen Werte, die ich gesehen habe, sind "tragbar" und "nicht portierbar". Ein nicht portierbares Paket ist ein Paket, das möglicherweise von einer Haskell-Spracherweiterung abhängt, die nur im -Compiler vorhanden ist, und nicht mit einem anderen Haskell-Compiler wie UHC funktioniert oder von einer Systembibliothek abhängt, die nur in UNIX existiert arbeite nicht in Windows.

Stabilität: Gibt an, wie stabil eine Bibliothek ist, einschließlich ihrer Zuverlässigkeit (z. B. wie oft sie abstürzt), aber vor allem, wie oft ihre API geändert wird. Ich habe die Werte "experimentell", "provisorisch" und "stabil" gesehen, aber es könnte eine Liste mit mehr irgendwo geben (Dinge in der Kabalen-Dokumentation sind manchmal unmöglich zu finden). Wenn ein Paket experimentell ist, bedeutet dies, dass sich seine Schnittstelle wahrscheinlich zwischen jedem Release ändert, weil der Entwickler noch nicht entschieden hat, wie es implementiert werden soll, oder weil der Entwickler nur einige theoretische Funktionen aus einem Papier implementiert hat beabsichtigen, das Paket zu erhalten; Er wollte nur die Funktionalität implementieren, um zu sehen, ob es möglich war, und veröffentlicht das Paket als Demonstration. Wenn ein Paket vorläufig ist, bedeutet dies, dass die allgemeine API stabil ist, sodass es möglicherweise Updates für das Paket gibt, die nur interne Fehler beheben und keine Funktionen hinzufügen oder entfernen. Da es sich jedoch um eine vorläufige Version handelt, könnte sich dies in Zukunft ändern, wenn die Entwickler neue Funktionen hinzufügen oder die Bibliothek neu strukturieren. Mit einer stabilen Bibliothek passiert das im Grunde nie; Die API wird wahrscheinlich nie ändern, und die Implementierung ist "Rock Solid" oder eine Referenzimplementierung einer API oder etwas.

Der Betreuer für ein Paket ist die Person oder Gruppe von Personen, die für das Paket verantwortlich sind. Die E-Mail gibt an, wie diese Betreuer erreicht werden können.

Das Feld "Safe Haskell" bezieht sich auf eine GHC-Erweiterung, die Sie mehr über here lesen können. Ein Modul, das unsichere ist, verwendet Funktionen wie unsafePerformIO, die einige der grundlegenden "Regeln" von Haskell wie referentielle Transparenz bricht. Ein unsicheres Modul könnte auch unsichere Spracherweiterungen verwenden. Ein sicheres Modul ist ein Modul, das keine unsicheren Funktionen usw. verwendet und auch keine anderen unsicheren Module importiert.Ein Trusted Modul verwendet unsichere Funktionen (direkt vertrauenswürdig, indirekt Trusted), aber der Autor hat sichergestellt, dass die öffentliche API des Moduls diese Tatsache sicher versteckt, so dass es von außen scheint, wie das Modul sicher ist im Grunde. Dies sind die Optionen für das Feld "Safe Haskell".