As thoroughly discussed on the mailing list, a simple Scheme level API like the one proposed is unsatisfactory because a Scheme implementation can run arbitrary code that might set errno between any of 1) manually setting it, 2) a POSIX call possibly setting it, and 3) retrieving its value. This, along with EINTR loops (see the Worse is Better essay) need to be done at a low level, and no one has been able to come up with a suitable standard and universal high level API for any of this.
- Harold