Ludovic Courtès schreef op do 06-05-2021 om 18:30 [+0200]: > BTW, a dream of mine was to implement RPCs in Scheme. That is, you’d > have a macro that would essentially do the same work as MiG (the Mach > Interface Generator), and then we’d pass the bytes directly to > ‘mach_msg’. The lisp bindings have a binding to ‘mach_msg’ (not yet schemified). Note that the lisp hurd bindings never use "send-message", instead they bind the C bindings generated by MiG. Also, ‘implementing RPCs in Scheme’ is something I would like to see as well. One thing I have in mind, is that MiG RPCs can block, but mach_msg itself seems to be perfectly usable in a non-blocking way (maybe using port notifications?). If we use something like guile-fibers, and integrate guile-hurd with fibers, then we may be able to do crazy things like: * asynchronuously opening files, for free! * asynchronuous 'accept', for free! * asynchronuous disk I/O, for free! * asynchronuous ... practically anything, for free! Another possibility is debugging the translator responsible for IP and at the same time running a web browser (or IRC client, or ...) based on guile-fibers+guile-hurd. The web browser wouldn't be overly bothered by the network translator temporarily being paused (for debugging) and therefore not responsing to the RPCs for 'connect' et al. Loading webpages will be delayed of course, but the browser itself won't hang (so you can still scroll, copy & paste, perhaps browse the file system ...). Greetings, Maxime.