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

Safari Technology Preview 251: immutable prototype SharedWorkerGlobalScope

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

Safari Technology Preview 251: prototype SharedWorkerGlobalScope можно неожиданно заменить, нарушив защитный инвариант. People-first проверка: протокол инварианта «initial prototype → mutation attempt → exception/result → final prototype»; синтетический стенд, опровержимый контроль, один обратимый шаг, stop-line и минимизированный handoff.

Ответ и граница: Web API

Начните не с переключения настроек, а с проверяемой границы. Запрос «как проверить immutable prototype SharedWorkerGlobalScope в Safari Technology Preview 251» относится только к ситуации: prototype SharedWorkerGlobalScope можно неожиданно заменить, нарушив защитный инвариант. Условие успеха записывается до запуска: замена prototype отклоняется, исходная identity сохраняется, а control показывает работоспособность самой операции. Внешне похожая ошибка сама по себе ничего не доказывает; отдельно проверяется ловушка «обычный non-extensible объект, ошибочно принятый за специальный immutable-prototype инвариант global scope». Похожий внешний эффект не равен той же причине: feature detection, версия и неизменяемые условия фиксируются заранее; отсутствие API означает unsupported, а отсутствие наблюдения — unknown. Производственный сайт, реальный аккаунт и пользовательские данные исключены.

Что подтверждают Release 251 и 318684@main

Официальные WebKit Release Notes датированы 26 августа 2026 года и для Safari Technology Preview 251 сообщают: prototype SharedWorkerGlobalScope сделан immutable prototype exotic object. Строка релиза ведёт к первичной записи 318684@main; её commit title и доступность перепроверены 29 августа. Документы WebKit отвечают на вопрос «что изменено в ветке», но не на вопросы «как часто» и «у кого проявится». Публичные обсуждения используются лишь для обнаружения темы. Технический предел статьи совпадает с формулировкой 318684@main и не расширяется поисковым заголовком.

Стенд и рабочий артефакт 318684

Стенд: same-origin SharedWorker, который отвечает только boolean-полями prototype identity и результатом безопасной попытки mutation. До воздействия без интерпретации запишите: initial prototype tag, Object.getPrototypeOf, mutation operation, returned value, exception.name и final identity. Рабочий артефакт — протокол инварианта «initial prototype → mutation attempt → exception/result → final prototype». Каждая строка должна быть воспроизводима без персональных данных: synthetic values, время, версия, expected и observed. Не расширяйте лог ради заполнения пробела и не сохраняйте сетевые идентификаторы. Наблюдение не интерпретируется до прохождения control и финального cleanup.

Контроль, который может опровергнуть гипотезу

Контроль готовят до canary, иначе он превращается в объяснение задним числом. Для этой боли используется: обычный extensible объект внутри того же worker и повторное чтение исходного prototype без mutation. Он проходит тот же порядок запуска, settle-событие и набор полей, что основная ветка. Риск «обычный non-extensible объект, ошибочно принятый за специальный immutable-prototype инвариант global scope» получает отдельный признак. Контроль проходит то же settle-событие и те же поля. Его задача — различить механизм, поэтому совпавший сбой закрывает прогон статусом invalid. Такой дизайн делает тезис опровержимым и не требует доступа к исходным данным пользователя.

Одно обратимое воздействие

Разрешён один шаг: один раз попытаться Object.setPrototypeOf на безвредный пустой объект и сразу завершить worker. Сначала снимите baseline, затем выполните только указанную операцию, дождитесь заранее выбранного события завершения и повторите поля «initial prototype tag, Object.getPrototypeOf, mutation operation, returned value, exception.name и final identity». Не добавляйте вторую мутацию. Сначала запишите исходное состояние, затем одну проверку, а в конце докажите возврат тем же набором полей. PASS допустим, когда замена prototype отклоняется, исходная identity сохраняется, а control показывает работоспособность самой операции. Результат не усиливают словами о массовости; production, VPN, маршрутизация, чужие сайты и реальные media остаются вне опыта.

Stop-line, решение и минимальный handoff

В отчёт попадает не впечатление, а заранее определённый критерий PASS. Остановитесь, если worker переиспользован чужой вкладкой, CSP блокирует script, wrapper скрывает global scope или тест меняет prototype chain заранее. Финальная запись хранит протокол инварианта «initial prototype → mutation attempt → exception/result → final prototype», результат контроля, отметку rollback и ссылку на 318684@main. Сомнительный прогон остаётся invalid или unknown, а не новой уверенной публикационной формулировкой. Масштаб вывода ограничен паспортом стенда. Разработчику передают минимальный код, обезличенную таблицу, статус control/cleanup и ссылку на commit. Полный профиль браузера или пользовательский контент не нужен. PASS означает только условие «замена prototype отклоняется, исходная identity сохраняется, а control показывает работоспособность самой операции». Материал не обещает индексацию, позиции, поисковый спрос, stable-поддержку или автоматическое исправление.

Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318684@main, техническая граница, независимый контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.

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

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

Ответы

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

Ваш ответ

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

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

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