Posts in category ‘Unicode and Localization’.
It is official, Boost.Locale on its way to formal review
Now it is official, Boost.Locale is scheduled for a formal review at April 7-16.
Boost.Locale is important part of CppCMS as was developed for its needs, however I had found that this library was so important and useful that I decided to "Boostify" and make it ready for a formal review for Boost.
What does it provides:
- Message formatting based on gettext dictionaries
- Localized numbers, dates, currency formatting and parsing (and more)
- Collation
- Text manipulations like case handing and Unicode normalization
- Text Boundary analysis
- Support of non-Gregorian calendars like Hebrew calendar.
- And much more
Most of these features are based on the state-of-the-art Unicode library ICU but it also allows to handle many of them using only standard operating system API significantly reducing its size and requirements of external components.
Most important is that is provides platform independent and uniform interface
for C++ localization and internationalization tightly integrated to C++ iostreams
and existing std::locale
framework.
The most up-to-date version of the library and documentation would be released soon.
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
foreach
loop - Fixed race condition when dispatch and context assignment may happen not simultaneously
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.
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