Howdy,
There is a libtor, but it's just an internal library that contains some of the functions shared between the various Tor tools as they're built. It isn't designed for outside apps to link to, and it doesn't actually offer the API that you'd want.
Thanks for clarifying that.
But you're in luck -- Tor has a controller interface that lets other applications interact with the Tor process over a local socket, using a simple smtp-style protocol: https://gitweb.torproject.org/torspec.git/blob/HEAD:/control-spec.txt
So that means you can write your controller application in whatever language you like. Vidalia uses C++, but it hasn't really broken out its controller support into a reusable library. The best we've got is a Python library: https://gitweb.torproject.org/pytorctl.git that is used by a variety of applications, ranging from a curses-based Tor UI: http://www.atagar.com/arm/ to a set of back-end scripts to build paths in nonstandard ways, measure bandwidth, and do other experiments: https://gitweb.torproject.org/torflow.git
I did not know about these things and they mostly seem to obviate the need for the kind of embedding project I was thinking about. This is good :)
A Parrot library that talks to Tor via the controller interface would be the right way to do it. The next question would be: if such a thing existed, would anybody use it? That one is harder to answer. It probably depends in part on how good it is. :)
Yes, that question *is* harder to answer. But, I don't think anybody can know unless it is tried. From what I see, if Parrot wanted bindings to Tor, we can start by seeing how the above-mentioned libraries work and go from there.
Thank you very much for your detailed and informative response.
Duke