Home | History | Annotate | Download | only in src
      1 See http://trac.cython.org/cython_trac and http://wiki.cython.org/enhancements
      2 
      3 
      4 -- The Original Pyrex Todo List --
      5 
      6 DONE - Pointer-to-function types.
      7 
      8 DONE - Nested declarators.
      9 
     10 DONE - Varargs C func defs and calls.
     11 
     12 DONE - * and ** args in Python func defs.
     13 
     14 DONE - Default argument values.
     15 
     16 DONE - Tracebacks.
     17 
     18 DONE - Disallow creating char * from Python temporary anywhere
     19        (not just on assignment).
     20 
     21 DONE - Module and function and class doc strings.
     22 
     23 DONE - Predeclare C functions.
     24 
     25 DONE - Constant expressions.
     26 
     27 DONE - Forward C struct declarations.
     28 
     29 DONE - Prefix & operator.
     30 
     31 DONE - Get rid of auto string->char coercion and
     32        add a c'X' syntax for char literals.
     33 
     34 DONE - Cascaded assignments (a = b = c).
     35 
     36 DONE - 'include' statement for including other Pyrex files.
     37 
     38 DONE - Add command line option for specifying name of generated C file.
     39 
     40 DONE - Add 'else' clause to try-except.
     41 
     42 DONE - Allow extension types to be declared "public" so they
     43        can be accessed from another Pyrex module or a C file.
     44 
     45 DONE - Don't try to generate objstruct definition for external
     46        extension type declared without suite (treat as though
     47        declared with empty suite).
     48 
     49 DONE - Implement two-argument form of 'assert' statement.
     50 
     51 Const types.
     52 
     53 Tuple/list construction: Evaluate & store items one at a time?
     54 
     55 Varargs argument traversal.
     56 
     57 Use PyDict_SetItemString to build keyword arg dicts?
     58 (Or wait until names are interned.)
     59 
     60 Intern names.
     61 
     62 print >>file
     63 
     64 abs() and anything similar.
     65 
     66 Semicolon-separated statement lists.
     67 
     68 Optional semicolons after C declarations.
     69 
     70 Multiple C declarations on one line?
     71 
     72 Optimise return without value outside of try-finally.
     73 
     74 exec statement.
     75 
     76 from ... import statement.
     77 
     78 Use iterator protocol for unpacking.
     79 
     80 Save & restore exception being handled on function entry/exit.
     81 
     82 In-place operators (+=, etc).
     83 
     84 Constant declarations. Syntax?
     85 
     86 DONE - Some way for C functions to signal Python errors?
     87 
     88 Check for lack of return with value in non-void C functions?
     89 
     90 Allow 'pass' in struct/union/enum definition.
     91 
     92 Make C structs callable as constructors.
     93 
     94 DONE - Provide way of specifying C names.
     95 
     96 DONE - Public cdefs.
     97 
     98 When calling user __dealloc__ func, save & restore exception.
     99 
    100 DONE - Forward declaration of extension types.
    101 
    102 Complex number parsetuple format?
    103 
    104 DONE - long long type
    105 
    106 DONE - long double type?
    107 
    108 Windows __fooblarg function declaration things.
    109 
    110 Generate type, var and func declarations in the same order that
    111 they appear in the source file.
    112 
    113 Provide a way of declaring a C function as returning a
    114 borrowed Python reference.
    115 
    116 Provide a way of specifying whether a Python object obtained
    117 by casting a pointer should be treated as a new reference
    118 or not.
    119 
    120 Optimize integer for-loops.
    121 
    122 Make sizeof() take types as well as variables.
    123 
    124 Allow "unsigned" to be used alone as a type name.
    125 
    126 Allow duplicate declarations, at least in extern-from.
    127 
    128 Do something about installing proper version of pyrexc
    129 script according to platform in setup.py.
    130 
    131 DONE - Add "-o filename" command line option to unix/dos versions.
    132 
    133 Recognise #line directives?
    134 
    135 Catch floating point exceptions?
    136 
    137 Check that forward-declared non-external extension types
    138 are defined.
    139 
    140 Generate type test when casting from one Python type
    141 to another.
    142 
    143 Generate a Pyrex include file for public declarations
    144 as well as a C one.
    145 
    146 Syntax for defining indefinite-sized int & float types.
    147 
    148 Allow ranges of exception values.
    149 
    150 Support "complex double" and "complex float"?
    151 
    152 Allow module-level Python variables to be declared extern.
    153 
    154 Consider:
    155 >cdef extern from "foo.h":
    156 >    int dosomething() except -1 raise MyException
    157 
    158 Properties for Python types.
    159 
    160 DONE - Properties for extension types.
    161 
    162 Find a way to make classmethod and staticmethod work better.
    163 
    164 DONE - Document workarounds for classmethod and staticmethod.
    165 
    166 Statically initialised C arrays & structs.
    167 
    168 Reduce generation of unused vars and unreachable code?
    169 
    170 Support for acquiring and releasing GIL.
    171 
    172 Make docstrings of extension type special methods work.
    173 
    174 Treat result of getting C attribute of extension type as non-ephemeral.
    175 
    176 Make None a reserved identifier.
    177 
    178 Teach it about builtin functions that correspond to
    179 Python/C API calls.
    180 
    181 Teach it about common builtin types.
    182 
    183 Option for generating a main() function?
    184 
    185 DONE - Allow an extension type to inherit from another type.
    186 
    187 Do something about external C functions declared as returning
    188 const * types?
    189 
    190 Use PyString_FromStringAndSize for string literals?
    191 
    192 DONE - C functions as methods of extension types.
    193 
    194 What to do about __name__ etc. attributes of a module (they are
    195 currently assumed to be built-in names).
    196 
    197 Use PyDict_GetItem etc. on module & builtins dicts for speed.
    198 
    199 Intern all string literals used as Python strings?
    200 [Koshy <jkoshy (a] freebsd.org>]
    201 
    202 Make extension types weak-referenceable.
    203 [Matthias Baas <baas (a] ira.uka.de>]
    204 
    205 Make 'pass' work in the body of an extern-from struct
    206 or union.
    207 
    208 Disallow a filename which results in an illegal identifier when
    209 used as a module name.
    210 
    211 Use ctypedef names.
    212 
    213 Provide an easy way of exposing a set of enum values as Python names.
    214 [John J Lee <jjl (a] pobox.com>]
    215 
    216 Prevent user from returning a value from special methods that
    217 return an error indicator only.
    218 
    219 Use PyObject_TypeCheck instead of PyObject_IsInstance?
    220 
    221 Allow * in cimport? [John J Lee <jjl (a] pobox.com>]
    222 
    223 FAQ: Q. Pyrex says my extension type object has no attribute 'rhubarb', but
    224      I know it does.
    225 
    226      A. Have you declared the type at the point where you're using it?
    227 
    228 Eliminate lvalue casts! (Illegal in C++, also disallowed by some C compilers)
    229 [Matthias Baas <baas (a] ira.uka.de>]
    230 
    231 Make Python class construction work more like it does in Python.
    232 
    233 Give the right module name to Python classes.
    234 
    235 Command line switch for full pathnames in backtraces?
    236 
    237 Use PyString_FromStringAndSize on string literals containing
    238 nulls.
    239 
    240 Peephole optimisation? [Vladislav Bulatov <vrbulatov (a] list.ru>]
    241 
    242 Avoid PyArg_ParseTuple call when a function takes no positional args.
    243 
    244 Omit incref/decref of arguments that are not assigned to?
    245 
    246 Can a faster way of instantiating extension types be found?
    247 
    248 Disallow declaring a special method of an extension type with
    249 'cdef' instead of 'def'.
    250 
    251 Use PySequence_GetItem instead of PyObject_GetItem when index
    252 is an integer.
    253 
    254 If a __getitem__ method is declared with an int index, use the
    255 sq_item slot instead of the mp_subscript slot.
    256 
    257 Provide some way of controlling the argument list passed to
    258 an extension type's base __new__ method?
    259 [Alain Pointdexter <alainpoint (a] yahoo.fr>]
    260 
    261 Rename __new__ in extension types to __alloc__.
    262 
    263 Implement a true __new__ for extension types.
    264 
    265 Way to provide constructors for extension types that are not
    266 available to Python and can accept C types directly?
    267 
    268 Support generators by turning them into extension types?
    269 
    270 List comprehensions.
    271 
    272 Variable declarations inside inner code blocks?
    273 
    274 Initial values when declaring variables?
    275 
    276 Do something about __stdcall.
    277 
    278 Support class methods in extension types using METH_CLASS flag.
    279 
    280 Disallow defaulting types to 'object' in C declarations?
    281 
    282 C globals with static initialisers.
    283 
    284 Find a way of providing C-only initialisers for extension types.
    285 
    286 Metaclasses for extension types?
    287 
    288 Make extension types use Py_TPFLAGS_HEAPTYPE so their __module__
    289 will get set dynamically?
    290