Fost 4 release now out

Created 25th June, 2015 04:45 (UTC), last edited 4th July, 2015 04:18 (UTC)

This is the first release for C++14. It includes a preview of a first version of the Fost 5 threading library, but fost-windows has been removed due to continued in-accessibility to a compiler and test platform. Old versions of Boost should probably be rebuilt so that they will be built with C++14.

All of the changes for this switch are going to take a bit of time to settle down. So far we are using C++14 for Android and Linux projects based on this release, but the packaging of it is probably still a bit off in some of the -dev projects.

We've also restricted the Boost versions that we're supporting to 1.55 through 1.58. And Android library is currently using 1.56.

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


  • Remove explicit types to get rid of auto_ptr uses.


  • Use std::rethrow_exception to move an exception between threads.
  • Added variadic versions of fostlib::push_back and fostlib::insert.
  • Add coercions for ascii_string and utf8_string to json.
  • We need libatomic if we're using gcc++ (or clang) for many programs so just have it included.
  • Pretty up some common log patterns when using colour output.
  • Added colour options to the stdout logger.
  • Remove the FOST_HAS_MOVE define because with C++14 we don't need it.
  • Test file names can now end in .tests.cpp as well as -tests.cpp.
  • Removed internal uses of boost::scoped_ptr.
  • Add SHA256 to the crypto wrappers.
  • Replace all uses of boost::filesystem::wpath with path.
  • When building an executable make sure that we pull in at least everything for fost-core.
  • Fix a build error with Boost 1.58.0.
  • Switch to C++14.
  • Improve the exception information where a jcursor::insert fails due to existing data at the requested key.


  • Remove all uses of auto_ptr. Replace some with move semantics, others with unique_ptr.
  • Fixed up the tests to use the new service API on the network connections.
  • Changed the way that Boost ASIO IO services are used so that server accept sockets can be serviced totally independantly. This is an ugly workaround for the problem, but does at least cause all requests to be properly serviced.
  • Allow apostrophes in the fostlib::url::filepath_string strings.


  • Add a pre-commit mechanism to the jsondb::local.
  • Make the JSON DB local transaction movable.
  • Add a data member to the local JSON transaction so all of the data can be fetched.
  • Add JSON database post-commit hooks to augement the transactions ones we already had.
  • Fix a build error with Boost 1.58.0.
  • Switch to C++14 and remove auto_ptrs.


  • Strip out auto_ptr.
  • Add a new test so we can check the version of Python we're using.
  • Alter the fpython tests so they don't rebuild the host for each one.
  • Updated to C++14.