                                                     -*- coding: utf-8 -*-
Changes for APR 2.0.0

  *) configure: Prefer posix name-based shared memory over SysV IPC.
     [Jim Jagielski]

  *) configure: Add --disable-sctp argument to forcibly disable SCTP
     support, or --enable-sctp which fails if SCTP support is not
     detected.  [Lubos Uhliarik <luhliari redhat.com>, Joe Orton]

  *) apr_dbm: Add dedicated apr_dbm_get_driver() function that returns
     details of the driver selected and any error encountered. Add the
     apr_dbm_open2() function that references the driver. [Graham Leggett]

  *) apr_mmap_t members pstart, psize and poffset are used internally only
     on Windows, remove them.  [Yann Yalvic]

  *) Align apr_mmap()ing offset to a page boundary. [Yann Ylavic]

  *) APR's configure script uses AC_TRY_RUN to detect whether the return type
     of strerror_r is int. When cross-compiling this defaults to no.

     This commit adds an AC_CACHE_CHECK so users who cross-compile APR may
     influence the outcome with a configure variable. [Sebastian Kemper
     <sebastian_ml gmx net>]

  *) Add a cache check with which users who cross-compile APR
     can influence the outcome of the /dev/zero test by setting the variable
     ac_cv_mmap__dev_zero=yes [Sebastian Kemper <sebastian_ml gmx net>]

  *) apr_crypto_commoncrypto: Remove stray reference to -lcrypto that
     prevented commoncrypto being enabled. [Graham Leggett]

  *) Add --tag=CC to libtool invocations. PR 62640. [Michael Osipov]

  *) apr_thread_exit() is now a void function.  [Joe Orton]

  *) apr_crypto_openssl: Remove unused link to the ssl library.
     [Graham Leggett]

  *) apu_dso_init: Fix pool lifetime and introduce a reference count.
     apu_dso_init() can now be called more than once (from multiple
     modules) and from unrelated pools (usually seen in unit tests).
     [Graham Leggett]

  *) apr_crypto_openssl: use OPENSSL_init_crypto() to initialise OpenSSL
     on versions 1.1+. [Graham Leggett]

  *) Fixed: apr_get_oslevel() was returning APR_WIN_XP on Windows 10

  *) Windows platform: Use the native XML parser implementation (XmlLite)
     by default instead of libxml2 and expat. [Ivan Zhakov]

  *) Fix handle leak in the Win32 apr_uid_current implementation.
     PR 61165. [Ivan Zhakov]

  *) apr_rwlock_t: Use native Slim Reader/Writer (SRW) locks on Windows.
     PR 51360. [Ivan Zhakov]

  *) Fix possible race condition in the Win32 apr_rwlock_t implementation.
     PR 45455. [Ivan Zhakov]

  *) apr_thread_once: Fix problem that apr_thread_once can return before
     the other thread completes initialization on Windows.

  *) Windows platform: Remove support for Windows 2000, XP, Vista. The minimum
     supported OS versions are now Windows 7 / Windows Server 2008 R2.

  *) apr_file_info: [Win32 only] Treat only "name surrogate" reparse points
     as symlinks, and not other reparse tag types. PR47630
     [Oleg Liatte <olegliatte gmail.com>]

  *) Test %ld vs. %lld to avoid compiler emits using APR_OFF_T_FMT, in the
     case of apparently equivilant long and long long types. [William Rowe]

  *) Recognize APPLE predefined macros as equivilant to DARWIN. [Jim Jagielski]

  *) Signals: Allow handling of SIGUSR2 in apr_signal_thread. [Yann Ylavic]

  *) Atomics: Support for 64bit ints. [Jim Jagielski]

  *) apr_jose: Add support for encoding and decoding of JSON Object
     Signing and Encryption messages as per RFC7515, RFC7516, RFC7517
     and RFC7519. [Graham Leggett]

  *) Add apr_errprintf() as a convenience function to create and
     populate apu_err_t. [Graham Leggett]

  *) apr_crypto: Add support for digest functions, with hashing, signing
     and verifying. [Graham Leggett]

  *) apr_json: Add support for encoding and decoding RFC8259 JSON.
     [Moriyoshi Koizumi <mozo mozo jp>]

  *) Add the apr_encode_* API that implements RFC4648 and RFC7515
     compliant BASE64, BASE64URL, BASE32, BASE32HEX and BASE16
     encode/decode functions. [Graham Leggett]

  *) Add apr_reslist_acquire_ex() which allows to control acquire order,
     that is LIFO (default) or FIFO.  [Yann Ylavic]

  *) apr_file_write: Optimize large reads from buffered files on Windows.
     [Evgeny Kotkov]

  *) Add apr_pool_tag_get to retrieve the pool tag name.  [Joe Orton]

  *) Add apr_sockaddr_zone_set, apr_sockaddr_zone_set to set and retrieve
     the zone for link-local IPv6 addresses.  [Joe Orton]

  *) apr_sockaddr_equal: Compare link-local IPv6 addresses with different
     zones as not equal.  [Joe Orton]

  *) apr_sockaddr_ip_getbuf, apr_sockaddr_ip_get: Append "%zone" for
     IPv6 link-local addresses.  [Joe Orton]

  *) Don't seek to the end when opening files with APR_FOPEN_APPEND on Windows.
     [Evgeny Kotkov <evgeny.kotkov visualsvn.com>]

  *) Fix a deadlock when writing to locked files opened with APR_FOPEN_APPEND
     on Windows. PR 50058.
     [Evgeny Kotkov <evgeny.kotkov visualsvn.com>]

  *) apr_file_write: Optimize large writes to buffered files on Windows.
     [Evgeny Kotkov <evgeny.kotkov visualsvn.com>]

  *) apr_file_trunc: Truncating a buffered file could add unexpected
     data after the truncate position. PR 51017.
     [Evgeny Kotkov <evgeny.kotkov visualsvn.com>]

  *) apr_file_trunc: Fix an issue where reading from a buffered file
     after truncate could return stale data from the buffer.
     [Evgeny Kotkov <evgeny.kotkov visualsvn.com>]

  *) apr_allocator, apr_pools: Add apr_allocator_page_size() and
     apr_allocator_min_order_set() to respectively get the (system's) page size
     in use and set the minimum allocation size for an allocator (expressed in
     2^order pages).  [Yann Ylavic]

  *) apr_file_gets: Optimize for buffered files on Windows.
     [Evgeny Kotkov <evgeny.kotkov visualsvn.com>]

  *) apr_crypto: avoid excessive iteration in bcrypt hash.
     [Hanno Böck <hanno hboeck.de>]

  *) apr_siphash: Implement keyed hash function SipHash.  [Yann Ylavic]

  *) apr_atomic: change the API of apr_atomic_casptr() apr_atomic_xchgptr()
     functions to take a volatile pointer to void instead of pointer to
     volatile void.  [Yann Ylavic]

  *) apr_crypto: Add apr_crypto_key() function which supports keys
     generated from a passphrase or a raw secret provided by the caller.
     Deprecate apr_crypto_passphrase(). [Graham Leggett]

  *) apr_crypto_nss: Ensure the SECItem returned by PK11_ParamFromIV
     is properly freed. [Graham Leggett]

  *) apr_crypto: Don't cache the driver if initialisation fails. This
     stops the second and subsequent attempt to use the API from failing
     claiming the library is not initialised. [Graham Leggett]

  *) apr_xml_to_text: Add style APR_XML_X2T_PARSED to maintain a
     consistent namespace prefix. [Jari Urpalainen
     <jari.urpalainen nokia.com>]

  *) apr_os_proc_mutex-unix: For consistency with other OS native to APR
     types constructors/_put()ers and non-unix mutex mechanisms, always
     destroy the underlying native mutex when apr_proc_mutex_destroy() is
     called explicitly.  [Yann Ylavic]

  *) apr_os_proc_mutex_put_ex: Allow to specify whether the OS native
     mutex should or not be cleaned up (destroyed) with the constructed
     APR mutex (given pool), and default to not for the simple _put()
     function.  [Yann Ylavic]

  *) apr_file_io: Add apr_file_pipe_create_pools() allowing a pair of
     pipes to be created, each in a different pool. [Graham Leggett]

  *) apr_table_overlap: Add APR_OVERLAP_TABLES_ADD to merge and set when
     overlapping tables. [Graham Leggett]

  *) apr_filepath_merge: Fix truename length calculation on Windows
     in cases where the "short" name variant is actually longer than
     the "long" or "true" name. See: testnames.c:merge_shortname().
     [Bert Huijben <rhuijben a.o>]

  *) apr_file_mktemp: Use mkostemp() where available to save on system
     calls.  [Joe Orton]

  *) apr_pools: Fix pool debugging output so that creation events are
     always emitted before allocation events and subpool destruction
     events are emitted on pool clear/destroy for proper accounting.
     [Brane Čibej]

  *) apr_atomic: Fix errors when building on Visual Studio 2013 while
     maintaining the ability to build on Visual Studio 6 with Windows
     Server 2003 R2 SDK. PR 57191. [Gregg Smith]

  *) build: Correctly use AC_(PATH|CHECK)_TOOL to support cross compilation.
     PR: 56866.  [Timothy Gu <timothygu99 gmail.com>]

  *) apr_queue: Add apr_queue_timedpush() and apr_queue_timedpop() to
     support timedout operations. PR 56951. [Anthony Minessale <anthm
     freeswitch org>, Travis Cross <tc+asf travislists com>, Yann Ylavic].

  *) apr_allocator: Be less wasteful and don't return a memnode that is
     much larger than what was requested. [Stefan Fuhrmann
     <stefan fuhrmann wandisco com>]

  *) Windows platform: Remove support for Windows 9x.

  *) Added signed apr_intptr_t.  Changed ODBC dbd driver to use this.
     [Tom Donovan]

  *) Changes to apr_pollset_method_e enum value of APR_POLLSET_POLL and
     APR_POLLSET_AIO_MSGQ.  Restore APR_POLLSET_POLL to its pre-r1308910
     (April 2012) value, and move APR_POLLSET_AIO_MSGQ ahead. This restores
     ABI compat with released branches.  [Eric Covener]

  *) Add apr_pbase64_encode() and apr_pbase64_decode() to encode to/from
     the pool. [Graham Leggett]

  *) Mark apr_dbd_freetds as unsupported, and remove it from all builds
     [Nick Kew]

  *) Fix pool integrity checks with threads. Add new apr_pool_owner_set()
     function. PR 43375, 52785. [Stefan Fritsch]

  *) Add support code to teach valgrind about APR pools, allocators, and
     bucket allocators. [Stefan Fritsch]

  *) apr_socket_accept_filter(): The 2nd and 3rd arguments are now
     const char * instead of char *.  [Jeff Trawick]

  *) apr_brigades: add a check to prevent infinite while loop in case
     of a corrupted brigade.  Problem evidenced in PR 51062.  Analysis by
     Krzysztof Kostałkowicz <KKostalkowicz ivmx.pl>, patch [Nick Kew].

  *) Support libxml2 as an alternative XML parser to expat [Nick Kew]

  *) Hide apr_wait_for_io_or_timeout() from public view and add instead
     apr_socket_wait() and apr_file_pipe_wait(). [Brian Havard]

  *) Support connecttimeout, readtimeout and writetimeout MySQL options
     PR 48251 [Marko Kevac <marko kevac.org>]

  *) Transfer the apr-util spec file contents to apr.spec. [Graham
     Leggett]

  *) Added Unix domain socket support.  [Mladen Turk]

  *) Merge APR-util into APR.  [various]

  *) apr_socket_listen: Allow larger listen backlog values on Windows 8+.
     [Evgeny Kotkov <evgeny.kotkov visualsvn.com>]

  *) Remove the APR_SENDFILE_DISCONNECT_SOCKET flag. [Ivan Zhakov]

  *) apr_atomic_read64(): Fix non-atomic read on 32-bit Windows [Ivan Zhakov]

  *) apr_proc_create(): Properly escape arguments containing whitespace
     characters on Windows [Ivan Zhakov]

  *) Fix attempt to free invalid memory on exit when apr_app is used
     on Windows. [Ivan Zhakov]

  *) Fix double free on exit when apr_app is used on Windows. [Ivan Zhakov]

  *) apr_thread_create: Fix potential race condition on Windows. [Ivan Zhakov]

Changes for APR and APR-util 1.7.x and later:

  *) http://svn.apache.org/viewvc/apr/apr/branches/1.7.x/CHANGES?view=markup
  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.7.x/CHANGES?view=markup

Changes for APR and APR-util 1.6.x and later:

  *) http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/CHANGES?view=markup
  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.6.x/CHANGES?view=markup

Changes for APR and APR-util 1.5.x and later:

  *) http://svn.apache.org/viewvc/apr/apr/branches/1.5.x/CHANGES?view=markup
  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.5.x/CHANGES?view=markup

Changes for APR and APR-util 1.4.x and later:

  *) http://svn.apache.org/viewvc/apr/apr/branches/1.4.x/CHANGES?view=markup
  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.4.x/CHANGES?view=markup

Changes for APR and APR-util 1.3.x and later:

  *) http://svn.apache.org/viewvc/apr/apr/branches/1.3.x/CHANGES?view=markup
  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.3.x/CHANGES?view=markup

Changes for APR and APR-util 1.2.x and later:

  *) http://svn.apache.org/viewvc/apr/apr/branches/1.2.x/CHANGES?view=markup
  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.2.x/CHANGES?view=markup

Changes for APR and APR-util 1.1.x and later:

  *) http://svn.apache.org/viewvc/apr/apr/branches/1.1.x/CHANGES?view=markup
  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.1.x/CHANGES?view=markup

Changes for APR and APR-util 1.0.x and later:

  *) http://svn.apache.org/viewvc/apr/apr/branches/1.0.x/CHANGES?view=markup
  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.0.x/CHANGES?view=markup

Changes for APR and APR-util 0.9.x and later/earlier:

  *) http://svn.apache.org/viewvc/apr/apr/branches/0.9.x/CHANGES?view=markup
  *) http://svn.apache.org/viewvc/apr/apr-util/branches/0.9.x/CHANGES?view=markup
