wiki:Features
Warning: Error with navigation contributor "BrowserModule"

framework

  • Abstracted configuration subsystem. Via this, it's able to support multiple different configuration formats natively (including intermixing them).
    • ini style format (used internally, and for high level pkgcore directives)
    • make.conf and /etc/portage/ configuration
    • dhcp akin format.
  • unified metadata querying interface. Same api is used for package matching, contents searching, description searching, and any general metadata query; supports boolean grouping, and defining your own query matching objects.
  • Format agnostic resolver; proper format support implementation, nothing required of the resolver to support it. Cyclical dependency detection and handling, configurable to enable/disable deep resolution, complete/incomplete dependency graph.
  • Trigger based merging engine; extensible an designed to avoid unecessary IO for any sanity checks/modifications to the image to install/uninstall. This enables user configuration to override/mangle the steps of merging, same capability for format plugins.

gentoo specific

  • EBD, aka EBuild Daemon. 40% reduction of regen runtime, full environment reload/saving support required for  glep33; additional benefit of it is that binpkgs and VDB (installed ebuilds) no longer are reliant on accessing eclasses from the tree. Finally, if you have a SMP system, can get near linear scaling (~90% scaling testing on a quad P3 500mhz) parallelization via source:pkgcore/bin/utilities/pregen.py, 7x faster for quad; stats available via pregen.
  • Support for N parent inheritance in profiles
  • USE/SLOT deps.
  • /etc/portage/package.* extensions Extended Atom syntax support- the short version is category, categoryless match, package globbing is supported, additionally the stacking is fully incremental.
  • On disk data compatible, cache and vdb; nothing is added to vdb that portage won't properly handle, cache format is the same (it helps that portage 2.1's cache came from pkgcore).
  • /etc/portage/sets support.
  • native GLSA integration (no external xml deps required).
  • metadata.xml integrated into the ebuild package API.
  • merge straight from tbz2 without wasteful intermediate decompression to a temporary dir, then installing from the location- due to the semantics of the ebuild format, this only kicks in when the default pkg_preinst is in use.

Unscientific performance data (2010-07-15)

  • first run (cold buffers):
$ time pmerge -p portage > /dev/null $ time emerge -p portage > /dev/null
real 0m15.680s real 0m56.778s
$ time pquery portage > /dev/null $ time emerge -s portage > /dev/null
real 0m7.748s real real 0m25.653s
  • second run (hot buffers):
$ time pmerge -p pkgcore > /dev/null $ time emerge -p pkgcore > /dev/null
real 0m0.825s real 0m17.414s
$ time pquery pkgcore > /dev/null $ time emerge -s pkgcore > /dev/null
real 0m0.718s real 0m4.705s