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

Safari Technology Preview 251: сортировка коллекций Intl.Locale

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

Safari Technology Preview 251: сортировка коллекций Intl.Locale. Локальная диагностика: дифф «индекс → нативное значение → контрольная сортировка → совпадение»; одно обратимое воздействие, независимый контроль, privacy-stop и пакет для разработчика без реальных данных.

Узкий пользовательский вопрос

Запрос «как проверить порядок элементов коллекций Intl.Locale в Safari Technology Preview 251» отвечает на одну самостоятельную боль: поддерживаемые значения Intl.Locale приходят в нестабильном порядке, из-за чего snapshot и выпадающий список меняются между средами. Узкий ожидаемый ответ здесь не равен обещанию исправления на любом сайте: нужно различить статус reproduced, not reproduced, unsupported, environment-blocked и unknown на одном фиксированном стенде. Главный соседний эффект, который обязан быть отделён, — сортировка интерфейса по локализованным подписям вместо проверки значений API. Поэтому до любого действия записывают наблюдение словами, а не диагнозом, и заранее задают успешный исход: нативная коллекция воспроизводимо упорядочена, а приложение не скрывает наблюдение дополнительным sort перед замером. Если результат не повторяется после rollback, первая попытка не считается доказательством.

Доказательная опора Release 251

Официальные Release Notes WebKit датированы 26 августа 2026 года и относят пункт к Safari Technology Preview 251: исправлены несортированные коллекции Intl.Locale. Прямая первичная запись — 318808@main. Эта пара источников подтверждает наличие и техническую границу change item, но не подтверждает частоту жалоб, поисковый спрос, результат на конкретном устройстве, перенос в stable Safari или причину любого внешне похожего сбоя. Публичная ветка о релизе служит только свежим community lead; её комментарии и поисковый сниппет не используются как evidence. Вывод статьи ограничен указанной функцией и локальным воспроизведением.

Fixture без лишних данных

Безопасный fixture: локальный скрипт, читающий одну выбранную коллекцию Locale для фиксированного language tag без UI-локализации. До canary фиксируются language tag, имя коллекции, исходный массив, нормализованный массив, дубликаты и версия ICU из доступной диагностики. Каждое поле получает expected, observed, время и отметку валидности, а итоговый рабочий артефакт — дифф «индекс → нативное значение → контрольная сортировка → совпадение». Стенд использует только синтетические данные: не сохраняются IP, cookie, токены, Authorization, полные приватные URL, реальные логи, имена профилей, локальные пути и пользовательское содержимое. Если обязательное наблюдение нельзя снять без таких данных, проверку прекращают. Нельзя заменять отсутствующее значение догадкой или добавлять вторую мутацию ради красивого результата.

С чем сравнивать результат

Контроль строится независимо от основной гипотезы: копия результата, явно отсортированная стабильным comparator только для диагностического сравнения. Он должен быть готов до воздействия и отличаться только проверяемым механизмом. Если контроль тоже меняется, результат main-fixture получает статус invalid, потому что возможны общая среда, renderer, cache или тестовая обвязка. Отдельно проверяется риск «сортировка интерфейса по локализованным подписям вместо проверки значений API»: его признак записывают рядом с основным, не смешивая строки. Такой дизайн не доказывает массовость, зато позволяет опровергнуть слишком широкое объяснение и не отправлять команде ложноположительный баг-репорт.

Изоляция одной переменной

Единственное воздействие: считать коллекцию дважды в чистом контексте без собственной сортировки и сравнить порядок. Сначала снимается baseline, затем выполняется только это действие, после заранее выбранного settle-события записываются language tag, имя коллекции, исходный массив, нормализованный массив, дубликаты и версия ICU из доступной диагностики, после чего выполняется полный rollback и повтор baseline. Успех узкой проверки означает: нативная коллекция воспроизводимо упорядочена, а приложение не скрывает наблюдение дополнительным sort перед замером. Никаких изменений production, чужих страниц, реальных аккаунтов или сетевой маршрутизации процедура не требует. Если rollback не возвращает исходное состояние, прогон помечается invalid даже при убедительном скриншоте; следующий эксперимент начинают только после чистого восстановления.

Когда принимать результат, а когда остановиться

Решение оформляется через дифф «индекс → нативное значение → контрольная сортировка → совпадение». PASS допустим только когда выполнено условие «нативная коллекция воспроизводимо упорядочена, а приложение не скрывает наблюдение дополнительным sort перед замером» и независимый контроль остаётся валиден. NOT REPRODUCED означает лишь отсутствие симптома на этом fixture, а не отсутствие проблемы у всех. Stop-line: остановиться, если между прогонами меняются language tag, набор опций или локаль процесса. Для handoff достаточно версии TP 251, минимального кода, обезличенных значений «language tag, имя коллекции, исходный массив, нормализованный массив, дубликаты и версия ICU из доступной диагностики», результатов контроля, статуса rollback и ссылки на 318808@main. Материал не обещает индексацию, позиции, универсальную поддержку, стабильный релиз или автоматическое исправление проекта.

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

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

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

Ответы

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

Ваш ответ

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

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

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