cURL cURL > libcurl > Libwww Comparison

Notes About Libwww compared to libcurl

These are only some quick notes. If you have additional experiencies and comments you want to share with the world, we're all ears!

  • libcurl is (far) more portable
  • libcurl is supported and has a living community (compare traffic on the mailing lists, release frequency or similar)
  • programs need less code to transfer files using libcurl than a libwww- based equivalent
  • libcurl is thread-safe, libwww is not
  • libcurl has a different feature-set and offers several features not present in libwww, like several HTTP authentication types and gzip support
  • libcurl supports more protocols
  • libwww offers caching and HTML parsing, which libcurl doesn't

Quote from a usenet posting by Carl Daniel:

Having used both, I'd recommend libcurl and definitely not libwww.

libcurl is easy to use and gives good performance. libwww is a nightmare to use, performs poorly (no overlapped I/O support, for example), and is practically undocumented (on top of which it's a very complex library). libwww is really a platform for network protocol development, not a library for basic access to well known network protocol stacks.

Quote from the libwww-mailing list by Akritidis Xristoforos:

I devoted a full man-month trying to understand libwww, writing a function of intermediate complexity (supporting post requests, xml parsing, authentication etc.) and figuring out that the problems I encountered were due to libwww and not my code.

I switched to libcurl, rewrote the same code in a week and haven't looked back.

Perhaps this library has some features that libcurl doesn't, though I didn't have to use them for my needs. However, for libwww to survive, someone has to focus on these features and let libcurl do the rest.

Personally, I can't find any reason to suggest libwww to anyone.