Tuesday, June 14, 2011

Cython backend aiming PyPy : Week 3

Last week, I worked on the implementation of pointers. It works for the global cases but special cases are not really handled : char* is converted into POINTER(c_char) instead of c_char_p (although I'm not sure if it's a big deal), however void* does not work.
I also extended Cython's python code writer to make it work with the backend. I only tested it for very basic example though.
Speaking of testing, I also looked at how Cython tests are written and I will now write automated tests, the code writer will help me do that as I think it's better to test what code the output code rather than the AST nodes.
For extern definitions unions are still to be implemented but I plan to do this later.
For this week, I plan to :
  • Write some automated tests (I would need them anyway and it will be good to start keeping track of regressions)
  • Experiment on calling C functions (in particular passing cdef'd variables as parameter of C functions)
EDIT: I also implemented the "linking" of functions

Monday, June 6, 2011

Cython backend aiming PyPy : Week 2

During this week, I worked on the transformation of the extern definitions :
  • Functions definitions are turned into ctypes functions, functions can have basic C types and structures as parameters (but no pointers for the moment)
  • Structures definitions are turned into ctypes structures, however, for the moment, structures need to be in the right order (a structure A used by structure B needs to be declared before B)
  • Structures can be partially declared thanks to ctypes_configure. This dependency is only needed at compilation time and requires a C compiler (this assumes that the compiler running on the host machine compiles the program with a suitable alignment for the machine running the program).
On this part of the project I still have to :
  • Implement pointers
  • Implement forward declarations
  • Implement unions
It will also be useful to implement a basic code writer as it will be easier to present my work and, it will improve testing as well.