So, the 3rd big flurry of make commits is gone. Things should be stable
for a little while.

There have been very significant improvements in make behavior over the
last few weeks.
- there's a single job runner for both parallel and sequential make, with
better performance and control than before. Basically, it just waits for
signals (sigchld or otherwise) and takes action: 0 cpu during normal work.
More interestingly, multiple jobs are now run without any special process
groups nor pipes (there is no longer a shell control process for a given
job, so printing out mostly happens from within make proper).
So tty interaction now works exactly the same with parallel mode an with
normal mode.

- the parser now recognizes multiple targets on the same line, and deals 
with them accordingly.
Parallel make *will* now refrain from building multiple racing targets at the 
same time.  Stuff like

parse.c parse.h: parse.y
        some_yacc_rule

now works (this was surprisingly fast to write and debug actually).

- error message locations actually correspond to reality now. They give
a bit more info, and have been compressed a bit so that they don't scroll
off the screen too easily...

- there has been a mostly complete revamp of the man page.  While we've lost
part of the quirky charm of ye old pmake vocabulary, the description now
looks more like a proper manpage, with reasonably standard terminology, and
it actually describes how important stuff should work (you know, .SUFFIXES
rules and all that).

- the conditional parser just got a little less quirky.


There is *still* one significant piece of work that was not done.
We still have separate dependency engines for make -j and make -B.
I intend to rewrite that part so that make -B can die (basically,
make -j1 should evaluate things in the exact same order that -B does.
Well, currently it doesn't: make -B is more or less depth-first, and
make -j1 is more or less breadth-first). That will obviously take some
time.

Thanks to everyone who helped so far !

Reply via email to