Как управляются основные библиотеки Perl?
Вопрос
Насколько я понимаю, Perl традиционно включает только основные функции, и люди устанавливают дополнительные библиотеки для выполнения всевозможных полезных (а иногда и очень простых) вещей.Но в какой-то момент появились «основные библиотеки», которые по умолчанию поставляются с Perl, поэтому вы можете использовать эти библиотеки, не устанавливая их.
Исходя из Python, мне любопытно, как это управляется.Конкретно:
- Как выбираются библиотеки?
- Имеются ли у библиотек свои собственные номера версий и графики выпуска?
- Какие гарантии обратной совместимости вы имеете при использовании этих библиотек?
- Часто ли обновлять или понижать версию этих библиотек в системе?Это делается в масштабе всей системы или более конкретно?
- Если есть исправление ошибки, требующее изменения API, как это происходит?
- Как добавляется функциональность в эти основные библиотеки (если она вообще добавляется)?
Решение
- В настоящее время в каталог попадают только те библиотеки, которые необходимы для загрузки/установки других библиотек. основной список.
- Некоторые из них находятся только в репозитории Perl git.Некоторые из них имеют двойную жизнь на CPAN и в репозитории.Иногда в репозитории исправляются ошибки, и изменения переносятся в версию CPAN.Иногда на CPAN выходит новая версия, и специалист по сопровождению Perl добавляет модуль в репозиторий.
- Вы можете положиться на основной модуль.Прежде чем один из них будет удален, пройдет очень длительный период устаревания, недавний яркий пример:
Switch
. - Упаковщики (например.люди, создающие RPM для дистрибутива Linux), никогда не могли понять это правильно;неправильный порядок включения путей (
@INC
) не их вина, и наконец исправлено в 5.12.Именно по этой причине рекомендуется скомпилировать собственный perl и не возиться с установкой системы.В версии 5.12 предполагается, что вы просто используете CPAN для установки обновленной версии основного модуля, и он устанавливается дополнительно к тому, который поставляется с системой, но поскольку новый в пути включения предшествует старому, новый один загружается, когда выuse
/require
это. - Выложен в PerlPolicy.
- Запрограммируйте функциональность и тестируйте ее, задокументируйте, затем выпустите на CPAN или, соответственно, попросите сопровождающего применить набор изменений.Это сопровождается обсуждением п5п.
Не связан с StackOverflow