I have seen many such libraries. The biggest difference between
between my lib and other implementations is that mine supports
read/write operations on blocks of GPIOs. You can take a bunch of
random wires and use them in your app as an ordered set, i.e. allocate
a block of 8 wires and treat them as a byte. Another big difference is
that I wrote it to make porting applications easier, so they can be
developed on a high-end platform and then moved to a microcontroller.
Currently only Beaglebone is supported, but adding Beagleboard or RPi
should be trivial. Launchpad with Stellaris mcu is next in line.