On May 8, 2004, at 10:30 AM, Dan Sugalski wrote:
Do we want to make a distinction between record reads and just plain "read me X (bytes|codepoints|graphemes)" requests on filehandles and, if so, do we think it's worth distinguishing between fake records (line-oriented things) and real records (where there's a fixed record size or absolute record marker)?
I'd say that there's no need to distinguish. C's stdlib tries to be record-oriented, and I've never found it to be useful. Trying to be record-oriented (for what people today want from records) at the IO level seems awkward--and it's easy to write (at the user level) a "give me the next token" interface on top of a byte-source or a character-source, and there's not a lot of benefit to modeling this as IO.
(Note that, regardless of anything else, we do need to separate out stream IO and record IO, both for layer filtering reasons and for pure practicality as there still are some pure-record filehandles (UDP sockets and such) even on a Unix system)
On Unix, record-oriented IO is specific to sockets only (not filehandles in general). Not sure what you mean by "layer filtering".
On a possibly related note: I've seen mention of "IO filters" for Parrot (in addition to "IO layers"). What are these filters supposed to be/do/look like?
JEff