Fost 4 release now out

Created 25th March, 2012 04:37 (UTC), last edited 25th March, 2012 04:45 (UTC)

The latest version of Fost was tagged in our repositories a few days ago.

The latest release was tagged yesterday.

The next version is due out in June 2012. The most interesting changes are:

  • Build support for the Enterprise DB distribution of Postgres on the Mac.
  • Initial support for MSVC 10.
  • Started to add in support for clang.
  • Switched to use crypto++ for the cryptographic functions. Boost.ASIO still uses OpenSSL, so both libraries are now required.
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 coercions from std::vector<unsigned char>.
  • Fixed up the JSON and string representations of the timestamps so they are more ISO like and have an explicit UTC time zone.
  • Added coercions between fostlib::json and fostlib::jcursor.
  • Made some minor changes suggested by clang, including some dead code elimination.
  • MSVC 10 supports stdint.h so changed the configuration to use that.
  • Fixed up the fost-exe build target type so the fost-cli library is properly installed.
  • Explicitly initialise some variables that were set before being returned in order to silence a compiler warning.
  • The parser lock can now be acquired before the parse is called so that it can be used to cover the building of the parser.
  • Allow the logging functions to take up to four arguments.
  • Allow string concatenation expressions with a narrow character literal to the left.
  • Altered the internal cryptographic wrappers to use crypto++ instead of OpenSSL.
  • Changed the unit testing so that it doesn't build a library any more.
  • Refactored some build parameters to remove repetition.
  • Changed the unit test runner so that it displays the output of the test run as we need to see this in order to verify that the tests do actually run.
  • Clear out the jobs that have been taken from the queue when a major problem occurs. This should help to stop threads waiting on futures from waiting forever.
  • Added fostlib::bytes for calculating the size of a memory block in bytes.
  • Updated the readme files for later versions of Ubuntu.


  • Disabled a test that is unreliable on Windows due to its limited network buffer.
  • Fixed up some build errors for the new null_ptr.
  • Changed one of the networking tests to send less data on Windows as the test would hardly ever pass. It is still a bit unreliable though :(
  • Allow a few more characters in the file specification for URLs.
  • Improved some of the error handling in the HTTP server.
  • Can now convert a URL file specification directly to a string.
  • Added coercion from MIME to UTF8 strings.
  • We can now coerce from a URL file specification to a Boost filesystem wpath.
  • The host constructors now normalise to lower case any host name they are given.
  • We can now pass in a handler function to the HTTP server request for use when testing server responses.


  • The JSON database `remove` command now makes sure that the object being removed is the same when it runs against the actual database. This makes the remove much safer as the transaction will fail if another transaction has altered the data.


  • Added support for Enterprisedb's build of Postgres 9.1 on the Mac.
  • Updated the driver to use the refactored libpqxx interface.


  • Fixed up some build errors for the new null_ptr.
  • Made a couple of default arguments in the user agent (Python) safer.