Safari Technology Preview 251: альтернатива string-list в RegExp совпадает только с ведущей UTF-16 code unit вместо полного non-BMP символа. People-first проверка: реестр кодовых точек «input → code points → match span → consumed units»; синтетический стенд, опровержимый контроль, один обратимый шаг, stop-line и минимизированный handoff.
Ответ и граница: JavaScript
Сначала зафиксируйте, что именно должно измениться и что обязано остаться неизменным. Запрос «как проверить RegExp string-list с non-BMP символом в Safari Technology Preview 251» относится только к ситуации: альтернатива string-list в RegExp совпадает только с ведущей UTF-16 code unit вместо полного non-BMP символа. Условие успеха записывается до запуска: совпадение потребляет полный символ, а изолированная ведущая code unit не считается тем же token. Внешне похожая ошибка сама по себе ничего не доказывает; отдельно проверяется ловушка «ошибка визуального отображения emoji, ошибочно принятая за ошибку движка регулярных выражений». Симптом служит поводом для canary, но не доказательством механизма. Паспорт включает build, поддержку API и заранее выбранный статус для недоступной среды. Производственный сайт, реальный аккаунт и пользовательские данные исключены.
Что подтверждают Release 251 и 318956@main
Официальные WebKit Release Notes датированы 26 августа 2026 года и для Safari Technology Preview 251 сообщают: исправлено совпадение string-list alternative с non-BMP символом только по ведущим code units. Строка релиза ведёт к первичной записи 318956@main; её commit title и доступность перепроверены 29 августа. Документы WebKit отвечают на вопрос «что изменено в ветке», но не на вопросы «как часто» и «у кого проявится». Публичные обсуждения используются лишь для обнаружения темы. Технический предел статьи совпадает с формулировкой 318956@main и не расширяется поисковым заголовком.
Стенд и рабочий артефакт 318956
Стенд: локальный набор из emoji, соседней BMP-буквы, полной строки и разорванных суррогатных единиц без пользовательского текста. До воздействия без интерпретации запишите: pattern source, flags, code points входа, UTF-16 length, match[0], index и lastIndex. Рабочий артефакт — реестр кодовых точек «input → code points → match span → consumed units». Используется минимизация данных: фиксируется allowlist наблюдений и validity flag, а всё идентифицирующее удаляется до сохранения. Если этого недостаточно, статус — environment-blocked. Наблюдение не интерпретируется до прохождения control и финального cleanup.
Контроль, который может опровергнуть гипотезу
Пара baseline/canary должна пережить полный возврат, иначе финальный статус только invalid. Для этой боли используется: явная последовательность code point без string-list и проверка длины результата через Array.from. Он проходит тот же порядок запуска, settle-событие и набор полей, что основная ветка. Риск «ошибка визуального отображения emoji, ошибочно принятая за ошибку движка регулярных выражений» получает отдельный признак. Canary и control различаются одной переменной. Совместное отклонение опровергает чистоту стенда, а не подтверждает баг; соседняя причина отмечается отдельно. Такой дизайн делает тезис опровержимым и не требует доступа к исходным данным пользователя.
Одно обратимое воздействие
Разрешён один шаг: выполнить один и тот же pattern на полном non-BMP токене и на двух отрицательных controls. Сначала снимите baseline, затем выполните только указанную операцию, дождитесь заранее выбранного события завершения и повторите поля «pattern source, flags, code points входа, UTF-16 length, match[0], index и lastIndex». Операция выполняется один раз на synthetic fixture. Повторный baseline после cleanup важнее впечатления от промежуточного кадра и является обязательным условием валидности. PASS допустим, когда совпадение потребляет полный символ, а изолированная ведущая code unit не считается тем же token. Результат не усиливают словами о массовости; production, VPN, маршрутизация, чужие сайты и реальные media остаются вне опыта.
Stop-line, решение и минимальный handoff
Итог формулируют на уровне этого fixture, не распространяя его на stable Safari или чужой сайт. Остановитесь, если pattern собран без нужного режима, строка нормализована библиотекой или лог скрывает фактические code points. Финальная запись хранит реестр кодовых точек «input → code points → match span → consumed units», результат контроля, отметку rollback и ссылку на 318956@main. Не превращайте not reproduced в опровержение для всех. Результат описывает лишь этот build и выбранный control, а пробелы получают явный unknown. Handoff должен позволять повтор без исходных данных пользователя: одна страница/extension fixture, измерения, control, cleanup и точная ссылка на изменение. PASS означает только условие «совпадение потребляет полный символ, а изолированная ведущая code unit не считается тем же token». Материал не обещает индексацию, позиции, поисковый спрос, stable-поддержку или автоматическое исправление.
Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318956@main, техническая граница, независимый контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318956@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.