#dusk $DUSK @Dusk .....Я не искал обновление Dusk про Mac.
Я копался в Piecrust, и из-за одного крошечного изменения в CI мне пришлось остановиться.
@dusk вынес валидацию macOS ARM из основного workflow в отдельный раздельный защищённый путь....
Сначала это звучит как скучная инженерная рутина.
Затем я вспомнил, что такое Piecrust.
Это WASM-виртуальная машина, лежащая под смарт-контрактами Dusk. Так что интересный вопрос становится таким: как тестировать критический слой выполнения, не позволяя всем платформенным крайним случаям тормозить весь цикл разработки?
Представьте, что вы осматриваете самолёт...
Стандартные проверки выполняются каждый раз.
А специальная конфигурация получает собственную процедуру тестирования, когда этого требуют аппаратные условия...
Собственно, это изменение и делает.
Обычный пайплайн остаётся сфокусированным на базовой валидации, а тестирование macOS ARM может работать отдельно на конкретных триггерах, а не превращаться в обязательный путь для всего..
И эта разница становится всё важнее по мере развития протокола.
Работы Rusk в ветке 1.7.x уже затрагивали поведение VM вокруг хардфорка Boreas, включая изменения, связанные с откатными событиями и поведением исторического воспроизведения. Piecrust по-прежнему явно является частью активно меняющегося стека выполнения.
То, что мне интересно, — это не «Dusk поддерживает ещё одну машину».
Интересен инженерный компромисс...
Можно заставить все тесты запускаться везде и каждый раз.
А можно держать критический путь максимально собранным и изолировать платформенно-специфичную валидацию там, где она действительно даёт сигнал..
Ни один подход автоматически не лучше..
Но для VM смарт-контрактов я бы предпочёл видеть тестирование, организованное вокруг того, где существует риск выполнения, а не вокруг одной огромной чек-листовки.
Это невидимая часть инфраструктуры, которую люди редко замечают.
Качество блокчейна определяется не только тем, что доходит до mainnet.
На него также влияет то, насколько тщательно программное обеспечение под ним подвергается испытаниям ещё до того, как оно туда попадёт.
Так что что бы вы оптимизировали в первую очередь?
Больше тестов на каждое изменение или больше точечных тестов для тех путей выполнения, которые с наибольшей вероятностью могут сломаться?
$ACE $TRUMP