It’s still only slightly more sophisticated than the barebones version described in the Horton paper, but I think I’ve cleaned up the worst hacks I used to get it initially working.
What it does:
Automatically triggers an introduction flow when references to other proxies are passed as arguments to a proxy
Logs introductions and method invocations on both sides (albeit not yet with a human-readable name, because Goblins sealers (maybe unlike E’s?) don’t have a distinguishable human-readable representation, and because I don’t have a petname system hooked in here yet)
What it does not yet do:
Keep track of which targets already have stubs for a given principal so as not to recreate new ones each time and to be able to look them up later
Allow revocation
Do any sort of validation that the arguments you’re passing to a proxy are actually themselves proxies before attempting to call (get-guts) on them
It’s definitely not done and could certainly use some more work, but it’s now far enough along that I figured I’d show it off here
Yeah, I referred back to that talk a few times while working on it - thanks for the talk! Definitely helped me grok parts of Horton in a way I couldn’t quite by just reading the paper.
Was inspired to get back to working on this recently. Of course, as things have mostly moved on to Guile-Goblins lately, I needed to port it over. I used the opportunity to package it up for Guix for ease of distribution and development; here’s what I have so far: Jonathan Frederickson / guile-horton · GitLab
Basically equivalent to the Racket version in functionality at the moment, which is to say not very mature at all! But I now have a good starting point for future work on this again.
(There is now finally some documentation to show what it looks like to use, though!)