[Cython] Willing to contribute

Dag Sverre Seljebotn d.s.seljebotn at astro.uio.no
Thu Aug 4 10:15:27 CEST 2011


On 08/03/2011 10:53 PM, Stefano wrote:
> Hi everybody,
>
> I've been a enthusiast Python programmer for 3 years now, and I've hailed
> Cython project with great interest. Now, I'm willing to contribute. I've would
> say I'm an quite an expert Python programmer and I've some-year-long
> experience with C, modern C++ and its cousin Java. Sidenote, I'm a student at
> Politecnico di Milano, Italy.
>
> Everything started with trying to speed up a Mandelbrot generator, which
> heavily relies on complex numbers. Eventually I've found in "Mini Projects (or
> something similar)" wiki that C99 `complex' is still to be implemented. So, I
> decide to make a step further and try to hop into development.
>
> I've would be grateful if a core developer could point me in the right
> direction concerning coding style, repositories, deadlines (I'm still a
> student, so I may have 'offline' days this winter) and other issues. I may
> start with something easy (`complex' implementation, or command line API
> restructuration), and I'd like someone from the team to discuss what I'll be
> implementing (ok, just for the first days), just to see if  "I'm doing it
> right" (TM) and, mostly, if I'm the right man or I'm just making you loose
> your time.

Great!

A history lesson: On a higher level, the Cython code base originated in 
Pyrex, and has then gone through a number of refactorings (introduce a 
pipeline with transforms etc.). While refactoring, one always made sure 
Cython was shipable (at least within a couple of months time), so all 
refactorings were small an isolated. I.e., (like most code bases), 
there's no "grand design idea". I think there used to be one in Pyrex, 
but we've patched ourself far away from that now.

What I'm saying is: If something appears strange, chances are it is 
simply an artifact of something that made sense before a refactor, but 
wasn't taken into account while refactoring. So any cleanups (such as 
command line API restructuring) are welcome.

To really get drawn in Cython development though (and to get motivated 
and think it is fun), what you should eventually do is find a new 
feature that you want to work on -- that's when Cython development 
becomes really fun! Have a look at the enhancements wiki page and see if 
anything catches your interest, if you don't get very interested in 
seeing a feature working then things get much harder. Some ideas:

  - Python compatability bugs are the most important ones to get to 
Cython 1.0. OTOH, the low-hanging ones are mostly taken I think, so that 
the remaining ones may require a detailed knowledge of the inner 
workings of Cython and CPython. But have a look through trac.cython.org...

  - One idea is coercion of C pointers to ctypes Python objects and back 
again. This would allow any method to be "cpdef", so that "cdef" methods 
doesn't need to be learned (unless you want to keep things private). 
This may in time lead to simplifying the Cython language by merging cdef 
and cpdef functions/methods.

  - Supporting C++/C99 "const"...

  - Some CEPs I'd like to see implemented personally:

http://wiki.cython.org/enhancements/nativecall
http://wiki.cython.org/enhancements/signals


Dag Sverre


More information about the cython-devel mailing list