Skip to content

Releases: cloudcastle-apps/clock

v1.0.1 — зелёная матрица PHP 8.1–8.5

Choose a tag to compare

@Zorin-Alexey Zorin-Alexey released this 14 Jul 17:08
24a8567

[1.0.1] — 2026-07-14

Исправлено

  • CI-матрица PHP 8.1–8.5: детерминированная установка зависимостей — composer.lock
    теперь в репозитории (workflow строит кэш от него; без lock на PHP 8.1 приезжали
    пакеты для новых версий и валили phpmd синтаксической ошибкой в vendor).
  • Мультиверсионная обработка провала modify(): до PHP 8.3 — канал false,
    с 8.3 — DateMalformedStringException; оба канала обрабатываются и покрыты
    тестами на всей матрице версий (фикстуры каналов + symfony/polyfill-php83 в dev).

Качество релиза: матрица PHP 8.1–8.5 зелёная; 201 тест; покрытие 100% строк каждого файла; Infection 202/202 убитых мутантов (0 выживших, 0 ошибок, 0 таймаутов, 0 непокрытых).

v1.0.0 — первый стабильный релиз

Choose a tag to compare

@Zorin-Alexey Zorin-Alexey released this 14 Jul 15:08

[1.0.0] — 2026-07-14

Добавлено

  • Контракты поверх PSR-20: ClockInterface (timestamp(), microtime(), timezone(),
    withTimezone(), freeze()), SleepableClockInterface (sleep(), sleepUntil()),
    AdjustableClockInterface (setTo(), modify(), advance(), rewind()).
  • Реализации часов: SystemClock (кэш экземпляров по зоне, sleep() с досыпанием после
    прерывания сигналом), FrozenClock, MockClock (виртуальный сон), MonotonicClock
    (целочисленное наносекундное состояние), CallbackClock.
  • Декораторы: OffsetClock (смещение), ScaledClock (масштаб времени),
    TruncatingClock (усечение до секунды/минуты/часа/суток с учётом таймзоны).
  • Интеграция: ClockHolder (глобальный слот), фасад Clock (включая now('+1 hour')
    и inZone()), ClockAwareTrait, Stopwatch (круги, наносекундная точность).
  • DatePoint — момент от часов приложения с типизированными исключениями вместо false.
  • PsrClockAdapter — сторонние PSR-20-часы получают расширенный контракт пакета
    и работают со всеми декораторами.
  • Валидация ввода на границе: мусорные строки, null-байты и отрицательные длительности
    отклоняются InvalidClockValueException; управляющие символы в сообщениях экранируются.
  • Качество: покрытие 100 % строк каждого файла, мутационное тестирование без выживших
    и непокрытых мутантов, статический анализ (PHPStan max, Psalm 1, PHPMD, Deptrac, Rector).
  • Документация: wiki со страницей, схемой и жизненным циклом на каждую возможность;
    автогенерация сравнительных таблиц (фичи, скорость, память) с колонкой победителя;
    guide phpDocumentor зеркалируется из wiki.
  • Бенчмарки против symfony/clock, lcobucci/clock, beste/clock, nesbot/carbon,
    ergebnis/clock: изолированный процесс на каждый замер, медиана из 7 прогонов.

Качество релиза: 210 тестов в пяти наборах; покрытие 100% строк каждого файла; Infection 200/200 убитых мутантов (0 выживших, 0 таймаутов, 0 непокрытых); PHPStan max, Psalm level 1, PHPMD, Deptrac, Rector — без замечаний.

Производительность: паритет лидеров на базовых PSR-20-операциях, +33…+248% к лучшему аналогу на задачах со специализированным API, 0.0 КБ добавленной пиковой памяти.