Fost 4 release now out

Created 21st December, 2014 09:38 (UTC), last edited 26th December, 2014 11:46 (UTC)

First things first, there's still no official Mac support because I still don't have access to the necessary hardware.

The biggest change that's happened with this release is that the version of Boost build used to build anything other than Boost itself is now a fixed version that is a git submodule from the Boost folder. I'm afraid that I don't really know how this will play out with new check outs on Windows — but it's pretty likely that it's still broken. We are working on this and getting everything working and tested on Visual Studio 2013.

We've made a start at proper Android support. At the moment there is some support spread across fost-android and fost-android-ndk. The project structure right now is wrong and rather inflexible. This should be sorted out by the time the next release is happening. The Android code is all compiled as C++11, which brings me to another point.

One thing that has become clear through development of the Android code and AnimRay is that C++11 is a much better language than C++03. Fost has always used the sorts of features that are now in the language, but it's far more pleasurable to use things like the built in lambda syntax rather than the awkward Boost lambda bind constructs that are currently used.

Our thinking right now is to handle this initially through a long lived fost5 branch in the library repositories, and to start to make use of these for Android and AnimRay. Once we're happy with this we'll do a final release in the Fost 4 line, and then start on Fost 5. Given that Fost 4 already compiles properly under C++11 it's quite likely that this could happen pretty quickly. Expect Fost 4.15.03 to be the final Fost 4 release.

After this date we'll keep a Fost 4 branch live in the repositories and will continue to make small changes to it, but the future will be in C++11 and C++14 and onwards in the new Fost 5 releases.

Linux & Mac

git clone --branch= --recursive
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
git clone --branch= --recursive
cd fost-hello

Download locations


  • beanbag — Stand alone transactional JSON database server —
  • beanbag-seed — Seed project for giving you a starting point to develop web applications using Beanbag —
  • fost-hello — Sample seed project —
  • mengmon — Stand alone web server —


  • fost-aws — Amazon AWS and OpenStack —
  • fost-android — Eclipse project for Android that allows Fost 4 and Beanbags to be used on mobile devices —
  • fost-beanbag — Transactional JSON database —
  • fost-base — Build system and core libraries —
  • fost-internet — Internet protocols, servers & clients —
  • fost-meta — All libraries in one wrapper —
  • fost-orm — Object/Relational mapping —
  • fost-postgres — PostgreSQL —
  • fost-py — Python (2.x) bindings —
  • fost-web — Web server libraries —
  • fost-windows — Windows support —

Detailed change log


  • Added a mechanism for joining paths (`fostlib::join_paths`) in the same sort of way that URL paths are joined.
  • Improved FSL_CHECK so it doesn't need to declare a local variable.
  • Added a new test macro `FSL_CHECK_ERROR` that ensures that the error between two values (normally reals) is less than an error term.


  • Fix a test so it doesn't depend on being built within the beanbag project.


  • Allow MIME binary bodies to be made from start/end memory pointers.
  • Only set Date and Host headers if they're not already set.


  • Expose the mechanism for determining the JSON database file locations.
  • Make sure that the directory we're about to save a JSON DB blob into actually exists.
  • Allow a path prefix to be set for the JSON DB save/load location.
  • Improved the exception reported when constructing a JSON DB fails.


  • Allow web server views to have their own specific setting values.