See http://trac.cython.org/cython_trac and http://wiki.cython.org/enhancements


-- The Original Pyrex Todo List --

DONE - Pointer-to-function types.

DONE - Nested declarators.

DONE - Varargs C func defs and calls.

DONE - * and ** args in Python func defs.

DONE - Default argument values.

DONE - Tracebacks.

DONE - Disallow creating char * from Python temporary anywhere
       (not just on assignment).

DONE - Module and function and class doc strings.

DONE - Predeclare C functions.

DONE - Constant expressions.

DONE - Forward C struct declarations.

DONE - Prefix & operator.

DONE - Get rid of auto string->char coercion and
       add a c'X' syntax for char literals.

DONE - Cascaded assignments (a = b = c).

DONE - 'include' statement for including other Pyrex files.

DONE - Add command line option for specifying name of generated C file.

DONE - Add 'else' clause to try-except.

DONE - Allow extension types to be declared "public" so they
       can be accessed from another Pyrex module or a C file.

DONE - Don't try to generate objstruct definition for external
       extension type declared without suite (treat as though
       declared with empty suite).

DONE - Implement two-argument form of 'assert' statement.

Const types.

Tuple/list construction: Evaluate & store items one at a time?

Varargs argument traversal.

Use PyDict_SetItemString to build keyword arg dicts?
(Or wait until names are interned.)

Intern names.

print >>file

abs() and anything similar.

Semicolon-separated statement lists.

Optional semicolons after C declarations.

Multiple C declarations on one line?

Optimise return without value outside of try-finally.

exec statement.

from ... import statement.

Use iterator protocol for unpacking.

Save & restore exception being handled on function entry/exit.

In-place operators (+=, etc).

Constant declarations. Syntax?

DONE - Some way for C functions to signal Python errors?

Check for lack of return with value in non-void C functions?

Allow 'pass' in struct/union/enum definition.

Make C structs callable as constructors.

DONE - Provide way of specifying C names.

DONE - Public cdefs.

When calling user __dealloc__ func, save & restore exception.

DONE - Forward declaration of extension types.

Complex number parsetuple format?

DONE - long long type

DONE - long double type?

Windows __fooblarg function declaration things.

Generate type, var and func declarations in the same order that
they appear in the source file.

Provide a way of declaring a C function as returning a
borrowed Python reference.

Provide a way of specifying whether a Python object obtained
by casting a pointer should be treated as a new reference
or not.

Optimize integer for-loops.

Make sizeof() take types as well as variables.

Allow "unsigned" to be used alone as a type name.

Allow duplicate declarations, at least in extern-from.

Do something about installing proper version of pyrexc
script according to platform in setup.py.

DONE - Add "-o filename" command line option to unix/dos versions.

Recognise #line directives?

Catch floating point exceptions?

Check that forward-declared non-external extension types
are defined.

Generate type test when casting from one Python type
to another.

Generate a Pyrex include file for public declarations
as well as a C one.

Syntax for defining indefinite-sized int & float types.

Allow ranges of exception values.

Support "complex double" and "complex float"?

Allow module-level Python variables to be declared extern.

Consider:
>cdef extern from "foo.h":
>    int dosomething() except -1 raise MyException

Properties for Python types.

DONE - Properties for extension types.

Find a way to make classmethod and staticmethod work better.

DONE - Document workarounds for classmethod and staticmethod.

Statically initialised C arrays & structs.

Reduce generation of unused vars and unreachable code?

Support for acquiring and releasing GIL.

Make docstrings of extension type special methods work.

Treat result of getting C attribute of extension type as non-ephemeral.

Make None a reserved identifier.

Teach it about builtin functions that correspond to
Python/C API calls.

Teach it about common builtin types.

Option for generating a main() function?

DONE - Allow an extension type to inherit from another type.

Do something about external C functions declared as returning
const * types?

Use PyString_FromStringAndSize for string literals?

DONE - C functions as methods of extension types.

What to do about __name__ etc. attributes of a module (they are
currently assumed to be built-in names).

Use PyDict_GetItem etc. on module & builtins dicts for speed.

Intern all string literals used as Python strings?
[Koshy <jkoshy@freebsd.org>]

Make extension types weak-referenceable.
[Matthias Baas <baas@ira.uka.de>]

Make 'pass' work in the body of an extern-from struct
or union.

Disallow a filename which results in an illegal identifier when
used as a module name.

Use ctypedef names.

Provide an easy way of exposing a set of enum values as Python names.
[John J Lee <jjl@pobox.com>]

Prevent user from returning a value from special methods that
return an error indicator only.

Use PyObject_TypeCheck instead of PyObject_IsInstance?

Allow * in cimport? [John J Lee <jjl@pobox.com>]

FAQ: Q. Pyrex says my extension type object has no attribute 'rhubarb', but
     I know it does.

     A. Have you declared the type at the point where you're using it?

Eliminate lvalue casts! (Illegal in C++, also disallowed by some C compilers)
[Matthias Baas <baas@ira.uka.de>]

Make Python class construction work more like it does in Python.

Give the right module name to Python classes.

Command line switch for full pathnames in backtraces?

Use PyString_FromStringAndSize on string literals containing
nulls.

Peephole optimisation? [Vladislav Bulatov <vrbulatov@list.ru>]

Avoid PyArg_ParseTuple call when a function takes no positional args.

Omit incref/decref of arguments that are not assigned to?

Can a faster way of instantiating extension types be found?

Disallow declaring a special method of an extension type with
'cdef' instead of 'def'.

Use PySequence_GetItem instead of PyObject_GetItem when index
is an integer.

If a __getitem__ method is declared with an int index, use the
sq_item slot instead of the mp_subscript slot.

Provide some way of controlling the argument list passed to
an extension type's base __new__ method?
[Alain Pointdexter <alainpoint@yahoo.fr>]

Rename __new__ in extension types to __alloc__.

Implement a true __new__ for extension types.

Way to provide constructors for extension types that are not
available to Python and can accept C types directly?

Support generators by turning them into extension types?

List comprehensions.

Variable declarations inside inner code blocks?

Initial values when declaring variables?

Do something about __stdcall.

Support class methods in extension types using METH_CLASS flag.

Disallow defaulting types to 'object' in C declarations?

C globals with static initialisers.

Find a way of providing C-only initialisers for extension types.

Metaclasses for extension types?

Make extension types use Py_TPFLAGS_HEAPTYPE so their __module__
will get set dynamically?
