Haskell Porting Initiative

Материал из ALT Linux Wiki
Перейти к: навигация, поиск

Задачи[править]

Получение рабочего транслятора Haskell, что требуется в т.ч. для широко востребованного пакета pandoc.

Состояние проекта[править]

Собран руками Hugs98 версии ноября 2002 года. Далее надо выполнять плавный перекат на более новые версии вплоть до максимальной. Также есть необходимость наладить контакт с авторами статей по бутстрапу GHC и разработчиками, чтобы скоординировать усилия сообщества.

Механизм портирования[править]

Наиболее актуальной реализацией интерпретатора и компилятора языка Haskell является Glasgow Haskell Compiler. В связи с тем, что он написан на самом Haskell - портирование на новые платформы затруднено. Наиболее актуальный вариант - бутстрап с помощью интерпретатора Hugs98, написанного на языке программирования C.

Hugs 98[править]

В работе: nir@

Список проблем:

  • Для успешного конфигурирования сначала необходимо обновить файл config.guess из http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD или с помощью команды cp -at . -- /usr/share/gnu-config/config.sub /usr/share/gnu-config/config.guess, но стоит отметить, что было бы лучше указать архитектуру как e2k* на случай появления e2kv3, e2kv4 и подобных.
  • Hugs98 из стандартной поставки содержит ряд ошибок в коде, которые требуется патчить.

GHC[править]

Портирование GHC представляет собой проект огромной сложности хотя бы потому, что GHC даже минимально доступной версии (0.29) не собирался ни чем кроме GHC. Пользователи и разработчики GHC с каналов #haskell и #ghc отправляют читать популярные статьи:

Сборочные зависимости:

  • alex
  • happy
  • cabal
  • libffi (для целевой платформы)
  • gcc (для целевой платформы)
  • ghc

GHC поддерживает сборку двумя предыдущими минорными релизами. Также, GHC не поддерживает кросс-компиляцию: Опция --build должна быть эквивалентная опции --host.

Сборка GHC 0.29[править]

При сборке старых версий GHC (0.29, 3.x, etc.) существует проблема несовместимости новых вариантов FHS и интерпретаторов с ожиданиями старой сборочной системы.

Сборка GHC 4.08.2[править]

Согласно старым версиям документации GHC - наиболее простым вариантом бутстрапа на новых архитектурах является сборка "unregistered" GHC начиная с версии 4.08.2 ( https://downloads.haskell.org/~ghc/6.0/docs/html/building/sec-porting-ghc.html ), который можно скачать на странице: https://www.haskell.org/ghc/download_ghc_408.html . Также на той же странице присутствуют файлы hc с которых можно начать бутстрап.

На текущий момент для бутстрапа GHC необходимо знать platform ABI, чтобы поправить ассемблерные части в кодогенераторе, написанном на Perl.