Доступен Composer 2.0.0, менеджер зависимостей для PHP
Представлен релиз Composer 2.0.0, менеджера для установки зависимостей в проектах на языке PHP. Composer позволяет определить какие библиотеки функций необходимы для работы проекта, после чего берёт на себя работу по установке недостающих зависимостей и обновлению новых версий. Доступные для установки библиотеки размещены в репозитории Packagist, который насчитывает более 287 тысяч пакетов. Код Composer написан на PHP и распространяется под лицензией MIT.
Composer позиционируется как система установки зависимостей, спроектированная с оглядкой на возможности пакетных менеджеров npm и bundler, используемых в сообществах разработчиков Node.js и Ruby. Система оперирует пакетами в привязке к конкретным проектам и рассчитана на установку зависимостей в локальные каталоги проектов (в качестве опции имеется и режим глобальной установки для всей системы). По умолчанию предлагается установка стабильных выпусков библиотек, но также имеется возможность использования экспериментальных обновлений (alpha/beta) и снапшотов (срезы находящейся в разработке кодовой базы), которые полезны при организации тестовых сборок в системах непрерывной интеграции.
В выпуске:
- Проведена значительная оптимизация производительности и сокращено потребление памяти. Очень многое переработано, от протокола для обращения к packagist.org до методов определения зависимостей. Обеспечена загрузка в несколько потоков метаданных и zip-архивов. Реализован режим параллельной установки пакетов. Добавлены оптимизации в код для вычислений. За счёт загрузки только метаданных пакета значительно ускорены операции require/remove и частичные обновления. В некоторых проектах отмечается ускорение до 50%.
- Переработан механизм обновления зависимостей, который избавлен от привязки к состоянию каталога в локальной ФС. После завершения обновления процесс установки теперь запускается автоматически с предварительным выполнением всех операций, для которых необходим доступ к сети. Выполнение сетевых операций до фактического начала установки позволяет исключить ситуации возникновения не полностью обновлённых каталогов в случае возникновения сетевого сбоя в процессе установки. По возможности загрузки по сети выполняются в несколько потоков.
- По умолчанию в runtime добавлена дополнительная стадия проверки платформы при инициализации vendor/autoload.php, которая проверяет соответствие версии PHP и используемых расширений с версиями, поддерживаемыми в зависимостях. В случае несоответствия выводится ошибка. Проверка выполняется с использованием нового класса Composer\InstalledVersions, который загружается для каждого проекта и позволяет определить какие пакеты и версии доступны в проекте.
- Переработаны сообщения об ошибках, связанные с проблемами определения зависимостей. Данные сообщения стали короче, яснее и с меньшим числом дубликатов.
- Добавлена поддержка частичных обновлений со временными ограничениями, которые можно использовать когда требуется временно обновить или откатить назад версию одного пакета с целью тестирования или ожидания исправления ошибки. Для временного ограничения версий при обновлении следует использовать конструкцию «composer update vendor/package:1.0.*», которая не изменит содержимое блока «require» в «composer.json» и не пометит файл с блокировкой устаревшим. При полном обновлении для задания ограничений можно использовать опцию »--with vendor/package:1.0.*».
- Реализовано автоматическое удаление пакетов, которые больше не требуются.
- В репозитории добавлены новые опции only, exclude и canonical.
- Добавлены новые события pre-operations-exec, pre-pool-create и post-file-download.
- Добавлено большое число новых флагов.
Источник: http://www.opennet.ru/opennews/art.shtml? num=54003
© OpenNet