Почему имена исходных файлов не читаются человеком? - программирование
Подтвердить что ты не робот

Почему имена исходных файлов не читаются человеком?

Я установил Perl6 с rakudobrew и бросил, чтобы просмотреть установленные файлы, чтобы увидеть список hex файлов в ~/.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

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

4b9b3361

Ответ 1

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

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

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

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