2016-07-16 13 views
10

Ich bemerkte, dass GHC (ein weit verbreiteter Haskell-Compiler) eine Testsuite in Python geschrieben hat, nicht in Haskell (wie ich naiv erwarten würde). Was ist die Geschichte davon? Hat das Schreiben der Testsuite in einer anderen Sprache besondere Vorteile?Warum wird die GHC-Testsuite in Python geschrieben, nicht in Haskell?

bearbeiten: Per Vorschlag in den Kommentaren fragte ich dies in /r/haskell. Es hat sich nun drei Antworten erzeugt, die ich weiter unten zitiert habe:

tathougies sagte:

Die Test-Suite-Treiber scheint in Python geschrieben werden. Python ist eine gute High-Level-Skriptsprache.

Es ist wie die Frage "Warum verwendet GHC Make statt Haskell?" Wahrscheinlich, weil make Shell-Programme besser ausführen kann, wenn die externe Abhängigkeitsauflösung integriert ist.

Die Tests selbst scheinen in Haskell geschrieben zu sein und bestimmte Eigenschaften des Compilers zu überprüfen und Regressionen zu erfassen. Wenn sie fehlschlagen, sieht es so aus, als wäre der Python-Treiber informiert und würde dann den Fehler dem Benutzer melden.

phadej hinzugefügt: die Haskell-Bibliothek:

FWIW GHC integrierten System shake verwenden neu geschrieben wird.

eacameron sagte:

Ich weiß nicht. Aber GHC hat nicht den Luxus, Haskell so zu nutzen, wie Sie und ich. Er muss mit einer früheren Version von sich selbst booten und Abhängigkeiten vermeiden. Python ist eine ziemlich leichte Anforderung, da die meisten Systeme (außer Windows) kommen damit in gebaut

+12

Ich stimme diese Frage als off-topic zu schließen, weil es überhaupt nicht um Programmierung geht. Wenn Sie neugierig auf Entscheidungen des GHC-Teams sind, fragen Sie sie in ihrer Mailingliste. –

+3

oder fragen Sie [/r/haskell](http://reddit.com/r/haskell] oder die [Haskell-Cafe-Mailingliste] (https://groups.google.com/forum/#!forum/haskell- Cafe) – ErikR

+6

Ich denke, es wäre sinnvoller, diese Frage an Programmierer zu verschieben.SE als einfach zu schließen. Es ist eine legitime Frage für Software-Engineering, aber außerhalb der Reichweite von SO. –

Antwort

4

Die commit Nachricht Einführung Python erklärt eine Menge davon.

Revamp der Testsuite Rahmen. Der vorherige Rahmen war ein Experiment, das ein wenig außer Kontrolle geraten war - eine ganz neue Sprache mit einem in Haskell geschriebenen Interpreter war eher Schwergewicht und ließ uns mit einem Wartungsproblem.

So ist der neue Testtreiber in Python geschrieben. Der Nachteil ist, dass Sie Python benötigen, um die Testsuite auszuführen, aber wir denken nicht, dass das ein zu großes Problem ist, da es nur Entwickler betrifft und Python pretty einfach auf alles in diesen Tagen installiert.

Highlights:

  • 790 Zeilen Python, gegen 5300 Zeilen von Haskell + 720 Zeilen < seltsam hergerichtete Sprache >.

  • Das Framework unterstützt laufende Tests in verschiedenen "Möglichkeiten", die mehr Bugs fangen sollte. Standardmäßig wird jeder Test auf drei Arten ausgeführt: normal, -O und -O-fasm. Wenn Profiling-Bibliotheken erstellt wurden, wird außerdem ein anderer Weg (-O -prof-auto-all) hinzugefügt. Ich plane , um auch einen 'GHCi' Weg hinzuzufügen.

    Lauftests mehrere Möglichkeiten hat bereits einige neue Bugs gezeigt!

  • Dokumentation ist in der README-Datei und ist etwas verbessert.

  • das Framework ist eher weniger GHC-spezifisch, und könnte ohne viel Schwierigkeit in andere Compiler verwendet werden. Der Großteil der GHC-Spezifität befindet sich in einer separaten Konfigurationsdatei (config/ghc).

Die Dinge können eine Weile brauchen, um sich niederzulassen. Erwarten Sie einige unerwartete Fehler.