aria2 1.12.1
============

Release Note
------------

This release adds RFC 6249 Metalink/HTTP support. Current
implementation only uses rel=duplicate links.  --enable-direct-io
option was deprecated because of performance issue.  Since recent
GnuTLS uses libnettle as default instead of libgcrypt, this release
added initialization code for libgcrypt.

Changes
-------

 * Initialize libgcrypt.  We relied initialization of libgcrypt on
   gnutls_global_init(), but recent change in gnutls, which changes
   default crypto backend from libgcrypt to libnettle, leaves
   libgcrypt uninitialized if it uses libnettle as backend(and this is
   likely because libnettle is chosen by default). To fix this issue,
   we simply initialize libgcrypt on our own.

 * Throw exception with error message if gnutls_global_init() failed.

 * Implemented Metalink/HTTP.  Link header fields from first Metalink
   server is utilized as described in rfc6249. We only set digest from
   Digest header field to DownloadContext only when PieceStorage is
   not initialized(in other words, before file size is known). After
   PieceStorage is initialized, Digest header field is used to check
   the value is the same in digest in DownloadContext.  Current
   implementation only handles rel=duplicate.

 * Remove Metalink content-type after first server response.  We don't
   accept Metalink content-type after first server response.

 * Updated Russian translation of aria2 man page.  Thanks to ITriskTI
   for translation.

 * Fixed the bug due to dangling pointers in RequestGroup.
   RequestGroup holds a poitner to btRuntime_ and peerStorage_. After
   removing them from BtRegistry, we failed to set 0 to them.  When
   program access them, it goes undefined world, such as random crash.
   We found this bug when pasuing download and valgrind warned memory
   corruption.

 * Added log message to clarify error for BitTorrent server socket.

 * Added #deprecated help tag.

 * Removed deprecated options: --enable-xml-rpc, --xml-rpc-listen-all,
   --xml-rpc-listen-port, --xml-rpc-max-request-size, --xml-rpc-user,
   --xml-rpc-passwd.

 * Removed use of O_DIRECT because of performance issue.  Deprecated
   --enable-direct-io option.

 * Increased the maximum number of in-flight request in BitTorrent.

 * Added --log option to aria2rpc



aria2 1.12.0
============

Release Note
------------

This release adds --pause option which makes download paused state
immediately when added. If --save-session is used, aria2 will save
paused download with --pause option. aria2.getGlobalStat RPC method
was added. It returns global statistics such as overall download
speed.  This release also fixes the bug that RPC request fails if it
is compressed. aria2 now won't save removed download in --save-session
text file.  --file-allocation=falloc now works in MinGW32 build. This
only works with NTFS. Russian translation of man page and HTML manual
was added.  We added more command line options in this release. See
Changes for details.

Changes
-------

 * Use ServerStat to find faster server. This is useful when several
   downloads were started in parallel, but one download is slow and
   the other downloads have completed. Then aria2 knows which servers
   are fast by the results of completed downloads, and check the
   available URIs of slow downloads to see faster server is available
   there. If so, use it instead of current slow one to make download
   faster.

 * Added Russian translation of man page and HTML manual contributed
   by ITriskTI.

 * Added aria2.getGlobalStat RPC method.  It returns overall
   download/upload speed and the number of active/stopped/waiting
   downloads.

 * Added --pause option.  This option pauses download after
   added. This option is effective only when --enable-rpc=true is
   given.  When --save-session option is used and there are paused
   downloads, they are saved with --pause=true so that it will become
   paused state when the session is recovered.

 * Abort aria2 if it could not setup any RPC server.

 * Added --truncate-console-readout option.  This option truncates
   console readout to fit in a single line.  This is default. Give
   false value to this option to tell aria2 not to truncate console
   readout.

 * Cache and reuse RpcMethod objects.

 * Allowed missing params in system.multicall RPC method.

 * Added --stream-piece-selector option.  This option specifies piece
   selection algorithm used in HTTP/FTP download. Piece means fixed
   length segment which is downloaded in parallel in segmented
   download. If 'default' is given, aria2 selects piece so that it
   reduces the number of establishing connection. This is reasonable
   default behaviour because establishing connection is an expensive
   operation.  If 'inorder' is given, aria2 selects piece which has
   minimum index. Index=0 means first of the file. This will be useful
   to view movie while downloading it. --enable-http-pipelining option
   may be useful to reduce reconnection overhead.  Please note that
   aria2 honors --min-split-size option, so it will be necessary to
   specify a reasonable value to --min-split-size option.

 * Removed unnecessary template parameter from std::make_pair call.
   The patch was contributed from Dan Fandrich.

 * Implemented fast file allocation in MinGW32 build.  We use
   SetFilePointerEx and SetEndOfFile to allocate extents.  This only
   works with NTFS. To enable this feature, --file-allocation=falloc
   must be given.

 * Only percent-encode non-printable ASCII chars(0x00-0x1f), non-ASCII
   chars(>0x7f), ' ', '"', '<' and '>' for URIs supplied by user and
   remote server(usually Location header field).

 * Don't throw exception if Z_BUF_ERROR is encountered in GZipEncoder.
   This fixed the bug that compressed RPC request failed.

 * Don't save removed download in --save-session text file.  Now stat
   column of removed downloads in Download Results is 'RM' instead of
   INPR.
