Fost 4 release now out

Created 16th November, 2012 12:39 (UTC), last edited 16th November, 2012 13:09 (UTC)

This release was tagged a bit late, and this announcement is even later — sorry for that. Hopefully all of the good stuff in it makes up for that.

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


  • Removed a dead constructor that does nothing in worker.
  • No longer pass on log messages captured during tests. This stops expected errors from being displayed and confusing the test results.
  • Added a basic parser for the RFC1123 formatted dates used in protocols like SMTP and HTTP. Only the format produced by the Fost libraries is currently supported.
  • The parser lock is now recursive. This means that we can be more aggressive about using it without causing deadlocks. Also removed the parser wrapper that doesn't take a lock so all uses are explicitly forced to acquire the lock at the right time.
  • Deliberately leak the thread counter so that it can't be destructed before threads that are terminating in a global destructor get run.
  • Added instrumentation for the number of worker threads in use. Also added decrement to the counter implementation.
  • Fixed a bug on Windows where the pre-increment would return the old value rather than the new one.
  • Dynamic loading of a library now tries with platform specific prefixes and suffixes before trying the name provided.
  • Implement JSON casts for json::array_t and json::object_t.
  • Allow the use of constant workers (and in_proc) which makes certain thread wrappers more obvious to implement.
  • Implement futures with void type for worker and in_proc. We can still wait on them.
  • Added startswith and endswith members to the string class.
  • Allow time stamps and time differences to be added and subtracted.
  • Made time stamps comparable and also added in a new timediff implementation based on the Boost library version.
  • Silenced a clang warning that turns up under some circumstances.
  • Added configuration for the log level for the stdout global logger.
  • Changed the logging DSL for logging JSON objects thanks to suggestions from jeroen Vermeulen.


  • The URL parser (string constructor) now acquires the parser lock. This should help stop Boost Spirit failures.
  • Changed some log output for the HTTP server to produce JSON objects rather than an array.
  • Support the clang toolset in the compile script.
  • Removed some dead code.


  • Added set to the jsondb::local transaction to update the value of the JSON irrespective of what is already there.
  • The JSON DBs backed to disk can be created with a boost::filesystem::wpath instance, not only from a fostlib::string.
  • Changed the logic when a JSON DB is loaded so that it doesn't rely on exceptions.