К обсуждениям

import defer выполняет модуль слишком рано в Safari Technology Preview 251: журнал evaluation

Редакция VOne Технологии

import defer выполняет модуль слишком рано в Safari Technology Preview 251: журнал evaluation. Практическая проверка Safari Technology Preview 251: временная шкала «fetch × link × evaluate × first access × side effect × error», обратимый canary и ясный критерий остановки.

Симптом и граница deferred module evaluation с import defer

Вопрос здесь один: как проверить import defer и порядок evaluation в safari technology preview 251. Наблюдаемое расхождение — модуль с тяжёлой инициализацией выполняется раньше ожидаемого либо первый доступ не запускает нужный side effect. Название новой возможности не равно диагнозу: сначала нужны один повторяемый fixture и пара expected/actual. Граница наблюдения записывается как «input geometry → computed value → paint → rollback frame». Любая другая ошибка остаётся за пределами этого URL.

Два первичных источника для 318481@main

Официальная страница WebKit датирована 26 августа 2026 года, описывает Release 251 и в соответствующей строке называет deferred module evaluation с import defer. Эта строка ссылается на 318481@main, первичную запись изменения в репозитории WebKit. Это подтверждает границу функции в Technology Preview, но не подтверждает ни конкретный сбой сайта, ни поведение stable Safari. Поисковый сниппет и community reply в этот слой доказательств не входят.

Поля контроля: временная шкала «fetch × link × evaluate × first access × side effect × error»

Базовый набор для этой задачи: module graph, fetch order, evaluation markers, первый namespace access, исключения и обычный import control. Поле «module graph»: сопоставьте с контролем; его значение не подменяет соседнюю колонку. Поле «fetch order»: пометьте observed или unknown; его значение не подменяет соседнюю колонку. Поле «evaluation markers»: повторите после отката; его значение не подменяет соседнюю колонку. Поле «первый namespace access»: не восстанавливайте по памяти; его значение не подменяет соседнюю колонку. Поле «исключения»: снимите до опыта; его значение не подменяет соседнюю колонку. Поле «обычный import control»: сопоставьте с контролем; его значение не подменяет соседнюю колонку. Время, точная сборка и одинаковый fixture нужны для повтора, но имена, IP, cookie, токены, полные URL с query и содержимое рабочих данных не собираются.

Обратимый опыт для deferred module evaluation с import defer

Одиночный canary: на трёх маленьких модулях записать fetch и evaluation markers для обычного и deferred import, затем вернуть прежний import. До воздействия запишите исходную строку, после — только заранее выбранные поля, затем верните исходное состояние и повторите то же наблюдение. Метки fetch, link и evaluate должны быть независимыми и иметь монотонное время. Первый доступ к namespace записывается отдельным событием. Если тяжёлый side effect связан с auth или миграцией, не переносите его в эксперимент: используйте безвредный счётчик тестового модуля. Неоднозначный результат не расширяет эксперимент: он получает статус unknown.

Как принять решение: временная шкала «fetch × link × evaluate × first access × side effect × error»

Практический итог — временная шкала «fetch × link × evaluate × first access × side effect × error». Заполните в нём все предусмотренные поля. Если вход не принят, отметьте unsupported и сохраните прежний fallback. Если функция доступна, но боль «модуль с тяжёлой инициализацией выполняется раньше ожидаемого либо первый доступ не запускает нужный side effect» не повторилась, результат равен not reproduced только для этого fixture. Локальное повторение после единственного изменения и успешный возврат дают reproduced. Неудачный возврат — stopped, а не предлог менять ещё одну переменную.

Красная линия и минимальный report 318481@main

Стоп-линия: не переносить критическую инициализацию, auth или миграции в defer и не измерять порядок по console без меток времени. Для поддержки достаточно точной версии Technology Preview 251, коротких expected/actual, минимального fixture, шага возврата, временная шкала «fetch × link × evaluate × first access × side effect × error» и ссылки на 318481@main. Перед передачей удалите локальные пути, дампы профиля, идентификаторы и любой реальный контент. Отчёт не обещает исправление и не переносит вывод на stable Safari.

Материал подготовлен редакцией VOne с помощью ИИ; границы фактов, дата, первичный WebKit commit, стоп-линия и роль community lead постатейно проверены 29 августа 2026 года.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.