This is the eighth minor version release of the library which is steadily working towards the version 1.0 release to be submitted for review to the Boost C++ Library for wider availability. You can send in your library feedback and/or issues through the project's Github Issues page, where the maintainers of the project will then appropriately schedule the issues to be addressed for future release. If you don't have a Github account, you can subscribe to the developer mailing list and send in your feature requests and participate in the discussion with the project developers as well.
New in 0.8The library features a new asynchronous HTTP server template to allow for handling requests asynchronously and allowing handlers to write back data to the connections. This has been one of the most requested features from users, to enable writing high-throughput and scalable web applications with cpp-netlib. Version 0.8 also comes with a simple and short (less than 200 lines of code) example of an HTTP server that has been benchmarked locally on an Intel Core 2 4400 with 2GB of RAM in Linux 64-bit to be able to serve a 7.4Kb file at roughly 3800 RPS. Over the network, it performs at a slightly lower rate of ~246 RPS on a home WLAN 802.11b/g network because of the communication costs -- sustained transfer rate of 1 megabyte per second -- but the performance profile of the application doesn't go higher than 5% CPU utilization at 1000 concurrent connections. Benchmarks were performed using Apache Bench (Apache AB).
In 0.8 the library also now provides a means of checking whether a given asynchronous response object is ready with the full data requested by the client. In 0.7 the library introduced an active HTTP client implementation that returns asynchronously built responses. There used to be no way to check whether a given response is ready to be dealt with. Because of user feedback in the development of 0.8, the developers were able to implement a check for readiness which is now available in the 0.8 release.
What's coming for 0.9
With 0.8 out the door, the cpp-netlib development team is ramping up development of 0.9 where users should look out for the following features:
- Supporting Boost.IOStreams in the Client Request and Server Request/Response for message bodies. This will finally allow for sending over large amounts of data in files through the HTTP Client and Server implementations.
- More Client-side HTTP Features, to support Cookie Management, Proxy Support.
- Boost.Parameter-based APIs to allow for better flexibility of the client and server interfaces.
- More HTTP Server-side convenience tools for Web Service development to make developing REST-ful web services easier, and the beginnings of a web development framework supporting templates, routes, and request handlers.
- Initial ESTMP 1.0 support.
Commercial Support and Sponsorship
Dean Michael Berris is working on building a company around cpp-netlib to provide commercial support and custom development consulting done to make sure that the project keeps going. The cpp-netlib project will continue to be open source and the commercially supported version gets customers access to in-depth support for integrating cpp-netlib into their commercial applications. At this time, pricing on the support licensing as well as custom development rates are still being formulated.
The project will also welcome corporate sponsorship to ensure that the contributors and developers get access to different platforms and resources to ensure that cpp-netlib will continue to be of high quality and will be available in as many platforms as possible. If you or your company may be interested in donating resources and/or sponsoring the development of a specific part of cpp-netlib, you can reach out through the developers mailing list or to the maintainers of the project.
This article is cross-posted to cplusplus-soup.com, www.deanberris.com, and cpp-netlib.blogspot.com.