Posts in category ‘Progress’.
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.
CppCMS on OpenSolaris...
After long fight between Me, Virtual Box and OpenSolaris I was finally be able to build CppCMS under OpenSolaris.
Fighting with OpenSolaris
After I installed OpenSolaris first time, network wasn’t recognized, I started to tinker with its interfaces and drivers, and looks like I had ruined something.
At some point I had figured out that I should reboot OS twice in order to make network work. Indeed, it worked, but… after next reboot it stopped. After long period of fighting and googling, I decided to reinstall it.
The next step was even bigger nightmare. I decided to install both Sun Studio and GNU Build system… Total download of 700Mb from very slow OS mirrors.
I let the installation to run at night and at the morning I had found that VirtualBox had crashed my computer… Arrggggggg.
At next step I installed only gnu tool chain, meaning I'll continue to work with GCC and I will not test Sun Studio C++ compiler (anyway most Solaris developers work with gcc). It was done little bit faster.
The next step was building Boost. Unfortunately, OS do not provide package for it. It was very strange, because it comes at core part of any Linux distribution and it is even a part of Cygwin.
So I had taken Boost 1.36 and started build. The build had took forever – and at the end I had found that only headers where installed! Then I figured out how to build libraries I need. However, there was some build error for shared libraries and I got static libraries only…
After some googling, I had found a patch for boost-jam that fixes linking issues for 1.36 under Solaris. But the patch was unreadable. So at this point I gave up. Static libraries for testing are good enough.
Then I installed most important dependencies: CgiCC, FastCGI. I had build and installed Lighttpd. These steps were very simple and straightforward (Ok… Who still thinks that autotools are bad?)
At the end I checked out latest development version and tried to run autogen.sh. I had figured out that there is no default "automake" and "aclocal". You should specify exact version: automake-1.9 (Have they hear about alternatives?) I did a little fix and configured the system.
Fixing the code
There where 3 build problems:
- For some reason gcc didn’t like
map<>in two headers in code, even withusing namespace std. So I need to addstd::mapexplicitly — I still have no idea why. I had found a little bug I made it TCP server. I test CppCMS mostly with Boost 1.33.1 and external Asio library.
Starting from Boost 1.35 Asio is part of it, however in different namespace and with several other little differences. So I had a little bug in using Boost.Asio instead of plain Asio. (Not connected to OpenSolaris at all).
- The only real platform specific problem was missing
-lsocketand-lnsllibraries. These were easily fixed with 2 lines inconfiugre.inscript.
Finally I was able to run my simple hello world programs and see that CppCMS becomes truly cross platform — in addition to Linux and Cygwin, OpenSolaris should be supported as well.
I wonder: "How much time would it take to build CppCMS under FreeBSD?"
Session Management in CppCMS
Session management branch was merged to trunk, now you can use sessions transparently in CppCMS.
Quite full tutorial about sessions in CppCMS was written:
- Starting With Sessions
- Management Sessions with CppCMS (Hebrew) was published as well.
DbiXX Documentation
DbiXX SQL Library documentation is completed. It can be found in the wiki: