Posts in category ‘Progress’.
What's Next?
The road map of the project includes two important milestones:
- CppCMS core components refactoring including following:
- Removal of dependency on CgiCC -- today there is about 5% of CgiCC library is used, many features are not supported by it or are not supported well. For example: file upload handling in CgiCC is very primitive, limited and error prone, support of cookies buggy and so on.
- Using of Boost.Asio as internal event handler, because:
- It provides transparent synchronous and asynchronous event handling allowing future implementation of server push technologies.
- It provides efficient timer based event handling.
- Removal dependency of libfcgi and writing Boost.Asio friendly implementation of FastCGI/SCGI connectors. Implementation of HTTP connectors as well.
- Support of plug-in applications in CppCMS framework.
- Improving compilation speed by representing more
pimplidioms and removal of unnecessary classes.
- Better support of i18n and and l10n:
- Transparent support of
std::wstringwith forms including automatic encoding testing and conversion. - Support of
std::localefor localization for outputs like numbers, dates, monetary, translation and so on. - Optional support of ICU and icu::UnicodeString and icu::Locale that
would add unsupported features by
std::localeand allow replacementstd::localefeatures with more correct implementations provided by ICU.
- Transparent support of
These changes will significantly break API backward compatibility, but it would be possible to adopt the code almost "mechanically" to the new API.
CppCMS 0.0.4 Released
Version 0.0.4 of CppCMS had released.
It includes optimizations required for using it in embedded systems.
Normal Embedded Build:
- Caching is completely removed. Small memory footprint is very important for embedded system thus, caching stuff in memory is quite useless.
- Zlib compression are removed -- it removes dependency on boost::iostreams, zlib and bzip2 libraries.
- Removed mod-prefork.
- Removed dynamic templates loading --- this feature requires export of symbols to binary and increases its size in order to make RTTI work. Thus, all templates should be statically compiled into the binary.
Embedded CGI Mode:
- FastCGI and SCGI APIs are removed
- Mod-thread and mod process are removed including all thread pool facilities
- Changes in files based session backend to work properly with CGI mode including garbage collection (sessions that had time-out).
Downloads are avialable from Sf Project Page.
CppCMS Going Embedded... or I need your help!
Recently I start understanding that embedded market may be very important market for CppCMS. So I did several tweaks to the code in order to support embedded systems:
- When the library is compiled for embedded system, caching system is totally removed, removed dependency on boost::iostreams and compression library.
- Mod-prefork is removed as much more memory consuming.
- Removed dynamic loading of templates.
- Option for cgi-only library given --- no scgi and and fastcgi APIs are compiled in, all remaining worker "mods" are removed.
- Session storage backend is simplified and optimized for cgi when it is compiled in embedded mode.
Everything was cross compiled for arm and tested with qemu-arm, but unfortunately I do not have an access to real ARM hardware with installed Linux system, so...
I need your help:
- Download following test_arm_embed.tar.gz
- Copy it to your ARM system and extract files.
Try to run cgi script from command line:
./hello.dynamic -c config.txtThis is "Hello World" that is dynamically linked with libstdc++. If it does not work try
./hello.static -c config.txtThis is full statically compiled version of "Hello World" cgi script.
You should get as output CGI headers and HTML output.
Please, try to run it several times with:
time ./hello.dynamic -c config.txtAnd tell the average run time.
- If you have a web server in your system I'd be very glad if you could test
cgi script -- please edit it ---
test.cgito reflect correct executable and path.
I all works fine I'd be glad (if it is possible) to prepare a set of scripts that would test various aspects of cppcms as templates, various session backends and so on.
Thanks
Release Announcement - CppCMS 0.0.3
CppCMS 0.0.3 Released
Changelog:
- Forms API cleanup.
- Fixed configuration with latest autoconf/automake
- gcc 4.3 compilation fixes
- Added an option to disable gzip compression
- Added an option for manual output stream control
- Fixed incorrect use of readdir_r with dirent on Solaris that caused crash
- Changed cppcms_make_key now written in C instead of unportable bash/od
- Fixed -- widgets are default constructable
- Added help to templates compiler, BSD bugfix
- Now non-default session timeout type/limit is preserved withing session.
- Added "notriggers" to store cache functions as well
- Fixed incorrect triggers behavior in cache_iface.
DbiXX 0.0.3 Released
Changelog:
- Fixed compilation issues with gcc-4,3
WikiPP 0.0.2 Released
Changelog:
- Updates according to API changes in CppCMS 0.0.3
Examples 0.0.3 Released
No changes, but package location on sourceforge release system had changed
Documentation
User Documentation is complete. It covers most of aspects required for developing with CppCMS.
Still, documentation of internals is missing.
CppCMS 0.0.2 Released!
After long period of development CppCMS 0.0.2 was released!
- Downloads
- Documentation --- (not 100% complete yet).
- Installation Instructions
It includes following components:
- CppCMS Web Development Framework.
- DbiXX Database independent SQL library.
- WikiPP -- CppCMS powered wiki engine.
- Examples -- a set of various examples of using CppCMS.
Policy Changes
There are important release policy changes:
- Beta versions are available to public via svn on trunk branch.
- The frequency of releases is expected to grow, instead of long development periods inside trunk.
- Most of CppCMS architecture is stabilized, however API is still subject to change.
- No full backward compatibility for future releases is granted, however, preserving backward compatibility and stabilizing API are important goals of future development.
Major Changes
- New, statically typed template system was introduced. It is based on compilation of templates to native, dynamically loadable shared objects.
- Old, dynamic typed template system had deprecated and not supported any more
Various enhancements to template system where introduced like:
- Powerful "Django style" templates inheritance
- Extending templates using direct injection of C++ code to templates.
- Templates are integral part of CppCMS project and not additional library.
Introduced form processing and validation sub-framework deeply integrated with templates system.
- Introduced powerful, scalable session management system.
- Improved cache API for better supporting non-trigger based caching.
- Documentation had moved to CppCMS powered Wiki -- WikiPP
- FreeBSD and OpenSolaris are supported in addition to Linux and Cygwin.
- CppCMS powered Wiki software -- WikiPP was released under GPLv3.

