Fost 4 release now out

Created 12th April, 2013 04:16 (UTC), last edited 25th September, 2013 03:50 (UTC)

The latest release was tagged a little while ago and I've been late putting this note together :(

There are a number of small changes, and two breaking changes, although they're quite easy to deal with. The old functions replaceAll and absorbException have been renamed replace_all and absorb_exception in order to fit in with the naming convention of everything else.

The biggest new addition is the start of a progress meter. There is only a very basic implementation so far and I think the interface will change once we work out how to deal properly with tracking progress of multiple tasks across many threads.

Linux & Mac
svn co fost-hello
cd fost-hello

On the Mac you will need to set DYLD_LIBRARY_PATH before running hello-world-d

export DYLD_LIBRARY_PATH=dist/lib
svn co fost-hello
cd fost-hello

Download locations

Everything is available through our Subversion repository. Below are the locations for the tagged releases for Fost components.

Detailed change log


  • Added the ability to set the log message module when using the logging DSL through a new `.module()` member on the log message builder.
  • `fostlib::absorbException` has been deprecated in favour of `fostlib::absorb_exception`.
  • `fostlib::replaceAll` has been deprecated in favour of `fostlib::replace_all`.
  • Changed a couple of exceptions to put extended data into the JSON data rather than the free form text.
  • Changed the `what()` implementation of `fostlib::exceptions::exception` to no longer write out more than one line (unless the info member of the exception does so). Also removed the settings for controlling the format of the `what()` string.
  • Implemented better error detail for when a JSON array is accessed out of bounds.
  • Refactored `FSL_CHECK_NEQ` so that it only evaluates it's arguments once.
  • Moved the file specific functions into their own header. Now include `fost/file` rather than `fost/unicode` if you only need file handling APIs. Also added a `unique_filename` function suitable for generating temporary file names.
  • Add a `directory_iterator` typedef which allows us to iterate over wpath based directory names across all supported versions of Boost.
  • Initial simple progress meters allow progress from remote threads to be measured in a control thread.
  • Implemented the file input operator for the `digester` so it is now possible to hash files on the file system.


  • Added a new setting to control whether or not the JSON DB disk files are pretty printed. It defaults to false for release builds and true for debug builds. The setting section is `JSON DB` and the setting name is `Pretty print database files`.