Edit Rename Changes History Upload Download Back to Top


Sport is the Smalltalk portability library. Sport smooths out the differences between different smalltalk dialects by being like an insulating layer. Sport presents a common API on all platforms and it is implemented separately on each platform to map between the dialect specific API and the Sport API.

To get hold of the Sport implementation for your dialect, have a read of this page for context and then visit the Sport SourceForge project page.


In fact, Sport presents a number of APIs. For example Sport currently supports files, sockets, time and exceptions plus some utility methods. Taken together, all these APIs form the Sport API.

The Sport API will change over time. For this reason the Sport API is versioned with versions named A, B, C etc. The first version of Sport was not formally defined or specified and the API evolved. When it was first written it was not given a name, but now that we are looking at further versions of the API we will refer to that first API version as version A.

The Sport classes all carry the prefix "Spx" where x is the version letter. For version A, the first Sport version, x is null and so the prefix is just "Sp".

One reason for using a prefix in the name is that we want to allow a single Smalltalk image to have an implementation of every version of the Sport API loadaed at the same time. This, combined with a rule that no changes may be made within an API version that breaks code already using that API version, means that we have a robust way of ensuring backwards compatibility. If you want to use some old code that uses API version A when everything else in your image is using API version G, no worries. Go right ahead.

The second reason for using a prefix is that not all Smalltalk dialects implement name spaces. Names paces would be a reasonable alternative way to handle API versioning, but in practice it is not an option because there is no standard namespace implementation across even two dialects let alone all dialects. Class prefixes works and will work even in Smalltalks that do have a namespace model.


There are currently implementations of Sport for several Smalltalk dialects. Each dialect listed below is followed by the Sport API versions implemented for that dialect:

 Dialect  Maintainer  API Versions  Available from...  
 VisualWorks  Bruce Badger   A   The Cincom public Store. Load the "Sport Development" bundle.
 GemStone  Bruce Badger   A   The GemStone .st code is held as a class method in the VisualWorks Sport bundle. Load the VW version and look at the classes whose name ends in ...ForGemStone.
 Squeak   Janko Mivsek   A   Package Sport on SqueakMap, SqeakSource and Universes
 Dolphin   ?   A   ?
 Visual Age   Normand Mongeau   A   ?
 GNU/Smalltalk   Paulo Bonzini   A   ?
 Visual Smalltalk   Leandro Caniglia   A   sourceforge.net/project/showfiles.php?group_id=197990

API Specifications

The specification of each Sport API version will consist of a subject area (e.g. Sockets) within which there will be a number of classes (e.g. SpbSocket) within which there will be a number of selectors each with a description of what arguments are accepted and what is returned.


In his role as chairman of the Board of Directors of the The OpenSkills association, a private UK registered corporation and the owner of this wiki, Mr. Bruce Badger has released the content of this Open Skills wiki article entitled "Sport" under the terms of the GNU Free Documentation License Be assured that henceforth anyone and everyone has the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. It is further hereby certified that The OpenSkills association is the owner of the copyright on this article which is being released under the GFDL.

Let me add that it really, really is OK for the text from this page about Sport to appear on Wikipedia under the GFDL. Really. Bruce Badger (really.)

Edit Rename Changes History Upload Download Back to Top