== Overview of changes from MacPorts 2.0.4 to 2.1.0 ==

# For regular users:

*) New 'rev-upgrade' action that checks for and rebuilds ports that may have
   become incorrectly linked when a dependency was upgraded to a new,
   binary-incompatible version. This runs automatically after upgrades and
   installs by default, and can be turned off or configured to only report
   problems in macports.conf.

*) The pkg and mpkg targets will create flat packages on 10.6+.

*) Build-time dependencies will no longer be installed if a prebuilt
   archive is available for download (and port is configured to use it).

*) Config file archive_sites.conf can be used to download archives from
   custom locations.

*) 'buildfromsource' macports.conf option allows permanently choosing
   source-only or binary-only mode.

*) New macports.conf options 'host_blacklist' and 'preferred_hosts', for
   controlling which download hosts will be used.

# For Portfile writers:

*) New -W option for reinplace that sets a base directory for all file
   arguments.

*) Livecheck can now find multiple regex matches on each line.

*) license_noconflict option can be used to override automatic license
   compatibility checks.

*) compiler.whitelist, compiler.blacklist, and compiler.fallback options allow
   simpler, detailed control over which compilers are used to build ports.


== Overview of changes from MacPorts 1.9.2 to 2.0.0 ==

# For regular users:

*) Downloaded archives are now checked for integrity using digital signatures.
   New pubkeys.conf file allows configuring keys to trust.

*) Actions can be abbreviated to an unambiguous prefix of the full name.

*) Ports that create StartupItems (aka launchd plists) should now be
   installable by unprivileged users.

*) Port images are now stored as archives. Archive mode is now effectively
   always on. Direct mode and the flat registry format are no longer
   available. Conversion will happen automatically.

# For Portfile writers:

*) Multiple ports can now be defined in one Portfile using the 'subport'
   procedure.

*) New option 'add_users' can be set to ensure that the listed users are
   created at the right times during the install process.

*) SHA256 checksums are now supported.

== Overview of changes from MacPorts 1.8.2 to 1.9.0 ==

# For regular users:

*) All output is now logged to a file, whose location will be shown if a port
   target fails. This should be attached to bug reports. The new 'log' action
   can also be used to view the log for a port.
*) Command line options can be abbreviated if unambiguous.
*) New actions: rdeps, rdependents, setrequested, unsetrequested
*) --follow-dependencies option for uninstall (ports with the requested flag
   set or with other dependents are skipped).
*) New pseudo-ports and selectors: requested, unrequested, leaves, depof:,
   rdepof:, dependentof:, rdependentof:.
*) Architectures of dependencies are checked before install, and in many cases
   will be automatically fixed by upgrading with +universal.
*) New sqlite registry format which is faster and lacks some of the old
   format's inconvenient limitations.
*) Explicitly deselected variants (e.g. -foo) are now recorded, so they will
   not be set to + when upgrading if +foo appears in variants.conf or
   the port's default_variants.

# For Portfile writers:

*) New os.subplatform variable.
*) New configure.ld_archflags option to match configure.cc_archflags et al.
*) 'platform' acts like an 'if' statement rather than a variant.
*) New supported_archs option for indicating a port only supports certain
   archs or is noarch.
*) pre-/post-deactivate and pre-/post-uninstall procedures can now be used,
   and pre-/post-activate procedures are run every time the port is activated,
   not just the first time when it is installed.

== Overview of changes from MacPorts 1.7.1 to 1.8.0 ==

# For regular users:

*) Compatible with Mac OS X 10.6 Snow Leopard, requires at least 10.4 Tiger
*) CPU architecture to build for is now configurable
*) Performance and memory usage improvements
*) New -y option for dry-run
*) 'port search' has many new options that make it more flexible
*) 'port upgrade' now follows the right dependencies when variants change them
*) 'port info' and 'port variants' indicate selected and default variants;
   'port variants' also shows conflicts and dependencies between variants
*) A port can be marked as being replaced by another port; upgrading will
   perform the replacement
*) upgrade accepts new options: --force, --enforce-variants, --no-replace
*) Ports can be marked as conflicting, and conflicts will be detected before
   the install process starts
*) Proxy information can now be obtained from System Preferences and from
   macports.conf
*) Activating a port will now first deactivate any other version of the same
   port that is already active
*) MacPorts can be configured to drop root privileges when not needed
*) port(1) will exit with an appropriate status code when an error is
   encountered (use -p to continue despite errors)

# For Portfile writers:

*) New options: replaced_by, conflicts, depends_fetch, depends_extract, license
*) build_arch variable indicates which architecture should be targeted. Flags
   used to implement this are configured per-compiler, for example,
   configure.cc_archflags will be passed to configure.cc in CFLAGS
*) Dependencies can be satisfied by ports that are installed but not
   available in the ports tree
*) Deleting all the contents of an option no longer unsets the option entirely
*) Using an alternative fetch or extract type now adds appropriate
   dependencies automatically, e.g. 'use_zip yes' adds a dep on unzip, and
   'fetch.type svn' adds a dep on subversion
*) Running phases prior to install should now work reliably when the port is
   already installed

== Overview of changes from MacPorts 1.6.0 to 1.7.0 ==

# For regular users:

*) The resources directory (containing port group information and the mirror sites) has been moved into the ports tree, so a new MacPorts release is no longer needed to update these items
*) The error message from 'port upgrade outdated' when no ports are outdated is much improved
*) Improvement on handling of MacPorts configuration files (global and user-defined options)
*) Case-insensitive issues have been fixed
*) 'port help' is improved
*) The MacPorts mirror, distfiles.macports.org, is automatically checked when the normal sites fail to respond
*) The search command of port now searches the name, description, and long_description fields
*) Numerous improvements to dependency handling
*) Work around a bug in 10.5's Tcl environment handling
*) Fetching distfiles now tries to ping all mirror sites first in an attempt to pick the best source
*) A new option was added to uninstall: --recursive
*) The output for the port commands info, deps, dependents, and search has been improved
*) Two new options to selfupdate: --pretend and --nosync
*) A platform command has been added to port to display your platform information
*) A suitable message is output when the requested port is not installed when polling its dependents;
*) Fixed the "Error: Unable to open port: invalid command name "ui_prefix"" runtime error on Panther;
*) Fixed the "Error: Unable to open port: invalid command name "ui_channels"" runtime error on Panther;
*) Fixed a MacPorts, Panther specific build failure due to missing sqlite headers on that platform;
*) Fixed a MacPorts build failure when building itself in universal fashion;


# For Portfile writers:

*) ruby port group adds a new parameter to ruby.setup for multiple ruby version support
*) New use_dmg option allows DMG-format distfiles
*) ruby.setup (part of the ruby port group) now takes a fetch type
*) git has been added as a valid fetch.type
*) On Mac OS X, MACOSX_DEPLOYMENT_TARGET is now always set to workaround various issues
*) Several universal-specific variables added to the configure.* group
*) A merge function is now available for easier merging of multiple architectures for universal support
*) Pre-fabricated statements with correct checksums are output when in verbose mode if the existing ones in the Portfile are incorrect;
*) "port lint" now recognizes non-canonical modelines;
*) Added a 'configure.pipe' Portfile option for using pipes rather than intermediate files when compiling C/C++ based ports;



== Overview of changes from MacPorts 1.5.2 to 1.6.0 ==

# For regular usage:

*) Revived and thoroughly refreshed web presence at http://www.macports.org/ , with more improvements still on the way;
*) New project guide at http://guide.macports.org/
*) Fixed the "upgrade" target of the port(1) command to properly handle installed versions beginning with letters;
*) Improved the "variants" target of the port(1) command to behave like the "info" target to poll the requested Portfile directly
    rather than the index for more up-to-date information, while also providing a --index flag for legacy behavior;
*) Fixed a bug by which a user-specific 'macports.conf' file would not be read;
*) Tightened security by installing MacPorts in 0755 mode (no write permission for group and others) by default;
*) Added 'none' as a possible option for supported types of startupitems scripts;
*) Disabled readline support in interactive mode of the port(1) command by deafult;
*) Fixed a bug by which the "variants" target of the port(1) command would spit out an error backtrace to the terminal when no match
    was found for the requested port;
*) Revamped the "postflight" script that takes care of setting a MacPorts-compatible shell environment after installation from our
    "pkg" is complete; it now gracefully handles the addition of PATH, MANPATH and DISPLAY environment variables separately and only
    if strictly needed, properly backing up appropriate shell configuration files before proceeding to modify them
    (http://guide.macports.org/#installing.binary.postflight.details for more information);


# Individual port-building-related improvements:

*) Eugene Pimenov's GSoC2007 work on improving "trace mode" for the building of ports in clean environments,
    http://trac.macports.org/projects/macports/wiki/soc2007/epimenov ;
*) Added 'bsdmake' and 'gnumake' defaults for building ports on the FreeBSD and Linux platforms;
*) Added 'configureccache' and 'configuredistcc' configuration options to the main 'macports.conf' for distributed
    builds (defaulting to no);
*) Improved building of configure-based universal ports on Leopard;
*) Fixed a bug by which the 'universal' variant would disappear if a 'macosx' variant was selected;
*) Added a 'macosx_deployment_target' option to the main 'macports.conf' file for ports that benefit from this Mac OS X specific flag;
*) Added a 'configurepipe' option to the main 'macports.conf' file for using pipes rather than intermediate files when compiling C/C++
    based ports;
*) Removed LD_PREBIND & LD_PREBIND_ALLOW_OVERLAP variables from MacPorts' environment to prevent prebinding of binaries, which can be harmful
    on Tiger and above;


# Packaging-related improvements:

*) Created pkg's no longer have /etc, /var/ or /tmp directories in them;
*) Fixed a bug by which all .mpkg packages were missing their welcome page;
*) Fixed a bug by which HTML contents were written as a pkg's Welcome.rtf file, causing it to not display at all;
*) Made the homepage clickable in a pkg's welcoming screen;
*) Added support for lzma compression for archives;
*) Improved pkg & dmg creation on Leopard, for both Intel and PowerPC platforms;
*) Added an 'mdmg' target, for the creation of a dmg for a port and its dependencies;
*) Dramatically improved performace of the port(1) command's Portfile level actions like "file", "dir", "work" and "url"


# For Portfile writers:

*) Added more compiler suites as options to the 'configure.compiler' Portfile option;
*) Added 'configure.fflags' 'configure.fcflags' 'configure.f90flags' Portfile options for Fortran based ports;
*) Added 'configure.javac' and 'configure.classpath' Portfile options for Java ports;
*) Added 'configure.objc' 'configure.objcflags' Portfile options for Objective-C based ports;
*) Added 'build.nice' and 'build.jobs' Portfile options for parallel builds and build prioritizing;
*) Added 'startupitem.netchange' boolean flag Portfile option for generated startup scripts;
*) Added a "lint" target to the port(1) command, for Portfile verification and beautification;
*) Added Portfile group code for Python 3.0 based ports and deprecated the plain 'python' group code;
*) Added generic GNU livecheck rules;
*) The "x86" platform has been normalized as "i386";
*) Added a 'use_parallel_build' Portfile option for declaring if a particular port can be built in parallel through make's -j flag,
    defaulting to no;
*) Added 'configure.awk', 'configure.bison', 'configure.pkg_config', 'configure.pkg_config_path' Portfile options to point to the
    relevant programs/paths to use;
*) Added a 'extract.mkdir' Portfile option to better deal with so-called "tar bombs";


# For MacPorts scripting:

*) Moved the 'ui_isset' and 'global_option_isset' Tcl procedures for testing of the UI and global options to the macports1.0 API
    sparing its clients from having to implement them;
*) Improved defaults for implicit ui_prefix and ui_channels behaviour at the macports1.0 layer;


# Miscellaneous:

*) Added MacPorts-configure time checks for Mac OS X and Xcode versions and warnings for old versions;
*) Added a 'user-agent' parameters to our libcurl-based fetching of sources for sites that require a user agent;
*) 'livecheck' regular expressions are now checked against each entry in the listed master_site in the Portfile;
*) Fixed regexp in livecheck code to work when there is both a tag and a subdir in the mirror uri;
*) Improved the integrated "daemondo" program to better handle the death of startupitem-based programs;
*) Added a "--restart-wait=n" argument to the integrated "daemondo" program to control the number of seconds to wait during restart of
    the process it is monitoring, defaulting to 3;
*) Enabled building of our objc bridge against GNUStep on platforms other than Mac OS X;
*) Added support for packing of MacPorts itself on FreeBSD and Fedora platforms;
*) Added SourceForge.jp to our list of SourceForge-based mirrors for sources fetching;
*) Added http mirror sites for the postgresql mirrors list;
*) Added the ftp://ftp.gnu.org/old-gnu/ mirror to the GNU mirrors list;
*) Fixed a bug by which paths with embedded spaces would cause the "dp2mp-move" upgrade code to fail when trying to find user-specific
    'macports.conf' files;
