Hi Mark! I need some time to think about all the situations in front of us. And here's a quick reply to one of your questions:
On Thu, May 16, 2019 at 8:59 AM Mark H Weaver <m...@netris.org> wrote: > What about when we write something more structured, such as writing a > large S-expression using 'write', or serializing XML from SXML. In > those cases, it's even more obvious that we have no idea how many bytes, > nor how many characters will be written until we're finished. Both of > these operations result in a large number of small write operations, and > clearly, status information for each of those small write operations is > not useful. At least in Artanis server-core (Ragnarok), every blocking I/O operation from users (the downstream developer of Artanis) will be scheduled by delimited-continuations with suspendable-port. I've made a lot of works to make sure users don't have to care about any blocking I/O jobs by themselves, this would be a great selling point of both Artanis and Guile. So even if they're trying to load/write very small bytes, the task continuation will be scheduled by suspendable-port, and it can not be changed because Guile manages all asynchronous I/O. Although this looks unnecessary for small bytes, we can make a fair scheduler to smooth the situation. That's why we still need to care for the small bytes I/O.