Hello, I had a quick look at ‘wip-nio’, and here are initial comments.
• epoll is Linux-specific. Any idea how a more multi-platform API could be provided? I guess libevent could be used, but we don’t want to add one more dependency in 2.0. How much is (ice-9 nio) dependent on epoll vs. poll, for instance? • ‘nio’ doesn’t seem very descriptive to me; ‘nbio’ maybe? • I agree that it’s an important problem to address, and I like the use of coroutines, and I like that it actually solves the problem for some applications like the web server. However, I think the approach has shortcomings: (1) it doesn’t accept other sources of events (timers, mouse clicks, etc.), and (2) it doesn’t allow you to do something while waiting (of course, other threads/waiters get scheduled, but the caller is just waiting, so you can’t for instance update your progress bar while waiting for your bytevector to arrive.) Functional reactive programming à la FrTime [0], and synchronous reactive programming à la HipHop [1] seem to be much more generic and expressive. It would be great if Guile would come with such a framework eventually. It’s probably more work, though, so it probably makes sense to have an alternative mechanism in the meantime. WDYT? Thanks, Ludo’. [0] http://www.cs.brown.edu/~greg/ [1] http://www-sop.inria.fr/members/Gerard.Berry/Papers/plastic2.pdf