Fost 4 release now out

Created 21st June, 2010 03:18 (UTC), last edited 21st June, 2010 03:36 (UTC)

This release contains mostly a lot of work on the HTTP client (user agent) and the HTTP servers. For the Mac we now also support 32/64 bit fat binaries, and the iOS (iPhone/iPad etc.) support is much better.

If you want to get started the best place to look is the fost-hello example project.

Linux & Mac
svn co fost-hello
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
svn co fost-hello
cd fost-hello

The next release is due out on September 21st.

Download locations

Everything is available through our Subversion repository. Below are the locations for the tagged releases for Fost components.

Detailed change log

  • Exception handling
    • Allow us to throw not implemented exceptions based on Boost system errors.
  • String handling
    • Added coercion from string::hex_string to std::size_t
  • Fost authentication
    • Added a utility function to add the authentication to a user agent.
    • Fixed the signature so that it signs the query string when there is no post data.
  • Parsers
    • Removed the parser instances because they're not thread safe.
  • Host
    • Added JSON coercions for fostlib::host.
    • A host can now be configured with a port number as the service.
    • Added Python binding for the host class.
  • URL
    • The host and port number are now mutable fields of the URL.
    • Fixed a bug where port numbers weren't properly shown in URLs converted to strings.
    • Query string values may now contain forward slashes and colons.
    • Fixed a bug where query strings were being thrown away when URLs were parsed.
    • The query string can now be any sequence rather than only a map of key/value pairs.
  • TCP/IP
    • Most errors should now end up with a fostlib::exceptions::exception which allows the error to be annotated.
  • HTTP client/server
    • Fixed a bug in chunked encoding that was causing the chunks to end up in the data block in the reverse order.
    • The user agent request can now be built from passed in MIME data.
    • The response body can now be detached from the client response as can the request body from the server.
    • The HTTP server now accepts additional verbs, more correct resource paths and can return all status codes supported by HTTP 1.1.
    • The fget example now allows us to save to a file by using an extra parameter.
    • There is a new MIME type binary_body for handling in-memory binary MIME data.
    • Added more allowable characters to the resource parser for HTTP requests.
    • The server request now supports handling of bad requests.
    • The HTTP client post and put short cuts now accept all data types supported by the request.
    • Changed the type of the server request query string to match that of the URL.
    • The parsing of the beginning of the HTTP request by the server is now protected by a mutex because Boost.Spirit is not thread safe.
    • Corrected behaviour for 304 responses.
    • Added the 207 response code
    • URLs may contain bangs (!)
    • The request data can now be retrieved from the Python request object.
    • The user agent body is now returned as a Python string rather than as a Unicode string. Interpretation of the data is now up to the Python code.
  • POP3 client
    • Improved the error reporting by annotating exceptions in as many places as possible.
  • fget example
    • Now supports the use of FOST authentication through the -authentication, -key and -secret command line switches. There's also a -user switch to handle authentication where the REST end point supports impersonation.
  • MIME
    • Improved handling of headers that don't have values.
    • Added support for multiple headers of the same name.
  • Object pointers
    • Implemented more of the pointer dereferencing operators.
  • Model initialisation
    • There is now an explicit type for the parameter used to initialise a model instance. This will allow the available information to be extended in a sane manner.
  • Mac builds
    • Added support for Postgres installation into /usr/local/pgsql/
  • Code layout
    • Moved all non-private fost-internet headers out of include/fost/detail
    • Moved a number of fost-orm headers into much more sensible locations
    • Changed the layout of the internet Python code.
    • Moved internal headers in fost-py to a better location