Skip to content
  • Francois-Rene Rideau's avatar
    2.26.9: Another major rewrite of traverse, to propagate timestamps correctly. · da0d1380
    Francois-Rene Rideau authored
    This fixes the major issue whereby asdf's operation-done-p was failing to check
    the timestamps of dependencies, only checking those of the immediate operation.
    This rewrite is also a vast simplification:
    * we rely purely on filesystem timestamps of files
    * we stop using get-universal-time and therefore eschew clock skews issues
     between processor and filesystem
    * we do away with the ugly do-first dependencies, previously made necessary
     by the way get-universal-time messed with load timestamps.
    * we simplify the protocol to visit components, with a better internal API
     that we use twice: once, recursively, in traverse, and once, shallowly,
     in compute-action-stamp (the new internals for operation-done-p).
    * make-sub-operation is drastically simplified.
    For the sake of backward-compatibility, the code style had to be contrived,
    notably introducing a special variable *stamp*,
    supporting dual modes for operation-done-p, and
    keeping the old names of many functions that would better be renamed.