This is a list of some of the stuff that we'd may like to see in Cython, and many make good starting points for Google Summer of Code projects.
CEPs are isolated ideas and concepts. They do not need to be full specifications; once it is believed that a concept is understood in enough detail that it won't be refactored into other pieces it is a good candidate for a CEP. However as CEPs are implemented they should develop towards a higher level of specificity (and eventually serve as documentation of the feature). Collections of more general enhancement ideas, especially if they are not specific enough to determine what "done" means, should usually be linked under Exploring new concepts.
CEP 1xx - User experience
Improvement for specific usecases or libraries. These are bigger end-goals driving the development priorities and depends on other CEPs for the details.
- CEP 101 - Full Python 2.x syntax support (this is a 1.0 goal)
CEP 107 - a special compilation mode that adds safety checks at various places
CEP 108 - better handling of string literals in Python 3 (Done)
CEP 2xx - Frontend
Build system, command-line interface, library interface
CEP 201 - Distutils Preprocessing
- CEP 202 - Plugin framework
CEP 3xx - Pure Python support
Supporting more features for pure Python code (without Cython syntax extensions)
CEP 301 - from blah import * (Done)
CEP 302 - with statements (Done)
CEP 304 - decorators (Done)
CEP 307 - native support for generators and PEP 342 coroutines (yield)
CEP 4xx - Support for wrapping existing C/C++/Fortran/... libraries
Improved support for features in C/C++/Fortran code that is wrapped, often through extensions in the Cython declaration language.
CEP 5xx - Cython language features
Development of Cython as a language that is not covered by the 3xx or 4xx series.
CEP 501 - Embedding Cython language extensions in valid Python syntax
CEP 516 - Division Semantics (Done)
CEP 517 - Array type (Not voted for yet)
CEP 518 - SIMD operations on Cython arrays (Not voted for yet)
CEP 6xx - Optimizations
Generating smarter output C code.
CEP 9xx - Cython internals
Changes in the internal Cython implementation.
Exploring new concepts
The uneval psuedo-function (unifying metaprogramming approaches)
- OpenCL support (since cython compiles into c and OpenCL is a subset of c99)
- Supporting C-level conditional compilation (e.g. emitting #ifdef)
- Bound C methods and functions (e.g. supporting cdef closures). This could be done by via a struct holding "self" and the function pointer. The issues are coercion to/from unbound and raw C methods.
