Posts in category ‘Progress’.
CppCMS Nightly Tests
Hello All,
In order to simplify CppCMS release procedure and ensure that current SVN trunk it not got broken on platforms that are used less frequently the night build and test were set up.
Each night svn-trunk is tested with different compilers and platforms. The full test matrix in not complete yet, but most important platforms and compilers are tested (or actually the plafroms that can be tested relatievly easily)
It is expected to be extedned more in future.
Thanks to VirtualBox for simple and convinient virtualization solutions.
CppCMS 0.0.7 and 0.99.3-beta3 released
This release is security fix release for stable branch of CppCMS and both security and feature release for CppCMS 1.x.x branch.
All users are encouraged to update to latest version.
If it is not possible to upgrade don't use "hmac" session backend, switch to "aes" or server side session storage backend.
Changedlog 0.0.7
- Bugfix of hmac backend: generation of signature with too small block size
Changedlog 0.99.3
Security:
- Bugfix of hmac backend: generation of signature with too small block size
Features:
- New version of Boost.Locale
Added support of multiple hmac cookie signatures:
Built in: hmac-md5, hmac-sha1
With libgcrypt: hmac-sha224, hmac-sha256, hmac-sha384, hmac-sha512
By default hmac now uses sha1 instead of less secure md5
Bugs:
- Fixed memory leak in aes session encryptor
- Fixed incorrect validation of UTF-8 encoding that could cause some illegal sequences to pass through.
- Fixed missing attributes of some form widgets
- Fixed incorrect code generation in templates in
foreachloop - Fixed race condition when dispatch and context assignment may happen not simultaneously
First beta version of CppCMS 1.x.x is officially out!
Hello all CppCMS users.
The first beta version of CppCMS 1.x.x is available for download from the Sourceforge. The build instructions can be found here.
This version very different from CppCMS 0.0.x branch - it fixes many design flaws that had been done the previous version, it is almost 90% rewrite of the original code according to new design.
It also includes many important features
Most significant ones:
Full CppCMS core rewrite that introduced:
- Asynchronous programming support
- Removal of 3rd part libraries from the core api.
- Stable API and ABI through all major releases.
- Improved Ajax support with introduction of JSON-RPC
- Powerful i18n and l10n
- Native Windows support including support of MSVC.
- And much more...
So now CppCMS beta is ready.
Hopefully first release candidate version will be ready withing about a 3 month. And the first stable release is expected at the end of 2010 beginning of 2011.
Wikipp is converted to new CppCMS 1.x.x and running on main site!
Hello all,
Wikipp is now running on top of alpha version of CppCMS 1.x.x. It is one important step to release of first beta version of new generation of CppCMS.
Update me if you have any issues.
CppCMS 1.x.x updates
After big internal changes I explain some critical architectural updates that CppCMS 1.x.x did.
In few words:
- Removed
cppcms_boostlibrary. Only several essential tools, not visible to API are still taken fromcppcms_boostwhich compiled statically into cppcms library. - Booster library was introduced. It is a library with boost-like interfaces that do not depend on actual boost. Some of the code is taken from boost library, some are wrappers of good C libraries and some totally new code I had written with ABI compatibility in mind.
Following my previous post feel free to update your working copies.
Rationale
CppCMS 1.x.x would provide backward compatible API and ABI and thus it can't relate on Boost library in it's public API. Only possible way to provide Boost API to users is actually wrapping it.
CppCMS 1.x.x introduces asynchronous even loop to web development - something that is very critical for Comet programming. This loop was based on Boost.Asio. But unfortunately it had very big limitations and writing a good wrapper Boost.Asio was unfeasible.
So a small "Boost_er_" library replaced required functionality from boost partially reimplementing, partially wrapping C libraries and partially borrowing the code from Boost itself.
Booster has following components:
- Smart pointers:
shared_ptr,intrusive_ptrfrom Boost and small pointers for pimpl design:hold_ptr,copy_ptrandclone_ptr(my own). - Function - similar to
std::tr1::functionandboost::function- small class important for callbacks implementation (my own implementation). - Regular expressions - wrapper of PCRE library with Boost.Regex like API. It provides only
regex,match_result,regex_searchandregex_match. - System:
error_code,error_categoryandsystem_error(my own). - Thread: Boost like pthreads wrapper.
- Locale - full Boost.Locale library (my own).
- And the most important AIO library - library inspired by Asio.
The AIO library it is central CppCMS event loop that has Asio like API - proactor design, callback interface, etc.
However unlike ASIO it uses very few template classes, it is prefork-friendly (unlike ASIO)
Booster.Aio interface would allow Comet application to receive various asynchronous notifications from any source that can deliver such notifications over sockets.

