The Alternative

Are you dissatisfied with the usability, performance, lack of type-safety,
and lack of / difficulty with extensibility of the printf()-family,
Boost.Format and the IOStreams?

Do you value speed, robustness and internationalisation support?

If the answer to these questions is yes, meet FastFormat, the
best C++ output/formatting library you'll ever use. It has:

Very high robustness, including 100% type-safety. It is
more robust than:
C's Streams,
C++'s IOStreams,
Boost.Format
and
Loki.SafeFormat. Indeed, with the
FastFormat.Write
API it is impossible to write defective client code!

Infinite extensibility. You can extend it to work with any argument
type, any output/destination type, and with any format type

I18N/L10N capabilities. The
FastFormat.Format
API is a replacement-based API (like the printf()-family,
Boost.Format and Loki.SafeFormat), and supports the runtime
specification of format strings which facilitates L10N

Simple syntax. There are no overloaded operators, no weird insertion
operators/operations, and no need to prep your arguments. Just write simple,
clear, transparent code, without sacrificing expressiveness for flexibility.

Atomic operation. It doesn't write out statement elements one at a
time, like the IOStreams, so has no atomicity issues

Thread safety. Each statement operates independently from all others,
and it works successfully in single and/or multithreaded scenarios

Highly portable. It will work with all good modern C++ compilers; it
even works with Visual C++ 6!

And it does all of this without macros, operator overloading or template meta-programming tricks.

News

22nd June 2010FastFormat 0.6.1 (alpha 1) is released.
Version 0.6.1 (alpha 1) incorporates performance optimisations in the application layer templates for all statements, and to the conversion of default-formatted integers.
More details ...

June 2010Dr. Dobb's has published the article
C++ and format_iterator,
which describes the design and implmentation of a flexible, expressive and type-safe
output iterator component, which can be used in preference to std::ostream_iterator.

13th April 2010FastFormat 0.5.6 is released.
Version 0.5.6 adds support for '#' fill character, as well as providing greater detection (and rejecton) of defective format specifications.
More details ...

June 2009
The June issue of the ACCU's Overload
magazine contains
An Introduction to FastFormat, part 3: Solving Real Problems, Quickly.
This is the third in a series of three articles about FastFormat that examine
the current alternatives in C++ formatting, and demonstrate how FastFormat
provides an optimal mix of robustness, efficiency, flexibility, expressiveness
and other software quality measures.

1st May 2009FastFormat 0.3.5 is released.
Version 0.3.5 is a full (non-alpha, non-beta) release, and provides full compatibility with GCC,
Visual C++, and several other popular compilers on 32- and 64-bit Mac OS-X, UNIX, and Windows.

April 2009
The April issue of the ACCU's Overload
magazine contains
An Introduction to FastFormat, part 2: Custom Argument and Sink Types.
This is the second in a series of three articles about FastFormat that examine
the current alternatives in C++ formatting, and demonstrate how FastFormat
provides an optimal mix of robustness, efficiency, flexibility, expressiveness
and other software quality measures.

February 2009
The February issue of the ACCU's Overload
magazine contains
An Introduction to FastFormat, part 1: The State of the Art.
This is the first in a series of three articles about FastFormat that examine
the current alternatives in C++ formatting, and demonstrate how FastFormat
provides an optimal mix of robustness, efficiency, flexibility, expressiveness
and other software quality measures.