From: Robert Bradshaw Date: Sat, 3 Aug 2013 06:30:02 +0000 (-0700) Subject: Added limitations from wiki. X-Git-Tag: 0.20b1~432 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=669ecc338c508e473fb825bf229d1cfcbd6f6eee;p=platform%2Fupstream%2Fpython-cython.git Added limitations from wiki. --- diff --git a/docs/src/userguide/limitations.rst b/docs/src/userguide/limitations.rst index e95968a..d3ad7b4 100644 --- a/docs/src/userguide/limitations.rst +++ b/docs/src/userguide/limitations.rst @@ -14,3 +14,59 @@ future version 1.0 of Cython is planned to provide full Python language compatibility. .. _`list of remaining compatibility issues`: http://trac.cython.org/cython_trac/query?status=assigned&status=new&status=reopened&component=Python+Semantics&component=Python3+Semantics&order=priority&col=id&col=summary&col=component&col=status&col=type&col=priority&col=milestone + +Below is a list of differences that we will probably not be addressing. +Most of these things that fall more into the implementation details rather +than semantics, and we may decide not to fix (or require a --pedantic flag to get). + + +========== +Nested tuple argument unpacking. +========== + +:: + + def f((a,b), c): + pass + +This was removed in Python 3. + + +========== +Inspect support +========== + +While it is quite possible to emulate the interface of functions in +Cython's own function type, and recent Cython releases have seen several +improvements here, the "inspect" module does not consider a Cython +implemented function a "function", because it tests the object type +explicitly instead of comparing an abstract interface or an abstract +base class. This has a negative impact on code that uses inspect to +inspect function objects, but would require a change to Python itself. + + +========== +Stack frames +========== + +Currently we generate fake tracebacks as part of exception propagation, +but don't fill in locals and can't fill in co_code. +To be fully compatible, we would have to generate these stack frame objects at +function call time (with a potential performance penalty). We may have an +option to enable this for debugging. + +========== +Identity vs. equality for inferred literals. +========== + +:: + a = 1.0 # a inferred to be double + b = c = None # a inferred to be type object + if some_runtime_expression: + b = a + c = a + print b is c # py float created twice + + + +