v1.0:
    - Manifest support has been added.  This feature will generate a manifest
      which enables more rigorous checksums for model inputs and greater
      reproducibility of runs.
    - `PAYU_REPRODUCE` environment variable denotes a reproducible run using
      manifests.
    - Job statistics and environment variables are now saved as output files.
      Several new environmental variables have also been added to facilitate
      logging of jobs.  This information is also logged as
    - Minimal implementation of a Scheduler class.  Currently only bare support
      for PBS.
    - Core dumps can be explicitly enabled using the `coredump` config flag.

    Bugfixes:
    - Many calendar calculations were updated to use explict integer division.
    - Several issues related to MITgcm calendar and time interval support have
      been fixed and improved.

v0.11.2:
   - Payu collation jobs launched by an initial payu job would sometimes fail
     if the LD_LIBRARY_PATH was not set correctly (usually in a `payu-run`
     job).  We now prepend the executable's LD_LIBRARY_PATH before collation.

   - `runlog: False` was not correctly handled due to changes in the Runlog
     object, and has been fixed.  Thanks to Nic Hannah for reporting.

   - Several OSError checks throughout the module were not being handled
     correctly in Python 3, where most of these have been replaced by various
     more specific exceptions.  We now check for the more generic
     EnvironmentError and handle the error code as before.  Thanks to Navid
     Constantinou for reporting.

   - The f90nml parser used by MITgcm was not correctly removing comments from
     `data.mnc` config files.  We now use the MITgcm-configured parser.

   - Userscripts that were not executable but required python may have failed
     due to a generic `python` execution.  We now use the same executable as
     the one used to launch Payu.

   - mnctools is now an optional dependency to be installed when MITgcm
     collation support is needed.  This will also install numpy and netCDF4,
     which can be a significant burden if unneeded, and why this is optional.

   - globbing support for netCDF files in mppnccombine-fast

v0.11.1:
   - PYTHONPATH is now passed directly to the next job.  Previously, we tried
     to derive this variable from `sys.path` after removing all the default
     paths, but the remainder was virtually identical to PYTHONPATH.

   - Runscripts are now constructed by setuptools via `entry_point` rather than
     the explicit scripts in the `bin` directory.  This was done in part to
     accommodate conda environments on NCI.  Thanks to Scott Wales for
     outlining this method.

v0.11:
   - The "reversion" technique of relaunching payu to a fixed version has been
     removed, and we now use the version specified at execution.

   - Payu is now nominally compatible with Python 2.6, 2.7, and most newer 3.x
     releases.  Minor issues are expected, and to be fixed in later versions.
     2.6 support:
      - Implicit string arguments replaced with explicit parameters
      - backport of `subprocess.check_output` (public code by Eduardo Felipe)
      - Dictionary comprehensions have been removed
     3.x support:
      - `multiprocessing.dummy` is now replaced with `multiprocessing` in FMS
        collation support

     Note: Much of the 2.6 support can be reversed when we've officially
     stopped using it.

   - Payu runtime environment is now strictly defined at execution, and no
     longer relies on environment modules for setup. Includes the following:
      - Explicit paths to the python executable, rather than relying on `PATH`
      - Safer generation of PYTHONPATH to include active version of Payu when
        installed outside of default `sys.path`.
      - Explicit tracking of payu command line tools
         (Note: For now, this assumes a common directory for all tools)
      - Python and Payu modules are no longer loaded within payu
         (Note: PBS is still loaded for queuing support)
      - `LD_LIBRARY_PATH` is constructed and explicitly set for Python runtime
      - The `PAYU_MODULENAME` and `PAYU_MODULEPATH` environment variables have
        been removed

   - Simple test automation using Travis CI.  The environment is still
     incomplete and only a few command line tests are included, but it includes
     a functional Torque (PBS) server for future job submission tests.

   - Minor documentation update (thanks to Navid Constantinou for reporting)

   Bugfixes

   - `runlog: True` no longer causes a runtime crash, due to conflicts with
     the complete `runlog` config dictionary tree.
     (Thanks to Paul Spence for reporting)

   - `payu collate -d $DIR` no longer uses $DIR as `jobname` when this entry is
     absent from `config.yaml`.  We now default to the directory name itself,
     rather than the full path.

     We have also added support for a `jobname` record inside the full
     `collate:` config dictionary tree.

   - `dateutil` is now identified as a Payu dependency


v0.10:
    Aidan Heerdegen:
        - collate config in `config.yaml` replaces `collate_*` config with
          subkeys under `collate:`
        - Support for Scott Wales' `mppnccombine-fast` collation
        - Multithreaded collate errors are gathered and reported more
          thoroughly
        - `cli.get_config` was removed and calls replaced with
          `fsops.read_config`
    Marshall Ward:
        - Minor usability improvements to GitHub experiment sync
        - MOM (temporarily) produces `log` directories to support OM2 logging

v0.9.1:
    - Reverting the optional_config_files directory chance back to work_input,
      since it was breaking MOM6.

v0.9:
    - Top-level models (i.e. models with submodels) are now handled as
      independent models, with their own configuration elements (e.g. input
      directory, etc.)  This allows configuration files to be shared more easily
      across submodels.

      Much of this work is ongoing, and this should be seen as a progressive
      step, rather than the final product.

    - `ocean_mask_table` has been added to the MOM driver as an optional config
      file.

    - Optional configuration files are now (perhaps temporarily) copied to the
      `work_input_path` rather than `work_path`.  This is solely to accommodate
      the `ocean_mask_table` in ACCESS-OM2.  This probably needs to be
      restructured better in the future.

    - Missing restart files in the old ACCESS are now handled more safely.  If
      a restart file is missing, it will conditionally check the prior output.

    - CICE output file permissions are correctly set to be user-writeable.

    - Hyperthreading is now correctly removed from collation jobs.  There was
      some poor handling of the optional space betweel `-l` and the flag
      contents which has been fixed.

    New model support:
      - YATM
      - ACCESS-OM2

        NOTE: The ACCESS-OM2 driver currently overrides most of the intrinsic
        Payu driver structure, and will probably be rewritten at some stage.

    - The largely unused `exe_prefix` config setting was basically unusable
      since it was not passed to the model object.  This change now passes it
      to the model object, which handles the executable command.

v0.8.1:
    - Environment variable corruption of bash functions by PBS is now only
      applied if the `BASH_FUNC_module()` variable is present.  This prevents
      failing under tcsh.
    - Numerical job names should now work correctly
    - Bash-like environment variable substitution can now be used in MPI flags.
      This feature may be extended to other components if necessary.
    - Multiple runs per PBS submission now supported (`runspersub`)
    - Safer import of f90nml
    - ACCESS-OM2:
        - Necessary configuration files are now copied to the restart
          directory.
        - CICE namelists now search in the prior output path if absent from the
          prior restart path
        - Safer CICE restart cleanup
    - FMS:
        - Collation by mppnccombine will now report a nonzero error code if any
          of its pool threads fails, which will halt resubmission.

v0.8:
    - Remote synchronization of run experiment with github repository
    - Error logs are now captured and archived separately from successful runs
    - PBS and error logs are now saved in the archive directory
    - Basic OpenMP support
    - FMS collation default flag update (netCDF4)
    - Error code reporting from FMS collation
    - OASIS namcouple cleanup (Nic Hannah)

    New dependencies:
        - requests[security] (for github sync support)

    New model support:
        - Q-GCM
        - CICE 5

    Bug fixes:
        - Calendar leap year support (Nic Hannah)
        - Payu module pathname
        - Protect environment variables with '\n' from corruption by PBS Pro
        - CICE restart cleanup (Nic Hannah)

v0.7:
    - `payu setup` and `payu archive` commands now available
      (c/o Aidan Heerdegen)
    - Basic support for NEMO
    - `platform` configuration now available to set per-node CPU and RAM
    - Enable Lustre IO striping with `stripedio` config flag
    - Git-based logging of job submissions is now enabled by default
    - Basic (and incomplete) testing framework now available
    - Several bugfixes related to repeatable runs and submodel testing

v0.6:
    - Partially committed node flags (`npernode`) updated to new syntax
    - Non-directories in archive (e.g. symbolic links) are not deleted
    - Improved single-core MITgcm support
    - MITgcm runtimes can now be set in time, rather than just timesteps
    - `payu build` now ignores user .gitconfig settings
    - Some profiler cleanup (openspeedshop moved to Profiler class)
    - Minimal WAVEWATCH III support
    - A non-functional test suite was started, please add to it!

v0.5:
    - Multithreaded collation (c/o Aidan Heerdegen)
    - Improved CICE and ACCESS support (c/o Nicholas Hannah)
    - Explict output collation path (c/o Aidan Heerdegen)
    - Default jobname is not set to control path directory name
    - repeat runs (repeat: True) now delete any restart files
    - Profiler driver class introduced (not yet adopted for all)
    - Documentation update (incomplete)

v0.4.1:
    - MOM: mppnccombine bugfix for land masked runs
    - We now save the last N restarts, rather than every Nth plus any inbetween
    - MOM6 support (Angus Gibson)
    - Runtimes for various models can now be set in seconds
    - Exit code error message clarification
    - ACCESS default repository change (CWSL)
    - setuptools default support
    - wheel install support

v0.4:
    - Initial setup of model and profiler driver framework
    - `env` and `mpirun` config.yaml values can now safely be unset
    - Bugfix of `payu sweep` of collate logs
    - ACCESS repeat_run bugfix

v0.3.2:
    - TODO

v0.3:
    - TODO

v0.2:
    - TODO

v0.1:
    - TODO
