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

Safari Technology Preview 251 возвращает era separator в formatToParts

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

Safari Technology Preview 251 возвращает era separator в formatToParts. Безопасная локальная диагностика: diff «format code points ↔ concatenated parts ↔ era/literal boundaries», одна переменная, отрицательный контроль, rollback и минимизированный пакет для поддержки.

Первый вопрос диагностики

Запрос «как проверить разделитель эры между format и formatToParts Safari Technology Preview 251» сводится к одной проверяемой боли: concat значений formatToParts не воспроизводит format, потому что разделитель возле era отсутствует в parts. До опыта фиксируется ожидаемый признак: конкатенация parts сохраняет разделитель, присутствующий в format, для целевого formatter и фиксированной даты. Нельзя расширять вывод на stable Safari, другой движок, произвольный сайт или массовость симптома. Главная ловушка здесь такова: визуально одинаковые пробелы могут иметь разные Unicode code points, поэтому обычного скриншота недостаточно. Поэтому наблюдение получает статус reproduced только после повторного одинакового результата и успешного возврата; not reproduced относится исключительно к этому стенду, а unsupported, environment-blocked и unknown остаются разными статусами.

Официальное изменение и ограничение вывода

Официальные Release Notes WebKit от 26 августа 2026 года формулируют изменение так: WebKit исправил formatToParts(), который пропускал era separator, добавляемый format(). Пункт связан с первичной записью 318847@main. Release page доказывает наличие изменения в ветке Safari Technology Preview 251, а commit задаёт техническую границу конкретной правки. Ни один из этих источников сам по себе не подтверждает частоту запроса, результат на конкретном устройстве или будущий перенос в стабильный выпуск. Публичная ветка о релизе использована только как свежий community lead; комментарии, реакции и поисковые snippets не превращаются в доказательство причины.

Контрольная карта до запуска

Стенд: локальная фиксированная дата и Intl.DateTimeFormat с явно заданными locale, calendar, era и timeZone. До воздействия запишите: resolvedOptions, строка format, массив type/value из formatToParts, concat всех value и Unicode code points вокруг era. Рабочий артефакт — diff «format code points ↔ concatenated parts ↔ era/literal boundaries». У каждого ряда должны быть версия TP 251, время, expected, observed и отметка о валидности контроля. Не сохраняются IP, cookie, токены, Authorization, полные URL с приватными query, локальные пути, имена профилей и содержимое рабочих документов. Случайные или вымышленные данные стенда помечаются как тестовые. Если обязательное поле нельзя получить без доступа к реальным данным, эксперимент останавливается: пробел не заполняют догадкой и не компенсируют дополнительной мутацией.

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

Canary меняет ровно одну причину: выполнить format и formatToParts на одном Date, сравнить строки побайтно/по code points и повторить после нового formatter с теми же options. Контроль устроен отдельно: formatter без era и второй locale показывают, связан ли разрыв именно с era separator, а не с общим literal ordering. Сначала снимается baseline, затем выполняется единственное воздействие, после него — заранее выбранное измерение, затем полный rollback и повтор baseline. Новый шаг не добавляют, пока предыдущий не получил результат и контроль. Если rollback не вернул исходное состояние, прогон invalid, даже когда картинка кажется убедительной. Тест выполняется только локально или на специально подготовленном безопасном стенде; production, пользовательские сессии и чужие страницы в процедуру не входят.

Итоговый артефакт и красная линия

PASS для узкой гипотезы означает: конкатенация parts сохраняет разделитель, присутствующий в format, для целевого formatter и фиксированной даты. Практический результат оформляется как diff «format code points ↔ concatenated parts ↔ era/literal boundaries». Stop-line: не сравнивать разные timeZone, calendar или locale defaults; resolvedOptions должны быть сохранены для каждого результата. Для передачи разработчику достаточно: дата без персонального смысла, options/resolvedOptions, массив parts, code-point diff, controls и 318847@main. Перед отправкой артефакт ещё раз очищают от идентификаторов и проверяют, что отрицательный контроль действительно отличался только указанной переменной. Материал не обещает исправление на другом сайте, стабильную поддержку функции, индексацию, позиции или универсальное поведение; он даёт воспроизводимый путь, по которому команда может отделить наблюдаемый факт от предположения.

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

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

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

Ответы

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

Ваш ответ

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

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

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