today, I'm happy to announce the first alpha release of Cython 3.0.
It took us a while to get to this point, well more than a year's time, but we received a lot of help along the way, most notably from David Woods, Jeroen Demeyer and Matti Picus. Thanks a lot, and also to the many other contributors! For this release, we already have 182 closed issues and merged PRs, including 109 PRs contributed by non-core devs!
** What is Cython?
In case you didn't hear about Cython before, it's the most widely used statically optimising Python compiler out there. It translates Python (2/3) code to C, and makes it as easy as Python itself to tune the code all the way down into fast native code.
** What is Cython 3.0?
Cython 3.0 is our effort to bring Cython up to date with modern Python 3, after an 18 year long development history. According to the Python mailing list archive  and Greg's download directory , Cython's predecessor Pyrex 0.1 was announced and released to the public on April 4th, 2002.
Cython is finally coming of age. :)
** So, what's new?
Too much. Way too much for this announcement. Cython 3.0 comes with a very long list of new features, bug fixes and modernisations, a few of which are backwards incompatible, but in a good way. See the latest changelog:
Here's a short teaser list anyway: - Python 3 semantics by default, legacy Python 2 semantics via directive. - No more deprecated NumPy C-API usage. - Unicode module names, imports, and identifiers (PEP-3131, PEP-489). - Support for the fast vectorcall protocol (PEP-590). - Inlined properties on external cdef classes. - Faster dispatch for fused functions. - First steps towards supporting CPython's stable ABI (PEP-384).
** How alpha is it?
Well. It's not complete yet . It still has some known issues. There are still some unmerged PRs waiting. Support for the limited API is … limited.
But, it's in a good shape and probably ready enough for you to make use of all those cool new features. Please give it a try and report back if you find issues that we can still improve on in the upcoming pre-releases. PRs very welcome!
As always, if it works for you, use it. Generate your C code locally with it, test it, then ship it to your users, preferably even as ready-made binary wheels. Once the code is compiled, they don't even have to know that you've used an alpha version. :)