(There is a detailed release-by-release change history after the
following overview).

XML-RPC For C/C++ was created by Eric Kidd in 2000, when XML-RPC was
new and vital.  Its development was funded in significant part by
First Peer, Inc.  Eric released the package in January 2001 and set up
an extensive project to maintain it.  The project used virtually every
feature on Sourceforge, had about 8 official developers, and
distributed code in various formats.  There were mailing lists,
trackers, CVS branches, RPMs, and a full PHP-based web site, just to
name a few features of the project.

Then everything ground to a halt in June 2001, with the disappearance
of Eric.  We don't know what happened to him, but Google searches in
late 2004 indicated he dropped off the face of the web at that time.
While people continued to use Xmlrpc-c, and some developed fixes and
enhancements and posted them to the Sourceforge trackers, the release
remained frozen at 0.9.10.  The web site also became frozen in time.

In the years that followed the great freeze, XML-RPC became
marginalized by more sophisticated alternatives such as SOAP.  XML-RPC
consequently became rather stable and interest in Xmlrpc-c levelled
off.

This dark age of Xmlrpc-c lasted until November 2004, when Bryan Henderson
set out to find an RPC mechanism to use in one of his projects.  Bryan
found XML-RPC and then Xmlrpc-c.  He decided that the two were almost right
for his needs, but he needed some small extensions.

On finding out that the project was orphaned, Bryan decided to take it
over.  Bryan became the Sourceforge project administrator through
Sourceforge's abandonned project process, then gathered the patches
that had been submitted over the years and made a come-back release
called 1.0.

Bryan then proceeded to add a lot of features in subsequent releases
about every two months.  Most of it was code Bryan wrote himself, but
significant parts were contributed by others, as you can see in the
detailed history below.  Among the larger enhancements was a new
C++ interface; the old one was a fairly weak wrapper around the
C interface and required the user to manage memory and access the
underlying C structures; the new one used pure C++ principles with
automatic memory management.

Bryan also wrote a complete user's manual.  Surprisingly, in spite of
the wide array of features the project had, documentation wasn't one
of them.  There was only a smattering of information available on how
to use the package.

One significant change Bryan made to the project was to strip it down
considerably.  In order to concentrate the small amount of time Bryan
had available for Xmlrpc-c development on actual code and
documentation, Bryan had to greatly reduce the amount of bureaucracy
involved in administering the project and making releases, and reduce
the set of skills required to do it.  Bryan made static make files
(for GNU Make) to replace the two extra build stages that originally
generated make files.  Bryan moved away from Libtool and toward simple
compiling and linking.  Bryan eliminated all pre-built distributions;
each of his releases consisted of a single source code tarball, and
that tarball was not signed.  Bryan removed some redundant sources of
information from the package and the web site.


DETAILED RELEASE HISTORY:


(BJH means Bryan Henderson <bryanh@giraffe-data.com>)
(SAB means Steven A. Bone <sbone@pobox.com>)

1.03.14 - 06.04.15

  *BJH: Fix int/size_t mismatch in xmlrpc_server_abyss.c (manifests on 64
        bit systems).

1.03.13 - 06.04.05

  *BJH: Fix build on system with no wchar_t.

  *BJH: Abyss XML-RPC server accepts (ignores) parameters after
        "text/xml" in Content-type header from client.

1.03.12 - 06.03.20

  *BJH: Fix build of transport_config.h

  *BJH: Remove tantalizing but broken RPM spec file.

  *BJH: Remove casprintf.o from link of 'xmlrpc', 'xmlrpc_transport', because
        it conflicts with the version in libxmlrpc_client.

  *BJH: Change order of libraries in linking 'xml-rpc-api2cpp' to fix
        undefined reference error.

1.03.11 - 06.01.25

  *Mike Goddard: in Xmlrpc-c-config, allow libwww-client as synonym 
        for client, for backward compatibility.

  *Daniel Dlab: Correct INTERNET_FLAG_IGNORE_CERT_DATE_INVALID to
        ERROR_INTERNET_SEC_CERT_DATE_INVALID in Wininet transport.

  *BJH: Fix memory leak in C++ client result value - one leak per RPC.

  *BJH: Fix memory leak in C++ client - one leak per RPC.

  *BJH: Fix signature in xmlrpc_sample_add_server C++ example program.

  *BJH: Fix memory leak in xmlrpc_server_abyss_set_handler().

  *BJH: Fix memory leak in server method registry -- one leak for each
        RPC.

  *BJH: Fix memory leak in wide character constructor functions.

1.03.10 - December 18, 2005

  *BJH: Change default minimum on paramList::getDouble() from DBL_MIN
        to -DBL_MAX.

1.03.09 - December 7, 2005

  * BJH: Fix size_t/int type mismatch in xmlrpc_server_abyss.c.

  * BJH: meerkat-app-list example program: remove NUL character from
         time period parameter.

1.03.08 - November 23, 2005

  * BJH: Fix use of uninitialized 'name' member in Abyss ServerCreate().

  * BJH: Install client_simple.hpp interface header file.

  * BJH: Fix bogus NULL default value for string argument in 
         serverAbyss constructor.  Use null string instead

  * BJH: Remove 'cpptest' from default make.

  * Mike West:
         Don't include tools/xmlrpc and tools/xmlrpc_transport
         in the build if client library configured out.

1.03.07 - October 22, 2005

  * BJH: Remove curl_global_cleanup() so that multiple simultaneous
         Curl client XML transports per process are essentially
         possible and they don't interfere with other process use of
         Curl.

  * BJH: Serialize access to synchronous Curl session in Curl client
         XML transport (to avoid crashes with multiple threads).

  * BJH: When installing legacy header symlinks, remove old names first.

1.03.06 - October 6, 2005

  * BJH: Fix use of pthread_mutex_t in girmem.hpp so it can be used in
         a Windows program.

  * BJH: Don't include xml-rpc-api2cpp in the build with --disable-cpp.

  * BJH: Fix bug in tools build, where it tries to link libxml2 instead
         of expat.

  * BJH: Add missing xmlrpc_config.h so lib/abyss/src/socket.h will
         compile on Solaris.

1.03.05 - September 24, 2005

  * BJH: Change int to long in XMLRPC_STRUCTSIZE to correct 64 bit
         compile error.

  * BJH: Add virtual destructor for client to quiet compiler warning.

  * BJH: Don't try to build Abyss example programs if Abyss libraries not
         built.

  * BJH: Include <sys/filio.h> if it exists (i.e. Solaris).

  * BJH: Include <stdlib.h> instead of <malloc.h>, which doesn't exist
         in some environments.

1.03.04 - September 9, 2005

  * BJH: Make Abyss work with short writes to sockets.  Thanks 
         Alistair John Strachan <s0348365@sms.ed.ac.uk>.

  * BJH: Remove unused SSPRINTF definition that won't compile on AIX
         because it has variable arguments.

  * BJH: Fix Curl transport bug: arbitrary values for SSL verify options.

1.03.03 - August 4, 2005

  * SAB: Fix for Windows what broke between 1.02 and 1.03.

  * SAB: Fix incorrect result of xmlrpc_read_string_w() (wrong-size memcpy()).

  * BJH: Fix various things that don't compile on AIX.

  * BJH: Fix bug: doesn't install libxmlrpc_abyss.

  * BJH: Fix missing -l options in xmlrpc-c-config --client

1.03.02 - July 20, 2005

  * BJH: Fix for bug in which Abyss doesn't build with either thread or
    fork capability.  (Add -D_UNIX and -D_THREAD compile options).

1.03.01 - July 9, 2005

  * BJH: Fix for libxml2, no curl builds. make clean cleans test directory

1.03 - June 26, 2005

  * BJH: new C++ libraries designed for pure C++ applications
    (Application never sees the underlying C structures or reference
    counts).

  * BJH: Make Curl do cookies (session only) and persistent connections.
    This is only for calls through the synchronous interface, and the
    synchronous interface is no longer thread safe -- you can have only
    one thread making calls through it.

  * BJH: Add Curl SSL_NO_VERIFYPEER, SSL_NO_VERIFYHOST control.

  * BJH: Add User-Agent to Curl transport, Xmlrpc program.

  * BJH: libwww transport does not do the weird handling of the "auth"
    cookie.  It used to have a global cookie (one cookie shared by all
    servers) called "auth", which it maintained in an environment
    variable.

  * BJH: interface header files renamed from xmlrpc_xxx to xmlrpc-c/xxx
    (old names installed a symbolic links for backward compatibility).

  * BJH: libxmlrpc_server_abyss: Add ability to set the /RPC2 handler
    without also setting default handler, and to set handlers for files
    other than /RPC2.

  * BJH: libxmlrpc_server_abyss: Eliminate global variable for registry
    handle.

  * BJH: Abyss: allow user's request handlers to have context
    (Add URIHandler2 type).

  * BJH: Add xmlrpc_datetime_new_sec(), xmlrpc_read_datetime_sec().

  * BJH: Builds on AIX - new __inline definition, uint32_t instead of uint32,
    et al.

  * BJH: Don't build client library if not building any client XML      
    transport.

  * BJH: Fix bug: xmlrpc_serialize_base64_data() doesn't free working
    storage.

  * BJH: Fix mysterious disablement of forking Abyss (ServerRunForked()).

  * BJH: Fix bug: 'make install' doesn't install libxmlrpc_xmltok.
    
  * BJH: Renamed CGI stuff, add non-builtin-registry style of CGI server.

  * BJH: Break up 'rpctest', rename to 'test'.

1.02 - April 4, 2005

  * SAB: Win32 http.sys server: Add new project and sample as 
    an alternative to Abyss on current Win32 platforms.  Does
    basic authentication and SSL.  Requires recent Platform SDK to
    build.
  
  * BJH: Add xmlrpc_int_new(), xmlrpc_read_int(), etc., 
    xmlrpc_decompose_value()

  * BJH: Add nil (<nil/>, XMLRPC_TYPE_NIL) capability.
  
  * SAB: WinInet Transport: Add Ignore Invalid SSL certs option.
  
  * BJH: Add 'network_interface' option to Curl transport.

  * BJH: Add basic authentication to 'xmlrpc' program.

  * BJH: Add 'xmlrpc_transport' tool.

  * SAB: Improve use of libCurl in Win32.  Add documentation
    and alter some project and configuration files.

  * BJH: Add transport-specific options.

  * BJH: Use GNUmakefile to catch non-GNU make

  * BJH: Fix usage message in xmlrpc-c-config.

  * BJH: Curl transport: check for failure of Winsock startup.

  * BJH: Fix memory leak in Curl - not freeing curlTransaction.

  * SAB: WinInet Transport: Fix bad authentication header.
  

1.01 - January 8, 2005

  * SAB: Windows works again; new build strategy.

  * BJH: Abyss:  Add ConnCreate2() with foreground capability.

  * BJH: Abyss:  Add ServerRunOnce2() with foreground capability.

  * BJH: Abyss:  Fix ServerRunOnce().

  * BJH: Add xmlrpc_server_abyss().

  * BJH: Abyss pthreads is default

  * BJH: Clean up client transport multiplexor

  * BJH: Separate out server registry stuff into new libxml_server.
  
  * BJH: Examples/Makefile uses new xmlrpc-c-config.test so as to be a
    better example.

  * BJH: Fail when structure format specifier does not end in
    "*" instead of just asserting that it does.

  * BJH: Fail when structure format specifier is not closed by "}"
    instead of just asserting that it is.

  * BJH: Add xmlrpc_array_read_item().

1.00 - October 25, 2004
  * New modular client XML transport structure.  Curl and Wininet transports
    (in addition to existing libwww).
  * Bryan Henderson: create Makefile.config; make examples/ directory use
    static make file.
  * Bryan Henderson: replace Makefile.am with already built Makefile.in.
  * Peter Astrand: make it compile with Gcc 3.1.1.
  * Joe Shaw: Can use libxml2 instead of libexpat.
  * Bernhard Herzog: const fixes
  * Stephen Blackheath: ./configure support for building Abyss
    with pthreads.
  * Jeff Dubrule: Removed C++ comments from expat.
  * Patrick Boykin: Facility to copy xmlrpc_server_info structs.

0.9.10 - Eric Kidd <eric.kidd@pobox.com> - 30 June 2001

  * Man pages!
  * Debian packages!

  * Jeff Stewart: NT CGI fixes.
  * Andy Maloney: Win32 xmlrpc_win32_config.h fixes.
  * Mike Bytnar: Solaris build fixes.  Thanks!

  * No more 'CVS' directories lurking in the dist tarball.
  * Disabled rpath stuff so we comply with Debian policy.
  * wchar_t code can now be disabled.
  * New interop server.
  * Parts of an interop client.
  * Lots of interop fixes.
  * Other stuff.

0.9.9 - Eric Kidd <eric.kidd@pobox.com> - 03 April 2001

  * xml-rpc-api2cpp now generates usable proxy classes.
  * Luke Howard: Default method capability.
  * Abstract XML parser API (but you'll need to edit makefiles to use it).
  * Implemented a configurable size limit for XML data off the network.

  * Ability to build and parse XML-RPC values using wchar_t strings.
  * Basic UTF-8 handling: Refuse to process invalid UTF-8 from network,
    print warnings when sending invalid UTF-8 *to* network.
  * Highly robust UTF-8 validator, decoder, encoder.

  * Modularized the build system--build only what you need.
  * Integrated Electric Fence into build system (optional).

  * Fixed all recent, reproducible bugs in CVS. These were generally
    Windows build bugs.
  * Andy Maloney: Build fixes for Windows.
  * Mike Bytnar: Build fixes for Solaris.
  * RedHat 7 warning fixes.

0.9.8 - Eric Kidd <eric.kidd@pobox.com> - 19 February 2001

  * J. Alan Eldridge, Rosimildo daSIlva: Build fixes.
  * Send 'encoding="UTF-8"' in XML prologue.

0.9.7 - Eric Kidd <eric.kidd@pobox.com> - 14 February 2001

  * SECURITY: Configurable nesting limits (see advisory 1) to prevent
    denial-of-service attacks and stack overflow.
  * Win32 build fixes from Alex Olugbile.
  * Function name fix from Luke Howard.

0.9.6w - Eric Kidd <eric.kidd@pobox.com> - 02 February 2001

  * Merged Win32 VC/C++ changes from Alex and Ian.
  * Merged Win32 Cygwin changes from Rosimildo daSilva

0.9.6 - Eric Kidd <eric.kidd@pobox.com> - 30 January 2001

  * Fixed lots of gcc warnings.
  * Added a new 'xmlrpc_server_info' class, which allows you to
    set options on a per-server basis.
  * HTTP Basic authentication.
  * Added internal implementation of system.multicall, lots of brutal test
    cases, and stubs for other system.* commands.
  * Added APIs for accessing CGI and Abyss method registries.
  * Implemented system.listMethods, system.methodHelp, system.methodSignature.
  * Fixed stupid bug in parsing of "(ss*)"-style array descriptions
    where there were no extra elements.
  * Added highly experimental hacked copy of mod_gzip into the
    tools/turbocharger directory. This version does gzip *and* deflate!
  * Added xml-rpc-api2txt, since XML-RPC doesn't have any IDL language.
  * Merged in Ilya Goldberg's libwww/SSL setup code.

0.9.5 - Eric Kidd <eric.kidd@pobox.com> - 20 January 2001

  * Bug fix: Make sure CGI-based servers send correct content-length.

0.9.4 - Eric Kidd <eric.kidd@pobox.com> - 18 January 2001

  * Services for CGI-based servers.

0.9.3 - Eric Kidd <eric.kidd@pobox.com> - 14 January 2001

  * Works with Libwww 5.2.8, even when linked against expat.
  * Added xmlrpc_value_type and XmlRpcValue::getType functions.
  * Miscellaneous API tweaks to discourage writing of incorrect programs.
    Should not affect any correct programs.

0.9.2 - Eric Kidd <eric.kidd@pobox.com> - 12 January 2001

  * Improved error messages.
  * Refuse to link against libwww if it was built with expat.

0.9.1 - Eric Kidd <eric.kidd@pobox.com> - 9 January 2001

  * Integrated Rick Blair's fix to speed up libwww client.
  * Added informative URLs to Meerkat example programs.
  * Hid the implementation details of xmlrpc_value, just to keep
    people honest. (No more dangerous allocation on the stack!)
  * Minor C++ code cleanup after buying modern C++ books.
  * Documentation improvements.

Some other contributions of unknown date:

  Adrian Likins made lots of good, real-world suggestions for improvement.

  Ian MacLean made patches from Alex's Windows port.

  Brian Quinlan of the Active State company made lots of cool patches,
  including preliminary wchar_t capability.

