Michael John Downes writes:

 > How about seeking to avoid the copying altogether? According to a small
 > experiment I just did it seems it might be possible to do this, with a
 > slight cost: using three extensions aux, auy, auz instead of just two.
 > (But in the case of a book with multiple \include statements the
 > subordinate files never use the .aux extension; only \jobname.au[xyz]
 > uses all three.)

i think that Michael's idea is most likely working and it certainly
has the advantage of avoiding a slow copy step (if that step is done
by TeX).

his mail also reminded me that i forgot to mention that, of course,
you have compare both aux files before that copy step, line by line up
to the point where you notice they differ. Again a slow operation if
done by TeX and again that can be moved to some operating script to
speed things up.

instead of executing the the aux file at the end (as currently done by
LaTeX) to write the .toc type files and test for changes in labels a
full comparison has the advantage that it also detects changes in
something like the toc or in the index or whatever if you keep
everything in the same aux file up to that point.

 > another run is necessary). Then external OS scripts that want to test
 > whether another run is necessary could look only at the first line of
 > the .aux file instead of diffing .auy and .auz (maybe a bit of a pain
 > for a multi-\include document).

i don't see much problem checking for changed data at os level as we
have only two files to compare independent of the number of includes.