Matthew Wilson's latest book, Extended STL, volume 1: Collections and Iterators, discusses principles and practices of STL extension, including essential concepts and components used in the Pantheios core. It will be published by Addison-Wesley in June 2007. You can pre-order it from Amazon now.

Extended STL, volume 1: Collections and Iterators

What people are saying about it:

[Dec '10] Coming soon: Pantheios.Net. The same technology that allows Pantheios (C++) to be robust, succinct, extensible and highly efficient, applied to the .NET platform. Watch this space ... (or get in contact)





Here's a list of 10 essential things you need to know before you get started with Pantheios:
  1. It's a diagnostic logging API library, not a diagnostic logging library

    One criticism that we sometimes get from new users goes along the lines of

    "... the performance is brilliant, but you don't have all the features of log4cxx ... "

    We know. It's designed to be that way! :-)

    Pantheios is a diagnostic logging API library. The interaction between Application Layer, Core and Front-end means that nothing else can come anywhere near Pantheios in terms of performance, type-safety or extensibility. But it's specifically designed for you to use it above existing diagnostic logging libraries that have more features.

    Although it comes with several stock front-end and back-end libraries, Pantheios does not come with hugely rich transport mechanisms, and that's by design. Instead, you're advised to combine an existing feature-rich diagnostic logging library (such as ACE, log4cxx, log4cpp) with the peerless features afforded by the Pantheios architecture: 100% type-safety, high efficiency, not paying for what you don't use, and so on. To do so, you can write a simple Back-end to wrap an existing feature-rich diagnostic logging library, and plug it in at link-time. That way you get all the peerless performance and safety of Pantheios, with the rich feature set you require. It's win-win!

    There are several examples of how to do just that included in the distribution.

  2. It's open-source, and 100% free

    It uses the widely appreciated (modified-)BSD license.

    Commercial customisations are available from Synesis Software.

  3. It depends on several other libraries, but they're also open source and 100% free

    Apart from one library - STLSoft - all the libraries on which Pantheios depends are bundled with the Pantheios distribution. These libraries are:

    • xTests

      A simple, lightweight unit-/component-testing libary for C and C++

      This library is used only in the unit-/component-testing

    • b64

      A simple, exceedingly lightweight implementation of the Base-64 encoding

      This library is used by the pantheios::b64 inserter class

    • shwild

      An implementation (UNIX) shell compatible wildcards.

      This library is used only in the unit-/component-testing

    The other library on which Pantheios depends is STLSoft. STLSoft is not an STL replacement, it is an STL extension library. Additionally, it provides a number of system and compiler discrimination features that Pantheios uses to simplify its implementation.

    Version 1.9.85, or later, of the STLSoft libraries is required both to to build and to use Pantheios. Since the STLSoft libraries are 100% header-only, this is no more onerous than unzipping and defining the appropriate environment variable (STLSOFT).

    When setting the environment variable, please ensure that the directory $STLSOFT/include (UNIX) or %STLSOFT%\include (Windows) is the one that contains the rootmost header files. In other words, if you were to #include <stlsoft/memory/auto_buffer.hpp>, this will be located in $STLSOFT/include/stlsoft/memory, not $STLSOFT/stlsoft/memory.

    Note: STLSoft 1.10 has been a long time in the making. The only significant remaining impediments to its final release are:

    • completion of the documentation
    • update of the website

    There are no other reasons - the libraries themselves are in a high (albeit not total) state of readiness. While all software contains bugs, you may be assured that there are no known outstanding quality issues that will impact on the use of Pantheios.

  4. It's incredibly efficient, and is faster than all other serious C++ diagnostic logging libraries by a huge margin (up to two orders of magnitude)

    Check out the performance tests if you don't believe us

  5. It is 100% type-safe

    ... unlike any diagnostic logging library built on C's Streams or C++'s IOStreams libraries.

  6. Selection of logging transport (i.e. "back-end(s)") is done at link-time, for very good reason

    The reason is simple: a diagnostic logging library must be available whenever _any_ part of the application code needs it. In C++, it's possible to execute a significant amount of functionality during dynamic initialisation, so we cannot afford to wait for main() to set up the logging.

    The consequence of this is Pantheios' only hard-to-use aspect, that of setting up the linking. There are several tutorials available for this purpose in the documentation

  7. It's highly extensible

    Pantheios ships with a number of stock transports (known as "back-end(s)"), including console, Syslog, COM Error Object, speech, Windows Debugger, Windows Event Log. You can extend the range with a custom back-end by implementing a very simple C-API. The details are in the documentation.

    By default, the Pantheios Application Layer understands a large range of string types (and types that can be meaningfully converted into strings, such as struct tm, FILETIME, struct in_addr, and so on). Pantheios allows you to infinitely extend the range of types that may be incorporated into diagnostic logging statements in your application code. There is an extensive tutorial on this in the documentation.

  8. It's being used by serious commercial enterprises, including very high throughput financial systems

    Pantheios is in use by major companies in Australia, Europe, the USA, and throughout the world.

    One notable user in New York contacted Synesis Software in Dec 2007 to design and implement custom front-/back-ends to enhance the performance to an insane degree - not one processor cycle is wasted - because they believe that their systems will need to produce more diagnostic logging output than any other softare system in history.

    An NDA prevents us from naming the client, their business, or the nature of the customisations, but we can say that they're delighted with the system's performance and reliability. They said that Pantheios operates with "clock-cycle speed", and in reliability terms "it's a "rock": In the first few months of its deployment it has processed on the order of 100,000,000,000 log statements without a flicker!

  9. It's highly portable - including most C++ compilers and most/all flavours of UNIX, Linux, Mac OS-X and Windows

    Pantheios has been tested on a wide range of C++ compilers, and a reasonable range of operating systems. In UNIX flavours, there are no platform-specific constructs used. Any new compiler/platform will require a minimum of enhancement to the STLSoft configuration. The development team are always happy to help/advise any such user.

  10. Pantheios is under active development from a highly motivated team, who have the ambition that it will become the diagnostic logging API of choice for all C++ programmers who wish to have performance without sacrificing robustness or flexibility; the team want to hear from you how they can better achieve these aims

    That pretty much says it all. We know it's the best concept based on the best theory, and we're keen to help make it work well for all users everywhere.

See also

  • Pantheios Architecture - introduction to the four parts of the Pantheios architecture: Application Layer, Core, Front-end, Back-ends.
  • Downloads - download the Pantheios library (source and binaries), samples, tools and dependent projects.
  • Tutorials - tutorials on using the Pantheios library.
  • Related Material - read up on the concepts of Shims & Type Tunneling, on the STLSoft auto_buffer class, on namespace aliasing, and more ...
  • API Documentation - once you've familiarised yourself with Pantheios via the tutorials, use the online documentation for fine details on the API functions and types.
  • Project Members - see who is implementing Pantheios, and how you can help out.
  • Performance - performance tests, which demonstrate the claimed peerless performance of Pantheios.
  • Future Directions - features that are anticipated/planned, but not yet implemented.


Support This Project

Copyright (c) 1999-2010 Synesis Software Pty Ltd

Valid XHTML 1.0 Transitional