Hello,
I would like to ask the developpers' community about an idea that interests
me these days.
It comes from the fact that the compilation time when I try to run the
"make" command on the source code for gcc is too long for the configuration
I use. Indeed, I enjoy the flexibility of USB keys in order to "play with
gcc" when I get the occasion. Therefore, as I have access to Windows based
systems, I opted for a Cygwin installation and a svn download of gcc trunk
on a USB key which I can plug in in all freedom.
Of course, it's slower than if I used a hard drive, but even then it takes a
lot of time, and so much disk access that I fear for my local hard drive
(I'm jocking here, of course!). Moreover, I guess that many "amateur"
developpers of open-source projects could share my opinion.
Therefore, I would like to ask you about the idea of turning the "gcc"
command into an intelligent agent, with respects to the disk usage and the
recompilations of headers that have a lot of impact on my way of using
"make".
From what I imagine, I would change both "make" and "gcc" so that some
serialization of what different invokations of "gcc" performs is available
throughout the execution of the "make" command.
At first, I thought of serializing "per se" objects that "gcc" would use,
but I observed that the branch in the gcc project which aimed at rewriting
the gcc source code in C++ is no longer active. The branch "incremental
compilation", from what I understand, seems besides to take a different
approach.
In fact, I now see the concept of intelligent agents as something more
easily available to answer this issue. It seems to me that a memory mapping
through a file, initiated by the "make" command and passed on to the various
"gcc" executions could allow this approach, seamlessly (?).
For instance what's described here :
http://msdn.microsoft.com/en-us/library/aa366556.aspx
or through the mmap() function in Unix environments.
As far as I gauge this way of doing, no change of makefiles or "gcc"
commands should be needed, but for an option telling gcc it has to use such
a shared memory.
That being said, I'm not a very experienced programmer in both fields
(intelligent agents and sharing memory between processes through mmap()).
I've narrowed down my researches to the book "Artificial Intelligence: A
Modern Approach (3rd Edition)" by Stuart Russell and Peter Norvig to learn
about a grounded and shared understanding of intelligent agents.
-> What do you think of this approach ? (from what I've understood of the
gcc source code, it's not in gcc's philosophy yet - but I may be wrong, I'm
a junior developper)
-> Do you think the book I refer to is a good start ?
Many thanks to every one.
Franck Z.