Hi!

Maxime Devos <maximede...@telenet.be> skribis:

> 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!

Oh yes, it has great potential. 

And it cannot be That Hard (famous last words).

Food for thought!

> 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
> ...).

This is already possible I believe, but mostly because browsers avoid
blocking on networking I/O.

Ludo’.

Reply via email to