2016-07-16 148 views
10

Ho notato che GHC (un compilatore Haskell ampiamente utilizzato) ha una suite di test scritta in Python, non in Haskell (come mi aspetterei ingenuamente). Qual è la storia di questo? Ci sono particolari vantaggi nello scrivere la suite di test in una lingua diversa?Perché la suite di test GHC è scritta in Python, non Haskell?

edit: Per un suggerimento nei commenti, ho chiesto questo /r/haskell. Ora ha generato tre risposte, che ho citato qui di seguito:

tathougies detto: Driver Suite

La prova sembra essere scritto in Python. Python è un buon linguaggio di scripting di alto livello.

È come chiedere "perché GHC usa Make anziché haskell"? Probabilmente perché make è meglio nell'esecuzione di programmi di shell con risoluzione di dipendenza esterna integrata.

Gli stessi test sembrano essere scritti in Haskell, verificando determinate proprietà del compilatore e regressioni di cattura. Se falliscono, sembra che il driver python sia informato e quindi segnalerà l'errore all'utente.

phadej aggiunto:

sistema integrato di FWIW GHC è stato riscritto per utilizzare scossa: la libreria Haskell.

eacameron detto:

Non lo so. Ma GHC non ha il lusso di usare Haskell nello stesso modo in cui tu e io. Deve eseguire il bootstrap usando una versione precedente di se stesso e vuole evitare le dipendenze. Python è un requisito piuttosto leggero poiché la maggior parte dei sistemi (ad eccezione di Windows) sono dotati di costruire nel

+12

Sto votando per chiudere questa domanda come off-topic perché non si tratta affatto di programmazione. Se sei curioso delle decisioni prese dal team GHC, chiedi loro nella loro mailinglist. –

+3

o chiedere [/r/haskell](http://reddit.com/r/haskell) o la [mailing list Haskell-Cafe] (https://groups.google.com/forum/#!forum/haskell- cafe) – ErikR

+6

Penso che sarebbe più sensato spostare questa domanda su programmers.SE piuttosto che chiuderla semplicemente. È una domanda legittima per l'ingegneria del software, ma appena al di fuori dell'ambito di SO. –

risposta

4

Il commit messaggio introducendo Python spiega un sacco di esso:.

Revamp quadro della suite di test. Il precedente framework era un esperimento che diventava un po 'fuori controllo: un'intera nuova lingua con un interprete scritto in Haskell era piuttosto pesante e lasciava a noi il problema di manutenzione .

Quindi il nuovo driver di test è scritto in Python. Il rovescio della medaglia è che tu hai bisogno che Python esegua la suite di test, ma non pensiamo che sia un problema troppo grande, poiché riguarda solo gli sviluppatori e le installazioni di Python piuttosto facilmente su tutto in questi giorni.

Highlights:

  • 790 linee di Python, contro 5300 linee di Haskell + 720 linee di < strana lingua inventata >.

  • il framework supporta l'esecuzione di test in vari "modi", che dovrebbero catturare più bug. Per impostazione predefinita, ogni test viene eseguito in tre modi: normale, -O e -O -fasm. Inoltre, se sono state create librerie di profilazione , viene aggiunto un altro modo (-O -prof -auto-all). Ho in programma di aggiungere anche un modo 'GHCi'.

    Test in esecuzione in più modi ha già mostrato alcuni nuovi bug!

  • la documentazione è nel file README ed è leggermente migliorata.

  • il framework è un po 'meno specifico di GHC, e potrebbe senza molto molta difficoltà essere utilizzato in altri compilatori. La maggior parte delle specificità di GHC si trova in un file di configurazione separato (config/ghc).

Le cose possono richiedere un po 'di tempo per sistemarsi. Aspettatevi alcuni imprevisti errori .