Announcing Self 3.0!!!

Dave Ungar David.Ungar at Eng.Sun.COM
Thu Dec 23 10:52:24 UTC 1993

               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
source-level profiler.
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 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 at Send mail to self-request at
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
  the programmer.
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.
o Characters are now single-byte strings. There is no separate
  character traits.
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 self-bugs at Please include
an exact description of the problem and a short Self program
reproducing the bug.
2.5 Documentation
This release comes with two manuals:
   How to Use Self 3.0 (
   The Self Programmer's Reference Manual (

Merry Christmas!

-- The Self Group

More information about the Self-interest mailing list