home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / GameSmith2-Hisoft-Tutorial.DMS / in.adf / DICE_GS.lha / DICE_GS / Versions < prev   
Encoding:
Text File  |  1994-11-17  |  18.8 KB  |  476 lines

  1.  
  2.                     DICE VERSION.DOC
  3.             Information about changes in this release
  4.             -----------------------------------------
  5.  
  6. VERS DES COMMENT
  7.     VERS    = Release Version
  8.     DES     = bug fixed / feature designator
  9.     XB  - major bug fixed in main compiler
  10.           (use of routine in question could have caused a crash)
  11.     B   - minor bug fixed in main compiler
  12.     F   - feature added
  13.     E   - enhancement to existing feature
  14.     O   - optimization added
  15.  
  16.     ADD - feature added or fixed that is standard C but was not previously
  17.           implemented or working.
  18.  
  19.     XBL - major bug fixed to library
  20.     BL  - minor bug fixed to library
  21.     FL  - feature added to library
  22.     OL  - optimization added to library
  23.  
  24.     XBA - major bug fixed in support program (i.e. not DCC or sub programs)
  25.     BA  - minor bug fixed in support program
  26.     FA  - feature added to support program (or new support program)
  27.     OA  - optimization added to support program
  28.  
  29.     COMMENT = comment or bug, feature
  30.  
  31. 2.06.37
  32.     B   arrays are now aligned the same as their element type
  33.     alignment.  Thus, char a[3]; is byte aligned while short a[3];
  34.     is word aligned. Previously arrays were always word aligned.
  35.     (not really a bug, but required to work with Amiga cia structures)
  36.  
  37.     F   PROFILING ADDED.  New -prof option to DCC, LIBMAKE, and FDTOLIB.
  38.     This tool gives you unmatched profiling capabilities.  You may
  39.     profile just your source, standard C calls, amiga library calls,
  40.     or any combination.  A <programname>.dprof file is automatically
  41.     generated when your program exits and may be turned into a
  42.     textual representation  with the DPROF program.
  43.  
  44.     Profiling routines have a 1 uS granularity under 2.0, 20 mS
  45.     granularity under 1.3.
  46.  
  47.     __noprof qualifier for procedures added -- prevents a procedure
  48.     from being profiled (used by the system to prevent the profiler
  49.     routine from getting profiled itself)
  50.  
  51.     F   C.LIB renamed to CS.LIB to generalize library names.  Infix IDs
  52.     are now generalized as follows:
  53.  
  54.     L   large data model
  55.     S   small data model
  56.     R   registered args, else stack args (registered release only)
  57.     P   profiled, else not profiled.
  58.  
  59.     DCC will now use the -prof and -md/-mD options to determine which
  60.     c.lib and amiga.lib to use.  The more useful combinations are
  61.     included in the distribution and registered users may make
  62.     additional versions as needed.
  63.  
  64.     Note that you may mix options -- it is perfectly valid to compile
  65.     source modules with -mD but link small-data.
  66.  
  67.     BL  bug in fread() fixed relating to an fread() occuring after an
  68.     ungetc().
  69.  
  70.     E   ALL LIBRARIES IN THE SYSTEM REORGANIZED.  There are now many
  71.     more libraries.  Registered users now have a means of remaking
  72.     *ANY* library from scratch by unpacking the library source code
  73.     and typeing 'dmake' with no arguments for instructions. Generally
  74.     only the DTMP: assignment and -2.0 in your DCCOPTS is required.
  75.  
  76.     Since there are many more libraries possible then I can fit in the
  77.     distribution, this means may be used to create esoteric libraries
  78.     that the majority of people will never use.
  79.  
  80.     F   Fixed two major bugs with constant floating point arithmatic...
  81.     addition and subtraction would not work correctly in a few cases
  82.     (it would get the sign wrong), the exponent would get screwed up
  83.     in some cases (usually after a negation), and I was overflowing
  84.     the single-precision exponent range for conversions to type float.
  85.  
  86.     Ooooo this stuff should have been caught long ago!
  87.  
  88.     F   Fixed a pointer arithmatic bug, yet another case where a scratch
  89.     register would get overwritten due to a procedure call.
  90.  
  91. 2.06.36
  92.     B   register allocation bug fixed, related to floating point
  93.     routines mainly.  Would generate a 'Too many redos' error
  94.     in some cases (bug did not generate bad code).
  95.  
  96.     F   PRECOMPILED INCLUDES ADDED, see -H option in DOC/DCC.DOC.
  97.  
  98.  
  99. 2.06.35
  100.     FL  under 2.0 (V37), getenv() now checks for local enviroment variables
  101.     before global ENV: variables.  Under 1.3 only global ENV: variables
  102.     are checked for.
  103.  
  104.     BL  fixed %U and %W in strftime(), would generate incorrect week-of-year
  105.  
  106.     B   fixed stringize operator for \n, i.e. quoteme(fubar\n) -> "fubar\n",
  107.     would previously generate incorrect result (I think)
  108.  
  109.     B   fixed bugs in integer multiply & divide, some cases would generate
  110.     fatal errors (all caught by DICE)
  111.  
  112.     B   fixed bug &= operator, would generate assembly error in
  113.     conditional:    while (x &= (x - 1)) ...
  114.  
  115.     F   optimizations made to mulitply & divide, handles 16 bit expressions
  116.     better.
  117.  
  118.     F   minor optimization added for procedure calls within the same
  119.     module.  If call is within a byte offset then BSR.B will be
  120.     used, else BSR.W is used.
  121.  
  122.     F   DLink now checks for illegal small-data references to far objects
  123.     and generates the appropriate error message.  This was added for
  124.     completeness and also because __far or -mD data objects are no
  125.     longer A4-relative.  The check will catch illegal model mixing.
  126.  
  127. 2.06.34
  128.     BL  bug in <varargs.h> (old style var-args) fixed, was skipping first
  129.     argument.  Note that all ANSI projects should use <stdarg.h>
  130.  
  131. 2.06.33
  132.     B   bug in offsetof(type, array_elm) fixed, previously caused error
  133.     message.
  134.  
  135. 2.06.32
  136.     B   fixed bug in dlink Introduced in .31 that would cause a machine
  137.     crash.
  138.  
  139.  
  140. 2.06.31
  141.     B   fixed floating point bug relating to array indexing, would
  142.     clobber A0 in some cases
  143.  
  144.     B   fixed preprocessor bug relating to the use of hex constants
  145.     in #if expressions (they wouldn't work)
  146.  
  147.     E   redid the handling of the ?: routine to allocate its result
  148.     storage (a temporary register) after running the sub-expressions
  149.     instead of before, which allows you to nest ?: indefinitely without
  150.     generating an too-many-redos error.
  151.  
  152.     B   register allocation bug (would generate fatal error) in
  153.     &array (redundant & operator) has been fixed.
  154.  
  155.     B   DCPP now accepts null directives.  # with no directive.
  156.  
  157. 2.06.30
  158.  
  159.     F   DCPP now evaluates undefined symbols in #if expressions as 0
  160.     instead of generating an error message, as per ANSI.
  161.  
  162.     B   Yet another bug in the # (stringtize) operator found.  Fixed.
  163.     Really really really should work right this time!
  164.  
  165.     B   bug in switch/case fixed, case <enumid>: would generate an
  166.     error message.
  167.  
  168.     BA  I was shipping the wrong mathieeedoub*.library shared libraries,
  169.     would cause erronous float->double conversion.
  170.  
  171.     B   another floating point bug found in && and || of the
  172.     form 'fp && fp' or 'fp || fp', would cause incorrect
  173.     evaluation and/or assembly error
  174.  
  175.     B   small bug in fread() would sometimes set error flag
  176.     when returning EOF, and fseek() would not reset this
  177.     flag (it does now).
  178.  
  179.     BL  bug in *scanf(), %c would overwrite the char by one byte
  180.     (i.e. store into two chars instead of one).  fixed.
  181.  
  182.     B   DCPP didn't handle a quoted /* in directives correctly.
  183.  
  184.     F   Large programs that have more than 64K of *initialized* data
  185.     may now use either __far for selected items (preferable) or -mD
  186.     without causing link errors.  Previously dlink would combine far
  187.     data along with near data making all small-data referenced bss
  188.     items out of range if more than 64K of initialized data had been
  189.     declared, __far or not.  Now, DC1 generates 'fardata' sections
  190.     properly when -mD or __far is used (previously only worked with
  191.     __far), and dlink will not combine any section name beginning with
  192.     'far' into the small data model.
  193.  
  194.     This is only of major import when compiling incredibly huge
  195.     programs.  Note that having greater than 64K of bss with -mD or
  196.     __Far has always been supported since library bss is always forced
  197.     in front of program bss.
  198.  
  199.     F   DLink now takes approximately 15% less memory.  While it still
  200.     requires memory to hold the combined size of all objects and
  201.     libraries, incidental memory requirements now reuse much of this
  202.     memory from unlinked sections instead of allocate new memory.
  203.  
  204. 2.06.29
  205.     B   another long standing bug found: short a = i * j; where i and j
  206.     are long's and *also* a memory reference (not in regs),
  207.     the multiplication short-result optimization was screwed up.
  208.  
  209.     B   register allocation bug (would produce a fatal error) fixed,
  210.     registers would not be deallocated in constant conditional
  211.     expressions such as:    1 ? (a = 4) : b;
  212.  
  213. 2.06.28
  214.     B   really dumb bug fixed, made retroactive to 2.06.27 (all 2.06.27
  215.     dists were redone with this fixed).  Had been introduced in 2.06.27
  216.  
  217. 2.06.27
  218.     E   add -// option to DCC and DCPP, enables C++ style // comments.
  219.     If not specified, // style comments are ignored.  Generally
  220.     one puts -// in DCCOPTS.
  221.  
  222.     E   added -no-env option for DCC.  If specified, DCC will *not*
  223.     load options from DCCOPTS.
  224.  
  225.     B   fixed bug:  static int fio(), fio();  (procedure declared twice
  226.     on same line) would force procedure to be non-static.
  227.  
  228.     fixed bug:  __geta4 int fio(), bar(); ... __geta4 would apply
  229.     only to first procedure.
  230.  
  231.     B   fixed bug w/ labels ...  label: case ...  would generate error
  232.     message (case or default following directly after label).  Was
  233.     introduced when I initially fixed labels.
  234.  
  235.     E   AUTO-AGGREGATE INITIALIZATION ADDED, e.g.
  236.     main() { int a[] = { 1, 2, 3 }; ... }.
  237.  
  238.     static & global initialization has been re-vamped.  Note that
  239.     bit-field aggregate initialization is NOT supported yet.
  240.  
  241.     B   Fixed bug that has been in there from the beginning.
  242.     int *a; a[20000] = 1; ... would not multiply the constant by 4 to
  243.     get the index.  ONLY EFFECTED CONSTANT INDEXES WHOS OFFSET WOULD BE
  244.     LARGER THAN A SIGNED SHORT, which is why it was not caught.
  245.  
  246.     B   Fixed bug in float point stack allocation... temporary fp variables
  247.     from the previous procedure would not properly be cleared from the
  248.     cache, causing erronous stack offsets (that overlap other variables)
  249.     in the next procedure.
  250.  
  251.     E   Added ANSI 'U' extension for constants, e.g. 123U.  DICE now
  252.     automatically promotes a constant to unsigned if it does not fit in
  253.     a signed long, such as 4000000000.  Note, however, the int->float
  254.     conversion is currently always signed due to lack of
  255.     unsigned->float calls in the amiga's shared fp libraries.
  256.  
  257.     B   small bug in fread(), would not set the EOF flag when an EOF
  258.     occurs for an fread() requesting a buffer size larger than the
  259.     stdio buffer size.
  260.  
  261.     B   when making a registered-args call (-mr, -mR, -mRR) where a
  262.     pointer - int subtraction occurs, i.e. foo(ptr - int, int),
  263.     arguments after the argument containing the ptr - int would
  264.     be incorrect (registers would get squashed).  ONLY applies
  265.     to registered-args calls.  This has been fixed!
  266.  
  267.     B   bug in preprocessor fixed, #define fubar(x) "a x a" would replace
  268.     the 'x' in the string, which is wrong.
  269.  
  270.     B   bug with bitfields has been found and fixed.  Essentially, bitfield
  271.     operations in routines that need to run a retry pass can get
  272.     munged.  This is usually caused by routines that declare lots of
  273.     local variables.
  274.  
  275. 2.06.26
  276.     B   Fixed bug in floating pt compare of the form:  x = (f1 == f2);
  277.     i.e. a compare where the result is a boolean 0/1 when not in
  278.     a conditional.  Was caught by DICE (caused a fatal error).
  279.  
  280.     B   Fixed bug w/ bitfields (was caught by DICE), would give fatal
  281.     error if destination was not a register for field extraction.
  282.  
  283.     B   fixed bugs with stringtize operator in macros, should now work
  284.     according to the ANSI spec.
  285.  
  286.     #define fubar(x) #x
  287.  
  288.     BL  month was off by one for %m operator in strftime()
  289.  
  290.      E  PROCEDURES MAY NOW RETURN STRUCTURES.  YOU MUST PROTOTYPE ALL SUCH
  291.     PROCEDURES.
  292.  
  293.      E  added // comments to DCPP (C++ style comments)
  294.  
  295. 2.06.25
  296.     E   doc/errors.doc now exists, error handling centralized.
  297.  
  298.     E   a printer driver and exec device driver example has been added to
  299.     examples/ ... so now I have a shared library example, dos device
  300.     driver example, EXEC device driver and printer driver example.
  301.  
  302. 2.06.24
  303.     B   stack allocation changes in 2.06.23 were broken, broke floating point.
  304.     (got the stack tracking mixed up w/ variable allocation)
  305.  
  306.     B   ?: fix in 2.06.23 was broken (sigh), fixed ... 'default:' would
  307.     not be properly tokenized.
  308.  
  309.     E   *scanf() now supports %e/E/f/g/G and %[..]
  310.  
  311. 2.06.23 BETA
  312.     B   goto labels are now in their own name space, no more conflicts
  313.     with  int a; ... goto a; ... a: ...
  314.  
  315.     F   added stack tracking for fp temporaries, meaning that subroutines
  316.     containing floating point expressions do not take up anywhere near
  317.     the amount of stack they used to.
  318.  
  319.     F   allows declarations after switch() { and before first case.
  320.  
  321.     F   fixed problem with  ... ? symbol : ...  (symbol was being
  322.     interpreted as a label instead of a variable within a ?:
  323.     conditional
  324.  
  325.     F   fixed problems with conditional returns from fp operations,
  326.     such as:    double a, b; int c = (a < b);  that must
  327.     generate a 0/1 result instead of a branch (as in an if()).
  328.     Would generate error before.
  329.  
  330. 2.06.22
  331.     B   fixed problem with GOTO labels, a goto label semantically is
  332.     not a statement unto itself.  The problem is a line like the
  333.     below:
  334.  
  335.         if (i) j = 1; else x: j = 2;
  336.  
  337.     Currently j = 2; is completely outside the if in DICE.  This
  338.     is incorrect,  'x: j = 2;' counts as a single statement.
  339.  
  340.     E   libmake is now documented, it wasn't before!  New options have
  341.     been added to libmake and fdtolib.  For libmake, DCC's -D
  342.     option has been added.  For fdtolib, a new -p option is specifiable
  343.     to set the prefix used on exported symbols (to support creation
  344.     of dynamic.library compatible object modules)
  345.  
  346.     B   fixed bug in string constant array initialization,
  347.     char x[1] = "a";  previously generated an error
  348.  
  349.     B   fixed infinite ERROR printing loop
  350.  
  351.     F   revamped constant-address handling (i.e. when you map a
  352.     complex structure over IO space at a known address, useful when
  353.     generating ROM'd apps for 68000 based uP's.
  354.  
  355.     F   dynamic.library & support routines now part of the distribution.
  356.  
  357. 2.06.21
  358.     E   fixed register reallocation, should now do a better job
  359.     allocating registers in complex subroutines.  Hopefully squashed
  360.     'maximum retries exceeded' error for all but the most incredibly
  361.     complex expressions.
  362.  
  363.     B   fixed bug in int->float conversion, expressions such as:
  364.         double x = (double)(a * b);
  365.  
  366.     E   fixed somestuff that generated an infinite WARN loop.
  367.  
  368.     F   DCC now creates the destination directory heirarchy if it does
  369.     not exist.  For example, when you DCC com/x.c the object file
  370.     will be T:com/x.o, with T:com created if necessary.
  371.  
  372.     F   DYNAMIC FUNCTION/VAR LIBARARY SUPPORT ADDED, see __dynamic
  373.     explanation in DYNAMIC.DOC .
  374.  
  375.     F   DCPP now accepts -Ddefine(vars..)=definition, it used to be
  376.     able to only accept -Ddefine=value
  377.  
  378. 2.06.20
  379.     F   TimerBase, for timer.device library calls, now has auto-open
  380.     capability, meaning that you can simply call AddTime(), CmpTime(),
  381.     SubTime(), and the new 2.0 calls (GetSysTime() & ReadEClock())
  382.     without having to open the timer.device and set up TimerBase
  383.     yourself.
  384.  
  385.     B   bug in if (ptr & 1) and similar constructs doing a logical and
  386.     in a compare against a pointer rather than an int produced
  387.     bad code caught by DAS.
  388.  
  389.     B   x.o was in c.lib, this is wrong... x.o must be the LAST file in
  390.     any link and is included automatically by DCC when it runs DLINK.
  391.  
  392.     F   additional example code in DCC2:examples -- a DOS handler and
  393.     a shared library.
  394.  
  395. 2.06.19
  396.     B   bug in dynamic stack code under 1.3 fixed
  397.     B   bug in workbench startup under 1.3 fixed
  398.     B   bug in register allocation fixed (would cause fatal error
  399.     message 'too many retries' sometimes when procedure args
  400.     declared as arrays instead of pointers)
  401.  
  402. 2.06.18
  403.     F   several more libraries have auto-open capability
  404.  
  405.     B   bug in DLINK fixed -- would GURU on large links due to an error
  406.     in the allocation routines (relocation info larger than 4K would
  407.     cause a GURU)
  408.  
  409. 2.06.17
  410.     F   DCPP now scans DINCLUDE:PD/ for include files.  This is where I
  411.     will be putting .H files for various ports (such as the UNIX
  412.     regexp port).  This was done so as not to clutter the main
  413.     DINCLUDE: and to differentiate between PD files and non-PD
  414.     files.
  415.  
  416.     UNIX compatible .H files are usually placed in DINCLUDE: or
  417.     DINCLUDE:SYS/
  418.  
  419.     F   preprocessor now handles #if defined(symbol) properly (was
  420.     previously not implemented)
  421.  
  422.     F   BITFIELDS now 99% implemented!  including signed/unsigned
  423.     qualifications.  The only thing that does not work is ++bitfield
  424.     and --bitfield.  Single-bit bitfields have been optimized.
  425.     aggregate initialization of bitfields is still wanting.  executable
  426.     actually got smaller when I finally got down and fixed these up.
  427.     No 020/030 support yet.
  428.  
  429.     F   startup code modified to allow writes to desc 0, reads from desc 1,
  430.     etc...  at the file descriptor level but not the stdio level.  This
  431.     is to support some UNIX programs which do this.
  432.  
  433.     BL  bug in [f]putc() fixed -- [f]putc() is supposed to return the put character,
  434.             but did not do so in the case of a new line (putc), or
  435.             at all (fputc).
  436.  
  437.     F   NEW LIBRARY ROUTINESE:  stat(), fstat(), getenv(), opendir(),
  438.     readdir(), closedir(), rewinddir() (see MAN/UNIX.DOC)
  439.  
  440.     F   chdir() now restores the original directory on exit
  441.  
  442.     F   Dynamic Stacking added (-gs option).  Somewhat primitive, but will
  443.     get much better.  This allows subroutines to be as deeply nested as
  444.     required, allocating and deallocating stack frames when low stack
  445.     conditions exist.
  446.  
  447.     F   longjmp()/setjmp() now properly handle dynamic stacks
  448.  
  449.     B   fixed another bug, this one having to do with the index address
  450.     mode (An,Dn.x) combined with a binary operator.
  451.  
  452.     B   fixed bug in FDTOLIB that screwed up register ordering.
  453.  
  454. 2.06.16
  455.     B   fixed EXG bug in DAS, EXG As,Ad would generate Ds,Dd.. screwed
  456.     up registered args (-mRR).
  457.  
  458.     B   fixed bug in *= and /= combined w/ array indexing, things like
  459.     temp[i] /= 23; would use the scratch regs for storage across
  460.     the divide call.
  461.  
  462. 2.06.15
  463.     F   BASIC REGISTERED ARGUMENTS ADDED.  See -mr, -mR, and -mRR options
  464.  
  465.     F   prototype optimization.  If a prototype says a procedure takes a
  466.     short, then DICE pushes a long (as usual).  However, DICE will
  467.     no longer EXT the object before pushing it (upper word is garbage).
  468.     This works because the procedure, having declared the argument a
  469.     short, will only access the lower 16 bits.
  470.  
  471.     B   fixed token pasting bug in dcpp, a ## b ## c now works properly.
  472.  
  473.     F   first registered distribution that includes the 2.0 includes,
  474.     restructuring of 1.3 includes (now called 'amiga13' instead of
  475.     'amiga'), and restructuring of disks to make more space.
  476.