Fost 4 release now out

Created 4th April, 2014 11:16 (UTC), last edited 5th April, 2014 03:36 (UTC)

The new release was tagged on the new git repositories a couple of weeks ago. The transfer of everything to git turned out to be far more complex than I could ever have expected — I think it actually took longer and more work than converting from Visual Source Safe to Subversion, and I had to write my own software for that. The thing that had me confused for a long time was my expectation that git would allow me to handle the full history, but that doesn't seem to be the case — oh well, in any case a story for another time.

Anyway, with the move to git there's also a number of clean ups and small improvements outlined below, and I've also pushed out a meta-build system that I use to manage to the projects in their entirety at fost-dev.

The old Subversion repositories will remain, but they won't receive further updates.

Linux & Mac

git clone --branch= --recursive
cd fost-hello

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

export DYLD_LIBRARY_PATH=dist/lib
git clone --branch= --recursive
cd fost-hello

Download locations

  • fost-aws — Amazon AWS and OpenStack —
  • fost-base — Build system and core libraries —
  • fost-hello — Sample project —
  • 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-windows — Windows support —

Detailed change log


  • Extend the fostlib::timestamp and fostlib::date interfaces somewhat. Added a number of missing coercions and constructors to make things simpler and made sure that there is no loss in precision when converting to and from strings and JSON. Moved a number of timestamp and date members inline for speed.
  • Allow dates to have days added and subtracted from them.
  • Add today member to fostlib::date.
  • Fix some warnings for a couple of compilers.
  • Added a new split member to jcursor to allow one to be created by splitting up a single string.


  • Folding of long lines in MIME headers needs to be conditional on the protocol because most MIME protocols use it, but HTTP does not and some web servers don't handle folded lines.
  • The MIME header names and values need to be retrievable in a case-insensitive manner as not everybody agrees on the correct case.
  • The fostlib::url::query_string class can now also be used to parse the standard format query string on the server side. The HTTP server query string is also now always a url::query_string instance.
  • Hold the parser lock for a much shorter period when parsing a HTTP request to the web server.
  • Alter the testing HTTP server request class so it can take a query string and the headers/body are optional.


  • The spider now tries more types of link including script and img elements.


  • Added support for Swift as well as S3.
  • The account to use can now be passed to s3put with -a.
  • Added s3get to fetch files and refactored the s3put command to move the logic of where the upload decision happens.