зависимости от пакета hackage и соответствующие требованиям завтрашнего дня библиотеки

В разделе зависимостей файла интриги:

Build-Depends: base >= 3 && < 5, transformers >= 0.2.0

Если я делаю что-то как

Build-Depends: base >= 3 && < 5, transformers >= 0.2.0 && < 0.3.0

(помещающий верхние пределы версий пакетов я завишу от),

или нет?

Я буду использовать реальный пример: мой пакет "Списка" на Hackage (Преобразователь монады списка и класс)

  • Если я не помещаю предел - мой пакет мог бы повредиться изменением в "преобразователях"
  • Если я действительно помещу предел - пользователь, который использует "преобразователи", но использует более новую версию ее, то не сможет использовать lift и liftIO с ListT потому что это - только экземпляр этих классов преобразователей-0.2.x

Я предполагаю, что приложения должны всегда помещать верхние пределы так, чтобы они никогда не повреждались, таким образом, этот вопрос только о библиотеках:

Я буду использовать верхний предел версии на зависимости или нет?

6
задан yairchu 13 May 2010 в 20:18
поделиться

3 ответа

Существует явная политика , рекомендующая верхние границы - см., В частности, раздел 3 («Зависимости в Кабале»). Другие ответы дают дополнительное обоснование этой политики.

Вкратце - верхний предел должен быть в форме , где A и B - первые элементы текущей версии ( ABC .. ). Это связано с тем, что увеличение A.B должно означать, что версия ломает старые API.

4
ответ дан 17 December 2019 в 00:05
поделиться

Подумайте о режимах сбоя:

  • С верхней границей, либо ваш пакет строится, либо клика болтает о неудовлетворенной зависимости сборки. Вина четко определена.

  • Без верхней границы у клиента есть последняя версия трансформаторов, и она не имеет обратной совместимости. Ваше программное обеспечение не может быть создано; GHC блеет о том, как ваш код не компилируется. Ваше программное обеспечение выглядит некачественно.

Поместите в верхнюю границу.

2
ответ дан 17 December 2019 в 00:05
поделиться

ИМО, устанавливая верхние границы для принятых номеров версий, является правильным решением. Учитывая семантику номеров версий, используемых Hackage, нет никакой гарантии, что ваш пакет будет работать, в данном случае, с трансформаторами 0.3.0.

Я не видел реального обсуждения этого вопроса, и, похоже, нет общей рекомендации использовать верхние границы, за исключением базового пакета.

1
ответ дан 17 December 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: