The ZooLib C++ Cross-Platform
Application Framework

ZooLib allows you build native applications for a variety of platforms and processors from a single code base, with little need for platform-specific source.

In the rare event non-portable code becomes necessary, it is simple and easy to include it inline via conditional compilation, using one of the provided preprocessor symbols.

It was released as Open Source software under the MIT License in the Fall of 2000.

ZooLib was originally developed as a proprietary library starting in 1990 by Andrew Green of The Electric Magic Company and Learning in Motion, with the help of the Ontario Institute for Studies in Education of the University of Toronto.

What is ZooLib?

You don't need to link in everything to write a ZooLib application; only the mutex, threads, and reference counted smart pointers (ZRef template) are required to make a minimal ZooLib application. For example, you could use only the networking classes to make a network daemon with no UI, or maybe a database server if you also included the database classes.

About ZooLib

ZooLib requires only very basic support from the underlying operating system and user interface layer. Because of this, and because the platform-specific layer in ZooLib is so well architected, an expert programmer could bind ZooLib to a totally new platform in a few weeks once he or she was familiar with ZooLib internals.

Getting the ZooLib Source Code

ZooLib is presently transitioning from SourceForge's CVS revision control system to Subversion. But it is being extensively refactored at the same time so the current Subversion code is not yet ready for production use.

You can obtain the current production source code via anonymous CVS:

Supported Platforms and Instruction Set Architectures

ZooLib requires only very basic support from its host operating system. It's best if threading and atomic arithmetic are available, but ZooLib provides fallbacks for the cases where they aren't.