Accidentally posted to an already-opened tab for the cython-users ML yesterday, moving to here. Following up from a github opened issue here:
https://github.com/cython/cython/issues/1440 I was hoping we could give a way to drop straight into C/C++ inside of Cython pyx files. Why? -It [helps] avoid needing to declare every class/function in cython, a somewhat daunting/impossible task that I think everyone hates. Have you libraries like Eigen or others that use complex template based techniques? How about those with tons of [member] functions to boot or getting C++ inheritance involved. -It works around having the Cython compiler know about all of C++'s nuances - as an advanced C++ developer these are painful and it is a 2nd class citizen to Cython's simpler C-support - that's no good. Just right now I was bitten by yet another template argument bug and it's clear C++ template arguments have been kind of dicy since support appeared. -It would allow single source files - I think this is important for runtime compiled quasi-JIT/AOC fragments, like OpenCL/PyOpenCL/PyCUDA provide The idea is that Cython glue makes the playing field for extracting data easy, but that once it's extracted to a cdef variable for instance, cython doesn't need to know what happens. Maybe in a way sort of like the GCC asm extension. Hopefully simpler variable passing though. The alternative to not having this construct is a concrete wall. I'll have to segment up files for C++ for the rest of time until I get function forms that Cython can handle. At that point I just say screw it and use boost python. Of course cython does the definitions, data extraction, and compilation so much easier than boost.python. It would be a shame to not consider this plight C++ developers have been cornered into and you can't say the C++ libraries are broken, it is the strategy Cython is taking that cannot work. I did some examination of how this could be implemented - my idea was to base on the print/exec statements handling and simply emit their arguments from the Nodes to the code generator. Proposing inline_c or inline_ as the statement. Such a statement could be used to do macros, pull in includes, and modify/declare c-variables. -Jason
_______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel