News (mainly features/major bug fixes)

portage-2.2.1
-------------

* Add cgroups, ipc-sandbox, and network-sandbox FEATURES.

portage-2.2
-------------

* Add extended set configuration via /etc/portage/sets.conf. See
  /usr/share/portage/config/sets/portage.conf for examples.

portage-2.1.11.20
-------------
* Add support for EAPI 5. Refer to the PMS EAPI Cheat Sheet, portage's html
  docs installed with USE=doc, or `man 5 ebuild` for more info about EAPI 5.
* Add support for FEATURES=preserve-libs which preserves libraries when the
  sonames change during upgrade or downgrade, and the @preserved-rebuild
  package set which rebuilds consumers of preserved libraries.
* Add link level dependency awareness to emerge --depclean and --prune actions
  in order to protect against uninstallation of required libraries. Refer to
  the --depclean-lib-check option in the emerge(1) man page.

portage-2.1.11
-------------

* Add support for experimental EAPI "4-slot-abi". Refer to the corresponding
  html documentation that is installed with USE=doc, and also to the emerge(1)
  man page for information about the related --ignore-built-slot-operator-deps and
  --rebuild-if-new-slot options.

portage-2.1.10
-------------

* Improve handling of repositories/overlays for cases in which the same ebuild
  is provided by multiple repositories but with different masking status, and
  support for repository constraints on atoms (atom::repo) in configuration
  files.
* Add emerge --rebuild-if-* options that trigger rebuilds of reverse
  dependencies when packages are rebuilt or updated. Related --rebuild-exclude
  and --rebuild-ignore options can be used to avoid rebuilds for specific
  packages.
* Add emerge --reinstall-atoms, --useoldpkg-atoms, and --usepkg-exclude options
  which can be used to alter selection rules for specific packages.
* Add FEATURES=parallel-install and ebuild-locks, allowing for greater
  parallelization when installing packages (by using finer-grained locks).

portage-2.1.9.27
-------------

* Add support for EAPI 4. Refer to the PMS EAPI Cheat Sheet, portage's html
  docs installed with USE=doc, or `man 5 ebuild` for more info about EAPI 4.
  Bug #273620 tracks EAPI 4 implementation in portage.

portage-2.1.9
-------------

* There is a new ipc (inter-process communication) USE flag which is enabled
  by default. This allows portage to communicate with running ebuild processes,
  for things like best_version, has_version, and die calls in nested processes.
  This flag should remain enabled unless it is found to be incompatible with a
  specific profile or environment. When enabled, it fixes bug #278895,
  bug #315615, and makes subshell die support more robust (so that repoman's
  ebuild.nesteddie check is irrelevant).

portage-2.1.8
-------------
* The top-level __init__.py for the portage python package has been split into
  many smaller python modules, making the code easier to navigate and allowing
  small parts of the portage api to be imported with less overhead.

portage-2.1.7.17
-------------
* Add support for EAPI 3. This adds support for installation prefix, including
  new EPREFIX, ED, and EROOT variables which are used by econf and einstall
  helpers. Also, EAPI 3 adds xz extension support to the unpack helper.

portage-2.1.7
-------------

* Add license visibility filtering (GLEP 23)
* Add --accept-properties option for emerge which allows you to use
  --accept-properties=-interactive in order to temporarily exclude
  interactive updates.
* Add support for Python 3.0. At least Python 2.6 is now required in order to
  support the new syntax which is used by Python 3.0.

portage-2.1.6
-------------

* Add support for a new EAPI="2" value. For more information about new EAPI
  features, refer to the "Ebuild" chapter of the html documentation that is
  installed with portage.
* Add PORTAGE_IONICE_COMMAND setting for make.conf which is called to adjust
  IO priority on portage and it's subprocesses.
* Add emerge --jobs and --load-average options which specify behavior
  for building packages in parallel or for generating metadata in parallel
  with emerge --regen.
* Add emerge --keep-going option to continue as much as possible after
  an error. When an error occurs, dependencies are recalculated for
  remaining packages and any with unsatisfied dependencies are
  automatically dropped. The --skipfirst option automatically drops
  packages in the same way, and also drops any masked packages.
* Add git and subversion support for repoman.
* It is now possible to use `emerge <file>` to reinstall the package that
  installed a particular file. Package contents entries are indexed to
  improve performance. A command such as `emerge /lib/modules` can serve
  as a decent substitute for module-rebuild.
* Namespace sanitizing: move all portage related code into portage.* namespace,
  rename portage_foo modules to portage.foo (but keep symlinks for compability)
* Add support for news items (GLEP 42)
* Add FEATURES=protect-owned which is identical to the collision-protect
  feature except that files may be overwritten if they are not explicitly
  listed in the contents of a currently installed package.

portage-2.1.5
-------------

* For extra careful dependency handling, emerge has a new --complete-graph
  option that causes it to consider the deep dependencies of all packages from
  the system and world sets. With this option enabled, emerge will bail out
  if it determines that the given operation will break any dependencies of
  the packages that have been added to the graph. Unlike the --deep option,
  the --complete-graph option does not cause any more packages to be updated
  than would have otherwise been updated with the option disabled.
* Blockers are now resolved automatically in many more cases
  than before.  When it's safe, blocked packages are uninstalled
  automatically so that users are no longer inconvenienced with the
  task. Automatically uninstalled packages are displayed in the merge
  list, marked "uninstall" and highlighted in red. With the --tree
  option enabled, it's possible to see which package(s) caused other
  ones to be automatically uninstalled.
* The dependency resolver now has a feedback mechanism that helps make atom
  selections more consistent with previous selections that have been added to
  the graph. This solves some common cases of bug #1343.

portage-2.1.4
-------------

* After the initial setup phase, the original ebuild and eclasses are no
  longer needed because the same ebuild environment is reused for the
  entire lifecycle of the package, including uninstallation.
* The emerge --search action supports searching of both installed and binary packages
  The --usepkg and --usepkgonly options control which repositories are searched.

portage-2.1.3
-------------

* Allow per-module setting of PORTAGE_ELOG_CLASSES
* Add new elog module "echo" to simply display messages when emerge exits
* Add ** as new token for package.keywords to bypass the keyword visibility layer
* USE_EXPAND variables such as LINGUAS support a * wildcard that will enable
  all of the corresponding flags that are listed in IUSE for a given package.
  USE_EXPAND wildcards such as linguas_* are supported in USE and package.use.
* The merge process preserves the modification timestamp of files that it
  installs. The unmerge process will not uninstall files that are claimed by
  another package in the same slot.
* PDEPEND is now installed as soon as possible so that it behaves more like
  RDEPEND.  This makes PDEPEND more useful for breaking the dependency cycles
  that are sometimes triggered by RDEPEND and DEPEND.
* Enable "echo" and "save_summary" elog modules by default
* Fix -* handling in package.keywords to work as intended (reset the accepted 
  keywords list), also see RELEASE-NOTES.
* Make elog functionality available to python code

portage-2.1.2
-------------

* Ebuilds support default USE flags via +flag in IUSE.
* New-style virtuals are now usable for packages that depend on themselves for
  bootstrap.
* Profiles support multiple inheritance and package.use.
* CONFIG_PROTECT and CONFIG_PROTECT_MASK both support files (not just
  directories).
* Collision protection handles symlinks properly.
* Dependencies can be satisfied by installed packages that do not have matching
  ebuilds in the portage tree or overlay.
* Emerge automatically ignores blockers that are made irrelevant by an upgrade.
* Emerge supports "reverse blocker detection" which means that the blockers of
  installed packages will always be respected.
* Emerge builds a complete dependency graph in order to ensure correct merge
  order and detection of circular dependencies.
* The world and system sets allow automatic update of all installed slots.
* DEPEND atoms support SLOT dependencies of the form ${CATEGORY}/${PN}:${SLOT}.
* Development: Extend PYTHONPATH support to allow overriding the hardcoded 
  /usr/lib/portage/pym for development/testing purposes
* New "finalize" hook for elog modules enabling modules to perform actions on 
  shutdown (like dispatching collected messages).
* New elog modules mail_summary and save_summary that act like the mail/save
  modules except that they merge messages from multiple packages in a single
  file/mail.
* New QA loglevel and matching eqawarn function
* `ebuild foo test` now always runs src_test if available
* If DOC_SYMLINK_DIR is set portage installs symlinks to html documention there
* FEATURES="test" automatically implies USE="test".

portage-2.1.1
-------------

* Profiles support use.force, package.use.force, and package.use.mask files.

portage-2.1 (ongoing via pre releases)
------------

* FEATURES="confcache" integration; global caching to speed up configure calls, 
  requires dev-util/confcache
* elog framework and accompanying modules for logging ebuild warnings, errors
  and general notices. Collects eerror/ewarn/elog/einfo messages.
* New elog function (should replace einfo in many cases)
* version syntax enhancements allowing multiple suffixes and a new 'cvs'
  version prefix for denoting "live sources" ebuilds.
* config files as directories enabling more flexible settings management.
* Addition of an register_die_hook method that allows ebuild/eclasses to
  register functions to be called for better debugging on errors.
* Addition of pre and post user hookable functions for each ebuild phase, accessible 
  via portage bashrc.  Example would be pre_src_unpack .
* cache refactoring- runtime improvement from 35% -> 65%.
* Intelligently handle and display USE_EXPAND-based IUSE variables.
* FEATURES="parallel-fetch".  Download in parallel to compilation.
* Include a "changed or new" USE flag output when --verbose isn't specified.
* Support for splitting out debug information into separate files in
  /usr/lib{,32,64}.
* exec subsystem refactoring (now with less bugs!)
* Added sha256 and rmd160 hashes for digests/manifests
* Make --emptytree only apply to ${ROOT} rather than always including /.
* Allow packages to be upgraded that are only depended on via a
  "|| ( =cat/pkg-1* =cat/pkg-2* )" construct.
* Ebuild output is no longer cut off early when using PORT_LOGDIR.
* Distfiles indirection- $DISTFILES access goes through a tmp dir to fail
  access to files not listed in SRC_URI.
* Emerge now uses --resume to restart itself after portage upgrade.
* Atomic file updates via the new atomic_ofstream class.
* Global updates and fixpackages performance optimizations.
* Tests show that file locking is now more reliable.
* A bash call stack is printed when an ebuild dies in ebuild.sh.
* New rsync option handling by using a generic PORTAGE_RSYNC_EXTRA_OPTS variable
* Manifest2 support that will allow digest-* files to be eliminated from the tree.
