home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / languages / obrn-a_1.4_upd2.lha / oberon-a / docs / Changes.doc
Encoding:
Text File  |  1994-09-08  |  11.9 KB  |  390 lines

  1.  
  2.      $RCSfile: Changes.doc $
  3.   Description: Changes made to Oberon-A
  4.  
  5.    Created by: fjc (Frank Copeland)
  6.     $Revision: 1.6 $
  7.       $Author: fjc $
  8.         $Date: 1994/08/08 21:07:40 $
  9.   ________________________________________________________________________
  10.  
  11.  
  12.   Changes made in release 1.4 update 2
  13.   ====================================
  14.  
  15.   Bugs fixed
  16.   ----------
  17.  
  18.   OC
  19.     * [bug] Calling type-bound procedures from arrays of objects caused
  20.       register allocation errors. [C.Grigis]
  21.  
  22.   Changes made in release 1.4 update 1
  23.   ====================================
  24.  
  25.   Bugs fixed
  26.   ----------
  27.  
  28.   OC
  29.     * Bug in processing of formal parameters caused infinite loops if two
  30.       parameters had the same name. [C.Ziegler]
  31.  
  32.   Improvements made
  33.   -----------------
  34.  
  35.   OC
  36.     * Checks for the existence of directories given in SYM and DST
  37.       arguments.
  38.  
  39.   Revision control
  40.     * Uses Johan Fereirra's OBumpRev to manage revision numbers for the
  41.       compiler and utilities.
  42.  
  43.   Oberon-A Library modules
  44.     * Implemented module Kernel to replace functions currently in module
  45.       SYSTEM that will be removed in Release 1.5.
  46.     * Added ObjectExists() and DirExists() to module DosUtil.
  47.     * Changed module ExecUtil to use functions from module Kernel.
  48.     * Created module WbConsole to independantly handle creating a stdio
  49.       environment for Workbench programs.
  50.     * Changed module StdIO to use module WbConsole.
  51.  
  52.   Changes made in release 1.4
  53.   ===========================
  54.  
  55.   Bugs fixed
  56.   ----------
  57.  
  58.   OC
  59.     * The register involved in a LIBCALL parameter was being reserved too
  60.       soon, causing register allocation errors in some cases where the
  61.       actual parameters were expressions involving function procedures,
  62.       or long integer or real arithmetic. [C.Ziegeler]
  63.     * Fixing the above bug uncovered another, in which the parameter
  64.       register was being freed before it was reserved. This only happened
  65.       when the actual parameter was a record field referenced through a
  66.       pointer, or an array element. [fjc]
  67.     * It was possible to dereference a function procedure that returned a
  68.       pointer type as if it were a pointer variable, with unpredictable
  69.       results. [C.Ziegeler]
  70.     * There was no check that forward declared procedures were actually
  71.       implemented. The linker would have spotted this anyway. [fjc]
  72.     * The stack offsets of procedure parameters were being written to the
  73.       symbol file. The $L compiler switch changed these offsets, making
  74.       the symbol file invalid. [fjc]
  75.     * The column reported for error locations was incorrect if there were
  76.       TAB characters in the line. [J.Ferreira]
  77.     * Direct comparisons with TRUE gave incorrect results in some
  78.       circumstances (specifically, when dealing with boolean return
  79.       values from dos.library functions). [E.Dewald]
  80.  
  81.   Intuition.mod
  82.     * menuNull was mis-spelled nenuNull.
  83.  
  84.   Exec.mod
  85.     * paXXX flags declared incorrectly. [J.Ferreira]
  86.  
  87.   Improvements made
  88.   -----------------
  89.  
  90.   OEL
  91.     * Oberon-A Error Lister, contributed by Johan Ferreira.
  92.  
  93.   Module SYSTEM
  94.     * The parameters to SYSTEM.SETCLEANUP are now a single assignable
  95.       procedure. There is no need for a variable to hold the old cleanup
  96.       procedure, or a return code parameter.
  97.     * Added SYSTEM.RC to return the current return code.
  98.     * SYSTEM.NEW now has an optional parameter for passing memory
  99.       requirements.
  100.     * Extended the range of types that can be used with bit operations
  101.       (SYSTEM.LSH, etc.)
  102.  
  103.   All
  104.     * Changed to use new SYSTEM.SETCLEANUP format.
  105.  
  106.   OC
  107.     * Changed the $Z switch from a module switch to a global switch.
  108.     * No longer generates multiple error reports at the same location.
  109.     * Implemented foreign procedures.
  110.     * Implemented the $A compiler switch.
  111.     * SYSTEM.LONGWORD variables can now be assigned any value whose type
  112.       <= 32 bits. The same for SYSTEM.WORD when the type is <= 16 bits.
  113.       Integers are sign-extended, all other values are zero-extended.
  114.     * Implemented NIL checking when dereferencing pointers, calling
  115.       procedures from variables and executing type guards with pointers.
  116.     * Changed register parameter declarations to use square brackets
  117.       instead of braces.
  118.     * Implemented stack checking.
  119.     * Added TEXTERR command line option.
  120.     * Changed to output binary error file by default.
  121.     * Implemented $s compiler switch.
  122.     * Changed error numbers.
  123.  
  124.   FPE
  125.     * arp.library is now only used if dos.library < V37 or asl.library
  126.       cannot be opened.
  127.  
  128.   OL
  129.     * Added options to allow a linker to be called directly.
  130.  
  131.   OD
  132.     * Definition file utility created.
  133.  
  134.   Amiga Interface
  135.     * Updated to Release 40.15 (3.1).
  136.       - Added new declarations to most existing modules.
  137.       - Created new modules:
  138.         - AmigaGuide.mod
  139.         - Bullet.mod
  140.         - CardRes.mod
  141.         - CDDevice.mod
  142.         - Datatypes.mod
  143.         - Gadgets.mod
  144.         - Locale.mod
  145.         - LowLevel.mod
  146.         - NonVolatile.mod
  147.         - Prefs.mod
  148.         - RealTime.mod
  149.     * Changed modules to use foreign code interface:
  150.       - BoopsiUtil.mod
  151.       - RexxUtil.mod
  152.       - Added the related object files (Classface.obj and rexxvars.o) to
  153.         OberonSys.lib. Note that this is a temporary solution until a
  154.         more complete foreign code interface is implemented.
  155.     * Retained Commodore's comments in the source code.
  156.  
  157.   Third-party library interface modules:
  158.     * New modules contributed by various people:
  159.       - GuiEnv.mod
  160.       - GuiEnvSupport.mod
  161.       - ReqTools.mod
  162.       - TextFieldGadget.mod
  163.       - UMS.mod
  164.  
  165.   Dos.mod
  166.     * Created SetVBufPtr() as an alias for SetVBuf(), to be used to pass
  167.       NIL buffers.
  168.  
  169.   Intuition.mod
  170.     * Changed 'args' parameters for EasyRequest functions to
  171.       SYS.LONGWORD.
  172.  
  173.   Editor support
  174.     * Macros and ARexx scripts to allow the compiler, linker, etc. to be
  175.       called from within an editor. The only supported editor at the
  176.       present is AmokEd, but the scripts should be adaptable to other
  177.       editors.
  178.  
  179.  
  180.   Changes made in release 1.3 update 2
  181.   ====================================
  182.  
  183.   Bugs fixed
  184.   ----------
  185.  
  186.   OC
  187.     * The string passing bug introduced in update 1 was fixed.
  188.  
  189.   Changes made in release 1.3 update 1
  190.   ====================================
  191.  
  192.   Bugs fixed
  193.   ----------
  194.  
  195.   OC
  196.     * Calling a type-bound procedure through a de-referenced CPointer
  197.       variable caused an address trap. [fjc]
  198.  
  199.   Improvements made
  200.   -----------------
  201.  
  202.   OC
  203.     * Compiler now passes NIL when the actual parameter for an ARRAY OF
  204.       CHAR LIBCALL parameter is an empty string.
  205.  
  206.   Bugs introduced :-(
  207.   -------------------
  208.  
  209.   OC
  210.     * Strings longer than 1 character are not being passed to LIBCALL
  211.       parameters.
  212.  
  213.   Changes made in release 1.3
  214.   ===========================
  215.  
  216.   Bugs fixed
  217.   ----------
  218.  
  219.   OC
  220.     * Compiling non-Oberon files caused gurus due to writing error reports
  221.       to a NIL filehandle. [Torsten ?]
  222.     * Processing escaped characters in strings could lead to infinite
  223.       loops. [A. Weinert]
  224.     * Number of bytes of initialised data was understated. [fjc]
  225.     * Failed to free registers when dereferencing BPointers. [fjc]
  226.     * _Any_ constant could be assigned to a set variable. [fjc]
  227.  
  228.   FPE
  229.     * In at least two cases memory belonging to IntuiSup library was being
  230.       accessed (read) _after_ the message was replied. [fjc]
  231.  
  232.   Graphics.mod
  233.     * Wrong register used for parameter of OpenFont(). [fjc]
  234.  
  235.   OL
  236.     * Program failed to free locks on symbol files if it was interrupted
  237.       with CTRL-C.
  238.  
  239.   ORU
  240.     * Program failed to free locks on files if it was interrupted with
  241.       CTRL-C.
  242.  
  243.   Improvements made
  244.   -----------------
  245.  
  246.   OC
  247.     * Error #5 (end of file in comment) now reports the position of the
  248.       start of the offending comment.
  249.     * Removed all references to UNION types.  They were more more trouble
  250.       than they were worth.
  251.     * String literals seperated by whitespace are concatenated.
  252.     * Implemented varargs for Amiga library calls.
  253.     * Reorganised symbol table as a binary search tree, for a serious
  254.       performance improvement.
  255.     * New symbol file format produces smaller files and increases number
  256.       of exportable types.
  257.  
  258.   Module SYSTEM
  259.     * Added TYPETAG type and procedures for processing type tags.
  260.     * Added SETREG and REG procedures.
  261.  
  262.   Amiga Interface
  263.     * General overhaul:
  264.       - Reorganised and renamed some modules:
  265.         - Rexx.mod --> Rexx.mod and RexxSysLib.mod
  266.         - KeyMaps.mod --> KeyMap.mod and KeyMapLib.mod
  267.         - InputEvents.mod --> InputEvent.mod
  268.         - Console.mod --> Console.mod and ConUnit.mod
  269.         - FileSystem.mod --> FileSysRes.mod
  270.         - Merged Types.mod with Exec.mod
  271.       - Added missing modules:
  272.         - MathLibrary.mod
  273.         - MathIeeeSingBas.mod
  274.         - MathIeeeSingTrans.mod
  275.       - Made sure that the translation of C names into Oberon was done
  276.         consistently:
  277.         - Kept prefixes for constants except where they were just
  278.           abbreviations of the module name.
  279.         - Deleted prefixes for record fields except where this caused name
  280.           clashes.
  281.       - Fixed parameter types of LIBCALLs.
  282.       - Created LIBCALL versions using varargs as well as TagItem arrays.
  283.       - Created variant LIBCALLs with alternative parameter lists where
  284.         appropriate.
  285.       - Wrote new utility procedures:
  286.         - ExecUtil.mod
  287.         - BoopsiUtil.mod
  288.         - HookUtil.mod
  289.  
  290.   FPE
  291.     * Changed source code to use new Amiga interfaces.
  292.     * Minor details changed.
  293.  
  294.   Examples
  295.     * Wrote some (well, ported some from the RKM).
  296.  
  297.   Files.mod
  298.     * Module now keeps track of all files opened and closes any left
  299.       open when the program exits.
  300.  
  301.   OL
  302.     * Added specific support for ALink and dlink.
  303.  
  304.   Changes made in release 1.2
  305.   ===========================
  306.  
  307.   Bugs fixed
  308.   ----------
  309.  
  310.   OC
  311.     * Batch file was not closed when batch compile interrupted by CTRL-C.
  312.       [fjc]
  313.     * Numerous bugs in the translation of type-bound procedures,
  314.       especially when forward declared.  It was a wonder they worked at
  315.       all. [K. Juha, J. Hawkins]
  316.  
  317.   Improvements made
  318.   -----------------
  319.  
  320.   OC
  321.     * "/" appended to paths not ending in "/" or ":".
  322.     * Now checks for at least one RETURN statement in a function
  323.       procedure. Generates code to check at run-time for a missing RETURN
  324.       statement in a function procedure. Added "$r" switch to turn checks
  325.       off.
  326.  
  327.   OL
  328.     * "/" appended to paths not ending in "/" or ":".
  329.  
  330.   ORU
  331.     * "/" appended to paths not ending in "/" or ":".
  332.  
  333.   Lists.mod
  334.     * Added FindNameNoCase().
  335.  
  336.   Workbench.mod
  337.     * Implemented AddAppIconA() using inline code to get around the
  338.       problem with using A4 to pass parameters.
  339.  
  340.   Changes made in release 1.1
  341.   ===========================
  342.  
  343.   Bugs fixed
  344.   ----------
  345.  
  346.   OC
  347.     * Enforcer hit caused when no DST parameter was specified [A. Weinert].
  348.     * Same error code used for different errors. [R. Waspe]
  349.  
  350.   OL
  351.     * The module name passed as a parameter was case-sensitive [R. Waspe].
  352.  
  353.   OberonSys.lib
  354.     * The garbage collector was mistreating SysBlks in the mark phase.
  355.       Fireworks mode :-) [fjc]
  356.  
  357.   Improvements made
  358.   -----------------
  359.  
  360.   FPE
  361.     * Added "Program-Create Directory" menu item and removed references
  362.       to "Make Code" button in FPE.doc.
  363.  
  364.   OC
  365.     * Changed command line arguments:
  366.       - Options now must come first;
  367.       - Multiple filename arguments allowed.
  368.     * Batch compiles implemented.
  369.     * OLIB: is now the default symbol file search path.
  370.     * Error files are output in the current directory with the name
  371.       "<module>.err".
  372.     * Compiles can be interrupted with CTRL-C.
  373.  
  374.   OL
  375.     * Command line arguments slightly changed.
  376.     * Changed format of .with file to suit Commodore's ALink.
  377.     * OLIB: is now the default symbol file search path.
  378.  
  379.   ORU
  380.     * Changed to generate a batch file to be used with the BATCH option of
  381.       the compiler.
  382.     * OLIB: is now the default symbol file search path.
  383.  
  384.   Oberon-A/S
  385.     * Oberon-Startup file containing useful aliases for Shell users
  386.       created.
  387.  
  388.   StdIO.mod
  389.     * Added code to check for CTRL-C.
  390.