Parrot-GMP: VTABLE Overrides complete

This week I finished implementing VTABLE overrides for Parrot-GMP. This allows us to do things like x = y + z where x, y, and z are all GMP Integer objects. I also have a test suite to ensure that these overrides work. It's not very glamorous work but it's a nice layer of sugar and makes sure that Parrot-GMP plays nice with others.

I was originally going to spend this week focusing on getting examples in NQP or Rakudo and beef up some of the docs but instead I'll work on removing libffi as a dependency. Jay++ has been working on NQR (Not-Quite R) and has started doing some heavy NCI work and has run into the exact problem that I have; hopefully I'll get some docs in place so he can continue with his project.

Basically, Parrot does not come pre-configured with every possible NCI parameter combination - there are certain built in "thunks" that cover only common or necessary parameter combinations. For example, I have a function that returns void and takes a pointer, a second pointer, and an int. This combination was not included with Parrot and if you try and use Parrot-GMP without libffi installed and configured then there will be an error.

This is undoubtedly a common problem for anyone using NCI and Parrot comes with a script (parrot_nci_thunk_gen) to help alleviate it. We feed this script an NCI definition file - a file listing all the signatures we need - and it generates a C file. We compile the C file into a shared library and load it when we need those thunks. My goal is to not only remove the dependency on libffi but have some coherent and concise docs that others can follow.