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

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

Исходя из Python, мне любопытно, как это управляется. Конкретно:

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

person Ian Bicking    schedule 03.06.2010    source источник


Ответы (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.
person daxim    schedule 03.06.2010
comment
Кроме того, начиная с версии 5.8.9 Perl включает в себя инструмент командной строки corelist, который может сообщить вам, какая версия основного модуля была включена в каждую версию Perl. например: corelist -a ExtUtils::MakeMaker - person Grant McLean; 04.06.2010
comment
corelist кажется не совсем точным; например он утверждает, что parent находится в основном списке, когда это не так. - person Ether; 04.06.2010
comment
Ваше заявление легко опровергнуть: cpansearch.perl.org/ src/DAPM/perl-5.10.1/lib/parent.pm - person daxim; 05.06.2010
comment
@daxim: parent может быть в 5.10.1, но его нет в 5.8.*, и corelist утверждает, что он был в ядре с 5.010001. - person Ether; 08.06.2010