Обслуживание

Дата обновления перевода 2025-02-07

Обслуживание

Во время жизненного цикла младшей версии, ежемесячно публикуются новые релизы (версии патчей). Этот документ описывает границы дозволенных изменений.

Исправления багов принимаются при следующих условиях:

  • Изменение не нарушает валидные модульные тесты;
  • Новые модульные тесты охватывают исправление бага;
  • Текущее поведение бага не используется широко в качестве "фичи".

Note

Когда документация (или phpdoc) не синхронизирована с кодом, поведение кода должно быть всегда рассмотрено, как правильное.

Чтобы избежать нарушения обратной совместимости, мы, как правило, очень строго относимся к изменениям, которые принимаются в версии патчей.

Кроме исправлений багов, другие незначительные изменения могут быть приняты в версию патча
в каждом конкретном случае:

  • Более новые версии PHP/HHVM: Исправления, которые добавляют поддержку более новых версий PHP или HHVM принимаются, если они не нарушают набор модульных тестов;
  • Более новые версии популярных ОС: Исправления, которые добавляют поддержку более новых версий популярных ОС (Linux, MacOS и Windows) принимаются, если они не нарушают набор модульных тестов;
  • Переводы: Обновления и дополнения переводов допускаются;
  • Внешние данные: Обновления для внешних данных, включённых в Symfony могут быть обновлены (например, ICU);
  • Обновления версий для зависимостей Composer: Изменение минимальной версии зависимости возможно, бОльшей или увеличение минимальной версии PHP - нет;
  • Тесты: Тесты, увеличивающие охват кода, могут быть добавлены.

Следующие изменения обычно не принимаются в версии патча, за исключением отдельных случаев, которые рассматриваются по отдельности (в основном, когда это связано с исправлением проблемы безопасности):

  • Улучшение производительности: Улучшение производительности следует принимать только если изменения являются локальными (расположены в одном классе) и только для алгоритмических проблем (любые такие патчи должны сопровождаться цифрами, которые показывают значительное улучшение реального кода);
  • Стандарт кодирования и рефакторинг: Исправления стандарта кодирования или рефакторинг кода почти никогда не принимаются, за исключением согласованности с существующей базой кода, если они не являются слишком инвазивными, и если их слияние в высшие ветки не приведет к сложному слиянию ветвей.
  • Добавление новых классов или не приватных методов: Во время работы над исправлением бага, никогда не создавайте новых классов или публичных/приватных методов (или глобальных
    функции).
  • Добавление опций конфигурации: Добавление новых опций конфигурации никогда не разрешается.
  • Добавление новых устареваний: После достижения стабильности версии, новые устаревания больше нельзя добавлять.
  • Добавление или обновление аннотаций: Добавление или обновление аннотаций (например,

аннотаций PHPDoc) запрещено; их исправление может быть разрешено.

Всё, ясно не указанное выше, должно быть применено в следующей младшей или старшей версии (т.е. в главной ветке). Например, следующие изменения не будут приняты в версии патча никогда:

  • Новые функции;
  • Усиление безопасности;
  • Нарушения обратной совместимости: Отметьте, что нарушения обратной совместимости могут быть применены при исправлении проблемы безопасности, если другое исправление невозможно;
  • Поддержка внешних платформ: Добавление поддержки для новых платформ (вроде движка Google App) не может быть сделано в версии патча;
  • Сообщения об исключениях: Сообщения об исключения не должны быть изменены, так как некоторые автоматизированные системы могут полагаться на них (даже если это не рекомендуется);
  • Добавление новых зависимостей Composer;
  • Поддержка более новых старших версий зависимостей Composer: Рассмотрение поддержки для более новых версий существующей зависимости невозможно.
  • Веб-дизайн: Изменение веб-дизайна встроенных страниц вроде исключений, панели инструментов или профилировщика, запрещено.

Note

Эта политика создана для поддержания непрерывного пути обновления, позволяющего двигаться вперёд с новейшими версиями Symfony самым безопасным способом. Обновление версий PHP, ОС или Symfony должно проиходить почти независимо. Поэтому поддержка последних версий PHP или ОС рассматривается, как исправление багов.