IRC channel logs
2024-05-01.log
back to list of logs
<nanomonkey>Out of curiousity, is there a persistent database that folks find meshes well with Guile Scheme? Or that folks are excited about? <nanomonkey>When I was doing Python development I mostly used Postgres, with Clojure, diatomic seemed to be well meshed, although I made use of Secure Scuttlebutt... <nanomonkey>Just curious what folks would suggest for a backend database for transactions...what will Goblins be using besides the serializer? <cwebber>nanomonkey: in the future we'll probably use a simple sqlite store <Zarutian_iPad>I had a glance at the persistence mechanism and I am not understanding how it is different from E's __uncall miranda method or if there is an uncaller mechanism <cwebber>Zarutian_iPad: it's similar to that idea <cwebber>except that in the Goblins kernel the self-portrait function is kept within the unexposed datastructure <cwebber>so nothing can invoke it but the kernel <cwebber>Zarutian_iPad: no, only the kernel (syscaller) can access it <cwebber>it can't be accessed through $ or <- <cwebber>the "original" urie had a design closer to E's <cwebber>which is where it used rights amplification <cwebber>instead what you can think of is that instead of *just* being able to return a lambda representing the current actor behavior <cwebber>you can return a special wrapped datastructure that says "here's the behavior procedure, and here's the self-portrait procedure" <cwebber>and then only the kernel gets access to that <cwebber>Zarutian_iPad: it's been a while since I read it, but if I remember correctly, the surgeon is the mechanism... the "reverse metacircular evaluator", effectively? <cwebber>yes but you can't call it by reference to the actor <cwebber>you need both the low-level utilities and a reference to either the vat controller or the actormap datastructure <cwebber>both of which typically for most use are encapsulated away from the user <cwebber>for the "unevaluator", see actormap-take-portrait and actormap-restore! <cwebber>Zarutian_iPad: the original Aurie was effectively E's design, except instead of using miranda methods it used energetic secrets a-la Joule <cwebber>(called warding/incanting in Goblins) <Zarutian_iPad>what goes into the portrait? in E it was a truple of [constructor, method_selector, args] where args is an array. Effectively like <constructor>.<method selector>(...<args>) <cwebber>that was removed in tsyesika's refactor <cwebber>Zarutian_iPad: that's close to how original-Aurie worked <cwebber>the new one that ships with Goblins now, the Jessica-Aurie version shall we say <cwebber>there's an environment that describes how to serialize <cwebber>when an actor is spawned, the datastructure remembers what its constructor was <cwebber>the environment has a mapping of constructors <=> names and names <=> restore procedures <cwebber>in a sense it's like a toplevel environment in a metacircular evaluator... except it describes both uneval and re-eval <cwebber>so it's inspired by E's, but it has some major changes for the sake of ergonomics <cwebber>yes, except the environment doesn't store the uncallers <cwebber>the actor itself specifies that at the same time it specifies its behavior <cwebber>only the name associated with the constructor <cwebber>and then that name is also used to map to the reconstructor <cwebber>that's right. it's literally just a procedure that's applied with the arguments the self-portrait gave. <cwebber>like in E's, everything is saved into a graph <cwebber>and is restored with promises that settle during reconstruction. <Zarutian_iPad>what I like about E's system is that you had a way to delinate the sub graph by giving an graph exit to name and vice versa mapping <cwebber>I think there may be some things we still ought to do regarding entrance/exit that the E version did nicely <cwebber>it's all possible with the Goblins version but <cwebber>we still don't have the sandboxed module stuff and in a way I think the right solution composes with that <Zarutian_iPad>hmm... and I do not see how I can implement the crypto-brand with this <cwebber>crypto(graphy) sealers / trademarks are something we've been meaning to do fwiw <cwebber>I'll suggest to tsyesika to look at this tomorrow ;)