Почему имена исходных файлов не читаются человеком? - PullRequest
0 голосов
/ 02 октября 2018

Я установил Perl6 с rakudobrew и побродил, чтобы просмотреть установленные файлы, чтобы увидеть список шестнадцатеричных имен файлов в ~/.rakudobrew/moar-2018.08/install/share/perl6/site/sources, а также ~/.rakudobrew/moar-2018.08/install/share/perl6/sources/.

Например,

> ls ~/.rakudobrew/moar-2018.08/install/share/perl6/sources/
09A0291155A88760B69483D7F27D1FBD8A131A35  AAC61C0EC6F88780427830443A057030CAA33846
24DD121B5B4774C04A7084827BFAD92199756E03  C57EBB9F7A3922A4DA48EE8FCF34A4DC55942942
2ACCA56EF5582D3ED623105F00BD76D7449263F7  C712FE6969F786C9380D643DF17E85D06868219E
51E302443A2C8FF185ABC10CA1E5520EFEE885A1  FBA542C3C62C08EB82C1F4D25BE7B4696F41B923
522BE83A1D821D8844E8579B32BA04966BAB7B87  FE7156F9200E802D3DB8FA628CF91AD6B020539B
5DD1D8B49C838828E13504545C427D3D157E56EC

Файлы содержат источник пакетов, но это не очень доступно.Что для этого рационально?

1 Ответ

0 голосов
/ 02 октября 2018

В Perl 6 механизм загрузки модулей и кэширования их компиляций является подключаемым.Rakudo Perl 6 поставляется с двумя основными механизмами для этого:

Один - это репозиторий на основе файловой системы, и он используется с такими вещами, как -Ilib.Это разрешает модули просто используя пути на диске.Всякий раз, когда модуль загружается, он сначала должен проверить, что исходные коды модулей не изменились, чтобы перекомпилировать их, если это так.Это идеально подходит для разработки, однако такие проверки требуют времени.Кроме того, это не позволяет иметь несколько версий одного и того же модуля и выбирать ту, которая соответствует спецификации в операторе use.Опять же, идеально подходит для разработки, когда вы просто хотите, чтобы она использовала ваши последние изменения, но в меньшей степени для установки модулей из экосистемы.

Другой - это хранилище для установки.Здесь устанавливаются и предварительно компилируются конкретные версии модулей.Ожидается, что все взаимодействия с таким хранилищем будут осуществляться через API или инструменты, использующие API (например, zef locate Some::Module).Предполагается, что после установки определенной версии модуля он становится неизменным.Таким образом, нет необходимости проверять исходный код, и он может перейти непосредственно к загрузке скомпилированной версии модуля.

Таким образом, репозиторий установки не предназначен для непосредственного использования человеком.SHA-1 - это прежде всего удобство реализации;альтернативная схема могла бы быть использована в обмен на немного больше усилий (и вполне может быть использована в будущем).Тем не менее, SHA-1 также создают видимость чего-то, что не было предназначено для прямого манипулирования - что действительно имеет место: редактирование исходного файла там не будет иметь немедленного эффекта, и, вероятно, запутывает эффекты в следующий раз, когда компиляторобновлен до новой версии.

...