26 maj 2009 kl. 08.00 skrev Jamie Briggs:
On the Black Hole page of the Gambit wiki, in the "additional Libraries" section there is the line:
Termite: A version suited for usage in Black Hole is found at X.
Hehe.. I wasn't aware that there was a page on the Gambit wiki about Black Hole =) But it's good that there is one.
Are BH and Termite currently incompatible? And if so, how?
Yes, the Termite distribution is incompatible with BH. It's primarily because of how Termite exports its macros; I don't have a deep knowledge of Termite, but from what I have seen of it, I have concluded that it's full of ugly hacks because of the insufficiency of Gambit's built-in features on that department.
Because of that I have, as a proof of concept of Black Hole, and because I think Termite really could use it, ported Termite to BH. The port consisted mainly of removing circular dependencies between files (BH doesn't support that) and hygienifying the macros.
The port is available on GitHub, http://github.com/pereckerdal/termite/
If you have the latest version of Black Hole, this is probably the easiest way of installing it: (It is rather hacky, because I haven't yet bothered fixing a nice URL for it, so you'll have to change the URL in the future, but it should work)
(import "http://github.com/pereckerdal/termite/raw/b60c4ee3943b1502cfd5e5f47530b17467... ")
The URL points to the main termite.scm file, go there if you want to see what it looks like. Because the inter-module dependencies are relative paths, BH is able to deduce the URLs for the other files and will download termite.scm and its dependencies to ~~/lib/modules/work/ lib. This currently requires that wget is in the path.
I don't really know very much about the compilation problems in Termite, but you probably also want to do
(module-compile/deps! "http://github.com/pereckerdal/termite/raw/b60c4ee3943b1502cfd5e5f47530b17467... ")
to compile it.
I was just going to try using them together but then realized I would probably notice gross problems but might be not catch subtle ones.
Yes.. Because of the complexity of the Termite distribution, you'd need a rather deep understanding of BH and its hygienic macros to be able to do it. I don't know any way of making it easier to port libraries of this complexity.
/Per