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