|  | 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. |  |