home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #31 / NN_1992_31.iso / spool / comp / sys / amiga / programm / 17816 < prev    next >
Encoding:
Internet Message Format  |  1992-12-26  |  15.9 KB

  1. Path: sparky!uunet!wupost!waikato.ac.nz!comp.vuw.ac.nz!durie.amigans.gen.nz!liam
  2. Newsgroups: comp.sys.amiga.programmer
  3. Subject: Re: DICE 2.06.39 to 2.06.40 changes
  4. Message-ID: <liam.0b4v@durie.amigans.gen.nz>
  5. From: liam@durie.amigans.gen.nz (Liam Greenwood)
  6. Date: 24 Dec 92 22:42:01 GMT+12
  7. References: <1992Dec20.014959.12792@newshub.ccs.yorku.ca>
  8. Organization: It's Home, really...
  9. X-Newsreader: TIN [version 1.1 PL6]
  10. Lines: 385
  11.  
  12. W L Anderson (wlanders@nexus.yorku.ca) wrote:
  13. > Could someone post the version.doc file for DICE  2.06.40?   I've
  14. > got 2.06.39, and I'm wondering what the changes are.
  15.  
  16.                                VERSION.DOC
  17.                                   DICE
  18.  
  19. 2.06.40
  20.     *   Updates after the first free one will be upped to $15 (they used
  21.         to be $10) as of 1 Jan 1993.
  22.  
  23.     B   bug in commodore IEEEDPFix() routine found (it would trash D3),
  24.         hack put in library code to save/restore D3 to get around it.
  25.  
  26.     B   bug in switch() found relating to switch(unsigned_char), would
  27.         not 'find' certain cases when the overall case range is greater
  28.         than 128.  (I wrote a comprehensive test program to construct
  29.         random C switch statements with all signed/unsigned int types
  30.         to ensure that switch() is really fixed this time!)
  31.  
  32.     B   bug in structure copying code for word-aligned structures would
  33.         mess up the last word in some cases. (doesn't occur with long
  34.         aligned structures)
  35.  
  36.     B   bug in constant floating point divide fixed, 0.0/<fpconst> would
  37.         cause an endless loop in DC1.
  38.  
  39.     B   bug in structural returns of the format return (*struct_ptr) has
  40.         been fixed.  Straight structural returns 'return(structure)' were
  41.         not effected.
  42.  
  43.     B   bug in casts to void fixed, previously generated an error, now
  44.         allowed (no error message).
  45.  
  46. 2.06.39
  47.     F   lstat() function added, understands soft links under 2.0
  48.  
  49.     F   -unix option added to DCC
  50.  
  51.     F   -O0 option added to DCC (objects go to current directory instead
  52.         of T:)
  53.  
  54.     F   setvbuf() was calling _CreatePort() for csr.lib instead of
  55.         @CreatePort()
  56.  
  57.     F   DICE now supports explicit register specification for arguments
  58.         to procedures through new storage qualifiers __D0, __D1, etc...
  59.         i.e.
  60.  
  61.         int fubar (__D0 int, __A0 char *);
  62.  
  63.         int
  64.         fubar(a, p)
  65.         __D0 int a;
  66.         __A0 char *p;
  67.         {
  68.             ...
  69.         }
  70.  
  71.     F   -mu option added to DCC/DC1, enables unix-style common storage.
  72.         Not currently compatible w/ standard amiga object module format.
  73.  
  74. 2.06.38
  75.     B   fputc() would return a signed char, so fputc(0xFF, ..) would
  76.         return -1 instead of 255.
  77.  
  78.     B   long % long would return incorrect results for negative arguments
  79.         to the modulus (result would be the wrong sign)
  80.  
  81.     B   link error w/ large-data model combined with -gs fixed
  82.  
  83.     B   strstr(str, "") used to return NULL.  It now returns str.
  84.  
  85.     B   bug in auto (stack) char arrays that are auto-aggregate initialized
  86.         fixed.  An odd sized array initializied like: char ary[31] =
  87.         "abc.."; would crash a 68000 due to an odd-aligned longword access.
  88.         Fixed.
  89.  
  90. 2.06.37
  91.     B   arrays are now aligned the same as their element type
  92.         alignment.  Thus, char a[3]; is byte aligned while short a[3];
  93.         is word aligned. Previously arrays were always word aligned.
  94.         (not really a bug, but required to work with Amiga cia structures)
  95.  
  96.     F   PROFILING ADDED.  New -prof option to DCC, LIBMAKE, and FDTOLIB.
  97.         This tool gives you unmatched profiling capabilities.  You may
  98.         profile just your source, standard C calls, amiga library calls,
  99.         or any combination.  A <programname>.dprof file is automatically
  100.         generated when your program exits and may be turned into a
  101.         textual representation  with the DPROF program.
  102.  
  103.         Profiling routines have a 1 uS granularity under 2.0, 20 mS
  104.         granularity under 1.3.
  105.  
  106.         __noprof qualifier for procedures added -- prevents a procedure
  107.         from being profiled (used by the system to prevent the profiler
  108.         routine from getting profiled itself)
  109.  
  110.     F   C.LIB renamed to CS.LIB to generalize library names.  Infix IDs
  111.         are now generalized as follows:
  112.  
  113.         L   large data model
  114.         S   small data model
  115.         R   registered args, else stack args (registered release only)
  116.         P   profiled, else not profiled.
  117.  
  118.         DCC will now use the -prof and -md/-mD options to determine which
  119.         c.lib and amiga.lib to use.  The more useful combinations are
  120.         included in the distribution and registered users may make
  121.         additional versions as needed.
  122.  
  123.         Note that you may mix options -- it is perfectly valid to compile
  124.         source modules with -mD but link small-data.
  125.  
  126.     BL  bug in fread() fixed relating to an fread() occuring after an
  127.         ungetc().
  128.  
  129.     E   ALL LIBRARIES IN THE SYSTEM REORGANIZED.  There are now many
  130.         more libraries.  Registered users now have a means of remaking
  131.         *ANY* library from scratch by unpacking the library source code
  132.         and typeing 'dmake' with no arguments for instructions. Generally
  133.         only the DTMP: assignment and -2.0 in your DCCOPTS is required.
  134.  
  135.         Since there are many more libraries possible then I can fit in the
  136.         distribution, this means may be used to create esoteric libraries
  137.         that the majority of people will never use.
  138.  
  139.     F   Fixed two major bugs with constant floating point arithmatic...
  140.         addition and subtraction would not work correctly in a few cases
  141.         (it would get the sign wrong), the exponent would get screwed up
  142.         in some cases (usually after a negation), and I was overflowing
  143.         the single-precision exponent range for conversions to type float.
  144.  
  145.         Ooooo this stuff should have been caught long ago!
  146.  
  147.     F   Fixed a pointer arithmatic bug, yet another case where a scratch
  148.         register would get overwritten due to a procedure call.
  149.  
  150. 2.06.36
  151.     B   register allocation bug fixed, related to floating point
  152.         routines mainly.  Would generate a 'Too many redos' error
  153.         in some cases (bug did not generate bad code).
  154.  
  155.     F   PRECOMPILED INCLUDES ADDED, see -H option in DOC/DCC.DOC.
  156.  
  157.  
  158. 2.06.35
  159.     FL  under 2.0 (V37), getenv() now checks for local enviroment variables
  160.         before global ENV: variables.  Under 1.3 only global ENV: variables
  161.         are checked for.
  162.  
  163.     BL  fixed %U and %W in strftime(), would generate incorrect week-of-year
  164.  
  165.     B   fixed stringize operator for \n, i.e. quoteme(fubar\n) -> "fubar\n",
  166.         would previously generate incorrect result (I think)
  167.  
  168.     B   fixed bugs in integer multiply & divide, some cases would generate
  169.         fatal errors (all caught by DICE)
  170.  
  171.     B   fixed bug &= operator, would generate assembly error in
  172.         conditional:    while (x &= (x - 1)) ...
  173.  
  174.     F   optimizations made to mulitply & divide, handles 16 bit expressions
  175.         better.
  176.  
  177.     F   minor optimization added for procedure calls within the same
  178.         module.  If call is within a byte offset then BSR.B will be
  179.         used, else BSR.W is used.
  180.  
  181.     F   DLink now checks for illegal small-data references to far objects
  182.         and generates the appropriate error message.  This was added for
  183.         completeness and also because __far or -mD data objects are no
  184.         longer A4-relative.  The check will catch illegal model mixing.
  185.  
  186. 2.06.34
  187.     BL  bug in <varargs.h> (old style var-args) fixed, was skipping first
  188.         argument.  Note that all ANSI projects should use <stdarg.h>
  189.  
  190. 2.06.33
  191.     B   bug in offsetof(type, array_elm) fixed, previously caused error
  192.         message.
  193.  
  194. 2.06.32
  195.     B   fixed bug in dlink Introduced in .31 that would cause a machine
  196.         crash.
  197.  
  198.  
  199. 2.06.31
  200.     B   fixed floating point bug relating to array indexing, would
  201.         clobber A0 in some cases
  202.  
  203.     B   fixed preprocessor bug relating to the use of hex constants
  204.         in #if expressions (they wouldn't work)
  205.  
  206.     E   redid the handling of the ?: routine to allocate its result
  207.         storage (a temporary register) after running the sub-expressions
  208.         instead of before, which allows you to nest ?: indefinitely without
  209.         generating an too-many-redos error.
  210.  
  211.     B   register allocation bug (would generate fatal error) in
  212.         &array (redundant & operator) has been fixed.
  213.  
  214.     B   DCPP now accepts null directives.  # with no directive.
  215.  
  216. 2.06.30
  217.  
  218.     F   DCPP now evaluates undefined symbols in #if expressions as 0
  219.         instead of generating an error message, as per ANSI.
  220.  
  221.     B   Yet another bug in the # (stringtize) operator found.  Fixed.
  222.         Really really really should work right this time!
  223.  
  224.     B   bug in switch/case fixed, case <enumid>: would generate an
  225.         error message.
  226.  
  227.     BA  I was shipping the wrong mathieeedoub*.library shared libraries,
  228.         would cause erronous float->double conversion.
  229.  
  230.     B   another floating point bug found in && and || of the
  231.         form 'fp && fp' or 'fp || fp', would cause incorrect
  232.         evaluation and/or assembly error
  233.  
  234.     B   small bug in fread() would sometimes set error flag
  235.         when returning EOF, and fseek() would not reset this
  236.         flag (it does now).
  237.  
  238.     BL  bug in *scanf(), %c would overwrite the char by one byte
  239.         (i.e. store into two chars instead of one).  fixed.
  240.  
  241.     B   DCPP didn't handle a quoted /* in directives correctly.
  242.  
  243.     F   Large programs that have more than 64K of *initialized* data
  244.         may now use either __far for selected items (preferable) or -mD
  245.         without causing link errors.  Previously dlink would combine far
  246.         data along with near data making all small-data referenced bss
  247.         items out of range if more than 64K of initialized data had been
  248.         declared, __far or not.  Now, DC1 generates 'fardata' sections
  249.         properly when -mD or __far is used (previously only worked with
  250.         __far), and dlink will not combine any section name beginning with
  251.         'far' into the small data model.
  252.  
  253.         This is only of major import when compiling incredibly huge
  254.         programs.  Note that having greater than 64K of bss with -mD or
  255.         __Far has always been supported since library bss is always forced
  256.         in front of program bss.
  257.  
  258.     F   DLink now takes approximately 15% less memory.  While it still
  259.         requires memory to hold the combined size of all objects and
  260.         libraries, incidental memory requirements now reuse much of this
  261.         memory from unlinked sections instead of allocate new memory.
  262.  
  263. 2.06.29
  264.     B   another long standing bug found: short a = i * j; where i and j
  265.         are long's and *also* a memory reference (not in regs),
  266.         the multiplication short-result optimization was screwed up.
  267.  
  268.     B   register allocation bug (would produce a fatal error) fixed,
  269.         registers would not be deallocated in constant conditional
  270.         expressions such as:    1 ? (a = 4) : b;
  271.  
  272. 2.06.28
  273.     B   really dumb bug fixed, made retroactive to 2.06.27 (all 2.06.27
  274.         dists were redone with this fixed).  Had been introduced in 2.06.27
  275.  
  276. 2.06.27
  277.     E   add -// option to DCC and DCPP, enables C++ style // comments.
  278.         If not specified, // style comments are ignored.  Generally
  279.         one puts -// in DCCOPTS.
  280.  
  281.     E   added -no-env option for DCC.  If specified, DCC will *not*
  282.         load options from DCCOPTS.
  283.  
  284.     B   fixed bug:  static int fio(), fio();  (procedure declared twice
  285.         on same line) would force procedure to be non-static.
  286.  
  287.         fixed bug:  __geta4 int fio(), bar(); ... __geta4 would apply
  288.         only to first procedure.
  289.  
  290.     B   fixed bug w/ labels ...  label: case ...  would generate error
  291.         message (case or default following directly after label).  Was
  292.         introduced when I initially fixed labels.
  293.  
  294.     E   AUTO-AGGREGATE INITIALIZATION ADDED, e.g.
  295.         main() { int a[] = { 1, 2, 3 }; ... }.
  296.  
  297.         static & global initialization has been re-vamped.  Note that
  298.         bit-field aggregate initialization is NOT supported yet.
  299.  
  300.     B   Fixed bug that has been in there from the beginning.
  301.         int *a; a[20000] = 1; ... would not multiply the constant by 4 to
  302.         get the index.  ONLY EFFECTED CONSTANT INDEXES WHOS OFFSET WOULD BE
  303.         LARGER THAN A SIGNED SHORT, which is why it was not caught.
  304.  
  305.     B   Fixed bug in float point stack allocation... temporary fp variables
  306.         from the previous procedure would not properly be cleared from the
  307.         cache, causing erronous stack offsets (that overlap other variables)
  308.         in the next procedure.
  309.  
  310.     E   Added ANSI 'U' extension for constants, e.g. 123U.  DICE now
  311.         automatically promotes a constant to unsigned if it does not fit in
  312.         a signed long, such as 4000000000.  Note, however, the int->float
  313.         conversion is currently always signed due to lack of
  314.         unsigned->float calls in the amiga's shared fp libraries.
  315.  
  316.     B   small bug in fread(), would not set the EOF flag when an EOF
  317.         occurs for an fread() requesting a buffer size larger than the
  318.         stdio buffer size.
  319.  
  320.     B   when making a registered-args call (-mr, -mR, -mRR) where a
  321.         pointer - int subtraction occurs, i.e. foo(ptr - int, int),
  322.         arguments after the argument containing the ptr - int would
  323.         be incorrect (registers would get squashed).  ONLY applies
  324.         to registered-args calls.  This has been fixed!
  325.  
  326.     B   bug in preprocessor fixed, #define fubar(x) "a x a" would replace
  327.         the 'x' in the string, which is wrong.
  328.  
  329.     B   bug with bitfields has been found and fixed.  Essentially, bitfield
  330.         operations in routines that need to run a retry pass can get
  331.         munged.  This is usually caused by routines that declare lots of
  332.         local variables.
  333.  
  334. 2.06.26
  335.     B   Fixed bug in floating pt compare of the form:  x = (f1 == f2);
  336.         i.e. a compare where the result is a boolean 0/1 when not in
  337.         a conditional.  Was caught by DICE (caused a fatal error).
  338.  
  339.     B   Fixed bug w/ bitfields (was caught by DICE), would give fatal
  340.         error if destination was not a register for field extraction.
  341.  
  342.     B   fixed bugs with stringtize operator in macros, should now work
  343.         according to the ANSI spec.
  344.  
  345.         #define fubar(x) #x
  346.  
  347.     BL  month was off by one for %m operator in strftime()
  348.  
  349.      E  PROCEDURES MAY NOW RETURN STRUCTURES.  YOU MUST PROTOTYPE ALL SUCH
  350.         PROCEDURES.
  351.  
  352.      E  added // comments to DCPP (C++ style comments)
  353.  
  354. 2.06.25
  355.     E   doc/errors.doc now exists, error handling centralized.
  356.  
  357.     E   a printer driver and exec device driver example has been added to
  358.         examples/ ... so now I have a shared library example, dos device
  359.         driver example, EXEC device driver and printer driver example.
  360.  
  361. 2.06.24
  362.     B   stack allocation changes in 2.06.23 were broken, broke floating point.
  363.         (got the stack tracking mixed up w/ variable allocation)
  364.  
  365.     B   ?: fix in 2.06.23 was broken (sigh), fixed ... 'default:' would
  366.         not be properly tokenized.
  367.  
  368.     E   *scanf() now supports %e/E/f/g/G and %[..]
  369.  
  370. 2.06.23 BETA
  371.     B   goto labels are now in their own name space, no more conflicts
  372.         with  int a; ... goto a; ... a: ...
  373.  
  374.     F   added stack tracking for fp temporaries, meaning that subroutines
  375.         containing floating point expressions do not take up anywhere near
  376.         the amount of stack they used to.
  377.  
  378.     F   allows declarations after switch() { and before first case.
  379.  
  380.     F   fixed problem with  ... ? symbol : ...  (symbol was being
  381.         interpreted as a label instead of a variable within a ?:
  382.         conditional
  383.  
  384.     F   fixed problems with conditional returns from fp operations,
  385.         such as:        double a, b; int c = (a < b);  that must
  386.         generate a 0/1 result instead of a branch (as in an if()).
  387.         Would generate error before.
  388.  
  389. version trace for 2.06.22 and below retired
  390.  
  391.  
  392. --
  393.  Liam Greenwood ------ liam@durie.amigans.gen.nz ------ Wanganui, N.Z.
  394.                  Don't tell my Mother I'm a programmer,
  395.                she thinks I'm a piano player in a brothel
  396.  
  397.