Safari Technology Preview 251: сохранённый getter или setter глобального атрибута вызывается как отдельная функция и неожиданно выбрасывает исключение. People-first проверка: матрица вызова «accessor → bare/Reflect.apply → receiver → exception/result»; синтетический стенд, опровержимый контроль, один обратимый шаг, stop-line и минимизированный handoff.
Ответ и граница: JavaScript
Начните не с переключения настроек, а с проверяемой границы. Запрос «как проверить bare-вызов getter или setter атрибута global object в Safari Technology Preview 251» относится только к ситуации: сохранённый getter или setter глобального атрибута вызывается как отдельная функция и неожиданно выбрасывает исключение. Условие успеха записывается до запуска: bare-ветка не падает только из-за отсутствия явного receiver, а контроль сохраняет ожидаемое значение. Внешне похожая ошибка сама по себе ничего не доказывает; отдельно проверяется ловушка «ошибка пользовательского accessor или transpiler, ошибочно принятая за поведение встроенного global object». Похожий внешний эффект не равен той же причине: feature detection, версия и неизменяемые условия фиксируются заранее; отсутствие API означает unsupported, а отсутствие наблюдения — unknown. Производственный сайт, реальный аккаунт и пользовательские данные исключены.
Что подтверждают Release 251 и 318748@main
Официальные WebKit Release Notes датированы 26 августа 2026 года и для Safari Technology Preview 251 сообщают: исправлены getter и setter атрибутов global object, которые выбрасывали исключение при bare-вызове из global scope. Строка релиза ведёт к первичной записи 318748@main; её commit title и доступность перепроверены 29 августа. Пара official/primary подтверждает change item, но не частоту жалоб, спрос, stable-релиз или причинность на чужой странице. Community discussion остаётся только lead к дате. Технический предел статьи совпадает с формулировкой 318748@main и не расширяется поисковым заголовком.
Стенд и рабочий артефакт 318748
Стенд: чистый same-origin iframe, два доступных дескриптора глобальных атрибутов и журнал только формы вызова. До воздействия без интерпретации запишите: имя свойства, вид accessor, форма вызова, exception.name, exception.message, значение receiver и тип результата. Рабочий артефакт — матрица вызова «accessor → bare/Reflect.apply → receiver → exception/result». В таблице оставляют expected/observed, единицу, build и timestamp. IP, cookie, токены, Authorization, реальные query, пути и пользовательские файлы запрещены; недоступное поле остаётся пустым с причиной. Наблюдение не интерпретируется до прохождения control и финального cleanup.
Контроль, который может опровергнуть гипотезу
Контроль готовят до canary, иначе он превращается в объяснение задним числом. Для этой боли используется: тот же accessor через Reflect.apply с явным globalThis и обычное чтение свойства. Он проходит тот же порядок запуска, settle-событие и набор полей, что основная ветка. Риск «ошибка пользовательского accessor или transpiler, ошибочно принятая за поведение встроенного global object» получает отдельный признак. Обе ветки получают одинаковый порядок запуска и сбор. Если отклоняется control, итог invalid; если control недоступен, environment-blocked — выбирать удобную интерпретацию нельзя. Такой дизайн делает тезис опровержимым и не требует доступа к исходным данным пользователя.
Одно обратимое воздействие
Разрешён один шаг: вызвать один заранее выбранный accessor как отдельную функцию, затем вернуть ссылку и повторить baseline. Сначала снимите baseline, затем выполните только указанную операцию, дождитесь заранее выбранного события завершения и повторите поля «имя свойства, вид accessor, форма вызова, exception.name, exception.message, значение receiver и тип результата». Снимите baseline, выполните одну операцию, дождитесь settle и повторите те же измерения. После полного возврата baseline обязан восстановиться, иначе даже привлекательный canary получает invalid. PASS допустим, когда bare-ветка не падает только из-за отсутствия явного receiver, а контроль сохраняет ожидаемое значение. Результат не усиливают словами о массовости; production, VPN, маршрутизация, чужие сайты и реальные media остаются вне опыта.
Stop-line, решение и минимальный handoff
В отчёт попадает не впечатление, а заранее определённый критерий PASS. Остановитесь, если дескриптор заменён polyfill, iframe не fully active или getter имеет собственный побочный эффект. Финальная запись хранит матрица вызова «accessor → bare/Reflect.apply → receiver → exception/result», результат контроля, отметку rollback и ссылку на 318748@main. Допустимые итоги: reproduced, not reproduced, unsupported, environment-blocked, invalid и unknown; каждый относится только к этому fixture. Для handoff достаточно fixture, build, expected/actual, контрольной ветки, rollback и primary link; перед передачей удаляются пути и идентификаторы. PASS означает только условие «bare-ветка не падает только из-за отсутствия явного receiver, а контроль сохраняет ожидаемое значение». Материал не обещает индексацию, позиции, поисковый спрос, stable-поддержку или автоматическое исправление.
Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318748@main, техническая граница, независимый контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318748@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.