An Haskell compilation server
How about turning ghc into a compilation server ? It would run as a daemon waiting for network connections, retrieve source files (through the same network socket, or nfs, or cvs, ...), compile them locally, and send back the result. This would prevent having to reload the compiler for each file - as the executable is quite large, this may already speed up compilation a bit. It could also cache .hi files, which would remove the need to parse them. It would also enable distributed compilation, on a properly configured site. That would be easy to do with hmake. There are many details to think about (should the parsing be made locally by the driver, or remotely...). How does it sound ? -- Sebastien Carlier EPITA, Posse42
the benefits may not be as great as you suppose, modern operating systems keep a buffer cache which contains all recently used data in memory including executables, if your machine is not memory limited (such that the OS would have to throw away your ghc pages to make room for something else) then probably most of ghc's pages will already be resident in RAM for subsequent runs. if you wish to distribute the make over several machines that can be done easily by using 'ssh' or 'rsh' to start jobs on remote machines and share the results via nfs or smb or some other remote filesystem. there are also certain versions of make such as 'pmake' which specialize in distributing building across clusters of machines... modifying 'hmake' to distribute the builds automagically might be an interesting and useful project though. John On Wed, Jan 17, 2001 at 09:53:26AM +0100, Sebastien Carlier wrote:
How about turning ghc into a compilation server ? It would run as a daemon waiting for network connections, retrieve source files (through the same network socket, or nfs, or cvs, ...), compile them locally, and send back the result. This would prevent having to reload the compiler for each file - as the executable is quite large, this may already speed up compilation a bit. It could also cache .hi files, which would remove the need to parse them. It would also enable distributed compilation, on a properly configured site. That would be easy to do with hmake. There are many details to think about (should the parsing be made locally by the driver, or remotely...). How does it sound ?
-- -------------------------------------------------------------- John Meacham http://www.ugcs.caltech.edu/~john/ California Institute of Technology, Alum. john@foo.net --------------------------------------------------------------
participants (2)
-
John Meacham -
Sebastien Carlier