





_G_e_n_e_r_a_l _O_v_e_r_v_i_e_w

     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*.
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).

     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 fam-
iliar 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.

     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 port-
ing it to a wide  range  of  machines.   If  you  find  (and
preferably,  fix!) bugs let us know.  If you make nice addi-
tions 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.

     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.

_B_u_i_l_d_i_n_g _t_h_e _S_y_s_t_e_m

     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.

     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
_________________________
* _A _L_i_t_t_l_e _S_m_a_l_l_t_a_l_k, by Timothy A. Budd.  Published by
Addison Wesley, 1987.  In better bookshops everywhere.




                      October 26, 1987





                           - 2 -


object image and for a temporary file to be used when  edit-
ing.   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.

     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 _m_a_k_e, with no arguments, will do  all  three.
For  more detailed instructions on making the system consult
install.ms.

     Once you  have  sucessfully  created  the  parser,  the
bytecode compiler, and an object image, type

        st


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.

_C_h_a_n_g_e_s _f_r_o_m _L_i_t_t_l_e _S_m_a_l_l_t_a_l_k _v_e_r_s_i_o_n _o_n_e

     The following changes have been made from  version  one
to version two:

o+    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.

o+    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.

o+    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.

o+    Global variables are now supported; in fact classes are
     now simply global variables, as are the variables true,



                      October 26, 1987





                           - 3 -


     false, smalltalk and nil.  The global variable  global-
     Names  contains  the  dictionary of all currently known
     global variables and their values.  (Pool variables are
     still not supported).

o+    The internal bytecodes are slightly different.  In par-
     ticular,  the  bytecode  representing ``send to super''
     has been eliminated, and a bytecode representing ``do a
     primitive'' has been added.

o+    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).

o+    The Collection  hierarchy  has  been  rearranged.   The
     rational for this change is explained in more detail in
     another essay.  (possibly not written yet).

o+    Some methods, most notably the error  message  methods,
     have  been  moved  out  of  class Object and into class
     Smalltalk.

o+    The syntax for primitives  is  different;  the  keyword
     primitive has been eliminated, and named primitives are
     now gone as well.  Fewer actions are performed by prim-
     itives, having been replaced by Smalltalk methods.

o+    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.

_E_l_e_c_t_r_o_n_i_c _C_o_m_m_u_n_i_c_a_t_i_o_n

     Here is my address, various net addresses:

        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


_C_h_a_n_g_e_s

     I want to emphasize that this is not even  a  beta-test
version (does that make it an alpha or a gamma version?).  I



                      October 26, 1987





                           - 4 -


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.



















































                      October 26, 1987


