On Mon, May 7, 2012 at 5:05 PM, Greg Ewing <greg.ew...@canterbury.ac.nz> wrote: > Stefan Behnel wrote: > >> The main reason we didn't change this behaviour back then was that it >> would >> clearly break user code and we thought we could do without that. That's >> different from considering it "right" and "good". > > I changed the None-checking behaviour in Pyrex because I *wanted* > to break user code. Or rather, I didn't think it would be a > bad thing to make people revisit their code and think properly > about whether they really wanted to allow None in each case.
That's great if you have the time, but revisiting half a million lines of code (e.g. Sage) can be quite expensive... especially as a short-term patch for a better long-term solution (mostly optimized away None-checks on access). By bigger issue of why I don't think this is the right long-term solution is that (cp)def foo(ExnClass arg): ... should behave the same as (cp)def foo(arg): cdef ExnClass a = arg I think part of the difference is also how strongly the line is drawn between the compiled and un-compiled portions of the program. Cython blurs the line (more) between "called from Cython" and "called from Python," and only the latter doing None-checking is inconsistent too. - Robert _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel