Skip to content

Release cycle ru RU

ArchiBot edited this page Jan 6, 2024 · 26 revisions

Цикл выпуска

ASF использует стандартную для C# нумерацию версий из 4 чисел, записанных в виде A.B.C.D. Каждая версия всегда "заморожена" и указывает на фиксированный исходный код, из которого она была собрана (он идёт в комплекте с релизом). We do not intend to remove any previously-published version, as long as our hosting provider (GitHub) remains fine with preserving them for indefinite future, so you can safely rollback to any of them without a need of making self-copies.

В общих принципах присвоения версий ASF, мы стараемся следовать принципу semver МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ в трёх младших числах - B.C.D. Эти три числа напрямую связаны с кодом ASF. Самое старшее число A указывает на глобальные изменения, лежащие за пределами самой кодовой базы ASF, обычно напрямую влияющие на саму основу программы.

ASF как проект стремится выпускать более или менее один выпуск функций в месяц, обозначенный значком C. Чтобы сделать такой выпуск возможным, у нас есть более мелкие предварительные выпуски, предназначенные для опытных пользователей, которые служат меньшими вехами изменений, которые выпускаются по мере необходимости, когда изменений будет достаточно после последний предварительный релиз, на котором стоит сосредоточиться. В конце концов, когда окончательный предварительный выпуск будет определен как стабильный и достаточно доработан, без известных критических ошибок, которые должны быть исправлены по сравнению с предыдущим стабильным выпуском, он будет переведен в новый стабильный выпуск, в то же время открывая новый месячный цикл для следующего.

Хотя мы делаем все возможное, чтобы даже наши предварительные выпуски были относительно стабильными, следует отметить, что предварительные выпуски не должны использоваться в какой-либо производственной среде. В предварительных выпусках могут быть критические ошибки и другие нарушенные функции, именно поэтому мы выпускаем их для начала - чтобы избежать всего этого беспорядка в наших стабильных сборках и предложить надежное программное обеспечение. Если вы не желаете принимать более высокий риск, связанный с использованием потенциально нестабильного программного обеспечения, пожалуйста, избегайте использования наших предварительных сборок и вместо этого придерживайтесь нашей последней стабильной сборки, которая более подходит для большинства пользователей.

В зависимости от количества изменений в цикле, обычно будет одно повышение версии C (из предыдущей стабильной версии) и повышение уровня D для каждого предварительного выпуска. However, when introducing changes with far bigger scope, especially breaking changes, the cycle might start from (or switch in the middle to) B or even A bump - such switch indicates that current release cycle has a potential to be more unstable than usual, and should be tested carefully. Keep in mind that semver changes we're making relate only to previously released stable version, we do not track versioning across pre-releases in a cycle themselves, which means that version 1.0.1.2 might have a new feature that 1.0.1.1 didn't have, as long as the previously marked stable release is from 1.0.0.X family. Точно так же могут быть серьезные критические изменения даже в двух предварительных выпусках одного и того же цикла, что особенно верно, когда мы все еще принимаем решение об окончательной форме недавно представленных функций или аналогичных.

Увеличение версии Тип Пример изменений
A Крупные изменения в .NET runtime, изменения в фундаменте, критические изменения, которые выходят за рамки кода ASF, вещи, которые могут съесть вашего кота (комментарий переводчика: что это за прикол с котом???).
B Мажорная (Major) Незначительные изменения среды выполнения .NET, критические изменения в кодовой базе ASF, основные правки кода, выходящие за рамки незначительной классификации
C Минорная (Minor) Новые ежемесячные циклы, обычно вводящие новые функции, команды, свойства конфигурации или другие изменения, которые не нарушают существующие настройки
D Патч (Patch) Новые предварительные выпуски, которые являются частью существующего цикла (обозначены более значимым числом), критические исправления ошибок в существующих стабильных выпусках, которые не вносят никаких изменений кода, кроме необходимых

Обратите внимание, что новые функции и изменения могут быт не документированы (например в wiki) до более позднего времени, поскольку документация обычно пишется когда готов окончательный код для данной функции (чтобы сэкономить время на переписывании документации каждый раз когда мы решим изменить функцию, над которой работаем). Из-за того, что предварительные версии могут содержать код, над которым в данный момент ведётся работа, и который не был ещё окончательно оформлен, документация создаётся на более позднем этапе разработки. То же самое верно и для списка изменений, который может быть недоступен для некоторых предварительных версий до какого-то времени. Поэтому, если вы решили использовать предварительные версии - будьте готовы время от времен изучать содержимое коммитов в ASF. Разумеется, недостаток документации относится только к предварительным версиям - у каждой стабильной версии должен быть полный список изменений и документация в wiki на момент выпуска.

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

Проект ASF поддерживается нашим процессом непрерывной интеграции. Every build is supposed to be reproducible, so it should not be a problem to grab source (included in the release) of given version and compile yourself receiving the same result as the one available through our precompiled binaries. Мы обычно избегаем компиляции релизов, пока системы работают, выпущенные бинарники поступают непосредственно из нашего процесса CI.

Clone this wiki locally