|
|
The History
-
15 years of dissatisfaction (with the IOStreams) and wondering
(whether there is a better alternative to fprintf()).
-
2 giants (log4j
and
Pantheios) on whose inspirational
shoulders to stand.
-
1 powerful concept
(Shim)
married to 1 persuasive pattern
(Type Tunnel)
-
1 weekend to prove the concept
-
Almost 2 years faffing around with work, and
Pantheios, and
Extended STL, and
Monolith*,
and so on before getting my act together and releasing it.
-
The rest of my C++ programming life to enjoy fast, extensible,
localised and 100% type-safe text formatting/output.
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!
-
Very high efficiency. It is faster
than:
C++'s IOStreams (by ~100-900%),
Boost.Format (by ~400-1600%)
and
Loki.SafeFormat (by ~35-450%).
Verify the performance claims for yourself: just type
"
make test.performance"!
-
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 2010
FastFormat 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 2010
Dr. 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 2010
FastFormat 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 2009
FastFormat 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.
There're a couple of typos in Table 4, which are corrected here.
|
| 13th February 2009
FastFormat 0.3.1 beta 3 is released.
Version 0.3 includes the ability to specify min-width and/or max-width and/or alignment; beta 3 provides full compatibility with
Borland 6.1
|
| 28th December 2008
FastFormat 0.2.1 beta 6 is released.
It now contains comparisons - favourable ones, as you'd expect - with Loki's SafeFormat, to accompany those with Boost, C's Streams and C++'s
IOStreams
|
| 3rd September 2008
FastFormat 0.2.1 (alpha 1) is released.
|
|