Почему набор тестов GHC написан на Python, а не Haskell?

Я заметил, что GHC (широко используемый компилятор Haskell) имеет набор тестов, написанный на Python, а не в Haskell (как я бы наивно ожидал). Какова история этого? Существуют ли особые преимущества для написания набора тестов на другом языке?

edit: По предложению в комментариях я спросил это в /r/haskell. Теперь он создал три ответа, которые я привел ниже:

tathougies сказал:

Драйвер тестового набора, похоже, написан на Python. Python - хороший высокоуровневый язык сценариев.

Ему нравится спрашивать: "Почему GHC использует Make вместо haskell"? Вероятно, потому что make лучше работает при запуске программ оболочки с внешним встроенным разрешением зависимостей.

Сами тесты, по-видимому, записываются в Haskell, проверяя определенные свойства компилятора и захватывая регрессии. Если они не работают, похоже, что драйвер python информирован, а затем сообщит об ошибке пользователю.

phadej добавлено:

Встроенная система FWIW GHC переписывается для использования встряхивания: библиотека Haskell.

eacameron сказал:

Я не знаю. Но у GHC нет роскоши использовать Haskell так же, как вы и я. Он должен загружаться, используя предыдущую версию, и хочет избежать зависимостей. Python - довольно легкое требование, поскольку большинство систем (кроме Windows) поставляются с ним.

Ответ 1

commit сообщение, в котором Python многое объясняет:

Обновите структуру testsuite. Предыдущая структура была эксперимент, который получил немного из-под контроля - совершенно новый язык с переводчиком, написанным в Haskell, был довольно тяжеловесным и оставил нас с проблемой обслуживания.

Итак, новый тестовый драйвер написан на Python. Недостатком является то, что вы нужен Python для запуска testuite, но мы не думаем, что слишком большой проблема, поскольку это влияет только на разработчиков и Python устанавливает довольно легко на все эти дни.

Основные характеристики:

  • 790 строк Python, по сравнению с 5300 строками Haskell + 720 строк < странный язык, сделанный при оформлении.

  • среда поддерживает запуск тестов различными способами, что должно поймать больше ошибок. По умолчанию каждый тест запускается тремя способами: нормальный, -O и -O -fasm. Кроме того, если профилирующие библиотеки были созданы, еще один способ (-O -prof -auto-all). я планирую также добавить способ "GHCi".

    Запуск тестов несколькими способами уже показал некоторые новые ошибки!

  • документация находится в файле README и несколько улучшена.

  • структура скорее менее специфична для GHC и может без особого трудно уговорить использовать другие компиляторы. Большинство из Спецификация GHC находится в отдельном файле конфигурации (config/ghc).

Может потребоваться некоторое время, чтобы успокоиться. Ожидайте неожиданных неудачи.