Indeed. GCC 4.2.x has severe problems handling large files.
A couple points :
First, we reduced walker.scm's size from 240K down to 185K. This should help a bit in all cases but compile times will still be pretty high.
Second, a test was added in the Jazz kernel to automatically disable SINGLE_HOST when using GCC version 4.2.x. This should solve the problem and make it so you can still build Gambit using --enable-single-host and only Jazz's files will have it disabled. Simples tests showed that for Jedi, not have SINGLE_HOST only had about a 5% performance impact so barely noticeable.
Finally, Jazz's build system supports turning on or off Gambit's debugging support in compiled code as they can have a big impact on compilation times.
By default it uses those flags to fully support debugging : debug-environments?: #t debug-location?: #t
By default they should stay turned on so new users have full debugging support. But for seasoned users, I suggest having 2 build configurations : one with those 2 debug flags set to #f and used to run Jedi and one with debugging info and also possibly optimize?: #f for running your Jazz applications with full debugging support.
Personally I have a setup with 2 Jazz git repositories :
- jazz : built without any debugging info and only containing stable Jazz code from the public repository
- jazz_dev : containing all my Jazz changes with full debugging info and optimize?: #f
With this setup, I usually run Jedi from the jazz repo and use it to remotely debug projects using the jazz_dev kernels. More on that setup later as I plan on making that setup into a standard profile included with jazz.
Timings results on Snow Leopard to compile walker.scm:
with SINGLE_HOST : 1h30
with SINGLE_HOST disabled : 3mn
with SINGLE_HOST disabled and no debugging info: 10s !!! so 490x faster
A full rebuild of jedi with SINGLE_HOST disabled and no debugging info is about 11mn.
Guillaume