IRC channel logs

2026-08-09.log

back to list of logs

<ridley>Binette do you mean ocapn?
<ridley>It would be neat to see another implementation
<Binette>You know I get asked a lot if I mean ocapn and it's starting to make me worried that I did something wrong X)
<Binette>why dd \X) translate to a swirly-eyed emoji?
<ridley>Which document are you looking at with the stages?
<Binette>In the goblins guile git, there is a pre-goblins section. I finished with stage 0 a while ago and just finished with stage 1 (including the tests): https://codeberg.org/spritely/goblins/src/branch/main/pre-goblins/goblins-stage1.scm
<ridley>oh interesting
<ridley>Are you planning to support communicating with guile goblins?
<Binette>Yes! So I was planning to implement Goblins first, then OCapN. But I am starting to doubt which one I should've started with lol
<ridley>Oh okay okay
<ridley>I don't know enough rust to know what makes the most sense for you
<ridley>but that's exciting
<ridley>(I'm part of the OCapN group)
<Binette>Thanks! The syntax for creating actor constructors kind of look like this right now:
<Binette>constructor!(greeter, |my_name: String| {
<Binette>        behavior!(|your_name: String| -> String {
<Binette>            continue_beh!(format!(
<Binette>                "Hello {}, my name is {}",
<Binette>                your_name, my_name
<Binette>            ))
<Binette>        })
<Binette>    });
<Binette>That's for the greetor, but for the cell, I have this:
<Binette> constructor!(cell, |val: Value| {
<Binette>        behavior!(raw move |args: &[Value]| -> BecomeSeal {
<Binette>            match args {
<Binette>                [] => continue_beh!(val.clone()),
<Binette>                [new] => {
<Binette>                    let new_val = new.clone();
<Binette>                    match cell(Bcom{}, &[new_val.clone()]) {
<Binette>                        SpawnResult::NewBehavior(new_beh) => become_beh!(new_beh, Value::Null),
<Binette>    });
<Binette>It's still a little verbose compared to the guile implementation, but much better than my first attempt
<Binette>I've been willing to ask for a while, but even if OCapN is a distinct thing from Goblins, it allows two remote vats to communicate with eachother, right?
<Binette>I should've probably sent a pastebin haha
<ridley>Kinda, yes. OCapN doesn't *technically* require vat infrastructure but all the current implementations have one of one flavour or another
<ridley>I program in Dart which kinda has vats as its default concurrency model
<ridley>Or put another way, OCapN is what Goblins uses to communicate between remote vats
<ridley>I think between local vats Goblins doesn't need OCapN but someone can correct me on that if I'm wrong
<Binette>I think you're right for the beginning stages, but I wouldn't be able to tell for later ones. But from what I get from the docs, it does work like how you suggested
<Binette>I'm mostly concerned with overengineering the whole thing. Currently I realized that I didn't need two traits and am wondering if I should add one more for the actormap references. I want everything to be set up perfectly before the next stage, but I'm not sure if it's the best mindset to have for this implementation, you know?
<ridley>Yeah that's a tough call
<ridley>I know I have a hard time going back to things so I try really hard to feel good about something before moving on
<ridley>Doesn't always work out, especially when implementing a spec that is still in flux
<Binette>Still, I think the fact that it works means that maybe I could clean up stuff. But like you mentioned, I also have a hard time going back to things
<jfred>ACTION glances at the partial Horton implementation still sitting on his virtual shelf
<jfred>I relate to this very much
<Binette>Tim Horton
<Monapp>Hello :) Just to notify you that the link to the E programming language in https://files.spritely.institute/papers/spritely-core.html#fn.goblins-ancestry is broken, idk if this white paper is still being worked on and if their is somewhere I can edit/report this?
<Monapp>there*
<dthompson>Monapp (if you read the logs later) the repo for our papers can be found here https://codeberg.org/spritely/papers
<dthompson> https://erights.org is the proper URL, though
<dthompson>the site is just down right now