> On Apr 1, 2016, at 2:52 PM, Drew Crawford via swift-dev <swift-dev@swift.org> 
> wrote:
> 
> We noticed today when running a swift CLI program to a pipe that stdout is 
> fully buffered (e.g. not unbuffered, not line-buffered).  So just now we 
> committed unbuffering IO to a bunch of CLI programs.
> 
> Is this the right default behavior for Swift?
> 
> I realize this is a Cism with a long history, but I think an argument can be 
> made that the Cism is surprising (in that: it surprised us). I think most 
> Swift developers would assume "print" to be line-buffered.
> 
> Requiring programs to opt-in to linebuffering so they can work via pipe feels 
> wrong to me.  Am I crazy?

We coincidentally got a Radar about this a few days ago.

    func testExample() {
        print("foo")  // doesn't appear before the crash
        assert(false)
    }

Making print() less than fully buffered (either unconditionally or conditional 
on stdout being sufficiently terminal-like) ought to be reasonable. I mirrored 
the bug report to https://bugs.swift.org/browse/SR-1127 .


-- 
Greg Parker     gpar...@apple.com     Runtime Wrangler


_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to