Pylon: a portable foundation library

Note: The Gobo project is recommended as a replacement for Pylon. Both libraries were started independently to fill a similar need for a portable foundation library. Gobo is now the de-facto standard for Eiffel libraries, and its coverage is much more extensive than Pylon. Pylon is not actively maintained.

Current version: 0.82(beta) 1998-01-04





Pylon is a compact foundation library for writing portable Eiffel software and libraries. It provides the classic data structures (lists, sets, tables) and a few missing bits and pieces which are useful in most applications but not present in Eiffel's standard kernel library.

The library is freeware and distributed under liberal licensing conditions (basically requiring only that the original copyright notice remains unchanged) allowing unhindered uses in most environments.


The emphasis is on portability. The library relies only on (a subset of) the standard Eiffel kernel, and is designed so that it compiles with as many Eiffel compilers as possible. It is then possible to write software depending solely on Pylon and the kernel to preserve portability.

Making Eiffel code portable is not as easy to achieve as it should be, especially for data structures libraries. This library has been tested (and ported, as it was always necessary to accommodate each compiler's peculiarities) with the main Eiffel compilers: ISE Eiffel, TowerEiffel, SmallEiffel and Visual Eiffel. In principle, it should work with any other ELS95 compliant compiler.

All non portable code is contained in a single small class, P_SYSTEM, with an implementation for each compiler mentioned above. It is very simple to produce a new one for an unsupported compiler.

The library itself is a single small cluster (about 50 classes), that is lightweight enough to be used concurrently with other data structure libraries if necessary -- so that using Pylon in some clusters does not imply that it need be used in the whole system.


The library is a compact cluster allowing easy integration with other libraries. It contains two main groups of classes: data structure and foundation facilities.

The data structures are the classic containers needed for everyday programming: lists, stacks, queue, sets, and various tables with associated access objects like iterators. The implementations are as classical as the structures: linked or array based lists, hash tables, etc.

The cluster separates the definition of the interfaces and generic capabilities, which are in deferred classes, from the actual implementations (so for instance a deferred P_LIST[G] class is implemented by P_LINKED_LIST for linked lists and P_SEQUENCE_LIST for array based lists).

The algorithms and class structure used are not unusual, the only innovation may be in the iterators which combine in a convenient way the abstraction of external iterators with the versatility of container-based cursors.

The foundation part of the library includes other facilities missing from the kernel like date and time, a spartan but very portable serialisation facility, along with a few other utilities like number formatting and string parsing.

More extensive explanations are provided in the full documentation (see above).

top | page author