Both of these form elements have been refactored to allow support for the native HTML5 controls, where available. The spinbox also received a number of improvements for formatting and validation, and now comes in an integer and double variant.

HTML5 History API

As already discussed in a previous post, Wt now uses the HTML5 History API where available (that is currently Firefox 4, Chrome and Safari) to use the same URLs in sessions with or without JavaScript.

Font rendering improvements in WPdfImage, WRasterImage (C++)

Text rendering support in WPdfImage and WRasterImage suffered from poor (or nonexistent) support for unicode text. With this release, both rendering devices received first-class support for unicode text rendering. In both cases, font selection may be assisted by libpango, so that for a given unicode string, one or more fonts are selected based on their coverage of unicode characters.

To enable unicode support in WPdfImage, we contributed a number of patches to libharu, to include full unicode support and to properly use a wider variety of TrueType fonts. Pending integration in libharu, you should use this Unicode fork of libharu.

Plural nouns in localization of strings (C++)

While in English and many other languages a noun has only two forms (singular and plural), in many other languages the grammar is more complicated. We implemented WString::trn() which is given an amount, and which uses expressions, like those supported by ngettext(), to chose a particular plural form depending on the amount.

Thread-safe and lock-free user event delivery to sessions (C++)

Taking locks in a multi-threaded application is usually needed to allow safe access to a resource, and an application lock is provided to safely access an application session from outside the event loop. Yet, locking introduces the danger of dead-locks, and use of SyncLock is a (complicated) mitigation for this. We now added a simple alternative to to post an event to a session. This method is dead-lock free and properly takes into account the possibility that the session may no longer exist or is being terminated. We ported the examples (simplechat and codeview) over to this for event delivery to other sessions.

Hey, this seems to be because of how Boost broke their filesystem package (in Boost 1.46). We are still picking up the broken pieces. For the time being, you should use Boost 1.45, or not try to build the examples (-DBUILD_EXAMPLES=OFF).