2016-07-16 3 views
10

GHC (널리 사용되는 Haskell 컴파일러)는 Haskell이 아닌 Python으로 작성된 테스트 슈트를 가지고 있다는 것을 알았다. 이것의 역사는 무엇입니까? 테스트 스위트를 다른 언어로 작성하면 특별한 이점이 있습니까?GHC 테스트 스위트가 Haskell이 아닌 Python으로 작성된 이유는 무엇입니까?

편집 : 의견에 대한 제안에 따라 /r/haskell에 질문했습니다. 그것은 지금은 아래에 인용 한 세 가지 답변 발생했습니다

tathougies을 말했다

테스트 스위트 드라이버가 파이썬으로 작성된 것으로 보인다. 파이썬은 훌륭한 고급 스크립팅 언어입니다.

GHC가 왜 haskell 대신 Make를 사용하는 것입니까? 아마도 외부 종속성 해상도가 내장 된 쉘 프로그램을 실행할 때 make가 더 낫기 때문일 것입니다.

테스트 자체는 컴파일러의 특정 속성을 확인하고 회귀를 포착하는 하스켈에서 작성된 것 같습니다. 그들이 실패하면, python 드라이버가 알려주는 것처럼 보이고 그 다음에 오류를 사용자에게보고합니다.

phadej 추가 : 하스켈 라이브러리 :

FWIW GHC의 기본 시스템이 흔들림을 사용하여 다시 작성되고있다.

eacameron

는 말했다 : 몰라요

. 그러나 GHC는 하스켈을 사용하는 것과 같은 방식으로 사치품을 가지고 있지 않습니다. 이전 버전의 자체를 사용하여 부트 스트랩해야하며 종속성을 피하기를 원합니다. 가에 내장 된 (윈도우 제외) 대부분의 시스템 온 이후로 파이썬은 꽤 가벼운 요구 사항입니다

+12

프로그래밍에 관한 것이 아니기 때문에이 질문을 주제로 끝내기로했습니다. GHC 팀이 내리는 결정에 대해 궁금한 점이 있으면 메일 링리스트에 질문하십시오. –

+3

또는 [/r/haskell](http://reddit.com/r/haskell) 또는 [Haskell-Cafe 메일 링리스트] (https://groups.google.com/forum/#!forum/haskell- 카페) – ErikR

+6

나는이 질문을 프로그래머에게 옮기는 것이 더 합리적이라고 생각한다. 단순히 그것을 닫는 것보다. 이것은 소프트웨어 공학에 대한 정당한 질문이지만, SO의 범위 밖에 있습니다. –

답변

4

commit 메시지 도입 파이썬은 많은 설명합니다.

개편있는 TestSuite 프레임 워크를. 이전 프레임 워크는 약간 통제를 벗어난 실험이었습니다. 완전히 새로운 언어 해스켈로 작성된 통역사는 오히려 중량이었으며 유지 관리 문제로 으로 남았습니다.

그래서 새로운 테스트 드라이버는 파이썬으로 작성되었습니다. 단점은 여러분이 에 testsuite를 실행하기 위해 파이썬이 필요하다는 것입니다. 그러나 개발자와 파이썬에만 영향을 미치기 때문에 너무 큰 것으로 생각하지 않습니다. 문제는 요즘 모든 일에 쉽게 을 쉽게 설치합니다.

하이라이트 : 파이썬의

  • 790 선, < 이상한 만들어 낸 언어 >의 하스켈 + 720 개 라인 대 5300 개 라인.

  • 프레임 워크는 다양한 "방법"으로 테스트를 실행하는 것을 지원합니다. 은 더 많은 버그를 잡아야합니다. 기본적으로 각 테스트는 normal, -O 및 -O-fasm의 세 가지 방식으로 실행됩니다. 또한 프로파일 링 라이브러리 이 빌드 된 경우 다른 방법 (-O -prof -auto-all)이 추가됩니다. 나는 또한 'GHCi'방법을 추가하려면 계획이다.

    여러 가지 방법으로 테스트를 실행하면 이미 몇 가지 새로운 버그가 발견되었습니다!

  • 설명서는 README 파일에 있으며 다소 개선되었습니다.

  • 프레임 워크는 다소 GHC 특정 적이기 때문에 다른 컴파일러를 사용하는 데 어려움을 겪지 않을 수 있습니다. GHC와 관련된 대부분의 기능은 별도의 구성 파일 (config/ghc)에 있습니다.

상황이 안정 될 때까지 시간이 걸릴 수 있습니다. 예상치 못한 일부 오류가 발생할 것으로 예상하십시오.