В Perl 6 механизм загрузки модулей и кэширования их компиляций является подключаемым.Rakudo Perl 6 поставляется с двумя основными механизмами для этого:
Один - это репозиторий на основе файловой системы, и он используется с такими вещами, как -Ilib
.Это разрешает модули просто используя пути на диске.Всякий раз, когда модуль загружается, он сначала должен проверить, что исходные коды модулей не изменились, чтобы перекомпилировать их, если это так.Это идеально подходит для разработки, однако такие проверки требуют времени.Кроме того, это не позволяет иметь несколько версий одного и того же модуля и выбирать ту, которая соответствует спецификации в операторе use
.Опять же, идеально подходит для разработки, когда вы просто хотите, чтобы она использовала ваши последние изменения, но в меньшей степени для установки модулей из экосистемы.
Другой - это хранилище для установки.Здесь устанавливаются и предварительно компилируются конкретные версии модулей.Ожидается, что все взаимодействия с таким хранилищем будут осуществляться через API или инструменты, использующие API (например, zef locate Some::Module
).Предполагается, что после установки определенной версии модуля он становится неизменным.Таким образом, нет необходимости проверять исходный код, и он может перейти непосредственно к загрузке скомпилированной версии модуля.
Таким образом, репозиторий установки не предназначен для непосредственного использования человеком.SHA-1 - это прежде всего удобство реализации;альтернативная схема могла бы быть использована в обмен на немного больше усилий (и вполне может быть использована в будущем).Тем не менее, SHA-1 также создают видимость чего-то, что не было предназначено для прямого манипулирования - что действительно имеет место: редактирование исходного файла там не будет иметь немедленного эффекта, и, вероятно, запутывает эффекты в следующий раз, когда компиляторобновлен до новой версии.