reddit discussion on replacing Python in 0install
Walter Bright
newshound2 at digitalmars.com
Tue Jun 11 23:48:44 PDT 2013
On 6/11/2013 10:15 PM, deadalnix wrote:
> On Wednesday, 12 June 2013 at 04:23:39 UTC, Walter Bright wrote:
>> I don't agree. Buffering is often done on page size boundaries - throwing out
>> a random number of characters and then flushing will get it all wonky.
>
> You clearly missed something in the discussion here. The proposal is to flush
> once at first use, so an Exception is thrown. Nothing change after that first
> flush at initialization, other flushes stay where they are.
Not at all. A flush forces a write to the disk - that's the point of it. Disks
are not at all well tuned to writing a few bytes, they like to be written in
aligned blocks of block sizes, and the I/O subsystem is designed for that.
This is why stdout has a flag in it saying if it is a "block oriented" or
"character oriented" device. It makes a big difference. This proposal attempts
to treat a block device like a character device. It will work, but it will
perform poorly.
P.S. I've written device drivers for disks.
P.P.S. The solution is simple, as I said earlier. Just do a flush after main()
exits. It happens anyway - done by the C stdio subsystem - I just propose doing
it in the D code before it hands things back to the C runtime. This will entail
no performance degradation.
More information about the Digitalmars-d
mailing list