[4/22/2009]

Version 0.5.2

THIS IS AN UNSTABLE DEVELOPMENT RELEASE OF APTITUDE. DO NOT USE IT
IF YOU NEED A STABLE PACKAGE MANAGER.

This release merges in the work that was done on the lenny branch of
the program but not the post-lenny one (mostly translation work). It
also includes major changes to the dependency solver.

Known bugs:

[gtk] Ctrl-W should close a tab, but instead it crashes the
program. Do not press Ctrl-W and you will be happier.

[gtk] When you reject or accept a resolver choice, the
corresponding row in the solution might not update to reflect your
change. If you switch to another solution and back, it will
update correctly.

New features:

[all] aptitude now uses liblog4cxx to provide diagnostic logging
of much of the program.

[all] The aptitude dependency solver now supports a tiered
search. Hopefully this will make dependency resolution
more predictable and allow more meaningful configuration.
In particular, removals are not attempted until all
solutions involving only keeps, installs and upgrades are
exhausted, and solutions involving versions that aren't the
default candidate are deferred until removals are exhausted.

[gtk] The resolver tab has been completely overhauled. It now
supports all the features of the backend dependency solver,
and it has an interface that is much more suitable for a
GTK+ program.

[gtk] The dpkg tab now attempts to detect when something is
waiting for input, by keeping track of how long it's been
since dpkg sent a status message. When the install process,
appears to be waiting, the view details button is
flashed to hopefully get the user's attention.

[gtk] The procedure for upgrading has been streamlined. aptitude
computes an upgrade in the background automatically using
the same algorithm that backs safe-upgrade. The user can
either accept the solution or try to fix the remaining
dependencies manually.

[cmdline] Added a new command-line option,
--show-summary, to the why command-line action.
This option causes aptitude to show a brief list of the first
package in each dependency chain that would have been displayed.
Dependency chains that contain Suggests are not displayed, so
combining this option with -v will cause aptitude to display all
the packages that require the target.

Documentation for this feature is currently missing. The
--show-summary option accepts an optional argument giving the
summary mode:

no-summary: don't show a summary.

last-package: only show the last package in each chain; that
is, either the manually installed package that requires the
target package, or the package you selected from the
command-line. This is the default if --show-summary is used
with no argument. In future releases of aptitude this will be
first-package, since that name makes a lot more sense.

last-package-and-type: display the last package in each
chain, along with an indication of the strength of the chain.

all-packages: briefly display each chain of packages in its
entirety.

all-packages-with-dep-versions: briefly display each chain of
packages in its entirety, along with the version constraint, if
any, of each dependency.

The configuration option Aptitude::CmdLine::Why-Display-Mode can
be set to any value that --show-summary accepts; if
--show-summary is present on the command-line, it overrides this
option. In future releases of aptitude, the configuration option
will be Aptitude::CmdLine::Show-Summary.

As you can see from the following screen-shot, this option does
not wrap lines intelligently yet, so the output can become messy
if you have long dependency chains and narrow terminals.

[gtk] When the user clicks on a package in the dashboard's list of
upgrades, the changelog display automatically scrolls to
that package.

[gtk] Some common notifications are now marked with the icon of
the task they're performing.

[gtk] Initial support for incremental search (currently you have
to click the incremental toggle button to enable it).

[gtk] Ctrl-PageDown and Ctrl-PageUp, or F7 and F6, now switch to
the next or previous tab, respectively.

[gtk] A link now exists below the package description to open all
the other packages from the same source package.

[all] The aptitude dependency resolver now continues searching for
a few steps after it finds a solution, in the hope that it
can find a better one. (Closes: bug #482825)

[all] The aptitude dependency resolver now adds a bonus to the
default apt resolution for a dependency (that is, the first
non-virtual package listed). The default bonus is 400 and
it may be configured via
Aptitude::ProblemResolver::DefaultResolutionScore.

[all] Setting the environment variable APT_ROOTDIR to a
directory name will cause aptitude to use the given
directory as the root for the purpose of locating apt files.

[gtk] Don't crash when the user views the information tab of a
virtual package.

[all] Fixed some serious inefficiencies in the algorithm used by
safe-upgrade. It's still a bit slow on very large upgrades,
but not as ridiculously slow as it was before.

[all] Fixed a bad interaction between the dependency solver
and reinstatement of unused packages, which could cause a
situation where a solution from the solver would
actually lead to broken dependencies, due to a conflict
declared on the newly reinstated package. (Closes: bug #522881, bug #524667)

Cosmetic and UI bugs:

[gtk] Changelogs are now downloaded and parsed in the background.
aptitude still sets the download up in the foreground, and
this can take a long time if there are lots of available
upgrades.

[gtk] A background thread is used to find the packages that match
a search pattern and to build the list of matching packages
for display.

[gtk] Some work on the download screen, although more is needed.

[curses] Don't warn the user about removing an Essential package
if they're just purging the configuration files of one
they removed already. (Closes: bug #513472)

[curses] Don't compute an excessive amount of why information
every time a package is selected. Should make the curses
interface much less sluggish. (Closes: bug #516296)

[cmdline] Add a missing newline in the error message that
aptitude why prints if it has no arguments.
(Closes: bug #514676)

[cmdline] Fix some badly formatted messages that are displayed
when a build dependency can't be installed: they were
missing punctuation and newlines. (Closes: bug #492615)

[cmdline] Make the warning asking the user to use safe-upgrade
instead of upgrade a bit clearer.

[all] The dependency resolver's scoring of full package
replacement was not behaving as intended in the corner case
that the package was replaced due to a virtual package it
provided, and some other version of the replaced package
didn't provide that virtual package. The intent was to give
the non-providing package a bonus, but instead the versions
that got replaced were getting a bonus (more or less
negating the whole point of the full replacement score).

[all] The resolver should now more correctly obey approval
constraints set by the user (solutions that were previously
rejected and aren't rejected any more can be returned).

Internal changes:

[all] The dependency resolver now supports hypothetical
reasoning: it can calculate a solution to a dependency
problem from a starting state that isn't the live
state of the package cache. This is used, for instance, to
compute an upgrade before any packages are marked for
upgrade.

[all] Implemented support in the dependency resolver for
propagating knowledge about dead-ends up the search tree.
Currently disabled as it turned out to greatly increase the
memory and CPU overhead of a search without significantly
decreasing the number of steps needed.

[all] The dependency resolver now stores solutions as sets of
choices rather than explicitly maintaining several
lists for the different types of choices a solution can
contain (for instance, installing a version vs leaving a
Recommends unresolved). This makes things a bit cleaner and
should make it easier to add new types of choices if that
turns out to be useful.

[gtk] The Glade file now stores each tab as a separate
top-level widget, which makes it a lot easier to edit and
add tabs.

Documentation:

[doc] Improve the documentation of --purge-unused.

[doc] Improved documentation of the resolver (in addition to
documenting the new features).