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

Safari Technology Preview 251: точное округление Temporal.Duration

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

Safari Technology Preview 251: Temporal.Duration выбирает соседний результат округления у граничного значения из-за решения на double. People-first проверка: ведомость границ «точный input → режим → ожидаемая сторона → фактический результат»; синтетический стенд, опровержимый контроль, один обратимый шаг, stop-line и минимизированный handoff.

Ответ и граница: JavaScript

Здесь полезен узкий эксперимент, а не догадка по внешнему симптому. Запрос «как проверить округление Temporal Duration на точной целочисленной границе в Safari Technology Preview 251» относится только к ситуации: Temporal.Duration выбирает соседний результат округления у граничного значения из-за решения на double. Условие успеха записывается до запуска: обе стороны границы дают решение, совпадающее с целочисленным контролем и выбранным roundingMode. Внешне похожая ошибка сама по себе ничего не доказывает; отдельно проверяется ловушка «ошибка пересчёта календарной единицы, ошибочно выданная за потерю точности округления». Не делайте вывод по одной картинке. Сначала отделите unsupported от environment-blocked, запишите версию и не меняйте второй параметр ради красивого результата. Производственный сайт, реальный аккаунт и пользовательские данные исключены.

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

Официальные WebKit Release Notes датированы 26 августа 2026 года и для Safari Technology Preview 251 сообщают: решения при округлении Temporal.Duration переведены с double на точные целые числа. Строка релиза ведёт к первичной записи 318901@main; её commit title и доступность перепроверены 29 августа. Из release page и commit нельзя выводить массовость, рейтинг или результат на произвольном Mac. MacRumors, Reddit и snippets не повышают уровень evidence технического тезиса. Технический предел статьи совпадает с формулировкой 318901@main и не расширяется поисковым заголовком.

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

Стенд: таблица синтетических Duration около половинной границы с фиксированными smallestUnit, increment и roundingMode. До воздействия без интерпретации запишите: исходные поля Duration, единица, increment, режим, сериализованный результат и знак расстояния до границы. Рабочий артефакт — ведомость границ «точный input → режим → ожидаемая сторона → фактический результат». Каждая строка должна быть воспроизводима без персональных данных: synthetic values, время, версия, expected и observed. Не расширяйте лог ради заполнения пробела и не сохраняйте сетевые идентификаторы. Наблюдение не интерпретируется до прохождения control и финального cleanup.

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

Сравнение считается валидным, только если меняется одна переменная и обе ветки проходят одинаковый сбор. Для этой боли используется: эквивалентный расчёт на целых наносекундах без преобразования к floating point. Он проходит тот же порядок запуска, settle-событие и набор полей, что основная ветка. Риск «ошибка пересчёта календарной единицы, ошибочно выданная за потерю точности округления» получает отдельный признак. Сравнение готовят заранее и не переписывают после результата. Только раздельная реакция canary/control позволяет связать наблюдение с проверяемым условием. Такой дизайн делает тезис опровержимым и не требует доступа к исходным данным пользователя.

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

Разрешён один шаг: округлить одну пару значений по обе стороны выбранной границы и затем повторить исходный baseline. Сначала снимите baseline, затем выполните только указанную операцию, дождитесь заранее выбранного события завершения и повторите поля «исходные поля Duration, единица, increment, режим, сериализованный результат и знак расстояния до границы». Один шаг отделён от полного cleanup. Если cleanup не подтверждён или settle не определён, результат нельзя повышать выше unknown/invalid. PASS допустим, когда обе стороны границы дают решение, совпадающее с целочисленным контролем и выбранным roundingMode. Результат не усиливают словами о массовости; production, VPN, маршрутизация, чужие сайты и реальные media остаются вне опыта.

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

Неполный прогон нельзя превращать в уверенное утверждение или новый соседний URL. Остановитесь, если значение выходит за диапазон Temporal, единицы несоизмеримы без relativeTo или библиотека подменяет native API. Финальная запись хранит ведомость границ «точный input → режим → ожидаемая сторона → фактический результат», результат контроля, отметку rollback и ссылку на 318901@main. Финальный статус не бинарный: отдельно различаются воспроизведение, отсутствие воспроизведения, отсутствие поддержки, блок среды, невалидность и нехватка данных. Пакет поддержки сокращается до версии, шагов, allowlist наблюдений, результата опровержения и stop-line. Никаких дампов аккаунта, cookie либо секретов. PASS означает только условие «обе стороны границы дают решение, совпадающее с целочисленным контролем и выбранным roundingMode». Материал не обещает индексацию, позиции, поисковый спрос, stable-поддержку или автоматическое исправление.

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

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

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

Ответы

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

Ваш ответ

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

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

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