IRC channel logs
2023-06-20.log
back to list of logs
<Zarutian_iPad>how does that jive with pass-by-copy things like structs that gets stuffed over the wire wholesale? <KrisKowal[m]>pass-by-copy reference might have to be awaited to initiate transfer. <Zarutian_iPad>ask around I think js`E.get()` was made precisely to avoid the await <KrisKowal[m]>That can’t be the whole story, since decomposing a remote record is useful without the await. <Zarutian_iPad>in the same vein I made async_ops that can make many programmers a bit temporal queazy. <KrisKowal[m]>You do not need to await a remote pass-by-copy to cause it to be marshalled. <KrisKowal[m]><Zarutian_iPad> "ask around I think js`E.get..." <- That is, I do not know what await E.get avoids. <Zarutian_iPad>I think of E.get is the promise pipelinable equiv to javascript [] accessor <KrisKowal[m]>But all awaits are conserved :-). Where once you got a field from a record, now you get a promise for a field from a promise for a record. <Zarutian_iPad>aha! There I disagree with you. On the awaiting part that is. <Zarutian_iPad>if Boolean.prototype had .pick() that works like the ? : trinary operator, plus equiv for numbers/bigints there is little you can not loadshift onto the other remote vats <juliana[m]><isd> "juliana: do you just mean the..." <- I should have been clearer. Guile has a unique `undefined` that is non-standard. It's equivalent to the hack of `(define void (if #f #f))` - the value Guile returns from `(if #f #f)` is `undefined`. <KrisKowal[m]>I suppose that makes Guile in particular uniquely qualified among Schemes to round-trip JavaScript’s undefined. <KrisKowal[m]>Which suggests it was a good choice to use #f instead of undefined in the actor function application convention. <KrisKowal[m]>(But I suspect that we’d handle false gracefully if we received it) <KrisKowal[m]>((That might be too strong of a claim. We use === undefined a lot because coercion in JavaScript is not pretty.)) <jfred>Hm. Coming to this as a user, but some of the Goblins code I've written uses Goblins objects as a thin wrapper around lambdas for the purpose of making them available to objects in another vat. Requiring methods feels like it would make that messier <KrisKowal[m]>I am proposing that we forbid mixed-mode actors that are both objects and functions. <KrisKowal[m]>I’m also proposing that method names are always symbols in Scheme and always strings in JavaScript.