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.
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)
|
|
Pantheios
|
|
|
Essentials
Here's a list of 10 essential things you need to know before you get started with
Pantheios:
-
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.
-
It's open-source, and 100% free
It uses the widely appreciated (modified-)BSD license.
Commercial customisations are available from Synesis Software.
-
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.
-
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
-
It is 100% type-safe
... unlike any diagnostic logging library built on C's Streams or C++'s IOStreams
libraries.
-
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
-
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.
-
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!
-
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.
-
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.
|
|
Links
|
|
|
|
|