home *** CD-ROM | disk | FTP | other *** search
- .\" information on Little Smalltalk, version 2, beta release
- .SH
- General Overview
- .PP
- First, the obvious facts. This is not Smalltalk-80, nor even Smalltalk-V.
- This is the second version of the Little Smalltalk system, the first version
- of which is described in the book recently published by Addison-Wesley*.
- .FS
- * \fIA Little Smalltalk\fP, by Timothy A. Budd. Published by Addison
- Wesley, 1987. In better bookshops everywhere.
- .FE
- Version two is smaller and faster; does more in Smalltalk, less in C; and is
- designed to be more portable to a wider variety of machines (we are working
- on versions now for various PCs).
- .PP
- My attitude towards the language has been
- rather cavalier; what I liked I kept and what I didn't like I tossed out.
- This is explained in more detail in my book and in the end of this note.
- As a consequence, individuals familiar with ST-80 or Smalltalk-V will be struck
- by how much they are missing, and I make no apologies for this. On the
- other hand, you don't find Smalltalk-V posted to comp.source.unix.
- Among the features
- you won't find here are metaclasses, class methods, windows, graphics
- support, and more.
- .PP
- What you will find is a small language that does give you the flavor of
- object oriented programming at very little cost. We are working to improve
- the system, and hope to distribute new versions as we develop them,
- as well as porting it to a wide range of machines.
- If you find (and preferably, fix!) bugs let us know.
- If you make nice additions let us know.
- If you want to make complements let us know.
- If you want to make complaints let us know.
- If you want support you just might be out of luck.
- .PP
- This software is entirely public domain. You are encouraged to give it
- to as many friends as you may have. As a courtesy, I would appreciate it
- if you left my name on the code as the author, but I make no other claims
- to it (I also, of course, disavow any liability for any bizarre things you
- may choose to do with it). Enjoy.
- .SH
- Building the System
- .PP
- The first step in building the system is to unpack the sources.
- The fact that you are reading this means you have probably already figured
- out how to do this.
- .PP
- There are various different types of files sent with the distribution.
- Files ending in .c and .h are C sources, for both the parser and the bytecode
- interpreter. Files ending in .ms are manuscripts, in troff format using
- the ms macro package (this file is a good example). Files ending in .st
- are smalltalk sources, compiled by the parser to make the initial object
- image. Finally, there are a few small files that don't fall into any
- category, BUGS for listing notable bugs, the make file, and so on.
- .PP
- The next step is to tailor the system to the type of enviornment it will be
- run in.
- For most users, this should mean only changing at most three lines in the
- file env.h. These three lines are near the front of the file and are
- clearly marked. Two are hard paths; for the default initial object image
- and for a temporary file to be used when editing. The third line is a
- ``meta-define'' which indicates the type of machine and/or operating system
- to be used. You should examine the rest of the file to see the variety of
- systems supported. If you are unable to find anything appropriate, you will
- have to look in the document install.ms for further instructions. In this
- latter case, if you are sucessful in porting the software to a new machine,
- I would be pleased if you could let me know the nature of the changes
- required.
- .PP
- Once you have tailored the system, there are then
- three steps involving in building the system; making the parser
- (the component used to generate the initial object image), making the
- bytecode interpreter, and making the object image. Typing \fImake\fP, with
- no arguments, will do all three. For more detailed instructions on making
- the system consult install.ms.
- .PP
- Once you have sucessfully created the parser, the bytecode compiler, and
- an object image, type
- .DS I
- st
- .DE
- .LP
- to run the system.
- Now would be a very good time to go read explore.ms, which would tell you
- more how to find your way around.
- .SH
- Changes from Little Smalltalk version one
- .PP
- The following changes have been made from version one to version two:
- .IP \(bu
- The user interface is slightly different. This is most apparent in the way
- new classes are added (see explore.ms), and in the fact that expressions will
- not be printed unless you explicitly request printing, and in the fact that
- new global variables cannot be created at the command level merely by
- assignment.
- .IP \(bu
- Much (very much) more of the system is now written in Smalltalk, rather
- than C. This allows the user to see, and modify it if they wish.
- This also means that the virtual machine is now much smaller.
- .IP \(bu
- The pseudo variable selfProcess is no longer supported.
- The variables true, false and nil are now treated as global variables, not
- pseudo variables (see below).
- There are plans for adding processes to version two, but they have not
- been formalized yet.
- .IP \(bu
- Global variables are now supported; in fact classes are now simply global
- variables, as are the variables true, false, smalltalk and nil.
- The global variable globalNames contains the dictionary of all currently
- known global variables and their values.
- (Pool variables are still not supported).
- .IP \(bu
- Numbers are a little more robust. If integer operations overflow, they are
- automatically converted into floating point numbers. This is under control
- of Smalltalk code, so if I (or, preferably, somebody else) ever get around
- to implementing infinite precision numbers, they can easily be added in.
- .IP \(bu
- The internal bytecodes are slightly different. In particular, the bytecode
- representing ``send to super'' has been eliminated, and a bytecode representing
- ``do a primitive'' has been added.
- .IP \(bu
- The internal representation of objects is different. Instead of the
- ``super-object'' chain, objects are now created big enough to hold all the
- instance variables for all their superclasses. (This is the way it is done
- in Smalltalk-80, and, to the best of my knowledge, in Smalltalk-V).
- .IP \(bu
- The Collection hierarchy has been rearranged. The rational for this change
- is explained in more detail in another essay.
- (possibly not written yet).
- .IP \(bu
- Some methods, most notably the error message methods, have been moved out
- of class Object and into class Smalltalk.
- .IP \(bu
- The syntax for primitives is different; the keyword \fBprimitive\fP has been
- eliminated, and named primitives are now gone as well.
- Fewer actions are performed by primitives, having been
- replaced by Smalltalk methods.
- .IP \(bu
- Command line options, such as the fast load feature, have been eliminated.
- However, since version two reads in a binary object image, not a textual
- file, loading should be considerably faster.
- .SH
- Electronic Communication
- .PP
- Here is my address, various net addresses:
- .DS I
- Tim Budd
- Oregon State University
- Department of Computer Science
- Corvallis, Oregon 97331 USA
- (503) 754-3273
-
- budd@ cs.orst.edu
-
- {tektronix, hp-pcd} !orstcs!budd
- .DE
- .SH
- Changes
- .PP
- I want to emphasize that this is not even a beta-test version (does that
- make it an alpha or a gamma version?). I will be making a number of
- changes, hopefully just additions to the initial image, in the next
- few months. In addition, I hope to prepare versions for other machines,
- notably the Macintosh and the IBM PC. I am also encouraging others to
- port the system to new machines. If you have done so, please let me
- know.
-