[comp.sys.amiga] Lattice/SAS C 5.10 HERE!

tron1@tronsbox.xei.com (HIM) (08/22/90)

 Ok, I just receive my SAS/C (Lattice C) 5.10 upgrade in the
mail and figured I would post my initial impressions.

 I LIKE IT. I have been a customer of SAS for DOS products for
a while as a consultant (the make great courseware) and always like
the company.  Anyone who was worried about the quality or dedication
of this company to this product can breathe easy.

 The upgrade comes with 6 disks ( a whole new installation set ,
not patches BTW ) and some new pages to the manual.

 Here are the high points :


 1) The LSE integrated editor environment now supports AREXX. 

 2) The LSE editor is now compatible with 8/16 color
  workbenches.

 3) The linker (BLINK) is faster in 5.10 by up to 200%

 4) WORKBENCH COMPATIBLE :

  This will help those new to the C world on the Amiga
  all program development can be done under icon and
  point/click control. There is a VERY nice program
  to set compiler options that can help EVERYONE get
  better use out of the compiler.

 5) LPROF - the profiler, now supports multiple code hunks.

 6) The assembler now supports EQUR.

 7) _aligned - this will allow you to say ..

  struct FileInfoBlock _aligned foo;

  that will force foo to be longword aligned.

 8) Prototype Generation - LC and LC1B's -pr option generates
    prototypes and now supports TYPEDEF'ed names.

 9) Option added to expand the limits in the pre-processor.

 10) ALTERNATE startup code :

  c.o - standard startup code.

  cback.o - Detaches process from CLI and runs it in
     the background ala runback.  

  cres.o  - Makes it possible to RESIDENT the program.
     This startup code makes a copy of the data
     section each time it is invoked, so each
     invocation will get a differnt data section.

     Thus, all programs linked with cres.o can be
     placed on the resident list as PURE.

     You must have less than 64k of external 
     data to use cres.o 

  catch.o,
  catchnr.o - Produces a snapshot on software 
       exceptions. catch.o will put up a 
       requester and ask if you want a snapshot
       file written and catchnr.o just writes it.
   
       The TB command can read snapshot files
       and tell you what was happening when it went down.

       (shades of core dump ?? )

  catchres.o,
  catchresnr.o - a combination of catch.o and res.o .


 11) Auto near to far - LC1 will move near data to far
   if you attempt to decalare to much near
   data.

 12) no sizeof warning - 

   sizeof( *foo )

   is valid now even if foo is not initialized.

 13) offset macros - Support for all varieties of offset 
   macro that we know of, including those in
   GNU and XWindos code.

 14) C++ comments - LC1 now supports C++ style comments ..

   j = 0;    // Initialize j (this is a comment)

 15) New warnings added. 

 16) Performance inproved in generated code.

 17) #pragma limit - raised to 14. ALL Amiga library calls can
   now be made with all parameters in registers.

 18) Minimum stack size - 5.10 allows a stack variable to be
   set at compile time.
   When the code is run, it will set the stack to
   this size on its own.

 19) Libraries -

   opendir, readdir, seekdir, telldir
   rewindir, closedir, stat and isatty

   Now equate to the UN*X counterparts.

 20) AMIGADOS 2.0 SUPPORT.

  ALL programs and utilities in this evironment will 
  function under 2.0 with the new imagery, and 2.0
  include and header files are part of the environment.


   ALL IN ALL ... not bad for 40$ !!!!


========[ Xanadu Enterprises Inc. Amiga & Unix Software Development]========
=      "And in the darkened offices, the terminals shine like stars."      =
============= Ken Jamieson: uunet!tronsbox.xei.com!tron1  ==================
= NONE of the opinions represented here are endorsed by either             =
= Xanadu Enterpises or its clients, AT&T Bell Labs or others.              =
==== The Romantic Encounters BBS 201-759-8450(PEP) / 201-759-8568(2400) ==== 

xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) (08/23/90)

So tell me, does it still do a no-warning, no guru, stone cold system
crash, trashing Rad:, if you try to do/use a 30 line #define?

That was one of 5.04's more adorable habits.

Kent, the man from xanth.
<xanthian@Zorch.SF-Bay.ORG> <xanthian@well.sf.ca.us>

nfs1675@dsacg3.dsac.dla.mil ( Michael S Figg) (08/23/90)

In article <26d1f3d3-2894comp.sys.amiga@tronsbox.xei.com>, tron1@tronsbox.xei.com (HIM) writes:
> 
>  1) The LSE integrated editor environment now supports AREXX. 
> 
>  2) The LSE editor is now compatible with 8/16 color
>   workbenches.

These modifications sound great, but does anybody really use LSE? No smiley,
that was a serious question. How does it compare with other editors?

---Mike,



-- 
A man said to the Universe "Sir, I exist!" | Michael Figg  DSAC-FSD
"However," replied the Universe,           | DLA Systems Automation Center
"The fact has not created in me a          | Columbus, Ohio
sense of obligation."- Stephen Crane       | mfigg@dsac.dla.mil  CIS: 73777,360

gerry@dialogic.UUCP (Gerry Lachac) (08/23/90)

Does anyone know if Lattice/SAS is doing a trade-in-your-MANX-for-ours
deal like they did a while ago?   The features in this release make it
very tempting to make the switch...


-- 
uunet!dialogic!gerry   | "Even a dead plant turns  |	Dialogic Corporation
	OR	       |  over a new leaf 	   |	300 Littleton Rd
gerry@dialogic.UUCP    |  when the wind blows."	   |	Parsippany, NJ 07054 
		       |  			   |	(201)334-8450

barrett@meridn.enet.dec.com (Keith Barrett) (08/24/90)

In article <1990Aug23.052447.24545@zorch.SF-Bay.ORG>, xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes...
>So tell me, does it still do a no-warning, no guru, stone cold system
>crash, trashing Rad:, if you try to do/use a 30 line #define?

Standard C coding practice recommends that a define should fit in 1 line
of 80 characters; I think you got what you deserved. You're not the type
to sue a ladder company because the instructions did not state "don't
place the ladder in mud" and you did and fell, are you? :-)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Keith G. Barrett - Software Specialist     Internet: barrett@meridn.enet.dec.com
Digital Equipment Corp. "DEC has it now"       UUCP: decwrl!meridn.enet!barrett
  //					 "Wait'll they get a load of me" - Joker
\X/  "The Amiga is really a picoVAX"	    "You won't get it!" - the Prisoner
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

tron1@tronsbox.xei.com (HIM) (08/24/90)

Lines: 40

>Resp: 2 of 3 About: Re: Lattice/SAS C  5.10 HERE!
><> [Kent Paul Dolan] (*Masked*@zorch.SF-Bay.ORG)
>
>So tell me, does it still do a no-warning, no guru, stone cold system
>crash, trashing Rad:, if you try to do/use a 30 line #define?


Well, being as I have never seen anyone do a 30 line define I wouldn't know.

Was this a problem with the editor (I doubt that though) or the compiler ??
Send me some code and I wil gladly test it and let you know.

>Resp: 1 of 3 About: Re: Lattice/SAS C  5.10 HERE!
><> [ Michael S Figg] (*Masked*@dsacg3.dsac.dla.mil)
>
>These modifications sound great, but does anybody really use LSE? No smiley,
>that was a serious question. How does it compare with other editors?

I use it all the time. Once I got over having the keys in different places
than the vi editor I use at Bell Labs it is fine.

I like it a lot. As a EDITOR is is in the middle of the pack, it is "C"
aware so can help you out that way , but it is so convenient to have it tied
so close to the compiler.

The new versions AREXX port take care of all the problems I had , any
command I need I can add.

I am NOT one of those "I need my editor to do everything including change
the diapers on my baby" types... I work across 3 architectures (Amiga , DOS,
and UNIX) of 5 differnt machine types and so do NOT rely on editor functions
that much myself. 

========[ Xanadu Enterprises Inc. Amiga & Unix Software Development]========
=      "And in the darkened offices, the terminals shine like stars."      =
============= Ken Jamieson: uunet!tronsbox.xei.com!tron1  ==================
= NONE of the opinions represented here are endorsed by either             =
= Xanadu Enterpises or its clients, AT&T Bell Labs or others.              =
==== The Romantic Encounters BBS 201-759-8450(PEP) / 201-759-8568(2400) ==== 

sdowdy@carina.unm.edu (Stephen Dowdy) (08/24/90)

In article <14874@shlump.nac.dec.com> barrett@meridn.enet.dec.com
	(Keith Barrett) writes:
}In article <1990Aug23.052447.24545@zorch.SF-Bay.ORG>,
	xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes...
}>So tell me, does it still do a no-warning, no guru, stone cold system
}>crash, trashing Rad:, if you try to do/use a 30 line #define?
}
}Standard C coding practice recommends that a define should fit in 1 line
}of 80 characters; I think you got what you deserved. You're not the type
}to sue a ladder company because the instructions did not state "don't
}place the ladder in mud" and you did and fell, are you? :-)
}
}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}Keith G. Barrett - Software Specialist    Internet: barrett@meridn.enet.dec.com

Woah!!!
I don't recall anywhere where it says "#define lines should adhere to
ancient FORTRAN coding practices".  Admittedly, I'd never write a 30 line
#define, but it is not too much to expect software not able to deal with
such excess to at least abort with an error, or truncation of the directive.

I think a better analogy than the one you give would be:
	...sue an automobile manufacturer because you went 70mph and the
	car exploded because everyone *KNOWS* it is standard driving
	practice to do only 65...

In addition (since you are from DEC), i suppose that you would have no problem
if i had a 30 line #define and VAXC crashed my vax, eh?  (I'm sure the
rest of the users on my system would be rather irked)

I realize that software has bugs that may not have been exercised in testing
which is understandable, but to say that it is acceptable for software to
explode on strange input is ludicrous.

--stephen dowdy
--
$! stephen dowdy (AOSED@acvax.inre.asu.edu)
$! BITNET:   sdowdy@unmb
$! Internet: sdowdy@law.UNM.EDU
$!      Team SPAM in '87!            SPAAAAAAAAAAAAAAAAAAAAMMMMMMM!

ken@cbmvax.commodore.com (Ken Farinsky - CATS) (08/24/90)

In article <14874@shlump.nac.dec.com> barrett@meridn.enet.dec.com (Keith Barrett) writes:
>Standard C coding practice recommends that a define should fit in 1 line
>of 80 characters...

Another message guaranteed to get a million responses!

>Keith G. Barrett - Software Specialist     Internet: barrett@meridn.enet.dec.com
                    ^^^^^^^^^^^^^^^^^^^
???

-- 
--
Ken Farinsky - CATS - (215) 431-9421 - Commodore Business Machines
uucp: ...{uunet,rutgers}!cbmvax!ken
bix:  kfarinsky

jdege@ (Jeff Dege) (08/25/90)

In article <14874@shlump.nac.dec.com> barrett@meridn.enet.dec.com (Keith Barrett) writes:
>Standard C coding practice recommends that a define should fit in 1 line
>of 80 characters; I think you got what you deserved. You're not the type
>to sue a ladder company because the instructions did not state "don't
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   Standard C allows for multi-line #defines, and there is no reason to
expect that a compiler won't support this.  In any case, SAS C 5.10
allows the user to determine the peprocessor buffer.  LC -z4000 file.
The default is 3000 bytes for lc1 and 6000 bytes for lc1b.  I expect that
increasing this will eliminate the problem.

-------
.signature - ???

jdege@ (Jeff Dege) (08/25/90)

In article <1990Aug24.060138.2233@ariel.unm.edu> sdowdy@carina.unm.edu.UUCP (Stephen Dowdy) writes:
>In article <14874@shlump.nac.dec.com> barrett@meridn.enet.dec.com
>
>Woah!!!
>I don't recall anywhere where it says "#define lines should adhere to
>ancient FORTRAN coding practices".  Admittedly, I'd never write a 30 line
>#define, but it is not too much to expect software not able to deal with
>such excess to at least abort with an error, or truncation of the directive.
>
   Howabout:
 
#define DPRINT(type, var)        \
{                                \
char buf[80];                    \
sprintf(buf, "%s = %" type; #var, var); \
msg_disp(buf);                          \
}
/* usage is DPRINT(d,intvar);, and msg_disp() displays a string in a window
in a system-friendly way. */
 
Extending this sort of thing soon leads to fairly long #defines.

-----------------------------------------
......................................

d88-skl@dront.nada.kth.se (Stellan Klebom) (08/25/90)

In article <1990Aug24.173432.13867@cs.umn.edu> jdege@donald.UUCP (Jeff Dege) writes:
>
>   Standard C allows for multi-line #defines, and there is no reason to
>expect that a compiler won't support this.  In any case, SAS C 5.10
>allows the user to determine the peprocessor buffer.  LC -z4000 file.
>The default is 3000 bytes for lc1 and 6000 bytes for lc1b.  I expect that
>increasing this will eliminate the problem.

I just wonder why is it so hard for people who managed to create a compiler,
that is actually doing a good job, to make the macro expansion buffer dynamic?
Since there is a option to set it's size then it must be malloc'd anyway!
To me this seems like a fairly easy thing to remove all sofware restrictions
from, and just letting available memory space set the limit.

   Stellan

(This is no flame, just wanted to tell the world about the thing that made me
 upset when I tried to port MIT Scheme to AMIGA using Lattice C 4.0 :)

jeh@sisd.kodak.com (Ed Hanway) (08/25/90)

In article <14874@shlump.nac.dec.com> barrett@meridn.enet.dec.com (Keith Barrett) writes:
>In article <1990Aug23.052447.24545@zorch.SF-Bay.ORG>, xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes...
>>So tell me, does it still do a no-warning, no guru, stone cold system
>>crash, trashing Rad:, if you try to do/use a 30 line #define?
>
>Standard C coding practice recommends that a define should fit in 1 line
>of 80 characters; I think you got what you deserved.

Overflowing a compiler limit might deserve an error message, but certainly
not a system crash.

Start doing stuff like

#define putrgb(x) do { putchar((x).r); putchar((x).g); putchar((x).b)} while(0)

and you can run up against preprocessor limits in a hurry. On the sun I'm
using to enter this message, "putrgb(a_big_struct_name->member)" expands to
about 1350 characters.

Kudos to Lattice, er, SAS for finally allowing the limit to be expanded.

Ed

chris@genly.UUCP (Chris Hind Genly) (08/25/90)

>In article <1990Aug23.052447.24545@zorch.SF-Bay.ORG>, xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes...
>So tell me, does it still do a no-warning, no guru, stone cold system
>crash, trashing Rad:, if you try to do/use a 30 line #define?

>In article <14874@shlump.nac.dec.com> barrett@meridn.enet.dec.com (Keith Barrett) writes:
>Standard C coding practice recommends that a define should fit in 1 line
>of 80 characters; I think you got what you deserved. You're not the type
>to sue a ladder company because the instructions did not state "don't
>place the ladder in mud" and you did and fell, are you? :-)

I see the smiley, but I assume it only applies to the preceding
sentence, not the whole paragraph.

First I have to object to "you got what you deserved."  A compiler
should not crash when it runs into a limitation.  This is clearly a
bug and should be fixed.

Second, Multi-line macros are legitimate in C.  I use them all the
time.  As an example of a useful multi-line macro see the code below. 
Macros are wonderful because they let you "escape from the language". 
C does not directly support iteration abstraction.  With macros I can
write my own.  C does not support inlining.  With macros I can do my
own inlining.  In each case the macros are usually longer than one
line.

====================================================================
/*
 * File iterators
 *
 * 8/25/90     Chris Hind Genly     chris@genly.uucp
 *
 * No rights reserved.
 *
 */
#ifndef file_h
#define file_h

#ifndef stdin
#include <stdio.h>
#endif

#include <proto/dos.h>
#include <libraries/dos.h>

/*
 * Iterate through all files in a directory.
 *
 * The user declares dir as either a character pointer or character array.
 * It should be set to a directory path string.
 * The macro declares fi, and path.  Fi is the Amiga file info block.
 * Path is a char array containing the path to a file in the dir.
 * Fi and path may be referenced in the body of the for.
 * Break and continue are permitted inside this iterator.
 *
 * Example:
 *
 *    FOR_ALL_FILES("c:", fi, path) {
 *        printf("%s: %d\n", path, fi->fib_Size);
 *    } END_FOR_ALL_FILES;
 */

#define FOR_ALL_FILES(dir, fi, path) \
{ \
    BPTR lock; \
    static struct FileInfoBlock fis, *fi=&fis; \
    int ok; \
    char path[200], *sep; \
\
    switch(dir[strlen(dir)-1]) { \
    case '/': case ':': sep = ""; break; \
    default: sep = "/"; break; \
    } \
\
    lock = Lock(dir, ACCESS_READ); \
    if (lock == 0) { \
        fprintf(stderr, "snews: unable to lock %s\n", dir); \
        exit(1); \
    } \
\
    ok = Examine(lock, fi); \
    while(ok = ExNext(lock, fi)) { \
        strcpy(path, dir); \
        strcat(path, sep); \
        strcat(path, fi->fib_FileName);
        
#define END_FOR_ALL_FILES        \
    }                            \
                                 \
    UnLock(lock);                \
}

/*
 * Iterate through all directories of a directory.
 *
 * Same as above, except the body is only executed for directories.
 */
 
#define FOR_ALL_DIRS(dir, fi, path) \
    FOR_ALL_FILES(dir, fi, path) \
        if (fi->fib_DirEntryType <= 0) continue;
        
#define END_FOR_ALL_DIRS \
    END_FOR_ALL_FILES


#endif
====================================================================


   *                        *                        *
                                                            \|/
               *           _______                         --O--
                      ____/ KC1VP \____        *            /|\
 *      _____________/  (203) 389-8680 \_______________
 ______/  95 Fountain Terr., New Haven, CT, USA, 06515 \_______
/ Chris Hind Genly    chris@genly.uucp   uunet!hsi!genly!chris \
----------------------------------------------------------------

barrett@meridn.enet.dec.com (Keith Barrett) (08/25/90)

OK OK OK, I give. I quoted the statement right from the
Waite Group's C Primer Plus book, page 331, suggested that since not all
compilers allow long statements, that it is best to limit it to 1 line.
It also wasn't the first time I heard it.

It would have made more sense to stick to the K&R book. I apologize.
Can I keep my title now?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Keith G. Barrett - Software Specialist     Internet: barrett@meridn.enet.dec.com
Digital Equipment Corp. "DEC has it now"       UUCP: decwrl!meridn.enet!barrett
  //					 "Wait'll they get a load of me" - Joker
\X/  "The Amiga is really a picoVAX"	    "You won't get it!" - the Prisoner
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) (08/27/90)

barrett@meridn.enet.dec.com (Keith Barrett) writes:
> xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes...
>>So tell me, does it still do a no-warning, no guru, stone cold system
>>crash, trashing Rad:, if you try to do/use a 30 line #define?

>Standard C coding practice recommends that a define should fit in 1 line
>of 80 characters; I think you got what you deserved. You're not the type
>to sue a ladder company because the instructions did not state "don't
>place the ladder in mud" and you did and fell, are you? :-)

Heavens, if multiple line #defines are "broken", then most of Unix code
is garbage; the backslash line continuation is there for a purpose.

More important, is not whether my code is pretty or not, but whether
Lattice C is bulletproof or not.

In general, compilers process 100 buggy files for every one bug free file,
so dying on buggy code is not acceptable behavior.  A compiler should be
able to eat any stream of bytes without dying; dropping dead based on user
(code) input is a symptom of failing to check whether a process is safe
before executing it, rather silly when you are expecting code errors in
the imput, and are supposed to handle it without a hiccup.

It is a standard test for a compiler to feed it random input to make sure
it survives intact.  Probably more important is to feed it a file that
exceeds every known limitation of the compiler and assure that it handles
each gracefully, mine among them.  Trashing the system on any input is the
compiler writer's error, and blaming it on the user is looking away from
the problem.

The proper analogy isn't with having a ladder fall over in mud, but with
having it collapse when a 200kg housepainter uses it because the ladder
designer couldn't imagine someone that size elevating himself off the
ground, and built the ladder too wimpy to carry the load.

Better yet, compare with Fredericks of Hollywood, who sell garb to make
ladies feel seductive, but ignore the ladies most in need of their
product, the ones wearing the 3X and 4X sizes, thus losing over half the
market in this obese society.

We rotten programmers are a much bigger market than the hypercompetent,
and Lattice should target their compiler for our needs, not theirs.

Kent, the man from xanth.
<xanthian@Zorch.SF-Bay.ORG> <xanthian@well.sf.ca.us>

xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) (08/27/90)

xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes:

>We rotten programmers are a much bigger market than the hypercompetent,
>and Lattice should target their compiler for our needs, not theirs.

Following up my own posting.  Gag!

What I should have said:

	We rotten, daring, or compiler abusing programmers are a
	much bigger market than the hypercompetent, rule following,
	or very conservative programmers who would never think of
	stress testing a compiler, and Lattice should target and
	implement their compilers for our needs, not theirs.

Since the distinction as said originally was unfair to (some of)
those whose programs break buggy compilers, and unfairly praised
(some of) those whose programs don't.

;-)

Kent, the man from xanth.
<xanthian@Zorch.SF-Bay.ORG> <xanthian@well.sf.ca.us>

walker@unx.sas.com (Doug Walker) (08/28/90)

In article <1990Aug23.052447.24545@zorch.SF-Bay.ORG> xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes:
>So tell me, does it still do a no-warning, no guru, stone cold system
>crash, trashing Rad:, if you try to do/use a 30 line #define?
>
>That was one of 5.04's more adorable habits.
>

Which was fixed in 5.05, although it never caused a system crash on
my Amiga, just a snapshot.  5.05 refused to compile the file, but
didn't crash;  in 5.10 you can set the preprocessor buffer size
high enough to handle any macro, as long as you have the memory
for it.

BTW, try using lc1b instead of lc1 to compile your 30-line macro;
lc1b in 5.04 had a preprocessor buffer of 8k rather than 4k in lc1,
and it will very likely handle your macro.


  *****
=*|_o_o|\\=====Doug Walker, Software Distiller====== BBS: (919)460-7430 =
 *|. o.| ||
  | o  |//     For all you do, this bug's for you!
  ====== 
usenet: ...mcnc!rti!sas!walker   plink: dwalker  bix: djwalker 

walker@unx.sas.com (Doug Walker) (08/28/90)

In article <1310@dialogic.UUCP> gerry@dialogic.UUCP (Gerry Lachac) writes:
>
>Does anyone know if Lattice/SAS is doing a trade-in-your-MANX-for-ours
>deal like they did a while ago?   The features in this release make it
>very tempting to make the switch...
>

Yes, that offer is still good.  Call the Institute for info:
(919)677-8000 and ask for "book sales - Amiga compiler".


  *****
=*|_o_o|\\=====Doug Walker, Software Distiller====== BBS: (919)460-7430 =
 *|. o.| ||
  | o  |//     For all you do, this bug's for you!
  ====== 
usenet: ...mcnc!rti!sas!walker   plink: dwalker  bix: djwalker 

walker@unx.sas.com (Doug Walker) (08/30/90)

In article <1990Aug24.185241.18275@nada.kth.se> d88-skl@dront.nada.kth.se (Stellan Klebom) writes:
>I just wonder why is it so hard for people who managed to create a compiler,
>that is actually doing a good job, to make the macro expansion buffer dynamic?
>Since there is a option to set it's size then it must be malloc'd anyway!
>To me this seems like a fairly easy thing to remove all sofware restrictions
>from, and just letting available memory space set the limit.

In 5.10 it is malloc'd, but only once (at the beginning).  If we provide for
reallocating it, we would have to locate every place that has a pointer
into the buffer and change the pointers to point into the new buffer.  This
would be possible, but we judged it too risky for the 5.10 release and 
delayed it until 6.0.  


  *****
=*|_o_o|\\=====Doug Walker, Software Distiller====== BBS: (919)460-7430 =
 *|. o.| ||
  | o  |//     For all you do, this bug's for you!
  ====== 
usenet: ...mcnc!rti!sas!walker   plink: dwalker  bix: djwalker 

walker@unx.sas.com (Doug Walker) (08/31/90)

In article <1990Aug26.225427.4594@zorch.SF-Bay.ORG> xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes:
>Heavens, if multiple line #defines are "broken", then most of Unix code
>is garbage; the backslash line continuation is there for a purpose.

The previous poster's comments were definately out of order; there is
absolutely nothing wrong with multiple-line #defines.  The 5.04 lc1
did have a limitation of (I believe) 3000 bytes in a single preprocessor
macro definition.  You encountered a bug when you exceeded a compiler 
limit.  This should have produced an error message and terminated 
compilation.  It instead gurued your machine.  The bug was fixed in 
5.05 in that it no longer gurued the machine.  It was fixed in 5.10 
such that you can, by specifying a preprocessor buffer size large enough, 
successfully compile the code.  The 5.04 lc1b also has a larger buffer,
which might allow you to compile with 5.04.


>More important, is not whether my code is pretty or not, but whether
>Lattice C is bulletproof or not.

Any large programming project has bugs.  SAS Institute is committed to 
fixing them, and we have done so in this case.

>each gracefully, mine among them.  Trashing the system on any input is the
>compiler writer's error, and blaming it on the user is looking away from
>the problem.

I would like to point out that no one from SAS Institute blamed this on
your code.  I agree that this was a compiler bug.  Compiler bugs that
guru the system are quite rare and we give them the highest possible
priority.

>We rotten programmers are a much bigger market than the hypercompetent,
>and Lattice should target their compiler for our needs, not theirs.

This in no way reflects on SAS's target market.  A bug can creep in
anywhere, and in this case did.  I suggest that if you choose not to
upgrade to the 5.10 release that you at least upgrade to the FREE 5.05
patch release to get rid of the guru.  You can also try compiling with
lc1b instead of lc1, which has a bigger preprocessor buffer and might
compile the file in 5.04.

>Kent, the man from xanth.
><xanthian@Zorch.SF-Bay.ORG> <xanthian@well.sf.ca.us>


  *****
=*|_o_o|\\=====Doug Walker, Software Distiller====== BBS: (919)460-7430 =
 *|. o.| ||
  | o  |//     For all you do, this bug's for you!
  ====== 
usenet: ...mcnc!rti!sas!walker   plink: dwalker  bix: djwalker