home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 529b.lha / DICE_v2.06.29 / version.doc < prev    next >
Text File  |  1991-07-02  |  16KB  |  411 lines

  1.  
  2.                    VERSION.DOC
  3.                   DICE
  4.  
  5. VERS DES COMMENT
  6.     VERS    = Release Version
  7.     DES     = bug fixed / feature designator
  8.     XB  - major bug fixed in main compiler
  9.           (use of routine in question could have caused a crash)
  10.     B   - minor bug fixed in main compiler
  11.     F   - feature added
  12.     E   - enhancement to existing feature
  13.     O   - optimization added
  14.  
  15.     ADD - feature added or fixed that is standard C but was not previously
  16.           implemented or working.
  17.  
  18.     XBL - major bug fixed to library
  19.     BL  - minor bug fixed to library
  20.     FL  - feature added to library
  21.     OL  - optimization added to library
  22.  
  23.     XBA - major bug fixed in support program (i.e. not DCC or sub programs)
  24.     BA  - minor bug fixed in support program
  25.     FA  - feature added to support program (or new support program)
  26.     OA  - optimization added to support program
  27.  
  28.     COMMENT = comment or bug, feature
  29.  
  30. 2.06.30
  31.     B    another floating point bug found in && and || of the
  32.     form 'fp && fp' or 'fp || fp', would cause incorrect
  33.     evaluation and/or assembly error
  34.  
  35.     B    small bug in fread() would sometimes set error flag
  36.     when returning EOF, and fseek() would not reset this
  37.     flag (it does now).
  38.  
  39.     BL    bug in *scanf(), %c would overwrite the char by one byte
  40.     (i.e. store into two chars instead of one).  fixed.
  41.  
  42.     B    DCPP didn't handle a quoted /* in directives correctly.
  43.  
  44. 2.06.29
  45.     B    another long standing bug found: short a = i * j; where i and j
  46.     are long's and *also* a memory reference (not in regs),
  47.     the multiplication short-result optimization was screwed up.
  48.  
  49.     B    register allocation bug (would produce a fatal error) fixed,
  50.     registers would not be deallocated in constant conditional
  51.     expressions such as:    1 ? (a = 4) : b;
  52.  
  53. 2.06.28
  54.     B    really dumb bug fixed, made retroactive to 2.06.27 (all 2.06.27
  55.     dists were redone with this fixed).  Had been introduced in 2.06.27
  56.  
  57. 2.06.27
  58.     E    add -// option to DCC and DCPP, enables C++ style // comments.
  59.     If not specified, // style comments are ignored.  Generally
  60.     one puts -// in DCCOPTS.
  61.  
  62.     E    added -no-env option for DCC.  If specified, DCC will *not*
  63.     load options from DCCOPTS.
  64.  
  65.     B    fixed bug:  static int fio(), fio();  (procedure declared twice
  66.     on same line) would force procedure to be non-static.
  67.  
  68.     fixed bug:  __geta4 int fio(), bar(); ... __geta4 would apply
  69.     only to first procedure.
  70.  
  71.     B    fixed bug w/ labels ...  label: case ...  would generate error
  72.     message (case or default following directly after label).  Was
  73.     introduced when I initially fixed labels.
  74.  
  75.     E    AUTO-AGGREGATE INITIALIZATION ADDED, e.g.
  76.     main() { int a[] = { 1, 2, 3 }; ... }.
  77.  
  78.     static & global initialization has been re-vamped.  Note that
  79.     bit-field aggregate initialization is NOT supported yet.
  80.  
  81.     B    Fixed bug that has been in there from the beginning.
  82.     int *a; a[20000] = 1; ... would not multiply the constant by 4 to
  83.     get the index.    ONLY EFFECTED CONSTANT INDEXES WHOS OFFSET WOULD BE
  84.     LARGER THAN A SIGNED SHORT, which is why it was not caught.
  85.  
  86.     B    Fixed bug in float point stack allocation... temporary fp variables
  87.     from the previous procedure would not properly be cleared from the
  88.     cache, causing erronous stack offsets (that overlap other variables)
  89.     in the next procedure.
  90.  
  91.     E    Added ANSI 'U' extension for constants, e.g. 123U.  DICE now
  92.     automatically promotes a constant to unsigned if it does not fit in
  93.     a signed long, such as 4000000000.  Note, however, the int->float
  94.     conversion is currently always signed due to lack of
  95.     unsigned->float calls in the amiga's shared fp libraries.
  96.  
  97.     B    small bug in fread(), would not set the EOF flag when an EOF
  98.     occurs for an fread() requesting a buffer size larger than the
  99.     stdio buffer size.
  100.  
  101.     B    when making a registered-args call (-mr, -mR, -mRR) where a
  102.     pointer - int subtraction occurs, i.e. foo(ptr - int, int),
  103.     arguments after the argument containing the ptr - int would
  104.     be incorrect (registers would get squashed).  ONLY applies
  105.     to registered-args calls.  This has been fixed!
  106.  
  107.     B    bug in preprocessor fixed, #define fubar(x) "a x a" would replace
  108.     the 'x' in the string, which is wrong.
  109.  
  110.     B    bug with bitfields has been found and fixed.  Essentially, bitfield
  111.     operations in routines that need to run a retry pass can get
  112.     munged.  This is usually caused by routines that declare lots of
  113.     local variables.
  114.  
  115. 2.06.26
  116.     B    Fixed bug in floating pt compare of the form:  x = (f1 == f2);
  117.     i.e. a compare where the result is a boolean 0/1 when not in
  118.     a conditional.    Was caught by DICE (caused a fatal error).
  119.  
  120.     B    Fixed bug w/ bitfields (was caught by DICE), would give fatal
  121.     error if destination was not a register for field extraction.
  122.  
  123.     B    fixed bugs with stringtize operator in macros, should now work
  124.     according to the ANSI spec.
  125.  
  126.     #define fubar(x) #x
  127.  
  128.     BL    month was off by one for %m operator in strftime()
  129.  
  130.      E    PROCEDURES MAY NOW RETURN STRUCTURES.  YOU MUST PROTOTYPE ALL SUCH
  131.     PROCEDURES.
  132.  
  133.      E    added // comments to DCPP (C++ style comments)
  134.  
  135. 2.06.25
  136.     E    doc/errors.doc now exists, error handling centralized.
  137.  
  138.     E    a printer driver and exec device driver example has been added to
  139.     examples/ ... so now I have a shared library example, dos device
  140.     driver example, EXEC device driver and printer driver example.
  141.  
  142. 2.06.24
  143.     B    stack allocation changes in 2.06.23 were broken, broke floating point.
  144.     (got the stack tracking mixed up w/ variable allocation)
  145.  
  146.     B    ?: fix in 2.06.23 was broken (sigh), fixed ... 'default:' would
  147.     not be properly tokenized.
  148.  
  149.     E    *scanf() now supports %e/E/f/g/G and %[..]
  150.  
  151. 2.06.23 BETA
  152.     B    goto labels are now in their own name space, no more conflicts
  153.     with  int a; ... goto a; ... a: ...
  154.  
  155.     F    added stack tracking for fp temporaries, meaning that subroutines
  156.     containing floating point expressions do not take up anywhere near
  157.     the amount of stack they used to.
  158.  
  159.     F    allows declarations after switch() { and before first case.
  160.  
  161.     F    fixed problem with  ... ? symbol : ...    (symbol was being
  162.     interpreted as a label instead of a variable within a ?:
  163.     conditional
  164.  
  165.     F    fixed problems with conditional returns from fp operations,
  166.     such as:    double a, b; int c = (a < b);  that must
  167.     generate a 0/1 result instead of a branch (as in an if()).
  168.     Would generate error before.
  169.  
  170. 2.06.22
  171.     B    fixed problem with GOTO labels, a goto label semantically is
  172.     not a statement unto itself.  The problem is a line like the
  173.     below:
  174.  
  175.         if (i) j = 1; else x: j = 2;
  176.  
  177.     Currently j = 2; is completely outside the if in DICE.    This
  178.     is incorrect,  'x: j = 2;' counts as a single statement.
  179.  
  180.     E    libmake is now documented, it wasn't before!  New options have
  181.     been added to libmake and fdtolib.  For libmake, DCC's -D
  182.     option has been added.    For fdtolib, a new -p option is specifiable
  183.     to set the prefix used on exported symbols (to support creation
  184.     of dynamic.library compatible object modules)
  185.  
  186.     B    fixed bug in string constant array initialization,
  187.     char x[1] = "a";  previously generated an error
  188.  
  189.     B    fixed infinite ERROR printing loop
  190.  
  191.     F    revamped constant-address handling (i.e. when you map a
  192.     complex structure over IO space at a known address, useful when
  193.     generating ROM'd apps for 68000 based uP's.
  194.  
  195.     F    dynamic.library & support routines now part of the distribution.
  196.  
  197. 2.06.21
  198.     E    fixed register reallocation, should now do a better job
  199.     allocating registers in complex subroutines.  Hopefully squashed
  200.     'maximum retries exceeded' error for all but the most incredibly
  201.     complex expressions.
  202.  
  203.     B    fixed bug in int->float conversion, expressions such as:
  204.         double x = (double)(a * b);
  205.  
  206.     E    fixed somestuff that generated an infinite WARN loop.
  207.  
  208.     F    DCC now creates the destination directory heirarchy if it does
  209.     not exist.  For example, when you DCC com/x.c the object file
  210.     will be T:com/x.o, with T:com created if necessary.
  211.  
  212.     F    DYNAMIC FUNCTION/VAR LIBARARY SUPPORT ADDED, see __dynamic
  213.     explanation in DYNAMIC.DOC .
  214.  
  215.     F    DCPP now accepts -Ddefine(vars..)=definition, it used to be
  216.     able to only accept -Ddefine=value
  217.  
  218. 2.06.20
  219.     F    TimerBase, for timer.device library calls, now has auto-open
  220.     capability, meaning that you can simply call AddTime(), CmpTime(),
  221.     SubTime(), and the new 2.0 calls (GetSysTime() & ReadEClock())
  222.     without having to open the timer.device and set up TimerBase
  223.     yourself.
  224.  
  225.     B    bug in if (ptr & 1) and similar constructs doing a logical and
  226.     in a compare against a pointer rather than an int produced
  227.     bad code caught by DAS.
  228.  
  229.     B    x.o was in c.lib, this is wrong... x.o must be the LAST file in
  230.     any link and is included automatically by DCC when it runs DLINK.
  231.  
  232.     F    additional example code in DCC2:examples -- a DOS handler and
  233.     a shared library.
  234.  
  235. 2.06.19
  236.     B    bug in dynamic stack code under 1.3 fixed
  237.     B    bug in workbench startup under 1.3 fixed
  238.     B    bug in register allocation fixed (would cause fatal error
  239.     message 'too many retries' sometimes when procedure args
  240.     declared as arrays instead of pointers)
  241.  
  242. 2.06.18
  243.     F    several more libraries have auto-open capability
  244.  
  245.     B    bug in DLINK fixed -- would GURU on large links due to an error
  246.     in the allocation routines (relocation info larger than 4K would
  247.     cause a GURU)
  248.  
  249. 2.06.17
  250.     F    DCPP now scans DINCLUDE:PD/ for include files.    This is where I
  251.     will be putting .H files for various ports (such as the UNIX
  252.     regexp port).  This was done so as not to clutter the main
  253.     DINCLUDE: and to differentiate between PD files and non-PD
  254.     files.
  255.  
  256.     UNIX compatible .H files are usually placed in DINCLUDE: or
  257.     DINCLUDE:SYS/
  258.  
  259.     F    preprocessor now handles #if defined(symbol) properly (was
  260.     previously not implemented)
  261.  
  262.     F    BITFIELDS now 99% implemented!    including signed/unsigned
  263.     qualifications.  The only thing that does not work is ++bitfield
  264.     and --bitfield.  Single-bit bitfields have been optimized.
  265.     aggregate initialization of bitfields is still wanting.  executable
  266.     actually got smaller when I finally got down and fixed these up.
  267.     No 020/030 support yet.
  268.  
  269.     F    startup code modified to allow writes to desc 0, reads from desc 1,
  270.     etc...    at the file descriptor level but not the stdio level.  This
  271.     is to support some UNIX programs which do this.
  272.  
  273.     BL    bug in [f]putc() fixed -- [f]putc() is supposed to return the put character,
  274.             but did not do so in the case of a new line (putc), or
  275.             at all (fputc).
  276.  
  277.     F    NEW LIBRARY ROUTINESE:    stat(), fstat(), getenv(), opendir(),
  278.     readdir(), closedir(), rewinddir() (see MAN/UNIX.DOC)
  279.  
  280.     F    chdir() now restores the original directory on exit
  281.  
  282.     F    Dynamic Stacking added (-gs option).  Somewhat primitive, but will
  283.     get much better.  This allows subroutines to be as deeply nested as
  284.     required, allocating and deallocating stack frames when low stack
  285.     conditions exist.
  286.  
  287.     F    longjmp()/setjmp() now properly handle dynamic stacks
  288.  
  289.     B    fixed another bug, this one having to do with the index address
  290.     mode (An,Dn.x) combined with a binary operator.
  291.  
  292.     B    fixed bug in FDTOLIB that screwed up register ordering.
  293.  
  294. 2.06.16
  295.     B    fixed EXG bug in DAS, EXG As,Ad would generate Ds,Dd.. screwed
  296.     up registered args (-mRR).
  297.  
  298.     B    fixed bug in *= and /= combined w/ array indexing, things like
  299.     temp[i] /= 23; would use the scratch regs for storage across
  300.     the divide call.
  301.  
  302. 2.06.15
  303.     F    BASIC REGISTERED ARGUMENTS ADDED.  See -mr, -mR, and -mRR options
  304.  
  305.     F    prototype optimization.  If a prototype says a procedure takes a
  306.     short, then DICE pushes a long (as usual).  However, DICE will
  307.     no longer EXT the object before pushing it (upper word is garbage).
  308.     This works because the procedure, having declared the argument a
  309.     short, will only access the lower 16 bits.
  310.  
  311.     B    fixed token pasting bug in dcpp, a ## b ## c now works properly.
  312.  
  313.     F    first registered distribution that includes the 2.0 includes,
  314.     restructuring of 1.3 includes (now called 'amiga13' instead of
  315.     'amiga'), and restructuring of disks to make more space.
  316.  
  317. 2.05.14
  318.     BL    fgets() would overflow the buffer by one character when input lines
  319.     were larger than the buffer size.
  320.  
  321.     B    DCC would complain about output (-o) files ending in .h or .c when
  322.     they do not actually end in .h or .c ..
  323.  
  324. 2.05.13
  325.     B    DCC was supplying only a 2K stack to NON-RESIDENTED sub programs.
  326.     Oops.
  327.  
  328.     F    New floating point support for MATHIEEESING*.LIBRARY ... single
  329.     precision IEEE library.  This is now the default since it is
  330.     more compatible with the double precision IEEE library for
  331.     conversions between single & double precision.
  332.  
  333.     Use the -ffp option to DCC to use the old motorola fast floating
  334.     point single precision library.  Note that the new ieee single
  335.     precision library may not exist on every computer.
  336.  
  337. 2.05.12
  338.     B    another bug with 'const static' items not properly aligning the
  339.     routine they were declared in (when declared within a procedure
  340.     definition).  Fixed.
  341.  
  342.     B    pfmt has a local 64 byte buffer which used to be static.  This is
  343.     illegal for the ROM.LIB version of sprintf() & vsprintf() and so I
  344.     have made this an auto instead.  This fix does not effect Amiga C
  345.     programming though it does mean that [v]sprintf() may now be called
  346.     out of context or multi-threaded without mishap.
  347.  
  348.     F    qsort(), rand(), and srand() have been written.
  349.  
  350.     B    volatile was not being handled proper, 'volatile char *ptr' is
  351.     a pointer to a volatile char, NOT a volatile pointer, for
  352.     example.
  353.  
  354. 2.05.11
  355.     F    new library, ROM.LIB, contains only those routines from C.LIB that
  356.     are completely self contained (reference no static or global data,
  357.     or other routines.  Use only autos if at all).
  358.  
  359.     This library is included instead of C.LIB when the -rom option
  360.     to DCC is used (with the -rom option, amigas*.lib is not included
  361.     either, and it is up to the programmer to specify his own startup
  362.     module)
  363.  
  364.     F    char ary[0] and empty structs return errors, but a direct 'void'
  365.     declaration is allowed.  i.e. 'void x;', useful in some cases.
  366.  
  367.     F    Specifying the 'register' keyword now adds some 'weight' to the
  368.     variable, perhaps giving it more of a chance of becomming a
  369.     register.
  370.  
  371.     B    DCPP was improperly handling token pasting (##), this has been
  372.     fixed.
  373.  
  374.     B    static const objects declared within a procedure not word-aligned
  375.     could cause the procedure code to not be word-aligned, thus
  376.     causing a software error.
  377.  
  378.     F    CONST object handling has been changed.  Before 2.05.11 const
  379.     objects were not put into a CODE hunk unless the -ms or -mS options
  380.     are given to DCC.  2.05.11 and beyond put const qualified objects
  381.     in a code hunk regardless.
  382.  
  383.     F    C.O Modified.  Any program run in the background with RUN will not
  384.     attempt to Open("*",..) to get the stderr channel but instead
  385.     will use the stdout descriptor if it exists.  This allows programs
  386.     to be detached from a CLI (i.e. that you can run a program and
  387.     then close the CLI window without mishap)
  388.  
  389.     F    -020, -030, -881, -882 options formally added (currently -020/-030
  390.     are the same and -881/-882 are the same)
  391.  
  392.     -020: uses EXTB.L   (no major support has been added yet)
  393.  
  394.     B    DSEARCH had a bug... when multiple files are scanned it would miss
  395.     lines in the second file and beyond!
  396.  
  397.     F    oops, const items in the library were not placed in the code
  398.     section.  This effects <ctype.h> ... you must recompile any
  399.     source files that use <ctype.h> macros since the access method
  400.     is now pc-relative instead of data-relative.
  401.  
  402.     The fix is more pertainent to ROMd applications that use <ctype.h>
  403.     ... the lookup tables are no longer copied into RAM for such
  404.     applications.
  405.  
  406. 2.05.10
  407.     F    __config and __shared type qualifiers added
  408.  
  409.     B    --var; generated an internal error
  410.  
  411.