Parrot-libgit2 summer report

Saurabh Kumar saurabhgeek92 at gmail.com
Thu Sep 26 13:27:27 UTC 2013


GSoC has finally come to an end and my project is done. For those of
you who haven't been following, the project was about implementing
bindings to libgit2. I learned quite a bit about git internals, about
how libraries are implemented, and parrot stuff.

I began with a better libgit2 header file parser which then creates
the NCI low-level definitions. It was accurate enough so that I've had
to update it only once since the mid-term data. There is a also a
better unified buildsystem, though there are still rough edges around
it.

You can access the most commonly used libgit2 functions using the
higher-level Winxed API. As I have talked about in my past posts, most
of the git internal functions are exposed, including work around
Index, Repositories, Objects, Commits, Trees, References, Remotes and
configs. There is also some documentation and tests present - though
that needs to be improved. These are mostly plumbing functions, a even
more higher level porcelain layer is possible. Take a look[1].

There were several false starts, wrong approaches wasted several
weeks, as I struggled to see how to call several classes of C
functions or debug things when they crashed. In the end, however I
managed to work around most of them with a C wrapper. This remains,
however an intermediate solution.

Work will go on, I'll spend some time polishing stuff - adding
functions, creating tests, implementing examples, reaching parity with
other bindings. Maybe then I'll create bindings to other libraries on
parrot or contribute to git/libgit2 upstream, or look into parrot
internals.

I'd like to thank all the people who helped me at some point and
encouraged me including Duke, Bruce, Bob and Will.

[1]: https://github.com/letolabs/parrot-libgit2


More information about the parrot-dev mailing list