Fost 5 release now out

Created 22nd December, 2018 03:42 (UTC), last edited 24th June, 2019 04:23 (UTC)

There are some large changes in process at the moment. We're revamping the string handling in f5-cord to used shared ownership and persistent data. The new string has many improvements and fostlib::string will continue to bridge the gap between the old and new designs, although we will start on a track of deprecation of much of the old API.

We are also tidying up the JSON implementation to work with the new string type. This will split it apart from the rest of fost-base and make it much easier to use in other projects.

The Android unit test runner is now fully working and stable. It runs all of the “check” tests from all of the relevant libraries. For details check it out on Github. The Apple Mac builds are now also fully stable (at least for Mojave) and we are working on a Mac iOS test runner to complement the Android one. This should be working by the next release.

Lots of changes have been made to the cmake builds to make them more flexible. The f5-json-schema library is now usable for validating request bodies for web APIs.

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 —
  • test-android — Android application that runs Fost unit tests —
  • 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 const iteration of shared_buffer.
  • Support (explicit) conversions of the string types to std::string_view
  • Add a new f5::cord::string type, immutable shared string.
  • Add a starts_with member to u8view.
  • Add a missing comparison operator.


  • Remove the old deprecated eventfd based code.
  • Add clear member to tsmap and improve the return type for unique_ptr.
  • Fix a bug in tsmap::insert_or_assign which caused it to return the wrong value.
  • Small improvement to API for moving things into a tsmap.
  • Fix a horribly broken search API in tsmap.


  • Complete the implementation of fetching schemas over HTTP(S).
  • The implementation now fully conforms to the V7 test suite.
  • Added an API that can be used to register schema loaders.
  • Refactor the assertion functions so that they will be easier to extend in future.


  • Split the CMake configuraion into smaller parts.
  • Changes to string handling to support wider adoption of f5::u8string
  • Support EdDSA JWTs.
  • JWT secrets can now be looked up via a function passed to the load function.
  • Add iterator traits to JSON iterator.
  • Tidy up some headers.
  • Do less work when stringifying JSON.
  • Refactor the integral to integral coercions to remove a lot of complex template meta-programming.
  • Add a way to get a JSON pointer URL fragment string for a jcursor.


  • Allow setting a URL fragment from a jcursor.
  • Implement a better URL join that covers many more of the required cases.
  • Remove usernames and passwords from URLs.
  • Rename url::anchor to url::fragment as that is the proper term.


  • Add fost.schema.validate view


  • Extend schema validation to fields and CSJ.


  • Add odin.password.hash view
  • Remove deprecated warnings
  • Added view
  • Support app OPEN access policy
  • doesn't need app_id as a prefix anymore.
  • Fix table app_user PK order
  • Add table app_role_ledger
  • Add table app_user_role_ledger
  • Added app user roles
  • Tighten up some APIs in the example configuration.
  • Added module opts/installation-id
  • Added view
  • Added view
  • Added view
  • Added Expire user module