lotus

previous page: 11.11: Why, when I '#include <types.h>' (or some other file), does thecompiler take it out of my current directory instead of out ofthe system header directories?
  
page up: comp.sys.apple2. gno FAQ
  
next page: 12.1: Can task-switching occur during an interrupt?

11.12: When using the December 1997 libraries (or later version), why aremy programs larger than they used to be?




Description

This article is from the Apple II GNO FAQ, by Devin Reade with numerous contributions by others.

11.12: When using the December 1997 libraries (or later version), why aremy programs larger than they used to be?

    A#11.12:	There are a few reasons for this.

The first one is that when the libraries (which are mostly written
in C) are compiled, aggressive optimizations are not currently used.
This is because certain optimizations in ORCA/C are known to be
broken.  This, combined with the fact that we are missing a lot
of automated test suites for the GNO (non-ORCA/C) additions to the
libraries, indicated that it would be best to ship the libraries
without much in the way of optimizations.

The second reason is probably more significant.  When Jawaid provided
a libc and ORCALib for GNO v2.0.4, he made significant changes to
the stdio portion of ORCALib so that it would work with pipes and
sockets.  Unfortunately, for whatever reason, the two versions of
ORCALib (the original version from Byte Works, and the modified 
version from Procyon) were never merged.  Therefore, when ORCALib
was updated for ORCA/C v2.1.x, the GNO-specific changes were 
effectively lost.

When Devin took over maintenance of the GNO libraries in the spring
of 1997, he was (in order to get a stdio package that worked with
pipes) faced with the choice of either reimplementing Jawaid's
changes to stdio, or to use another implementation of stdio that
was written with pipes in mind.

The tradeoff is one of development time versus code size (and probably
speed).  The ORCA stdio implementation is in assembly, so it is
small and fast.  On the other hand, GNO v2.0.6 had been in the
"it's not ready yet" stage for quite a while.  The choice was made
to use the 4.4BSD stdio implementation.  This is the primary reason
why programs which use stdio are now larger than they were.

If your program does not use stdio, but is still significantly 
larger, then it may be due to dependancies in libc; there are
some routines which currently depend on stdio but which need not.
These dependancies will be removed as time is available to do so.
    

 

Continue to:













TOP
previous page: 11.11: Why, when I '#include <types.h>' (or some other file), does thecompiler take it out of my current directory instead of out ofthe system header directories?
  
page up: comp.sys.apple2. gno FAQ
  
next page: 12.1: Can task-switching occur during an interrupt?