Fost 5 release now out

Created 23rd June, 2019 04:17 (UTC), last edited 24th June, 2019 04:22 (UTC)

The biggest change this time around is that a large number of APIs have been marked for deprecation. These will be removed after the next tagged release (September), so please take special care with the deprecation notices and update any code.

We are currently working on full UTF-16 and UTF-32 support in f5-cord. Once this lands then we will deprecate a slew more of old string APIs. Our target is still to replace fostlib::string with f5::u8string. It will of course take a while.

Good progress is being with iOS support now. There is a new unit test runner, test-ios, that passes all unit tests and is available to download and build.

We've removed a couple of the applications that were never being updated, beanbag and beanbag-seed.

We will also cut down the scope of the open source part of Odin to remove the application handling aspects. These just cause a complication and we believe that the only use cases are particular to us. Please get in touch if this is not the case.

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


  • fost-hello — Sample seed project —
  • mengmon — Stand alone web server —
  • test-android — Android application that runs Fost unit tests —
  • test-ios — iOS 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


  • Deprecated two argument substr as the second argument handling doesn't match std::string::substr.


  • Replace std::experimental::optional with std::optional


  • Implement string conversion (ISO Zulu time) for std::chrono::system_clock
  • Add new nonce functions that return base64url formatted random data in ordered and un-ordered variants.
  • Force conversion of the underlying string type from a tagged string to std::string be explicitly invoked.
  • Deprecate length members of tagged_string and string.
  • Add some APIs to tagged_string that are currently on string.
  • Add bin/minit back into project.
  • Deprecate string::length and tagged_string<>::length
  • Add a setting, fostlib::test::c_files_folder, describing the root folder tests should use if they need access to the file system.
  • Use of define FSL_FORCE_STD_FILESYSTEM switches from boost::filesystem to std::filesystem with names in fostlib::fs.
  • Start to process the string deprecations that we want to have:
    • Deprecate fostlib::tagged_string<T, I>::underlying().
    • Deprecate fostlib::string::c_str().
    • Add API for turning a fostlib::string into an f5::u8string (u8string_transition).


  • Add methods for fetching out string version and JSON version of mime bodies.


  • Add RETURNING support to connection's update method.


  • Add JSON directory listing view and ability to choose directory listing view for the static file server.
  • The web server takes a -C option which changes its current directory
  • Text files (text/ Content-Type) are served as UTF8.


  • Object APIs can now process JSON arrays into a separate table.
  • Add a new view to retry Postgres serialisation errors.
  • Add a request logging middleware that stores the per-request log to the database.


  • Support multiple facebook apps
  • Fix view
  • Add executable for timing password hashing rounds and configuration item for round count.