Re:GHC 7 is out: Haskell 2010 support; LLVM backend; new opt...
by ch on Monday November 15, 2010 @10:16PM
(#1908868)
Fantastic work. The improvements to the I/O manager are well worth the price of admission.
I'm curious, is work underway to see similar gains made in the I/O manager on Windows?
Does Windows provide a similar construct as 'select()' and also something equivalent to the newer epoll/kqueue systems, such that boosting the I/O manager on Windows will be rather trivial, or is the Windows I/O subsystem so different that the GHC I/O manager must be designed completely differently on that platform?
Re:GHC 7 is out: Haskell 2010 support; LLVM backend; new opt...
by pufuwozu on Tuesday November 16, 2010 @12:01AM
(#1909111)
The Windows operating system presents a difficulty to our current design. Its support for scalable event notification is based around I/O completion ports, which are integrated tightly with the Windows threading mechanism, and which would require a considerable amount of replumbing to support.
Re:GHC 7 is out: Haskell 2010 support; LLVM backend; new opt...
by stonemetal on Tuesday November 16, 2010 @07:16AM
(#1909831)
Windows provides select just like everybody else. High performance IO in windows is done with IO Completion Ports it is a little more complicated than epoll.
Re:GHC 7 is out: Haskell 2010 support; LLVM backend; new opt...
by partition on Monday November 15, 2010 @07:46PM
(#1908581)
I'm curious about the general effectiveness of the latest versions of GHC in optimizing single-threaded code. We know of huge gains with the parallelism libraries, but I'm wondering what the consensus is for code that's more inherently sequential.
Re:GHC 7 is out: Haskell 2010 support; LLVM backend; new opt...
by bigmac on Monday November 15, 2010 @08:05PM
(#1908630)
When you say inliner, are you referring to LLVM's inliner or something closer to the front end? I know LLVM's is pretty aggressive as is -- are you able to get benefits from it?
Re:GHC 7 is out: Haskell 2010 support; LLVM backend; new opt...
by sigzero on Tuesday November 16, 2010 @09:19AM
(#1910101)
Is there a "Why Haskell?" post somewhere out there? I am just curious about what Haskell brings to the table, what it is good at, and does it have a niche. Is Haskell trying to break its bonds in the niche to get to the wider world in general? All sorts of questions like that.
Re:GHC 7 is out: Haskell 2010 support; LLVM backend; new opt...
by gaius on Tuesday November 16, 2010 @09:24AM
(#1910112)
The big things that Haskell does that no-one[1] else does are a) strict separation of the parts of the program that do I/O or otherwise change some sort of global state and b) lazy evaluation, which means evaluate a function only when it is needed to do (a). The compiler enforces (a).
(a) is a big deal because it makes it very easy to reason about what your program does, which is handy because (b) is the opposite :-) but makes certain kinds of computations very elegant to express.
I'm curious, is work underway to see similar gains made in the I/O manager on Windows?
Does Windows provide a similar construct as 'select()' and also something equivalent to the newer epoll/kqueue systems, such that boosting the I/O manager on Windows will be rather trivial, or is the Windows I/O subsystem so different that the GHC I/O manager must be designed completely differently on that platform?
From http://www.serpentine.com/bos/files/ghc-event-manager.pdf
I do hope that someone more familiar with Windows takes up the torch.
Quite separately, runtime and library performance for some kinds of parallel programs is better.
Both sequential and parallel code got better, for different reasons.
That all happens before getting shunted off to LLVM, which in turn does a lot of block-level changes (which particularly affect numeric code).
(a) is a big deal because it makes it very easy to reason about what your program does, which is handy because (b) is the opposite :-) but makes certain kinds of computations very elegant to express.
[1] Not quite true but close enough