We are currently working hard on finishing release 2009.1 of the POCO Platform, which will be available in March. In the coming days I will publish a series of posts that introduce the new features and changes in that release. Today, I’ll start with the core libraries — Foundation, XML, Util and Net, as well as NetSSL. For these libraries, the main focus of the upcoming release is performance. Through some profiling we found a few places in POCO that were worthy targets for performance improvements. The main goal was reducing the number of heap memory allocations, especially in the HTTP server framework. Actually, most memory allocations are caused by string operations, so reducing and optimizing string operations alone makes for a significant improvement. Another source of often unnecessary memory allocations were the NumberFormatter and DateTimeFormatter classes. Instead of writing something like:
std::string str;
str += NumberFormatter::format(100);
it is now possible to write:
std::string str;
NumberFormatter::append(str, 100);
The same applies to DateTimeFormatter. These performance improvements will mostly delight folks working with embedded systems, as on these systems the improvements will be most visible. Apart from the performance we of course also fixed all currently known bugs. And we threw in a few new features as well. There will be a new timer class that does not need a separate thread per timer. On systems using many timers, using this class helps to keep the number of threads low.
A lot of good work went into the NetSSL_OpenSSL library, which was significantly overhauled. It is now possible to use a separate SSL context for every socket. Furthermore, secure sockets can now be created on top of existing sockets. This enables the implementation of protocols that can switch to a secure connection over an existing TCP connection, such as SMTP with the STARTTLS command. Error handling in the library has been improved, as well as the documentation.
All these changes will also soon be available in release 1.3.4 of the Open Source POCO C++ Libraries.
In the next installment of this series I will talk about the improvements to the Open Service Platform.
