diff --git a/NEWS b/NEWS index 3e83c332..8e7a4036 100644 --- a/NEWS +++ b/NEWS @@ -1,182 +1,135 @@ -aria2 1.17.1 +aria2 1.18.0 ============ 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. +This release changes the default disk cache size to 16 MiB. To change +the default size, --with-disk-cache configure option was added. Now +used URIs are also saved by --save-session option. The control file is +now always saved if --force-save is given. The ctrl-c handling on +Mingw build was improved. The internal intl library is no longer +supplied. From this release, C++11 compiler is required to build aria2 +executable. For gcc, at least 4.6.3 is required. Changes ------- -* Add code to detect rst2html.py or rst2html +* Use AM subdir-objects -* AppleTLS: Properly support Snow Leopard (10.6) + Doing so in AM_INIT_AUTOMAKE seems to be the most compatible way of + doing so. - Tested on 10.6.8 + XCode 4.2 (llvm-gcc-4.2, clang) + Closes GH-120 - Contributed by Nils Maier +* AM_SILENT_RULES([yes]) with backwards-compatiblity -* Enable multicast loopback in BitTorrent local peer discovery + Supported since automake-1.11. There is no point in having the very + verbose compile stuff running about, which cannot even silenced + properly with `make -s` by default. Otherwise, `make V=1` or + `--disable-silent-rules` are your friends -* Enable TLS1.1 with gnutls build +* Fix automake-1.14 am_aux_dir -* Support off64_t for Android build + AC_USE_SYSTEM_EXTENSIONS will cause AC_PROG_CC, which is overridden + by automake-1.14, which will then init (part) of automake, in + particular am_aux_dir expansion, which in turn relies on ac_aux-dir, + which is not initialized at this point, and thus: certain doom (or + fun, depending on your POV and mood :p) - 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. + Hence call AC_USE_SYSTEM_EXTENSIONS only after + AM_INIT_AUTOMAKE. This, of course, caused a lot of related macro + shuffling. -* Check zlib availability usin AC_CHECK_LIB + Tested against automake-1.10 (OSX Lion/XCode version) and + automake-1.14 (homebrew version) - This is workaround for zlib 1.2.3 which does not come with - pkg-config file. +* Require external gettext for --enable-nls -* Treat response is completed if EOF is received before streamFilter - completes + And stop using the internal flavor with ./intl - This fixes the error with web server which has buggy chunked - encoding. +* Make AX_CXX_COMPILE_STDCXX_11 test for -stdlib=libc++ via std::shared_ptr -* uitos: Fix off-by-one error bug + The clang shipped with OSX XCode and clangs not build enabling + libcpp, will default to the libstdc++ headers and lib installed on + the system. In the OSX case, that libstdc++ is the one bundles with + gcc-4.2, which is far too old to provide all required C++11 types, + such as std::shared_ptr. Hence, the C++11 check should try to + compile a program with a C++11 type and try -stdlib=libc++ if the + default lib fails to compile said program. -* Add configure support for linking tcmalloc_minimal and/or jemalloc +* Make the configure check for C++11 compiler mandatory - 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 ;) + Remove stray "dnl", so that mandatory actually works with (my) + autoreconf. - 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. +* Always build doc/manual-src - 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/ + Should sphinx-build be not available AND the man file not be prsent, + then just "touch" it into existence (and warn about that) - jemalloc is the default allocator at least on FreeBSD and NetBSD and - used in Firefox. http://www.canonware.com/jemalloc/index.html +* Win: Use SetConsoleCtrlHandler for SIGINT/SIGTERM - Contributed by Nils Maier +* Implement a simple resource lock (threading) -* Close GZipFiles in the d'tor + In this initial implementation Locks are no-ops on platforms other + than Windows. - Contributed by Nils Maier +* Check for sphinx-build during configure -* Add libaria2, C++ library interface to aria2 +* Add --with-disk-cache configure option - 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. + Enables packagers more fine grained control over the default value + without having to mess with config files. - The APIs in this release is considered experimental. + See GH-115 -* Add missing check for sigaction +* Change defaults: Enable 16M disk cache by default. -* Fix cached data is not flushed when downloaded data is less than - 16KiB +* Always save control file if --force-save is given -* LibUV: Implement LibuvEventPoll +* Set log level DEBUG for unittests - 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() ;) +* Check that C++ compiler supports override keyword - Contributed by Nils Maier + If the compiler supports override, define CXX11_OVERRIDE as + override, otherwise define it as empty. Use CXX11_OVERRIDE instead + of override. - +* AppleTLS: Fix MessageDigestImpl -aria2 1.17.0 -============ +* AppleTLS: Fix session CFRelease stuff -Release Note ------------- +* Use AX_CXX_COMPILE_STDCXX_11 macro to detect C++0x/C++11 support in + compiler -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. +* Require -std=c++11 and use std::shared_ptr instead of SharedHandle -Changes -------- +* Join URI on redirect -* Updated Russian manual +* Send HAVE message to the peer which the piece is downloaded from - Contributed by ITriskTI + Historically, aria2 did not send HAVE message to the peer which the + piece is coming from, thinking it is obvious that the peer knows we + have the piece. But it is not obvious if one piece is download from + more than 1 peers (e.g., end game mode). So it is better to send + HAVE to all peers connected. -* Updated Portuguese manual +* Improvements to --follow-torrent=false documentation. - Contributed by Gilberto dos Santos Alves + Patch from gt -* Append --static to pkg-config arguments when ARIA2_STATIC=yes +* SessionSerializer: Truly unique URIs -* Save options directly specified for download in --save-session + Before, only spent uris where sanitized not to be contained within + remaining uris. Change this so that each uri in the + union(remaining,spent) get saved once at most. The order of the + uris will won't be changed, with remaining uris going first followed + by spent uris. - 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. + Also avoid copying the uri std::strings around during dupe checking, + usually resulting in better performance regarding CPU and space. -* Save URI returned only from FileEntry::getRemainingUris() +* Make getOption RPC method return option for stopped downloads - 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. +* SessionSerializer: Save spent URIs as well as remaining ones