Fost 5 release now out

Created 25th September, 2018 03:04 (UTC), last edited 25th September, 2018 10:37 (UTC)

The switch to CMake has been generally pretty good. There are a few rough edges, and some weird things that it just doesn't seem to want to do. As a consequence, things like examples don't work very well yet, but it is very good that the build process now follows a more “standard” approach.

The Mac support has also had it's ups and downs. The switch to C++17 caused problem due to the age of the compiler available, but that was fixed with the new command line tools that landed week. The final piece is some changes to the system libraries that are supposed to land with Mojave. Hopefully this will be smooth when it's used.

A new JSON schema validation library has been added and schema validation features are now available in Fostgres. It would make sense to also add them to the Beanbags, but that work hasn't been planned yet, let alone started.

Building on Linux & Mac

You should install Boost development packages using your package manager or brew to safe you from having to build them.

git clone --branch= --recursive
cd fost-hello
mkdir build.tmp
cd build.tmp
cmake -G Ninja .. -DCMAKE_INSTALL_PREFIX=../dist
ninja install/strip
export LD_LIBRARY_PATH=../dist/lib

On the Mac you will need to set DYLD_LIBRARY_PATH before running hello-world-d

export DYLD_LIBRARY_PATH=../dist/lib

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 —
  • wright — Experimental build system —


  • f5-cord — First version of a new string library with compile time string and Unicode support —
  • f5-json-schema — JSON Schema validation —
  • f5-threading — Preview of the first Fost 5 library which includes help for threading —
  • fost-aws — Amazon AWS and OpenStack —
  • 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-postgres — PostgreSQL —
  • fost-web — Web server libraries —
  • fost-wright — Experiment in a build system —

Detailed change log


  • Add a member to fetch the number of code points from u8view.
  • Fix a bug in the printing of u8view to streams.
  • Add more equality comparison for u8view.
  • Add better members for initialising the shared_buffer.


  • Replace the use of eventfd with a pipe.
  • Remove the deprecated `f5/threading/boost-asio.hpp` header.


  • Add a parser for JSON pointers.
  • fostlib::json::apply_visitor can now take any number of lambda like expressions.
  • An empty jcursor needs to be represented as an empty array in JSON.
  • Add an object and array member to json to make access and iteration simpler.
  • Add direct comparison between JSON and u8view.
  • Add iteration over the command line arguments passed to fostlib::arguments.
  • Remove info member from exception and change throw to noexcept.
  • Remove fostlib::variant as it's not used.
  • Switch fostlib::json to use std::variant.
  • Remove memoize, as it's never been used.
  • fostlib::nullable, fostlib::null_t and fostlib::null are now aliases to the std::optional types and values.
  • Add a logger that outputs single lines of JSON to the console.
  • Use guids to generate temporary file names.
  • Fix a potential problem with the pathname join function one of the paths is empty.
  • Fix up the library searches for dynlink
  • Add some missing append operation for string
  • Fixed password hashing to use u8view instead of utf8_string
  • Fixed include for fostlib::insert
  • Use a more efficient implementation for crypto_bytes — Reverted for now as the required system call header is not always available.
  • Added RIPEMD-256 cryptographic hash function.


  • Improve handling of weird ways TCP connections can be dropped and add more logging.
  • The HTTP response body doesn't really need to be const.
  • No longer make use of Boost regex library.


  • Fix a bug where a child death after all jobs had been handed out would result in the parent process being killed.
  • Add support for distribution of work over a network connection.


  • Add JSON schema validation for object PUT and PATCH.
  • Fix the order of the expected & actual results for object request.
  • Fix a bug in the HTTP request checking where expressions would be resolved twice.
  • Add fg quote function


  • Returned Unprocessable Entity when user's email already exists in the system.
  • Added Login with Odin page
  • Added App module
  • Added odin.api.login view
  • Added link Facebook module
  • Added login with Google module
  • Added login with Facebook module
  • Added reset forgotten password API view
  • Added forgotten-password module
  • Added self registration API with full-name
  • Added self registration API with e-mail address
  • Change the way that Odin migrations are run.
  • Deprecate setting a password when a user is created. It should be done separately