From 669ecc338c508e473fb825bf229d1cfcbd6f6eee Mon Sep 17 00:00:00 2001 From: Robert Bradshaw Date: Fri, 2 Aug 2013 23:30:02 -0700 Subject: [PATCH] Added limitations from wiki. --- docs/src/userguide/limitations.rst | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) 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 + + + + -- 2.7.4