It’s taken rather a while to release. I initially wrote it as part of a huge
yak-shaving exercise: I was trying to get Terminus to work in IE, which
doesn’t support the
document.evaluate() API. I thought it would be a fun idea
to reimplement it, so I created a project called Pathology, an ad-hoc,
informally specified, bug-ridden slow implementation of half of XPath for IE. Of
course this meant parsing XPath queries, which I wasn’t going to do by hand, so
I thought it would even more fun to learn how parser compilers work and build
one. Pathology never really panned out, although it turns out Android browsers
don’t have XPath either so I might revive it, you never know.
I also used Canopy to build Fargo, my fiber-aware version of Scheme. It’s great for getting a new language off the ground quickly.
So, after two years of off-and-on development, and after some interest from a
few other people, a couple of months ago I finally got around to documenting it,
getting rid of some annoying dependencies (the parsers it generates are now
completely self-contained and work on lots of JS platforms), and testing it
properly. It’s available by running
npm install -g canopy, or from the
website, along with the documentation. Let me know what you think.