[comp.lang.smalltalk] Smalltalk 80 releases

boissier@irisa.irisa.fr (franck boissiere,externes ) (08/01/89)

I am currently using the 2.3 version of Smalltalk 80 on Sun-3's and on a MacII
and I plan to upgrade to the 2.4 (2.5 if available then). Can anyone tell me 
about significant changes made in this release, is it worth the price?

Thanks in advance

Franck
******
Franck BOISSIERE                        boissier@irisa.irisa.fr
Prototyping Lab Manager                 boissier@ccettix.UUCP
C.C.E.T.T.   B.P. 59                    boissier%irisa.irisa.fr@uunet.uu.net
35512 CESSON SEVIGNE CEDEX  FRANCE    

hmm@laura.UUCP (Hans-Martin Mosner) (08/02/89)

In article <1375@irisa.irisa.fr> boissier@irisa.irisa.fr (franck boissiere,externes ) writes:
>I am currently using the 2.3 version of Smalltalk 80 on Sun-3's and on a MacII
>and I plan to upgrade to the 2.4 (2.5 if available then). Can anyone tell me 
>about significant changes made in this release, is it worth the price?

Basic differences between 2.3 and 2.4:

2.3 was rather 680x0-specific, so only image compatible between 680x0 based
systems such as sun, mac etc.  2.4 is designed to be highly portable to
a lot of platforms (already avaliable for sun-4, mips r2000, 80386).  This
alone is, in my opinion, a very big plus.

2.3 used reference counting, while 2.4 uses a generation scavenging
mechanism.  This has advantages and disadvantages:  Overall, scavenging
has a better performance, but needs a bit more free memory to run nicely,
and the scavenging pauses can be annoying, though they are normally below
1/10th second.  Another result of the new memory management system is
that the old 16-meg limit for object storage is gone forever :-).
The number of objects is not limited by OT entries anymore.

2.4 has a completely new design for operating system interaction.  File,
process and communication interfaces are all based on the same mechanisms.
This is one of the things that I like most since it makes writing interfaces
to O/S services much easier.

2.4 has a new bytecode set, together with a new compiler and new
CompiledMethod structure.  The compiler looks like it can be extended for
language additions much easier than the old one.  Actually, as Andreas
Toenne says, you could use this as an example for a compiler writing
course, as it is very cleanly written and easy to understand.

2.4 has new block semantics.  Block parameters are local to the block,
and thus blocks are reentrant and can be used as full (recursive) functions.
They can also have local variables now.

There is an exception mechanism which enables one to raise exceptions
and handle them in some outer context, with unwind possibilities etc.
So you could write a method that opens a file, calls a parsing method
in a signal context and specifies that upon encountering an error,
the file will be closed etc.

The new debugger has a fast step operation.  Stepping is done by directly
executing the step instead of simulation.  For debugging, this is a real
blessing.  I don't know how I could live without it :-)  There is also
a 'step to caret' operation with which you can quickly step to some
position in the debugged method.

As usual, some bugs and inconsistencies in the image have been fixed...

I don't know how much I may say about 2.5, so I think it's better if I say
nothing at all.  Anyway, it looks very good...

	Hans-Martin
-- 
Hans-Martin Mosner		| Don't tell Borland about Smalltalk - |
hmm@unido.{uucp,bitnet}		| they might invent Turbo Smalltalk !  |
------------------------------------------------------------------------
Disclaimer: Turbo Smalltalk may already be a trademark of Borland...