Как управляются основные библиотеки Perl?

Насколько я понимаю, Perl традиционно включает только основные функциональные возможности, и люди устанавливают дополнительные библиотеки, чтобы делать всевозможные полезные (а иногда и очень простые) вещи. Но в какой-то момент появились "базовые библиотеки", которые поставляются с Perl по умолчанию - так что вы можете использовать эти библиотеки без их установки.

Исходя из Python мне интересно, как это делается. В частности:

  1. Как выбираются библиотеки?
  2. У библиотек все еще есть свои собственные номера версий и графики выпуска?
  3. Какие гарантии обратной совместимости вы имеете при использовании этих библиотек?
  4. Является ли распространенным обновление или понижение этих библиотек в системе? Это делается в масштабе всей системы или более конкретно?
  5. Если есть исправление ошибки, которое требует изменения API, как это происходит?
  6. Как функциональность добавляется в эти основные библиотеки (если она вообще есть)?

1 ответ

Решение
  1. В настоящее время в основной список попадают только библиотеки, которые необходимы для начальной загрузки / установки других библиотек.
  2. Некоторые находятся только в репозитории Perl git. Некоторые имеют двойную жизнь на CPAN и в репо. Иногда ошибки исправляются в репозитории, а изменения переносятся в версию CPAN. Иногда на CPAN выходит новая версия, и сопровождающий Perl проверяет модуль в репозитории.
  3. Вы можете положиться на основной модуль. Существует очень длительный период времени устаревания, прежде чем его удаляют, недавний яркий пример был Switch,
  4. Упаковщики (например, люди, которые создают RPM для дистрибутива Linux) никогда не могли сделать это правильно; неправильный порядок путей включения (@INC) не по своей вине и окончательно исправлена ​​с 5.12. Это причина, по которой исходит рекомендация собирать свой собственный Perl, а не путать его с установкой системы. В версии 5.12 предполагается, что вы просто используете CPAN для установки обновленной версии основного модуля, и он устанавливается дополнительно к тому, который поставляется с системой, но поскольку новый идет раньше старого в пути включения, новый один загружается, когда ты use / require Это.
  5. Выложил в perlpolicy.
  6. Программируйте функциональность и тестируйте ее, документируйте ее, затем выпускайте на CPAN или, соответственно, сопровождающий применяет набор изменений. Это сопровождается обсуждением на p5p.
Другие вопросы по тегам