Re: [Cython] Cython 0.23 released

2015-08-09 Thread Antoine Martin
Hi,

I've just hit a regression with 0.23: a recursion loop generating code
for this particular pyx:
http://xpra.org/trac/browser/xpra/trunk/src/xpra/codecs/nvenc4/encoder.pyx

I don't think we have such loops in our setup.py data structures or in
that pyx, but that's possible. (I will try to check later)
The same code builds fine on all platforms with Cython 0.22.1.

Full stack trace attached to this email. Loop excerpt:
  File "Cython/Compiler/FlowControl.py", line 336, in
Cython.Compiler.FlowControl.NameAssignment.__deepcopy__
(/usr/src/rpmbuild/BUILD/Cython-0.23/Cython/Compiler/FlowControl.c:10989)
  File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib64/python2.7/copy.py", line 328, in _reconstruct
args = deepcopy(args, memo)
  File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
  File "/usr/lib64/python2.7/copy.py", line 237, in _deepcopy_tuple
y.append(deepcopy(a, memo))
  File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
  File "/usr/lib64/python2.7/copy.py", line 230, in _deepcopy_list
y.append(deepcopy(a, memo))
  File "/usr/lib64/python2.7/copy.py", line 174, in deepcopy
y = copier(memo)
  File "Cython/Compiler/FlowControl.py", line 418, in
Cython.Compiler.FlowControl.NameReference.__deepcopy__
(/usr/src/rpmbuild/BUILD/Cython-0.23/Cython/Compiler/FlowControl.c:13685)
  File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib64/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
  File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
  File "/usr/lib64/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib64/python2.7/copy.py", line 351, in _reconstruct
item = deepcopy(item, memo)
  File "/usr/lib64/python2.7/copy.py", line 174, in deepcopy
y = copier(memo)
  File "Cython/Compiler/FlowControl.py", line 336, in
Cython.Compiler.FlowControl.NameAssignment.__deepcopy__
(/usr/src/rpmbuild/BUILD/Cython-0.23/Cython/Compiler/FlowControl.c:10989)

Sorry for not testing the 0.23 beta, which might have caught this sooner.

Cheers
Antoine


On 09/08/15 01:47, Stefan Behnel wrote:
> Hi everyone,
>
> given the positive feedback on the previous beta releases, I'm happy to
> announce the final release of Cython 0.23. There were only minor changes
> and fixes since the second beta.
>
> https://pypi.python.org/pypi/Cython/0.23
>
> This is a major feature release. Highlights include, in addition to several
> important bug fixes:
>
>   * PEP 492 (async/await) and PEP 448 (star-unpacking generalizations)
>   * inlined generator expressions
>   * support for the C++ assignment and bool() operators
>   * support for coverage analysis
>
> Complete changelog follows below. Upgrading is generally recommended.
>
>
> You can get the signed release from here:
>
> http://cython.org/
>
> http://cython.org/release/Cython-0.23.tar.gz
>
> http://cython.org/release/Cython-0.23.zip
>
>
> SHA1 sums:
> 5a49123b39d89a20fb88bdc7886210c39cdff695  Cython-0.23.tar.gz
> 9bec6c6df861be49ed608a0ab688b67bba543abe  Cython-0.23.zip
>
> Have fun,
>
> Stefan
>
>
>
> 0.23 (2015-08-08)
> =
>
> Features added
> --
>
> * PEP 492 (async/await) was implemented.
>   See https://www.python.org/dev/peps/pep-0492/
>
> * PEP 448 (Additional Unpacking Generalizations) was implemented.
>   See https://www.python.org/dev/peps/pep-0448/
>
> * Support for coverage.py 4.0+ can be enabled by adding the plugin
>   "Cython.Coverage" to the ".coveragerc" config file.
>
> * Annotated HTML source pages can integrate (XML) coverage reports.
>
> * Tracing is supported in ``nogil`` functions/sections and module init
>   code.
>
> * When generators are used in a Cython module and the module imports the
>   modules "inspect" and/or "asyncio", Cython enables interoperability by
>   patching these modules during the import to recognise Cython's internal
>   generator and coroutine types. This can be disabled by C compiling the
>   module with "-D CYTHON_PATCH_ASYNCIO=0" or "-D CYTHON_PATCH_INSPECT=0"
>
> * When generators or coroutines are used in a Cython module, their types
>   are registered with the ``Generator`` and ``Coroutine`` ABCs in the
>   ``collections`` or ``collections.abc`` stdlib module at import time to
>   enable interoperability with code that needs to detect and process Python
>   generators/coroutines.  These ABCs were added in CPython 3.5 and are
>   available for older Python versions through the ``backports_abc`` module
>   on PyPI.  See https://bugs.python.org/issue24018
>
> * Adding/subtracting/dividing/modulus and equality comparisons with
>   constant Python floats and small integers are faster.
>
> * Bin

Re: [Cython] Cython 0.23 released

2015-08-16 Thread Antoine Martin
On 09/08/15 13:54, Antoine Martin wrote:
> Hi,
>
> I've just hit a regression with 0.23: a recursion loop generating code
> for this particular pyx:
> http://xpra.org/trac/browser/xpra/trunk/src/xpra/codecs/nvenc4/encoder.pyx
>
> I don't think we have such loops in our setup.py data structures or in
> that pyx, but that's possible. (I will try to check later)
> The same code builds fine on all platforms with Cython 0.22.1.
I have narrowed it down to the problematic finally block via trial and
error:
http://xpra.org/trac/browser/xpra/trunk/src/xpra/codecs/nvenc4/encoder.pyx#L2024
Any of those statements, including the simple logging ones, cause
Cython's "fresh_finally_clause" code to go into an infinite loop via
deepcopy.

This "fixes" it by moving the statements out of the finally block
(obviously not a practical solution):
--- xpra/codecs/nvenc4/encoder.pyx(revision 10311)
+++ xpra/codecs/nvenc4/encoder.pyx(working copy)
@@ -2022,16 +2022,17 @@
 self.bytes_out += size
 data = ( lockOutputBuffer.bitstreamBufferPtr)[:size]
 finally:
-if DEBUG_API:
-log("nvEncUnlockBitstream(%#x)", 
self.bitstreamBuffer)
-with nogil:
-r =
self.functionList.nvEncUnlockBitstream(self.context, self.bitstreamBuffer)
-raiseNVENC(r, "unlocking output buffer")
-if DEBUG_API:
-log("nvEncUnmapInputResource(%#x)", 
self.bitstreamBuffer)
-with nogil:
-r =
self.functionList.nvEncUnmapInputResource(self.context,
mapInputResource.mappedResource)
-raiseNVENC(r, "unmapping input resource")
+pass
+if DEBUG_API:
+log("nvEncUnlockBitstream(%#x)", 
self.bitstreamBuffer)
+with nogil:
+r = self.functionList.nvEncUnlockBitstream(self.context,
self.bitstreamBuffer)
+raiseNVENC(r, "unlocking output buffer")
+if DEBUG_API:
+log("nvEncUnmapInputResource(%#x)", 
self.bitstreamBuffer)
+with nogil:
+r = self.functionList.nvEncUnmapInputResource(self.context,
mapInputResource.mappedResource)
+raiseNVENC(r, "unmapping input resource")
 
 download_end = time.time()
 log("compress_image(..) download took %.1f ms",
(download_end-encode_end)*1000.0)

What am I doing wrong here?
Those statements look fine and they used to compile just fine too.

Thanks
Antoine

>
> Full stack trace attached to this email. Loop excerpt:
>   File "Cython/Compiler/FlowControl.py", line 336, in
> Cython.Compiler.FlowControl.NameAssignment.__deepcopy__
> (/usr/src/rpmbuild/BUILD/Cython-0.23/Cython/Compiler/FlowControl.c:10989)
>   File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy
> y = _reconstruct(x, rv, 1, memo)
>   File "/usr/lib64/python2.7/copy.py", line 328, in _reconstruct
> args = deepcopy(args, memo)
>   File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy
> y = copier(x, memo)
>   File "/usr/lib64/python2.7/copy.py", line 237, in _deepcopy_tuple
> y.append(deepcopy(a, memo))
>   File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy
> y = copier(x, memo)
>   File "/usr/lib64/python2.7/copy.py", line 230, in _deepcopy_list
> y.append(deepcopy(a, memo))
>   File "/usr/lib64/python2.7/copy.py", line 174, in deepcopy
> y = copier(memo)
>   File "Cython/Compiler/FlowControl.py", line 418, in
> Cython.Compiler.FlowControl.NameReference.__deepcopy__
> (/usr/src/rpmbuild/BUILD/Cython-0.23/Cython/Compiler/FlowControl.c:13685)
>   File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy
> y = _reconstruct(x, rv, 1, memo)
>   File "/usr/lib64/python2.7/copy.py", line 334, in _reconstruct
> state = deepcopy(state, memo)
>   File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy
> y = copier(x, memo)
>   File "/usr/lib64/python2.7/copy.py", line 257, in _deepcopy_dict
> y[deepcopy(key, memo)] = deepcopy(value, memo)
>   File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy
> y = _reconstruct(x, rv, 1, memo)
>   File "/usr/lib64/python2.7/copy.py", line 351, in _reconstruct
> item = deepcopy(item, memo)
>   File "/usr/lib64/python2.7/copy.py", line 174, in deepcopy
> y = copier(memo)
>   File "Cython/Compiler/FlowControl.py", line 336, in
> Cython.Compiler.FlowControl.NameAssignment.__deepcopy__
> (/usr/src/rpmbuild/BUILD/Cython-0.23/Cython/Compiler/FlowControl.c:10989)
> 
> Sorry for not testing the 0.23 beta, which might have caught this sooner.
>
> C

Re: [Cython] Cython 0.23 released

2015-08-17 Thread Antoine Martin
On 17/08/15 14:14, Stefan Behnel wrote:
> Stefan Behnel schrieb am 17.08.2015 um 08:17:
>> Antoine Martin schrieb am 17.08.2015 um 06:09:
>>> On 09/08/15 13:54, Antoine Martin wrote:
>>>> I've just hit a regression with 0.23: a recursion loop generating code
>>>> for this particular pyx:
>>>> http://xpra.org/trac/browser/xpra/trunk/src/xpra/codecs/nvenc4/encoder.pyx
>>> I have narrowed it down to the problematic finally block via trial and
>>> error:
>>> http://xpra.org/trac/browser/xpra/trunk/src/xpra/codecs/nvenc4/encoder.pyx#L2024
>>> Any of those statements, including the simple logging ones, cause
>>> Cython's "fresh_finally_clause" code to go into an infinite loop via
>>> deepcopy.
>>>
>>> What am I doing wrong here?
>>> Those statements look fine and they used to compile just fine too.
>> Thanks for the report. This is a bug in the latest Cython release. I'll see
>> if I can come up with a fix.
> I couldn't reproduce it with any reasonable amount of test code yet, but
> does this fix it for you?
>
> https://github.com/cython/cython/commit/5a40d5459aad1c6f15fb8526f0144d3c0f1dfe76
I am afraid not, I still get the same stacktrace.
Let me know if there's anything else I can try.

Cheers
Antoine

>
> Stefan
>
> ___
> cython-devel mailing list
> cython-devel@python.org
> https://mail.python.org/mailman/listinfo/cython-devel

___
cython-devel mailing list
cython-devel@python.org
https://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] Cython 0.23 released

2015-08-18 Thread Antoine Martin
On 19/08/15 01:03, Stefan Behnel wrote:
> Antoine Martin schrieb am 17.08.2015 um 14:14:
>> On 17/08/15 14:14, Stefan Behnel wrote:
>>> Stefan Behnel schrieb am 17.08.2015 um 08:17:
>>>> Antoine Martin schrieb am 17.08.2015 um 06:09:
>>>>> On 09/08/15 13:54, Antoine Martin wrote:
>>>>>> I've just hit a regression with 0.23: a recursion loop generating code
>>>>>> for this particular pyx:
>>>>>> http://xpra.org/trac/browser/xpra/trunk/src/xpra/codecs/nvenc4/encoder.pyx
>>>>> I have narrowed it down to the problematic finally block via trial and
>>>>> error:
>>>>> http://xpra.org/trac/browser/xpra/trunk/src/xpra/codecs/nvenc4/encoder.pyx#L2024
>>>>> Any of those statements, including the simple logging ones, cause
>>>>> Cython's "fresh_finally_clause" code to go into an infinite loop via
>>>>> deepcopy.
>>>>>
>>>>> What am I doing wrong here?
>>>>> Those statements look fine and they used to compile just fine too.
>>>> Thanks for the report. This is a bug in the latest Cython release. I'll see
>>>> if I can come up with a fix.
>>> I couldn't reproduce it with any reasonable amount of test code yet, but
>>> does this fix it for you?
>>>
>>> https://github.com/cython/cython/commit/5a40d5459aad1c6f15fb8526f0144d3c0f1dfe76
>> I am afraid not, I still get the same stacktrace.
>> Let me know if there's anything else I can try.
> How about this?
>
> https://github.com/cython/cython/commit/5fa766ac25a31b0c1addd08efd19d2d34661317b
That fixes it!

Thank you very much.

Antoine


>
> Stefan
>
> ___
> cython-devel mailing list
> cython-devel@python.org
> https://mail.python.org/mailman/listinfo/cython-devel

___
cython-devel mailing list
cython-devel@python.org
https://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] Cython 0.25 released

2016-10-26 Thread Antoine Martin
On 26/10/16 03:34, Robert Bradshaw wrote:
> I'm happy to announce the release of Cython 0.25 which has numerous
> new features and bug fixes. It is available at
> https://pypi.python.org/pypi/Cython
> 
> We have also moved bug tracking from trac.cython.org to github issues.
> However, user support still remains at cython-users@, please refrain
> from filing issues until you have confirmed an actual bug.

0.25 does not build on any CentOS 6.x:
wget
"https://pypi.python.org/packages/f8/2e/5898046f8089205981447c23ebb8fe02cd9d66939cd74338aa4872853d8e/Cython-0.25.tar.gz#md5=1b61433b8410ac382ac9b248b42466fd";
tar -zxf Cython-0.25.tar.gz
cd Cython-0.25
python ./setup.py build
(..)
building 'Cython.Runtime.refnanny' extension
creating build/temp.linux-x86_64-2.6/home/centos/Cython-0.25/Cython/Runtime
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC
-fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
-D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.6 -c
/home/centos/Cython-0.25/Cython/Runtime/refnanny.c -o
build/temp.linux-x86_64-2.6/home/centos/Cython-0.25/Cython/Runtime/refnanny.o
gcc: /home/centos/Cython-0.25/Cython/Runtime/refnanny.c: No such file or
directory
gcc: no input files
error: command 'gcc' failed with exit status 1

If I just run:
cythonize /home/centos/Cython-0.25/Cython/Runtime/refnanny.pyx
Then the build succeeds.

Cheers
Antoine


> 
> - Robert
> 
> 
> Features added
> --
> 
> * def/cpdef methods of cdef classes benefit from Cython's internal function
>   implementation, which enables introspection and line profiling for them.
>   Implementation sponsored by Turbostream (www.turbostream-cfd.com).
> 
> * The distutils extension ``Cython.Distutils.build_ext`` has now been updated
>   to use cythonize which properly handles dependencies.  The old extension can
>   still be found in ``Cython.Distutils.old_build_ext`` and is now deprecated.
> 
> * Calls to Python functions are faster, following the recent "FastCall"
>   optimisations that Victor Stinner implemented for CPython 3.6.
>   See https://bugs.python.org/issue27128 and related issues.
> 
> * The new METH_FASTCALL calling convention for PyCFunctions is supported
>   in CPython 3.6.  See https://bugs.python.org/issue27810
> 
> * C++ classes can now have typedef members. STL containers updated with
>   value_type.
> 
> * Support for bazel using a the pyx_library rule in //Tools:rules.bzl.
> 
> * Initial support for using Cython modules in Pyston.  Patch by Daetalus.
> 
> * Dynamic Python attributes are allowed on cdef classes if an attribute
>   ``cdef dict __dict__`` is declared in the class.  Patch by empyrical.
> 
> * Cython implemented C++ classes can make direct calls to base class methods.
>   Patch by empyrical.
> 
> * New directive ``cython.no_gc`` to fully disable GC for a cdef class.
>   Patch by Claudio Freire.
> 
> * Buffer variables are no longer excluded from ``locals()``.
>   Patch by da-woods.
> 
> * Building f-strings is faster, especially when formatting C integers.
> 
> * for-loop iteration over "std::string".
> 
> * ``libc/math.pxd`` provides ``e`` and ``pi`` as alias constants to simplify
>   usage as a drop-in replacement for Python's math module.
> 
> * Speed up cython.inline().
> 
> * Binary lshift operations with small constant Python integers are faster.
> 
> * Some integer operations on Python long objects are faster in Python 2.7.
> 
> * Support for the C++ ``typeid`` operator.
> 
> Significant Bugs fixed
> --
> 
> * Division of complex numbers avoids overflow by using Smith's method.
> 
> * Some function signatures in ``libc.math`` and ``numpy.pxd`` were incorrect.
>   Patch by Michael Seifert.
> 
> Other changes
> -
> 
> * The "%%cython" IPython/jupyter magic now defaults to the language level of
>   the current jupyter kernel.  The language level can be set explicitly with
>   "%%cython -2" or "%%cython -3".
> ___
> cython-devel mailing list
> cython-devel@python.org
> https://mail.python.org/mailman/listinfo/cython-devel
> 

___
cython-devel mailing list
cython-devel@python.org
https://mail.python.org/mailman/listinfo/cython-devel