From: ilepore@nyx.cs.du.edu (Ian Lepore)
Subject: Sozobon 1.2, 1.33i, 2.0, Heat-and-Serve
X-Disclaimer: Nyx is a public access Unix system run by the University
	of Denver for the Denver community.  The University has neither
	control over nor responsibility for the opinions of users.
Organization: Nyx, Public Access Unix at U. of Denver Math/CS dept.
Date: Fri, 31 Jul 92 19:04:46 GMT

 Sozobon v1.2 is the first release that can rightly be said to have really
worked at all.  Not that it worked well, mind, there's a large variety of
codegen bugs and sequences in source that can gracelessly crash the compiler.
You have to be well on your way to being an ST (and to some degree unix) guru
just to install the compiler and do a Hello World program.  A beginner has
little chance of getting this beast installed and configured without help.
 
 Sozobon v2.0 is v1.2 warmed over.  It adds long external identifiers as a
new feature, but little else.  All the codegen bugs from v1.2 are still 
there.  It also includes a debugger, which will work with all other versions
of Sozobon or HSC as well.
 
 Sozobon v1.33i is my modified version of Sozobon v1.2.  I dubbed it the
"Heat-and-Serve" release, because it comes with an INSTALL.PRG that installs
and configures the compiler for you.  At the end of the install, you can 
just double-click on EXAMPLES.MAK (or, for CLI users, cd examples;make) and
it's up and running, compiling a test suite for you to ensure the installation
was clean.  v1.33i is basically v1.2 with lots of bugfixes and a fair number
of new features.  The new features include desktop-friendliness, for those
(like me) who hate using a CLI, and a variety of extensions that move toward
ANSI compatibility.  (EG, #else, #error, #line, #pragma handling; adjacent
string literals are concatenated into a single string; things like that.)
The optimizer in 1.33i is improved with lots of new peephole sequences.
All the compiler pieces are faster, generally at least 50% faster, than 1.2.
Source code that would crash 1.2 is accepted by 1.33 in most cases.  (And,
when a bad code sequence is encountered that confuses it, it gets reported
like any other error, instead of just putting bombs on the screen.)
 
 To avoid confusion with ongoing releases of Sozobon (v2.0 was released by
the sozo crew just after I had released 1.33i; I thought they had gone out
of the ST business), I've changed the name of my versions to Heat-and-Serve C
(HSC) from now on.  Version 1.40 is in testing now, and should be ready for
release in a couple weeks.  New things in 1.40 include:
 
 - More improvements towards ANSI compatibility (still not prototypes yet)
   including #elif handling, proper handling of function-like macros.
 - Codegen bugfixes; library routine bugfixes.
 - Full ARGV support on all tools, compiler pieces, and programs created
   with the new compiler/library.
 - The compiler runs properly as a MiNT background task now.
 - The optimizer is WAY faster (eg: one module that used to take 7 minutes
   to optimize now takes 90 seconds); this affects mainly the worstcase
   situations like huge functions to be optimized.
 - You can now access arrays of any size.  In general, pointer math is 
   much more compliant than it used to be.  size_t is still unsigned short,
   and sizeof(int) is still hardwired as 2 bytes.  Despite this, you can
   use a size_t type to index into an array bigger than 32 or 64k.  (But,
   if you ask for sizeof(hugearray) it'll give you a loss-of-significance
   error).      
 - You are still limited to 32k on the size of any single structure, but 
   you can have arrays of structures that exceed 32 or 64k total.  (I humbly
   suggest that if you have a structure bigger then 32k, it might be wise
   to reconsider your design; there are certainly other ways to skin that cat).
 
 Well, that about covers it.  There's a zillion other little things that have
been enhanced in 1.33i and 1.40 that I haven't mentioned.  (Oh -- full 
support for void* types was added to 1.33i, forgot to mention that.)


--
- Ian
(void *) where prohibited by law