Tango / Phobos / future dilemma
2korden at gmail.com
Tue May 27 08:03:55 PDT 2008
On Tue, 27 May 2008 18:49:26 +0400, Frits van Bommel
<fvbommel at remwovexcapss.nl> wrote:
> Sascha Katzner wrote:
>> I see no reason why those two IO systems couldn't coexist on top of a
>> common low level cache.
> (All of the statements below are AFAIK & IIRC from the newsgroup
> discussions on this subject)
> I do:
> Walter seems convinced that using the libc buffering is the Right Thing
> To Do(TM) because it allows intermixing of *printf(), putc*(), etc. with
> writefln & friends without explicitly syncing them.
> The Tango devs have a good reason to use their own, separate, buffering
> solution: the tests showing better performance. (And many people
> consider it bad style to use C-style I/O in D programs anyway, so "it's
> just not worth it" becomes a good argument pretty quickly here)
> This just doesn't allow a "common low level cache" since neither of
> their buffering solutions allows the use of a common buffer unless the
> other one switches (Phobos can't change libc while much of the Tango IO
> functionality depends on using the custom buffer and its good
> performance depends on interfacing directly to the OS)...
> In other words, it's a fundamental disagreement about how to best do I/O.
>  Also, changing the Tango I/O code to use libc instead of direct OS
> calls isn't very helpful since it still won't be synced to C-style I/O
> (there'll still be an extra buffer in front of the Tango stuff that
> would only send stuff to libc when full or explicitly flushed).
C++ has both C-style stdio (fopen, fwrite, etc) and custom iostreams.
Both of them have overlapping functionality, and no one cares.
Since D can directly interface with C code and we can't throw away that,
C-style IO _will_ present in D. And that's Ok, I don't see any problems
here. Guys that think that it's the right way would use that, others would
use Tango way.
More information about the Digitalmars-d-learn