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
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to