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