The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for the Perl binding of libcurl, WWW::Curl.
4.17 Fri Feb 21 2014: - Balint Szilakszi <szbalint at>

    - Fixing build process for old libcurl versions without CURLOPT_RESOLVE.
    - License is now MIT only.

4.16 Thu Feb 20 2014: - Balint Szilakszi <szbalint at>

    - Support for CURLOPT_RESOLVE (an slist option) [Theo Schlossnagle]
    - Fixing t/19multi.t test failures when using a threaded resolver for libcurl.
    - Improved constant parsing when using ISO-compliant CPP. [tsibley]

4.15 Sun Nov 28 2010: - Balint Szilakszi <szbalint at>

    - Refactored constant handling and added thorough testing for it.
    - Fixed CURLOPT_PRIVATE, it is now a string and can be set/get accordingly.

4.14 Sun Oct 24 2010: - Balint Szilakszi <szbalint at>

    - Scalar references can now be used to receive body/header data [gfx].
    - Speed optimizations for threaded perl. [gfx, szbalint].
    - Added a more generic libcurl constant detection.
    - Added the pushopt method for appending strings to array options.
    - Documentation improvements.

4.13 Wed Sep 01 2010: - Balint Szilakszi <szbalint at>

    - Fixed WWW::Curl::Form (again, formadd and formaddfile working now).
    - Made constant constant handling more robust and added tests [Fuji, Goro].
    - Modernized *.pm and AUTOLOAD now throws an error on unknown method calls [Fuji, Goro].
    - Fixed code depending on CURLINFO_SLIST to be optional [Fuji, Goro].

4.12 Sun Jun 04 2010: - Balint Szilakszi <szbalint at>

    - Fixed WWW::Curl::Form (patch contributed by Michael Ing).
    - Added CURLPROXY_* constants (patch by claes).
    - Added the const_string method to provide access to constants in a non-bareword way.
    - Fixed t/01basic.t test failure on older libcurl versions.

4.11 Fri Dec 18 2009: - Balint Szilakszi <szbalint at>

    - Fixed t/19multi.t for libcurl versions compiled with asyncronous dns resolution.

4.10 Fri Dec 18 2009: - Balint Szilakszi <szbalint at>

    - Added support for CURLINFO_SLIST in getinfo (patch by claes).
    - Merging documentation fixes upstream from the FreeBSD port (thanks Peter).
    - Added support for curl_multi_fdset.
4.09 Thu Jul 09 2009: - Balint Szilakszi <szbalint at>

    - Fixing broken version check.

4.08 Tue Jul 07 2009: - Balint Szilakszi <szbalint at>

    - Fixed a memory leak in setopt.
    - Added a check to Makefile.PL for the minimum libcurl version.
    - Mentioned WWW::Curl hosting on github.
    - Upgraded bundled Module::Install to 0.91.

4.07 Sun May 31 2009: - Balint Szilakszi <szbalint at>

    - Fixed >32bit integer option passing to libcurl on 32bit systems.
      (Thanks to Peter Heuchert for the report and fix suggestion!)
    - The CURL_CONFIG environment variable can now be used to specify
      which curl-config to use (contributed by claes).
    - Fixed segfault when a string option with setopt was set to undef
      (contributed by claes).
    - Fixed incomplete cleanup routine at destruction time
      (contributed by claes).
    - Readded and stubs so that they are indexed by
      CPAN, thus avoiding complications with outdated versions appearing.

4.06 Sun Apr 05 2009: - Balint Szilakszi <szbalint at>

    - Fixed a setopt issue that could cause a setopt string to get
      corrupted with pre 7.17.0 libcurl versions.
      (Thanks to Andreas Marienborg for the excellent bugreport and testcase!)
    - Made the Makefile.PL curl.h parsing slightly more generic to detect a
      wider selection of constants (fixes debian bugs #519841 and #518942).
      This makes it possible to use CURLE_* and CURL_NETRC_* constants.
    - Added a clearly invalid protocol to t/18twinhandles.t (fixes RT #41425).

4.05 Sat Jul 06 2008: - Balint Szilakszi <szbalint at>

    - Corrected the duphandle mechanism.
    - Fixed a typo (fixes RT #37253).
    - Added better Windows compatibility detection and separate
      installation instructions (thanks to Shiyu Tang).

4.04 Sat Jun 21 2008: - Balint Szilakszi <szbalint at>

    - Test::More and use_ok at begin time doesn't mesh with no plan.

4.03 Sat Jun 21 2008: - Balint Szilakszi <szbalint at>

    - Removing option to pass destination files as a typeglob as
      it is a backwards pointing magic and caused bugs.
      Use a filehandle or reference instead.
    - Fixed tests for 5.6, raised minimum Perl version to 5.6.1 due to tests.
    - Fixed a duphandle bug.

4.02 Thu Jun 19 2008: - Balint Szilakszi <szbalint at>

    - Adding forgotten backwards compatibility with older Perl versions

4.01 Wed Jun 18 2008: - Balint Szilakszi <szbalint at>

    - Reimplemented callback handling to fix several I/O issues (fixes RT #35491)
    - Documentation showing example WWW::Curl::Multi usage is corrected (fixes RT #35520)
    - Should now compile on HP-UX and OSX (fixes RT #36058 and #35349)
    - POD validity fix (fixes RT #15850)
    - Added several new tests
    - Upgraded to Module::Install 0.75 as it now exits correctly on build time
      with NA if the required libcurl isn't available.

4.00 Wed Mar 05 2008: - Balint Szilakszi <szbalint at>
    - Rewritten documentation.
    - New test suite.
    - New build system: using Module::Install instead of ExtUtils::Makemaker.
    - New minimal requirements, Perl 5.6 and libcurl 7.10.8.
    - New WWW::Curl::Multi interface.
    - Removed WWW::Curl::easy.
    - Removed compatibility code for pre 7.10.8 libcurl.
    - Added lots of small improvements to setopt and friends.
    - Bugfixes, mainly for memory leaks.

3.12 Wed Feb 27 2008: - Cris Bailiff <c.bailiff+curl at>
    - New was missed from the MANIFEST, so was not in the distribution. Fixed.

3.11 Mon Feb 25 2008: - Cris Bailiff <c.bailiff+curl at>
    - Merge recent contributions.
    - Updates from various small bug/build reports

3.10 Fri Feb 22 2008: - Anton Fedorov <datacompboy at>
    - Fix documentation for multi interface
    - Added WWW::Curl::Share
    - Added strerror into Easy and Multi interfaces
    - Added support for CURLOPT_DEBUGFUNCTION in Easy interface

3.02_01 Tue Jan 29 2008: - Mark Hindley
    - Contributed CURLOPT_*_LARGE support

3.02_00 Fri Sep 16 2005: - Cris Bailiff <c.bailiff+curl at>
    - Workaround case-sensitive filename issues by making equivalent Easy
      names in easy namespace
    - Test scripts - Fixup ssl tests and remove leftover MUTE option
    - NOTE: That due to namespace changes (easy->Easy) you must change any existing
      code to 'use WWW::Curl::Easy' instead of 'use WWW::Curl::easy', but
      you can still use the WWW::Curl::easy function names until they
      are removed in a future release.
    - Tested on Redhat EL3 (curl 7.10.6) and Mandrake 10.1 (curl 7.13.1)

3.01  Thu Apr 20 2004: - Cris Bailiff <c.bailiff+curl at>
    - Merged Sebastians changes into CVS
    - Updated remaining tests to Test::Simple
    - Added backwards compatability to V2 names (WWW::Curl::easy etc)
    - Dropped backwards compatability to V1.x names

3.00  Thu Feb 12 2004: - Sebastian Riedel <sri at>
    - Added multi support
    - New module names
    - New tests
    - New documentation
    - New examples
    - Big cleanup!!!
    - Too much to tell, it's worth an upgrade

2.00  Tue Apr 22 2003: - Cris Bailiff <c.bailiff+curl at>
    - New top level package name of WWW::Curl in preparation for
      entry to CPAN
    - Rename "Curl::easy" to "WWW::Curl::easy"
    - Add backwards compatability namespace module for existing scripts
    - Implement initial curl_easy_duphandle support
    - Started on curl_easy_form support (WWW:Curl::form) - NOT FUNCTIONAL YET
    - Fixup use of env vars in t/07ftp-upload.t (jellyfish at
    - Adjust IP addresses for t/08ssl.t tests due to moved https servers

1.35  Sun Sep 22 2002: - Cris Bailiff <c.bailiff+curl at>
    - Fixed progress function callback prototype [ curl-Bugs-612432 ],
      reflecting the fix made in curl-7.9.5. Tested in t/05progress.t to
      now return sensible values!

1.34  Wed Aug  7 2002: - Cris Bailiff <c.bailiff+curl at>
    - Fix off-by-one error in setting up of curl_slists from perl arrays,
      which was causing the last item of slists to be dropped. Added regression
      test case.

1.33  Mon Aug  5 2002: - Cris Bailiff <c.bailiff+curl at>
    - Fix serious bug in read callback support (used for POST and upload
      requests), introduced in 1.30, which uploaded random data (due to a
      reversed src/dest in a memory copy).

1.32  Thu Aug  1 2002: - Cris Bailiff <c.bailiff+curl at>
    - Minor Makefile.PL fixes to build cleanly with curl 7.8 as found
      on redhat 7.2.

1.31  Tue Jul 16 2002: - Cris Bailiff <c.bailiff+curl at>
    - Generate better switch() statement syntax in C code, to fix build
      issues on some systems with strict compilers. Reported by Ignasi Roca.

1.30  Mon Jul 15 2002: - Cris Bailiff <c.bailiff+curl at>
    - Testing release after complete code overhaul. Now supports
      cleaner object interface, supports multiple handles per process,
      uses PerlIO for portable I/O (which should be perl 5.8 ready) and
      maybe even supports ithreads. Should be fully backwards compatible,
      but please read the man page for change details and report any issues.
    - Fixed warning caused by slist functions accessing past the end of the
      perl array.
    - Fixed leak caused by consuming slist arguments without freeing.
    - Updates test scripts to OO style, cleaned up output.
    - Deprecated USE_INTERNAL_VARS.

1.21  Thu Jul 11 2002: - Cris Bailiff <c.bailiff+curl at>
    - Minor fixes to assist windows builds from Shawn Poulson
    - Allow passing curl include location on the command line when
      running perl Makefile.PL

1.20  Sat Feb 16 2002: - Cris Bailiff <c.bailiff+curl at>
    - Use standard perl module numbering syntax (valid decimal)
    - Skipped 1.10 in case anyone confuses it with 1.1.0
    - Made every build a rebuild and removed 'pre-built' files - no point
      worrying about not finding curl.h - if we can't find it, we can't
      compile anyway. Obviates bug in 1.1.9 preventing rebuilds.
    - Add support for redefining CURLOPT_STDERR (file handle globs only!)

1.1.9  Sat Dec  8 2001: - Cris Bailiff <c.bailiff+curl at>
    - Enhance Makefile.PL to re-build and 'constants' xs
      function from local installed curl.h. CURLOPT_ and CURLINFO_
      Constants up-to-date for libcurl-7.9.2, but can be re-built
      for almost any libcurl version by removing and
      curlopt-constants.c and re-running 'perl Makefile.PL'
    - Use curl-config to find include and library compile options
    - Updated test scripts to work better under 'make test' (You need
      to set the environment variable 'CURL_TEST_URL' though!)
    - Added test script to display transfer times using new time options
    - Merge changes in Curl_easy by Georg Horn

1.1.8  Thu Sep 20 2001: - Cris Bailiff <c.bailiff+curl at>
    - Re-generate CURLOPT_ constants from curl.h and enhance makefile
      to allow this to be repeated in future or for older versions of
      libcurl. Constants up-to-date for libcurl-7.9(pre)
    - Split tests into t/*.t to simplify each case
    - Add test cases for new SSL switches. This needs ca-bundle.crt
      (from mod_ssl) for verifying test cases.

1.1.7  Thu Sep 13 2001: - Cris Bailiff <c.bailiff+curl at>
    - Documentation Update only - Explicitly state that Curl_easy
      is released under the MIT-X/MPL dual licence. No code changes.

1.1.6  Mon Sep 10 2001: - Cris Bailiff <c.bailiff+curl at>
    - Fix segfault due to changes in header callback behaviour
      since curl-7.8.1-pre3

1.1.5  Fri Apr 20 2001: - Cris Bailiff <c.bailiff+curl at>
    - Add latest CURLOPT_ and CURLINFO_ constants to the constants list

1.1.4  Fri Apr 20 2001: - Cris Bailiff <c.bailiff+curl at>
    - Fix case where curl_slists such as 'HTTPHEADERS' need to
      be re-set over persistant requests

1.1.3  Wed Apr 18 2001: - Cris Bailiff <c.bailiff+curl at>
    - Change/shorten module function names: Curl::easy::curl_easy_setopt
      becomes Curl::easy::setopt etc. This requires minor changes to existing
    - Added callback function support to pass arbitrary SV * (including
      FILE globs) from perl through libcurl to the perl callback.
    - Make callbacks still work with existing scripts which use STDIO
    - Initial support for libcurl 7.7.2 HEADERFUNCTION callback feature
    - Minor API cleanups/changes in the callback function signatures
    - Added Curl::easy::version function to return curl version string
    - Callback documentation added in
    - More tests in

1.1.2  Mon Apr 16 2001: - Georg Horn <horn at>
    - Added support for callback functions. This is for the curl_easy_setopt()
      Still missing, but not really neccessary: Passing a FILE * pointer,
      that is passed in from libcurl, on to the perl callback function.
    - Various cleanups, fixes and enhancements to easy.xs and

1.1.1  Thu Apr 12 2001:
    - Made more options of curl_easy_setopt() work: Options that require
      a list of curl_slist structs to be passed in, like CURLOPT_HTTPHEADER,
      are now working by passing a perl array containing the list elements.
      As always, look at the test script for an example.

1.1.0  Wed Apr 11 2001:
    - tested against libcurl 7.7
    - Added new function Curl::easy::internal_setopt(). By calling
      Curl::easy::internal_setopt(Curl::easy::USE_INTERNAL_VARS, 1);
      the headers and content of the fetched page are no longer stored
      into files (or written to stdout) but are stored into internal
      Variables $Curl::easy::headers and $Curl::easy::content.

1.0.2  Tue Oct 10 2000:
    - runs with libcurl 7.4
    - modified curl_easy_getinfo(). It now calls curl_getinfo() that has
      been added to libcurl in version 7.4.

1.0.1  Tue Oct 10 2000:
    - Added some missing features of curl_easy_setopt():
      - CURLOPT_ERRORBUFFER now works by passing the name of a perl
        variable that shall be crated and the errormessage (if any)
    be stored to.
      - Passing filehandles (Options FILE, INFILE and WRITEHEADER) now works.
    Have a look at to see how it works...

    - Added a new function, curl_easy_getinfo(), that for now always
      returns the number of bytes that where written to disk during the last
      download. If the curl_easy_getinfo() function is included in libcurl,
      (as promised by Daniel ;-)) i will turn this into just a call to this

1.0  Thu Oct 5 2000:
    - first released version
    - runs with libcurl 7.3
    - some features of curl_easy_setopt() are still missing:
      - passing function pointers doesn't work (options WRITEFUNCTION,
      - passing FILE * pointers doesn't work (options FILE, INFILE and
      - passing linked lists doesn't work (options HTTPHEADER and
      - setting the buffer where to store error messages in doesn't work
    (option ERRORBUFFER).