<div dir="ltr">So, to summarize, we need something like six for C?<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 12, 2018 at 5:38 AM, Nick Coghlan <span dir="ltr"><<a href="mailto:ncoghlan@gmail.com" target="_blank">ncoghlan@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi folks,</div><div><br></div><div>Given the discussion of adopting an annual release cadence at the language summit this year [1], this recent Jakarta (nee Java) EE announcement caught my attention: <a href="https://www.eclipse.org/ee4j/news/?date=2018-06-08#release-cadence" target="_blank">https://www.eclipse.org/ee4j/<wbr>news/?date=2018-06-08#release-<wbr>cadence</a></div><div><br></div><div>JEE are switching to an annual update cadence for the base platform, with quarterly updates for individual components.<br></div><div><br></div><div>Since we last seriously discussed potential release cadence changes back in 2012 (with PEPs 407 and 413 [2,3]), that means JEE joins GCC switching to an annual release cadence from GCC 5 back in 2015 (see [4]), while clang/LLVM have been doing twice-annual feature releases for several years now [5].<br></div><div><br></div><div>Most directly relevant to Python would be the Node.js maintenance lifecycle initially developed in 2013, and evolved since then: <a href="https://github.com/nodejs/Release" target="_blank">https://github.com/nodejs/<wbr>Release</a></div><div><br></div><div>That's quite a fast lifecycle (even faster than we're considering - they do a release every 6 months, with every 2nd release being supported for 3 1/2 years), but one of the keys to making it work in practice is <a href="https://github.com/nodejs/nan" target="_blank">https://github.com/nodejs/nan</a></div><div><br></div><div>The gist of the "Native Abstractions for Node.js" project is that it aims to provide a stable API & ABI for third party libraries to link against, but *without* having to keep those interfaces stable in V8/Node.js itself.</div><div><br></div><div>In the Python world, the closest current equivalent would by SIP for PyQt projects [6], which provides a shim layer that allows version independent extension modules to target CPython's native stable ABI with the aid of a single version specific dependency (so only the "sip" wheel itself needs to be rebuilt for each new Python version, not every extension module that depends on it).</div><div><br></div><div>So I expect a release cadence change would be a lot more viable now than it would have been 6 years ago, but I also suspect actually getting there will require a non-trivial amount of effort invested in generalising the SIP model such that the stable ABI gets a *lot* easier for projects to realistically target (including for cffi and Cython generated extension modules).<br></div><div><br></div><div>Cheers,</div><div>Nick.<br></div><div></div><div><br></div><div>[1] <a href="https://lwn.net/Articles/755224/" target="_blank">https://lwn.net/Articles/<wbr>755224/</a></div><div>[2] <a href="https://www.python.org/dev/peps/pep-0407/" target="_blank">https://www.python.org/dev/<wbr>peps/pep-0407/</a></div><div>[3] <a href="https://www.python.org/dev/peps/pep-0413/" target="_blank">https://www.python.org/dev/<wbr>peps/pep-0413/</a><br></div><div>[4] <a href="https://gcc.gnu.org/releases.html" target="_blank">https://gcc.gnu.org/releases.<wbr>html</a></div><div>[5] <a href="https://releases.llvm.org/" target="_blank">https://releases.llvm.org/</a> (Note: LLVM switched to twice-yearly X.0.0 releases in 2017, but were doing twice yearly X.Y releases for some time before that)</div><div>[6] <a href="https://pypi.org/project/SIP/" target="_blank">https://pypi.org/project/SIP/</a><span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888"><div><br></div><div><br>-- <br><div class="m_6911815710391895462gmail_signature">Nick Coghlan   |   <a href="mailto:ncoghlan@gmail.com" target="_blank">ncoghlan@gmail.com</a>   |   Brisbane, Australia</div>
</div></font></span></div>
<br>______________________________<wbr>_________________<br>
Python-Dev mailing list<br>
<a href="mailto:Python-Dev@python.org">Python-Dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-dev" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-dev</a><br>
Unsubscribe: <a href="https://mail.python.org/mailman/options/python-dev/guido%40python.org" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/options/python-dev/<wbr>guido%40python.org</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div>