[Aptitude-devel] Resolver status.

Daniel Burrows dburrows at debian.org
Tue May 26 03:40:49 UTC 2009


  I've been working on the resolver today, and here's what's left on my
working TODO.  Basically, I'm at the point where the problems are
getting smaller and more concrete; unless something ambushes me, I
expect that it should be fairly clear sailing from here to working code.

  Once all this is done, I can start tracking down the hordes of bugs
I've probably introduced, and once that's done I can see whether the
speed actually improved and how much I've increased the memory
footprint.


* After creating a step, add references to it in the global choice->step
  reverse mapping.

* When adding a promotion, set its validity condition (the promotion_set
  already arranges for it to be zapped when it becomes invalid).

* Maybe add a generalized way of attaching side effects to expressions?
  It seems like there are lots of places where we just want to
  instrument an expression, but leave the original expression around for
  use in building up larger expressions.  It would be nice if we could
  have the instrumenting be a member variable (i.e., not add an extra
  pointer indirection the way promotion_set does).

* For the side-effecting expressions that keep the state up to date, add
  a failsafe flag that ensures that they don't fire after we're done
  with them.
 
Also: currently the validity conditions are also the
  side-effecters.  Maybe separate them so we don't hold side effects
  around longer than we should?

* Those side-effecting expressions need to *make* things deferred, not
  just cancel deferrals.  We have no other mechanism for deferring
  solvers, and it would be unnecessarily redundant to introduce a second
  one.

* Since I seem to be going in the direction of defining step tiers
  purely in terms of solver tiers, steps shouldn't have their own tier
  validity constraints.  It's redundant (the individual solvers have the
  same effect).

* Remove steps from the global index when they've already been processed
  (had successors generated or were returned as a solution), so we don't
  bother updating their tier when new promotions are added.

* Write the top-level driver.

* Remove the old resolver code.

* Make it all compile.

* Write a test that verifies that dep-scoped choices are handled
  correctly in the promotion set?  (although I'm not sure those are
  needed any more)

* Write a test case for the choice-indexed set.

* Make handling tier changes more incremental?  e.g., store dep solvers
  according to their tier, maybe also maintain a list of deps sorted by
  tier?


  Daniel



More information about the Aptitude-devel mailing list