
0.3:

    * New FS implementations:
        * FTPFS:   access a plain old FTP server
        * S3FS:    access remote files stored in Amazon S3
        * RPCFS:   access remote files using a simple XML-RPC protocol
        * SFTPFS:  access remote files on a SFTP server
        * WrapFS:  filesystem that wraps an FS object and transparently
                   modifies its contents (think encryption, compression, ...)
        * LazyFS:  lazily instantiate an FS object the first time it is used
        * ReadOnlyFS:   a WrapFS that makes an fs read-only
    * Ability to expose FS objects to the outside world:
        * expose.fuse:    expose an FS object using FUSE
        * expose.xmlrpc:  expose an FS object a simple XML-RPC protocol
        * expose.sftp:    expose an FS object SFTP
        * expose.django_storage:  convert FS object to Django Storage object
    * Extended attribute support (getxattr/setxattr/delxattr/listxattrs)
    * Change watching support (add_watcher/del_watcher)
    * Insist on unicode paths throughout:
        * output paths are always unicode
        * bytestring input paths are decoded as early as possible
    * Renamed "fs.helpers" to "fs.path", and renamed the contained functions
      to match those offered by os.path
    * fs.remote:  utilities for implementing FS classes that interface
                  with a remote filesystem
    * fs.errors:  updated exception hierarchy, with support for converting
                  to/from standard OSError instances
    * Added cache_hint method to base.py
    * Added settimes method to base implementation
    * New implementation of print_fs, accessible through tree method on base class


0.4:

    * New FS implementations (under fs.contrib):
        * BigFS:    read contents of a BIG file (C&C game file format)
        * DAVFS:    access remote files stored on a WebDAV server
        * TahoeLAFS:  access files stored in a Tahoe-LAFS grid
    * New fs.expose implementations:
        * dokan:   mount an FS object as a drive using Dokan (win32-only)
        * importhook:  import modules from files in an FS object
    * Modified listdir and walk methods to accept callables as well as strings
      for wildcards.
    * Added listdirinfo method, which yields both the entry names and the
      corresponding info dicts in a single operation.
    * Made SubFS a subclass of WrapFS, and moved it into its own module at
      fs.wrapfs.subfs.
    * Path-handling fixes for OSFS on win32:
        * Work properly when pointing to the root of a drive.
        * Better handling of remote UNC paths.
        * Add ability to switch off use of long UNC paths.
    * OSFSWatchMixin improvements:
        * watch_inotify:  allow more than one watcher on a single path.
        * watch_win32:  don't create immortal reference cycles.
        * watch_win32:  report errors if the filesystem does't support
                        ReadDirectoryChangesW.
    * MountFS: added support for mounting at the root directory, and for
      mounting over an existing mount.
    * Added 'getpathurl' and 'haspathurl' methods.
    * Added utils.isdir(fs,path,info) and utils.isfile(fs,path,info); these
      can often determine whether a path is a file or directory by inspecting
      the info dict and avoid an additional query to the filesystem.
    * Added utility module 'fs.filelike' with some helpers for building and
      manipulating file-like objects.
    * Added getmeta and hasmeta methods
    * Separated behaviour of setcontents and createfile
    * Added a getmmap to base
    * Added command line scripts fsls, fstree, fscat, fscp, fsmv
    * Added command line scripts fsmkdir, fsmount
    * Made SFTP automatically pick up keys if no other authentication
      is available
    * Optimized listdir and listdirinfo in SFTPFS
    * Made memoryfs work with threads
    * Added copyfile_non_atomic and movefile_non_atomic for improved performance of multi-threaded copies
    * Added a concept of a writeable FS to MultiFS
    * Added ilistdir() and ilistdirinfo() methods, which are generator-based
      variants of listdir() and listdirinfo().
    * Removed obsolete module fs.objectree; use fs.path.PathMap instead.
    * Added setcontents_async method to base
    * Added `appdirfs` module to abstract per-user application directories

0.5:

    * Ported to Python 3.X
    * Added a DeleteRootError to exceptions thrown when trying to delete '/'
    * Added a remove_all function to utils
    * Added sqlitefs to fs.contrib, contributed by Nitin Bhide
    * Added archivefs to fs.contrib, contributed by btimby
    * Added some polish to fstree command and unicode box lines rather than ascii art

0.5.1:

    * Fixed a hang bug in readline
    * Added copydir_progress to fs.utils

0.5.2:

    * Added utils.open_atomic_write

0.5.3:

    * Implemented scandir in listdir if available
    * Fix for issue where local.getpreferredencoding returns empty string


