Fost 4 release now out

Created 21st December, 2009 13:39 (UTC), last edited 21st December, 2009 13:48 (UTC)

The next version of Fost has just been released and tagged in our repository.

There has been major work on the build system and the internet library as well as a large number of other small and large changes.

  • For users of Karmic it is now possible to use the version of Boost that comes from the package repository and we'll very soon be supporting a central Boost location on Windows as well.
  • Within fost-inet we've added POP3 mailbox support and made big improvements to the URL parsing.
  • The testing is been refactored out so that only those that don't rely on external resources are run during most builds.
  • On Windows the MFC/ATL requirement is now optional (off by default and can be turned on by adding have_mfc=yes to the build options for any of the libraries). This makes the libraries usable with Microsoft's Express compilers.

We think that this version should be better on OS/X as well. By the next release we should have better access to Macintosh machines so the Mac support should be more stable in future too.

Next steps

We'll be working more on the documentation and examples and we'll be making it simpler to use the libraries, especially on Ubuntu where the use of the built in Boost packages now means we can package the Fost libraries and development files as well.

We are also planning on finalising the JSON API so that we can declare that part stable and get it documented.

4.10.03.x is due out on March 21st, 2010.

Subversion locations

The tagged release is at the following locations:

In detail

  • Added more documentation and made some small refactorings due to that.
  • The spider has been refactored. Whether it will follow redirects is now configurable.
  • Query strings are now used properly when fetching resources using the HTTP agent.
  • Query strings are now handled properly when URLs are joined using the Python language bindings.
  • Started to sketch out how the timezones (based on zoneinfo) might be handled.
  • Added a POP3 mailbox processing API.
  • Fixed up the MIME text_body part's handling of the Content-Type header when it is being loaded up from somewhere else.
  • Added a MIME header API for setting sub-values
  • Changed the instance creation API in the O/RM library to use an auto_ptr to make the ownership transfer explicit.
  • Python JSON handling is now able to convert sets and frozen sets to fostlib::json instances (they appear as lists/arrays).
  • The old fostlib::utf8string (a typedef to std::string) is now replaced by a proper tagged string implementation, fostlib::utf8_string. This makes the use of UTF8 strings safer and the encoding/decoding of the strings explicit.
  • A fix to the spider so that it can properly handle non-200 status codes when running tests.
  • A number of missing characters have been added to the URL parser, as well as support for query strings.
  • The URL parser is now less strict about what it accepts over what it will build.
  • The AWS s3put example no longer tries to run a test. The security for this won't work for other people building Fost.
  • There is a new fost-install-to-directory rule that gives greater control over the install locations.
  • There is a new fost-lib-autotest rule that automatically finds tests and source code and makes sure the tests are run. Various targets have been ported to this new rule.
  • The output files are tagged for debug builds, i.e. their names change for debug builds.
  • Much of the build system is less dependant on the location of the build files.
  • There is a new build option of have_mfc=yes that can be used to enable MFC/ATL support which is now off by default.
  • There should now be cleaner handling of programs that are stopped with CTRL-C
  • The WINVER macro is now only defined if not already defined.
  • The compile scripts (Windows) no longer assume the toolset.
  • Various parts of the JSON API will now accept narrow and wide character literals as expected.
  • A memory leak has been plugged for when a dynamic link library fails to load on Linux and Macs.
  • All exceptions can now be coerced to strings.
  • fostlib::ascii_string instances are now properly checked on platforms where char is unsigned.
  • boost::filesystem::wpath instances are now properly coercable to and from strings and JSON.
  • The DLL path is now set on executables on Unix. This should remove (or atleast reduce) the requirement to set the LD_LIBRARY_PATH.
  • Fixed the JSON pretty printing example in fost-base.