On Tue, Jul 31, 2018 at 6:29 PM Damien Pollet <damien.pollet+ph...@gmail.com> wrote:
> Hi Sven⦠a couple questions: > > - is there a preferred order of composition between the encoding and > buffering streams ? If yes, it the same for read and write stream, or > reversed ? > E.g. if Stdio binaryStdin was implemented, Stdio stdin should be decoded, > but buffering it as well would be a problem for interactive applications. > Well, I'd say that we could check if performance-wise there is a difference... I don't think there will be much of a difference, but, who knows ^^. > > - what's your opinion on convenience composition messages, e.g. > aBinaryStream buffered decoded: 'utf-8' ? > Check what we did in FileReference & co. Opening a File reference returns by default a utf8 buffered stream (in that order). And we have convenience methods to specify other encodings and to get directly the binary stream (which will be buffered). The idea is that FileSystem (among others like managing memory file systems) provides a high level API with convenience methods to avoid putting the burden of the composition in the user. The File package stays small and flexible providing direct access to the physical file system. Following this same idea, to me Clap should define several convenient ways to access standard input/output. Like that, other Stdio users can define their own too. Also, maybe Clap can provide the same API as FileSystem (#writeStreamEncoded:do:, #readStreamEncoded:do: & co) just for coherence? > > > > On Tue, 24 Jul 2018 at 10:13, Sven Van Caekenberghe <s...@stfx.eu> wrote: > >> >> >> > On 23 Jul 2018, at 12:07, Sven Van Caekenberghe <s...@stfx.eu> wrote: >> > >> > Stdio stdout and friends just return a binary stream, hence they need >> wrapping for encoding. >> > >> > Maybe >> > >> > Stdio stdoutAsText >> > >> > might be an idea, but this is so uncommon that I am not sure this is a >> good idea. >> >> Given all remarks and comments (thanks BTW), I now think that >> >> - textual stdio streams are the more common case >> - binary stdio streams are the primitive ones that are seldom used >> - another encoding than UTF-8 seems uncommon >> - these are streams that exist and need no real opening/closing >> >> So, >> >> Stdio stdout >> >> should return return a character write stream with UTF-8 encoding while >> >> Stdio binaryStdout >> >> should be the lower level binary one. >> This would be more in line with the other streams. >> A non-UTF-8 encoding can be used as per Pavel's example. >> > -- Guille Polito Research Engineer Centre de Recherche en Informatique, Signal et Automatique de Lille CRIStAL - UMR 9189 French National Center for Scientific Research - *http://www.cnrs.fr <http://www.cnrs.fr>* *Web:* *http://guillep.github.io* <http://guillep.github.io> *Phone: *+33 06 52 70 66 13