This article is from the Object-Oriented Technology FAQ, by Bob Hathaway firstname.lastname@example.org with numerous contributions by others.
From: hoelzle@Xenon.Stanford.EDU (Urs Hoelzle)
Subject: Announcing Self 3.0
Date: 28 Dec 93 22:19:34 GMT
ANNOUNCING Self 3.0
The Self Group at Sun Microsystems Laboratories, Inc., and Stanford
University is pleased to announce Release 3.0 of the experimental
object-oriented programming language Self.
This release provides simple installation, and starts up with an
interactive, animated tutorial.
Designed for expressive power and malleability, Self combines a pure,
prototype-based object model with uniform access to state and
behavior. Unlike other languages, Self allows objects to inherit state
and to change their patterns of inheritance dynamically. Self's
customizing compiler can generate very efficient code compared to
other dynamically-typed object-oriented languages.
The latest release is more mature than the earlier releases: more
Self code has been written, debugging is easier, multiprocessing is more
robust, and more has been added to the experimental graphical user interface
which can now be used to develop code. There is now a mechanism
(still under development) for saving objects in modules, and a
The Self system is the result of an ongoing research project and
therefore is an experimental system. We believe, however, that the
system is stable enough to be used by a larger community, giving
people outside of the project a chance to explore Self.
2 This Release
This release is available free of charge and can be obtained via
anonymous ftp from Self.stanford.edu. Also available for ftp are a
number of published papers about Self.
There is a mail group for those interested in random ramblings about Self,
Self-interest@Self.stanford.edu. Send mail to email@example.com
to be added to it (please do not send such requests to the mailing list
2.1 Implementation Status
Self currently runs on SPARC-based Sun workstations running SunOS 4.1.x
or Solaris 2.3. The Sun-3 implementation is no longer provided.
2.2 Major Changes
Below is a list of changes and enhancements that have been made since
the last release (2.0.1). Only the major changes are included.
o The graphical browser has been extended to include editing
capabilities. All programming tasks may now be performed through the
graphical user interface (the "ui"). Type-ins allow for expression
evaluation, menus support slot editing, and methods can be entered and
edited. If you are familiar with a previous version of the Self
system, Section 14.1 of the manual entitled "How to Use Self 3.0"
contains a quick introduction to the graphical user interface. The
impatient might want to read that first.
o A mechanism - the transporter - has been added to allow arbitrary
object graphs to be saved into files as Self source. The system has
been completely modularized to use the transporter; every item of
source now resides in a transporter-generated
module. Transport-generated files have the suffix .sm to distinguish
them from "handwritten" files (.Self), though this may change as we
move away from handwritten source. The transporter is usable but rough,
we are still working on it.
o Every slot or object may now have an annotation describing the
purpose of the slot. In the current system, annotations are strings
used to categorize slots. We no longer categorize slots using
explicit category parent objects. Extra syntax is provided to annotate
objects and slots.
o A new profiler has been added, which can properly account for the
time spent in different processes and the run-time system, and which
presents a source-level profile including type information (i.e.,
methods inherited by different objects are not amalgamated in the
profile, nor are calls to the same method from different sites). It
also presents a consistent source-level view, abstracting from the
various compiler optimizations (such as inlining) which may confuse
o Privacy is not enforced, although the privacy syntax is still
accepted. The previous scheme was at once too restrictive (in that
there was no notion of "friend" objects) and too lax (too many object
had access to a private slot). We hope to include a better scheme in
the next release.
o The "new" compiler has been supplanted by the SIC ("simple inlining
compiler"), and the standard configuration of the system is to
compile first with a fast non-optimizing compiler and to
recompile later with the SIC. Pauses due to compilation or
recompilation are much smaller, and applications usually run faster.
o Characters are now single-byte strings. There is no separate
o Prioritized inheritance has been removed; the programmer must now
manually resolve conflicts. We found the priority mechanism of
limited use, and had the potential for obscure errors.
2.4 Bug Reports
Bug reports can be sent to firstname.lastname@example.org. Please include
an exact description of the problem and a short Self program
reproducing the bug.
This release comes with two manuals:
How to Use Self 3.0 (SelfUserMan.ps)
The Self Programmer's Reference Manual (progRef.ps)
-- The Self Group