Как используются поля Переносимость, Стабильность и Сопровождение модуля Пикши?

Во многих документах по модулям, созданным Haddock (например, Prelude ]) в правом верхнем углу можно увидеть небольшой прямоугольник, содержащий информацию о переносимости, стабильности и сопровождении:

An example package information box

Изучив исходный код таких модулей и экспериментов, я подтвердил, что эта информация генерируется из таких строк в описании модуля:

-- Maintainer  :  libraries@haskell.org
-- Stability   :  stable
-- Portability :  portable

В этом есть несколько странностей:

  • Поля только , кажется, работают в таком порядке - любое f поля, выведенные из строя, просто рассматриваются как часть самого описания модуля. И это несмотря на то, что порядок в исходном файле противоположен порядку в сгенерированной документации!

  • Мне не удалось найти официальную документацию по этим полям.Существует свойство пакета Cabal с именем стабильность , примерные значения которого соответствуют значениям, которые я видел в эквивалентных полях Haddock, но кроме этого, я ничего не нашел.

Итак: Как эти поля предназначены для использования и задокументированы ли они где-нибудь?

В частности, я хотел бы знать:

  • Полный список часто используемых значений для Переносимость и Стабильность . На этой странице HaskellWiki есть список, но я хотел бы знать, откуда этот список.

  • Критерии для принятия решения о том, является ли модуль портативным или непереносимым. В частности, пакет acme-strfry , для которого я хотел бы получить ответы на эти вопросы, представляет собой привязку FFI к strfry , функции, доступной только в glibc. Является ли пакет непереносимым, потому что он работает только в системах glibc, или переносимым, потому что он не использует никаких расширений языка Haskell? Обычное использование, кажется, подразумевает последнее.

  • Почему в исходном файле требуется определенный порядок полей и почему он противоположен порядку в сгенерированной документации.

16
задан ehird 26 January 2012 в 00:50
поделиться