The purpose of this talk is to remind people about M2Crypto. After many years of very light almost non-maintenance only by the brave RHEL maintainer, I have taken over M2Crypto to port it to Py3k and hoped to be done in a month the most. Now, two years later, the merge finally happened and M2Crypto has another chance to survive in the world where Py3k compatibility is a necessity.
This presentation is about the experience of porting large project combining Python and C from 2.5 to Py3k compliance. I would like to describe the biggest problems and tools which helped me. The formers were (aside from plenty of lingering bugs) complete mess of using 'bytes' and 'str' in Py2k code. What helped a lot were PEP-484 annotations (working in Py2k in the comment form), compatibility macros which are actually present in Python since 2.6.