{"title":"Processo de release do Django","version":"6.0","locale":"pt-br","docname":"internals/release-process","url":"/pt-br/6.0/internals/release-process/","canonical":"https://djangodocs.dev/pt-br/6.0/internals/release-process/","summary":"Releases oficiais Link para este cabeçalho # Desde a versão 1.0, As releases do Django são numeradas da seguinte forma: Versões são numeradas na forma A.B ou A.B.C…","html":"<h1>Processo de release do Django<a class=\"heading-anchor\" href=\"#django-s-release-process\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"official-releases\">\n<span id=\"id1\"></span><h2>Releases oficiais<a class=\"heading-anchor\" href=\"#official-releases\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Desde a versão 1.0, As releases do Django são numeradas da seguinte forma:</p>\n<ul class=\"simple\">\n<li><p>Versões são numeradas na forma <code class=\"docutils literal notranslate\"><span class=\"pre\">A.B</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">A.B.C</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">A.B</span></code> é o número de versão da <em>feature release</em>. Cada versão será em grande parte compatível com as releases anteriores . Exceções a essa regra são listadas nas notas da release.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">C</span></code> é o número de versão da <em>patch release</em>, que é incrementada por correções de bug e releases de segurança. Essas releases serão 100% compatíveis com a patch release anterior. A única exceção é quando problemas de segurança ou de perda de dados não podem ser corrigidos sem quebrar a compatibilidade com versões anteriores. Se isso acontecer, as notas da release irão fornecer instruções detalhadas de upgrade.</p></li>\n<li><p>Antes de uma nova feature release, nós vamos fazer releases alpha, beta e release candidate das versões <code class=\"docutils literal notranslate\"><span class=\"pre\">A.B</span></code>.</p></li>\n</ul>\n<p>No git, cada release do Django irá ter uma tag indicando o seu número de versão , assinada com a chave de releases do Django. Adicionalmente, cada śerie de releases tem a su própria branch, chamada de <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/A.B.x</span></code>, e releases de segurança ou correção de bugs serão geradas dessas branches.</p>\n<p>For more information about how the Django project issues new releases for\nsecurity purposes, please see <a class=\"reference internal\" href=\"/pt-br/6.0/internals/security/\"><span class=\"doc\">our security policies</span></a>.</p>\n<dl class=\"glossary\">\n<dt id=\"term-Feature-release\">Feature release<a class=\"heading-anchor\" href=\"#term-Feature-release\"><span class=\"visually-hidden\">Link para este termo</span><span aria-hidden=\"true\">#</span></a></dt><dd><p>Feature releases (A.B, A.B+1, etc.) irão ocorrer mais ou menos a cada oito meses – veja  <a class=\"reference internal\" href=\"#id2\">processo de release</a> para detalhes. Essas releases irão conter novas funcionalidades, melhorias para funcionalidades existentes, e similares.</p>\n</dd>\n<dt id=\"term-Patch-release\">Patch release<a class=\"heading-anchor\" href=\"#term-Patch-release\"><span class=\"visually-hidden\">Link para este termo</span><span aria-hidden=\"true\">#</span></a></dt><dd><p>Patch releases (A.B.C, A.B.C+1, etc.) serão emitidas quando necessário, para corrigir bugs e /ou problemas de segurança.</p>\n<p>Essas releases serão 100% compatíveis com a feature release associada, a não ser que isso seja impossível por questões de segurança ou para prevenir perda de dados. Então a resposta para “será que devo atualizar para a última patch release?” sempre será “sim”.</p>\n</dd>\n<dt id=\"term-Long-term-support-release\">Suporte de longo prazo a uma release<a class=\"heading-anchor\" href=\"#term-Long-term-support-release\"><span class=\"visually-hidden\">Link para este termo</span><span aria-hidden=\"true\">#</span></a></dt><dd><p>Certas feature releases serão designadas como sendo de long-term support (LTS). Essas releases irão receber correções de segurança e para perda de dados aplicadas por um período de tempo garantido, tipicamente três anos.</p>\n<p>Veja a <a class=\"reference external\" href=\"https://www.djangoproject.com/download/\">página de download</a> para saber quais são as releases que foram designadas como sendo long-term support.</p>\n</dd>\n</dl>\n</section>\n<section id=\"release-cadence\">\n<span id=\"internal-release-cadence\"></span><h2>Cadência de uma release<a class=\"heading-anchor\" href=\"#release-cadence\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Starting with Django 2.0, version numbers will use a loose form of <a class=\"reference external\" href=\"https://semver.org/\">semantic\nversioning</a> such that each version following an LTS will\nbump to the next “dot zero” version. For example: 2.0, 2.1, 2.2 (LTS), 3.0,\n3.1, 3.2 (LTS), etc.</p>\n<p>Descobrir como as releases são compatíveis entre si fica mais simples com SemVer. Ele também ajuda a antecipar quando calços de compatibilidade serão removidos. Ele não é uma forma pura do SemVer já que cada feature release irá continuar a ter algumas incompatibilidades com versões anteriores documentadas onde o caminho de depreciação não for possível ou onde ele não valha a pena. Além disso, as depreciações que começaram em uma release LTS (X.2) serão descartadas em uma release sem ponto zero (Y.1) para acomodar as nossas políticas de manter os calços de compatibilidade por pelo menos duas feature releases. Leia a próxima seção para um exemplo.</p>\n</section>\n<section id=\"deprecation-policy\">\n<span id=\"internal-release-deprecation-policy\"></span><h2>Política de depreciação<a class=\"heading-anchor\" href=\"#deprecation-policy\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Uma feature release pode depreciar algumas funcionalidades de releases prévias. Se uma funcionalidade é depreciada em uma feature release A.x, ela irá continuar a funcionar em todas as versões A.x (para todas as versões de x) mas gerando warnings. Funcionalidades depreciadas serão removidas em uma release B.0, ou B.1 para features depreciadas na última feature release A.x para garantir que as depreciações sejam realizadas após pelo menos 2 feature releases.</p>\n<p>Então, por exemplo, se nós decidimos começar a depreciação de uma função no Django 4.2:</p>\n<ul class=\"simple\">\n<li><p>Django 4.2 irá conter uma cópia compatível com versões anteriores da função que irá lançar um <code class=\"docutils literal notranslate\"><span class=\"pre\">RemovedInDjango51Warning</span></code>.</p></li>\n<li><p>Django 5.0 (a versão imediatamente posterior a 4.2) ainda conterá a cópia compatível com versões anteriores.</p></li>\n<li><p>Django 5.1 irá remover a funcionalidade por completo.</p></li>\n</ul>\n<p>Os warnings são silenciosos por padrão. Você pode ativar a exibição desses warnings com a opção <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">-Wd</span></code>.</p>\n<p>Um exemplo mais genérico:</p>\n<ul class=\"simple\">\n<li><p>X.0</p></li>\n<li><p>X.1</p></li>\n<li><p>X.2 LTS</p></li>\n<li><p>Y.0: Remove os calços de depreciação adicionados em X.0 e X.1.</p></li>\n<li><p>Y.1: Remove os calços de depreciação adicionados em X.2.</p></li>\n<li><p>Y.2 LTS: Nenhum calço de depreciação será retirado (embora Y.0 não seja mais suportada, apps de terceiros precisam manter compatibilidade com a versão anterior X.2 LTS para facilitar atualizações de LTS para LTS).</p></li>\n<li><p>Z.0: Remove os calços de compatibilidade adicionados em Y.0 e Y.1.</p></li>\n</ul>\n<p>See also the <a class=\"reference internal\" href=\"/pt-br/6.0/internals/contributing/writing-code/submitting-patches/#deprecating-a-feature\"><span class=\"std std-ref\">Depreciando uma funcionalidade</span></a> guide.</p>\n</section>\n<section id=\"supported-versions\">\n<span id=\"supported-versions-policy\"></span><h2>Versões suportadas<a class=\"heading-anchor\" href=\"#supported-versions\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>A qualquer momento, o time de desenvolvedores do Django irão dar suporte a um conjunto de releases de vários leveis. Veja <a class=\"reference external\" href=\"https://www.djangoproject.com/download/#supported-versions\">a seção de versões suportadas</a> da página de downloads page para o estado atual de suporte de cada versão.</p>\n<ul>\n<li><p>The current development branch <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> will get new features and bug fixes\nrequiring non-trivial refactoring.</p></li>\n<li><p>Patches applied to the main branch must also be applied to the last feature\nrelease branch, to be released in the next patch release of that feature\nseries, when they fix critical problems:</p>\n<ul class=\"simple\">\n<li><p>Problemas de segurança.</p></li>\n<li><p>Bugs de perda de dados</p></li>\n<li><p>Bugs que ocasionem em um crash da aplicação</p></li>\n<li><p>Major functionality bugs in new features of the latest stable release.</p></li>\n<li><p>Regressions from older versions of Django introduced in the current release\nseries.</p></li>\n</ul>\n<p>A regra prática é que serão feitos backports das correções para a última feature release para bugs que impediriam a conclusão da release em primeiro lugar (release blockers).</p>\n</li>\n<li><p>Security fixes and data loss bugs will be applied to the current main branch,\nthe last two feature release branches, and any other supported long-term\nsupport release branches.</p></li>\n<li><p>Backports de correções de documentação geralmente serão mais livremente enviados para a branch da última release. Isso porque é altamente vantajoso possuir a última versão da documentação da última release atualizada e correta, e o risco de introduzir regressões é muito menor.</p></li>\n</ul>\n<p>Como exemplo concreto, considere um momento no tempo entre a release do Django 5.1 e 5.2. Nesse momento no tempo:</p>\n<ul class=\"simple\">\n<li><p>Features will be added to the development main branch, to be released as\nDjango 5.2.</p></li>\n<li><p>Bugs críticos serão corrigidos e aplicados na branch <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/5.1.x</span></code>, e lançados como 5.1.1, 5.1.2, etc.</p></li>\n<li><p>Security fixes and bug fixes for data loss issues will be applied to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> and to the <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/5.1.x</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/5.0.x</span></code>, and\n<code class=\"docutils literal notranslate\"><span class=\"pre\">stable/4.2.x</span></code> (LTS) branches. They will trigger the release of <code class=\"docutils literal notranslate\"><span class=\"pre\">5.1.1</span></code>,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">5.0.5</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">4.2.8</span></code>, etc.</p></li>\n<li><p>Documentation fixes will be applied to main, and, if easily backported, to\nthe latest stable branch, <code class=\"docutils literal notranslate\"><span class=\"pre\">5.1.x</span></code>.</p></li>\n</ul>\n</section>\n<section id=\"release-process\">\n<span id=\"id2\"></span><h2>Processos da release<a class=\"heading-anchor\" href=\"#release-process\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>O Django usa um cronograma de release temporal com feature releases a cada oito meses ou algo próximo a isso.</p>\n<p>After each feature release, the release manager will publish a timeline for the\nnext feature release. The timeline for an upcoming feature release can be found\nin the corresponding wiki roadmap page, e.g.\n<a class=\"reference external\" href=\"https://code.djangoproject.com/wiki/Version6.0Roadmap\">https://code.djangoproject.com/wiki/Version6.0Roadmap</a>.</p>\n<section id=\"feature-release-schedule-and-stages\">\n<h3>Feature release schedule and stages<a class=\"heading-anchor\" href=\"#feature-release-schedule-and-stages\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"active-development-pre-feature-freeze\">\n<h4>Active development / Pre-feature freeze<a class=\"heading-anchor\" href=\"#active-development-pre-feature-freeze\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Work begins on the feature release <code class=\"docutils literal notranslate\"><span class=\"pre\">A.B</span></code> after the feature freeze of the\nprevious release, i.e. when the <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/A.B-1.x</span></code> branch is forked.</p>\n<p>You can find the current branch under active development in the\n<a class=\"reference external\" href=\"https://code.djangoproject.com/#Djangoreleaseprocess\">Django release process</a> on Trac.</p>\n</section>\n<section id=\"feature-freeze-alpha-release\">\n<h4>Feature freeze / Alpha release<a class=\"heading-anchor\" href=\"#feature-freeze-alpha-release\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>All major and minor features, including deprecations and breaking changes, must\nbe merged by the feature freeze. Any features not done by this point will be\ndeferred to the next feature release.</p>\n<p>At this point, the <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/A.B.x</span></code> branch will be forked from <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code>.</p>\n</section>\n<section id=\"non-release-blocking-bug-fix-freeze-beta-release\">\n<h4>Non-release blocking bug fix freeze / Beta release<a class=\"heading-anchor\" href=\"#non-release-blocking-bug-fix-freeze-beta-release\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>After the alpha, all bug fixes merged in <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> are also backported to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">stable/A.B.x</span></code>. Refactors are backported at the discretion of the merger.\nMergers will be more and more conservative with backports, to avoid introducing\nregressions.</p>\n<p>In parallel to this phase, <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> can continue to receive new features, to be\nreleased in the <code class=\"docutils literal notranslate\"><span class=\"pre\">A.B+1</span></code> cycle.</p>\n</section>\n<section id=\"translation-string-freeze-release-candidate-release\">\n<h4>Translation string freeze / Release candidate release<a class=\"heading-anchor\" href=\"#translation-string-freeze-release-candidate-release\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>If there is still a consistent stream of release blockers coming in at the\nplanned release candidate date, a beta 2 will be released to encourage further\ntesting and the release candidate date will be pushed out ~1 month.</p>\n<p>The release candidate marks the string freeze, and it happens at least two\nweeks before the final release. Translators can then submit updated\ntranslations for inclusion in the final release. After this point, new\ntranslatable strings must not be added.</p>\n<p>After the release candidate, only release blockers and documentation fixes are\nbackported.</p>\n</section>\n<section id=\"final-release\">\n<h4>Final release<a class=\"heading-anchor\" href=\"#final-release\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Ideally, the final release will ship two weeks after the last release\ncandidate.</p>\n<p>If there are major bugs still being found 2 weeks after the release candidate,\nthere will be a decision on how to proceed (likely another release candidate\nwould be issued and the final release date will be pushed out).</p>\n</section>\n</section>\n<section id=\"bug-fix-releases\">\n<h3>Releases de correções de bugs<a class=\"heading-anchor\" href=\"#bug-fix-releases\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Depois da feature release (ex A.B), a release prévia irá entrar no modo de correção de bugs.</p>\n<p>The branch for the previous feature release (e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/A.B-1.x</span></code>) will\ninclude bugfixes. Critical bugs fixed on main must <em>also</em> be fixed on the\nbugfix branch; this means that commits need to cleanly separate bug fixes from\nfeature additions. The developer who commits a fix to main will be\nresponsible for also applying the fix to the current bugfix branch.</p>\n</section>\n</section>","rootId":"django-s-release-process","toc":[{"title":"Releases oficiais","anchor":"official-releases","children":[]},{"title":"Cadência de uma release","anchor":"release-cadence","children":[]},{"title":"Política de depreciação","anchor":"deprecation-policy","children":[]},{"title":"Versões suportadas","anchor":"supported-versions","children":[]},{"title":"Processos da release","anchor":"release-process","children":[{"title":"Feature release schedule and stages","anchor":"feature-release-schedule-and-stages","children":[{"title":"Active development / Pre-feature freeze","anchor":"active-development-pre-feature-freeze","children":[]},{"title":"Feature freeze / Alpha release","anchor":"feature-freeze-alpha-release","children":[]},{"title":"Non-release blocking bug fix freeze / Beta release","anchor":"non-release-blocking-bug-fix-freeze-beta-release","children":[]},{"title":"Translation string freeze / Release candidate release","anchor":"translation-string-freeze-release-candidate-release","children":[]},{"title":"Final release","anchor":"final-release","children":[]}]},{"title":"Releases de correções de bugs","anchor":"bug-fix-releases","children":[]}]}],"breadcrumbs":[{"docname":"internals/index","title":"Funcionamento interno do Projeto Django","url":"/pt-br/6.0/internals/"}],"prev":{"docname":"internals/security","title":"Política de Segurança do Django","url":"/pt-br/6.0/internals/security/"},"next":{"docname":"internals/deprecation","title":"Linha do tempo de depreciações no Django","url":"/pt-br/6.0/internals/deprecation/"},"formats":{"html":"/pt-br/6.0/internals/release-process/","markdown":"/pt-br/6.0/internals/release-process.md","json":"/pt-br/6.0/internals/release-process.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/internals/release-process.txt","official":"https://docs.djangoproject.com/pt-br/6.0/internals/release-process/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}