The fastest, most robust C++ formatting library (original) (raw)
| Links |
|---|
| Home |
| Download |
| SourceForge Project Website |
| Blog |
| Documentation |
| Help Forum |
| Request FastFormat training |
| Donate |
| Performance |
| Memory Guessing Game |
| STLSoft |
| Pantheios |
| Ultimate robustness! 100% type-safe Unlimited flexibility! infinitely extensible Unbeatable performance! 5 - 17 times faster than Boost.Format 1.5 - 5.5 times faster than Loki.SafeFormat |
The History
- 15 years of dissatisfaction (with the IOStreams) and wondering (whether there is a better alternative to fprintf()).
- 2 giants (log4j andPantheios) 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, andPantheios, andExtended STL, andMonolith*, 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 andLoki.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%) andLoki.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 articleC++ 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 containsAn 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 containsAn 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 containsAn 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. |