[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.
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:
More information about the cython-devel