aria2 1.17.1
============

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

This release adds large file support for Android build and libuv
support for event polling mechanism. AppleTLS now supports Snow
Leopard (10.6). The experimental libaria2 C++ library API was added.

Changes
-------

* Add code to detect rst2html.py or rst2html

* AppleTLS: Properly support Snow Leopard (10.6)

  Tested on 10.6.8 + XCode 4.2 (llvm-gcc-4.2, clang)

  Contributed by Nils Maier

* Enable multicast loopback in BitTorrent local peer discovery

* Enable TLS1.1 with gnutls build

* Support off64_t for Android build

  Android NDK R8e does not provide ftruncate64, but bionic has the
  assembler code to access kernel function. We borrowed those
  ftruncate64.S files from android source code repository.  It turns
  out that x86 asm.h in NDK R8e is also broken, so latest asm.h was
  also borrowed.

* Check zlib availability usin AC_CHECK_LIB

  This is workaround for zlib 1.2.3 which does not come with
  pkg-config file.

* Treat response is completed if EOF is received before streamFilter
  completes

  This fixes the error with web server which has buggy chunked
  encoding.

* uitos: Fix off-by-one error bug

* Add configure support for linking tcmalloc_minimal and/or jemalloc

  Both tcmalloc_minimal and jemalloc outperform the native malloc
  implemention on Windows (MSVCRT) in terms of committed memory
  consumption (~-30%) and performance (e.g. far less page faults,
  ~-60%), depending, of course, on the actual workload.  The longer
  the download queue, the bigger the impact ;)

  On *nix the picture is a little different... tcmalloc usually still
  outperforms the native malloc implementation, but not that
  significantly than on Windows. jemalloc however is only marginally
  better than recent native Linux implementations, while it is already
  used by some BSD as the native allocator.

  tcmalloc is part of gperftools and very mature and tested by now. It
  doesn't work on OSX in the default configuration, however.
  http://code.google.com/p/gperftools/

  jemalloc is the default allocator at least on FreeBSD and NetBSD and
  used in Firefox.  http://www.canonware.com/jemalloc/index.html

  Contributed by Nils Maier

* Close GZipFiles in the d'tor

  Contributed by Nils Maier

* Add libaria2, C++ library interface to aria2

  The libaria2 is a C++ library and offers the core functionality of
  aria2. The library takes care of all networking and downloading
  stuff, so its usage is very straight forward right now. See
  libaria2ex.cc in examples directory to see how to use API. By
  default, libaria2 is not built. See libaria2 section in README to
  how to enable it.

  The APIs in this release is considered experimental.

* Add missing check for sigaction

* Fix cached data is not flushed when downloaded data is less than
  16KiB

* LibUV: Implement LibuvEventPoll

  LibUV event will use the best available polling method on a system,
  kind of like aria2 does already with the different *EventPoll
  implementations.  However, libuv may support different/newer polling
  mechanisms; for example on Windows it will use IO Completion Ports
  which are superior to select() ;)

  Contributed by Nils Maier



aria2 1.17.0
============

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

This release adds Mac OS X native SSL/TLS library support.  The IPv6
asynchronous DNS is enabled by default and A/AAAA lookups are done in
parallel. The simple Happy Eyeballs algorithm was implemented to
mitigate long timeout when connecting to IPv6 host on dual-stack host.
--save-session option only saves the options specified by command-line
or RPC.

Changes
-------

* Updated Russian manual

  Contributed by ITriskTI

* Updated Portuguese manual

  Contributed by Gilberto dos Santos Alves

* Append --static to pkg-config arguments when ARIA2_STATIC=yes

* Save options directly specified for download in --save-session

  This change makes --save-session save only options specified for
  download, more specifically, options in command-line, -i file and
  via RPC. The other options from conf file and default values are not
  saved.  This will drastically decrease the size of session file.

* Save URI returned only from FileEntry::getRemainingUris()

  The currently used URIs are inserted back into remaining URI list in
  FileEntry::putBackRequest(), which overlaps to some of the URIs in
  spentUris_. If we save spent URIs, each time save is performed, the
  number of URIs are increased due to this overlap. This change fixes
  this bug.

* Print linked 3rd party libraries with version in `aria2c -v` output

* AppleTLS: Support credentials via KeyChain fingerprints

  Contributed by Nils Maier

* AppleTLS: Implement AppleTLS and Apple Message Digest

  Contributed by Nils Maier

* Use info level log for system trusted ca imports failure

  This is because on some platforms (gnutls on cygwin for example),
  library always fails for this function and getting ERROR every time
  aria2c invoked is too hard.

* Don't add Windows native DLLs for Cygwin build

* Remove deprecated options: --enable-direct-io and --metalink-servers

* Deprecate --enable-async-dns6

  The IPv6 asynchronous name resolver is enabled if the host has at
  least one interface with IPv6 address configured (the loopback
  address will not be counted), which is roughly the same behaviour of
  the standard getaddrinfo(3). To disable IPv6 asynchronous name
  resolver, use --disable-ipv6.

* Fix uninitialized UDPTrackerClient::numWatchers_

* Implement simple Happy Eyeballs for HTTP/FTP downloads

* Parallel A and AAAA record lookups with c-ares

  But we don't wait for AAAA query response if A query response has
  been received.  If we got IPv4 lookup response, we don't wait for
  IPv6 lookup response. This is because DNS server may drop AAAA query
  and we have to wait for the long time before timeout. We don't do
  the inverse, because, based on todays deployment of DNS server,
  almost all of them can respond A query just fine.
