Fost 5 release now out

Created 30th June, 2016 07:24 (UTC), last edited 30th June, 2016 08:12 (UTC)

This release features a significantly faster JSON unparser/stringifier which can be given a std::string to use as a buffer to stringify into. This is used by a new module for the web server that we should be releasing over the next month or two.

The Android switch from gcc to clang has just been done, but didn't make it into this release. The clang versions are far in advance of gcc so we can start to use some more of the C++14 features we'd like to.

The bad news is that gcc have made a breaking change to their ABI. Although use of the new ABI is optional many distributions have picked it up, including Ubuntu. This breaks clang builds on all of these platforms. It isn't at all clear what the resolution will be or when it will land. This seems especially shameful on Ubuntu where the broken compiler first hit an LTS release.

Building on Linux

git clone --branch= --recursive
cd fost-hello
Boost/build 58 0
Boost/install 58 0

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 —


  • f5-threading — Preview of the first Fost 5 library which includes help for threading.
  • 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-android-ndk — The native code for Android. Includes required parts of Boost configured to use the standard Android build system.
  • 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 —

Detailed change log


  • Add the F5 threading library to the standard project includes.
  • Optimise the JSON unparse, especially for the case where we can unparse into a buffer.
  • Add a fostlib::json::unparse that takes a fostlib::string.
  • Add a fostlib::json::get overload that can be given a default to substitute if the value doesn't exist.
  • Added coercion for std::vector to JSON, which will give an array of the vector values coerced to JSON.


  • Downgrade two log messages to debug level.
  • Add PATCH method to the raw beanbag view and operations for manipulating them.
  • Add op:remove and op:created transformations for PATCH requests.


  • Fix up the use of the root position in the jsondb::local and add a new rebase method for changing it. This causes a breaking change in the transformation function signature which now needs to take the transaction root as an argument.


  • Fixed which JSON unparse gets used by Python.


  • Improve error display and add logging of errors.