Skip to content

Add support for proper phase separation

François-René Rideau requested to merge plan into master

Add support for proper phase separation

Correctly handle incremental builds in cases where operate can be called while loading a .asd file, especially as part of a defsystem-depends-on declaration.

If a defsystem-depends-on dependency is out of date, re-load all needed .asd file that depend on it. But if a file is compiled or loaded in one of those nested calls to operate, don't perform the action twice.

Rename cache.lisp to session.lisp and move parts of plan.lisp to session.lisp and a new file forcing.lisp, to support the notion of a session made of several phases of operate(plan-then-perform). Split system-registry.lisp off of find-system.lisp.

Refine the notion of action status within a session: a stamp and three bits KEEP (from previous session), DONE (and up-to-date in this image), NEED (for the session's goal).

Backward incompatible change in internal APIs: uiop stamps now have NIL for +infinity and T for -infinity. No one in Quicklisp uses it, but just in case, it must be noted.

Merge request reports