Boost.Locale v3 preview version is released
I want to announce a preview of the third version of Boost.Locale:
- Tutorial: http://cppcms.sourceforge.net/boost_locale/html/tutorial.html
- Reference: http://cppcms.sourceforge.net/boost_locale/html/index.html
- Downloads: https://sourceforge.net/projects/cppcms/files/boost_locale/
There are following significant changes:
- Implemented multiple localization backends:
- icu - the default and recommended backend, based on ICU library
- std - based on C++ standard library localizations support,
- posix - based on POSIX 2008 API (newlocale, strftime_l,...)
- winapi - based on Windows API functions
- Significantly simplified locale generation.
- Improvements in UTF-8 handling by ICU where possible
- Thread safety fixes when using ICU library
- Fixed std::codecvt facet support to handle UTF-16 instead of UCS-2 only.
- Removed support of compilers missing wide character support, gcc-3.4 on windows is not supported any more, latest gcc-4.x required with support of wide streams and strings, for example gcc-4.5
Tested Platforms:
- Compilers: GCC (3.4, 4.2, 4.3, 4.5, 4.5/c++0x), Intel 11.0, MSVC 2008, SunStudio/stlport
- Operating Systems: Linux, FreeBSD, OpenSolaris, Windows XP, Cygwin 1.7, (TODO Mac OS X)
- ICU version: 3.6 to 4.4
It would be soon integrated into CppCMS 1.x.x.
CppCMS 0.99.2 - Beta 2 is released
Update: Please take version 0.99.2.1
The second beta is availible for download:
Changes from Beta 1.
- Significant performance improvements in Booster.Aio
- Significant performance improvment in FastCGI backend.
- Important bug fixes in file upload handling.
- Fixed response/status handling in synchronous and asynchronous API.
- Fixed incorrect numbers handling in JSON.
- Added more examples
- Various platform related fixes.
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.
Surviving Windows Development
One of the issues that had bothered my in CppCMS on Windows, was actually absence of full support of Unicode file-names.
It is known, that standard library functions like fopen
or std::fstream
are not capable of
using UTF-8 encoded file names, like they are on all "normal" operating systems.
So in order to deal with such issues in transparent way, I added booster::nowide
library
that makes this conversion transparent. All functions in booster::nowide
use UTF-8 encoded
strings and convert then internally to wide strings for brain-damaged Win32 Wide API.
I also had created an implementation of std::fstream
over stdio,
especially for thous windows compilers that do not "extend" their standard libraries
with non-standard wide-crap.
So, now CppCMS in fully Unicode capable over Win32. So if you use CppCMS with Windows, please note that all pathes are represented as UTF-8 strings and not "ANSI" one.
When Windows will finally enable UTF-8 locales? Maybe in Windows 15 (if it survive till then).
If you interested why do I hate "wide" API so much, read this.
You can download independent version of "nowide" library there:
http://art-blog.no-ip.info/files/nowide.zip
Once again CMake kicks me hard
I've experienced lately quite wired issues with build, some accidental faults. It was quite clear that the issue was incorrect dependency tracking.
I thought (at the beginning) that svn was reverting time-stamps or something like that, until I got what was the issue.
"Fortunately" for me I had recently installed CMake 2.8.1 from the sources in order to track other CMake bug and I was able to do some little comparison. In short:
This is the output of sample command when I work with CMake 2.6
$ grep application.h CMakeFiles/cppcms.dir/depend.make
CMakeFiles/cppcms.dir/src/application.cpp.o: /usr/include/cppcms/application.h
CMakeFiles/cppcms.dir/src/applications_pool.cpp.o: /usr/include/cppcms/application.h
CMakeFiles/cppcms.dir/src/http_context.cpp.o: /usr/include/cppcms/application.h
CMakeFiles/cppcms.dir/src/internal_file_server.cpp.o: /usr/include/cppcms/application.h
CMakeFiles/cppcms.dir/src/rpc_json.cpp.o: /usr/include/cppcms/application.h
CMakeFiles/cppcms.dir/src/service.cpp.o: /usr/include/cppcms/application.h
CMakeFiles/cppcms.dir/src/url_dispatcher.cpp.o: /usr/include/cppcms/application.h
And this is same command for CMake 2.8...
$ grep application.h CMakeFiles/cppcms.dir/depend.make
CMakeFiles/cppcms.dir/src/application.cpp.o: ../cppcms/application.h
CMakeFiles/cppcms.dir/src/applications_pool.cpp.o: ../cppcms/application.h
CMakeFiles/cppcms.dir/src/http_context.cpp.o: ../cppcms/application.h
CMakeFiles/cppcms.dir/src/internal_file_server.cpp.o: ../cppcms/application.h
CMakeFiles/cppcms.dir/src/rpc_json.cpp.o: ../cppcms/application.h
CMakeFiles/cppcms.dir/src/service.cpp.o: ../cppcms/application.h
CMakeFiles/cppcms.dir/src/url_dispatcher.cpp.o: ../cppcms/application.h
CMake's dependency checker was using system global headers as dependency even when local files placed in explicitly specified location ".." should be checked.
CMake sucks! Do I need this suffer just for MSVC support? I don't know.
Looks like I'll have to upgrade to CMake 2.8