home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rximc175.zip / HISTORY < prev    next >
Text File  |  2002-08-06  |  19KB  |  368 lines

  1. alpha1.2 6 Aug 1992  - initial release
  2.  
  3. alpha1.3 17 Sep 1992 - fixes the following problems:
  4.  
  5.    * Installation instructions too brief and not clear enough
  6.    * Error incorrectly reported on the following code format:
  7.        select
  8.            when a
  9.           then ...
  10.        when b
  11.           then ...
  12.        end
  13.    * Clause tracing did not strip leading tabs.   
  14.    * Special variable SIGL not set on calling an internal routine
  15.    * Second parameter of bitxxx() was required; should be optional
  16.    * pos, lastpos, wordpos gave error when the needle was empty
  17.    * sign('-0') = -1 (should be 0)
  18.    * sign() left extra value on calculator stack, causing surprises
  19.    * subword(" to be or not to be ",7) caused crash; similarly for
  20.      word and wordlength
  21.    * symbol() gave incorrect results;
  22.    * translate(x,"") mistook the empty string for an omitted argument
  23.    * wordindex(string,n) gave non-zero when string contained n-1 words
  24.    * x2d() did not recognise second parameter
  25.    * arg() gave "4", not "2" when arguments were: func(1,2,,)
  26.    * binary strings were too restricted (i.e. a multiple of 8 digits and
  27.      no spaces)
  28.    * "DO for=forever" interpreted FOREVER as reserved
  29.    * PROCEDURE EXPOSE used commas as separators instead of spaces
  30.    * date('U') gave wrong day number
  31.    * Leading and trailing spaces were allowed in hex constants
  32.    * Priorities of implicit concatenation, space operator and unary operators
  33.      were wrong
  34.    * random(n,n) returned error; should return n
  35.    * Memory fault occurred after 63 nested PROCEDURE instructions
  36.    * expression after PUSH and QUEUE was required
  37.    * "rxstack" sometimes exited before giving the stack a chance to catch up;
  38.      after that queued() would slowly rise up to its correct value.
  39.    
  40. beta1.4 13 May 1993 - fixes the following problems:
  41.  
  42.    * Mathematical function name discrepancy between rxmathfn.c and rxfn.c
  43.      now fixed
  44.    * Intermittent "Routine not found" error when using external functions
  45.      now fixed
  46.    * Case of labels is now preserved in "trace l"
  47.    * "parse var a.b" gave "?.B" when a.b undefined, now gives "A.B"
  48.    * "parse var" now signals to NOVALUE when variable is undefined
  49.    * stem. is now different from stem.""
  50.    * "stem.=5; drop stem.5; say stem. stem.5" now says "5 STEM.5" (did say
  51.      "5 5")
  52.    * Control variable in a loop is interpreted on each pass, and END, LEAVE 
  53.      and ITERATE compare symbol names literally.
  54.    * INTERPRET changed to detect incomplete DO/SELECT blocks
  55.    * SELECT (and WHEN) changed to reject multiple statements in WHEN clauses
  56.    * "do name=expri ..." changed to assign "expr + 0" to "name" instead of
  57.      just "expr".
  58.    * UNTIL conditions are tested before incrementing the control variable
  59.    * WHILE/UNTIL checking "modernised" ;-)
  60.    * "procedure expose (varlist)" implemented
  61.    * Fixed uninitialised char* pointer in rxchars2() which made lines()
  62.      sometimes bomb out with segmentation fault
  63.    * Fixed "Unexpected THEN/ELSE" error report for instructions of form
  64.      "otherwise if (cond) then ..."
  65.    * Amended rxmathfn.exec to use single instructions in WHEN clauses
  66.    * Fixed multiplication to say "Arithmetic Overflow" instead of "Invalid
  67.      whole number" when overflow occurs
  68.    * Fixed stacknum() to report error on too-large exponents - it previously
  69.      stacked an erroneous value instead.
  70.    * Fixed sqrt() to work with argument zero
  71.    * Fixed EXIT instruction to record size of new calculator stack
  72.      (previous code occasionally caused hard-to-trace memory crashes)
  73.    * chars(file) calls stat to return the size of file when it is not open
  74.    * chars() now takes into account characters buffered by stdio
  75.    * NUMERIC settings saved across function calls
  76.    * "parse numeric" now works
  77.    * Changed the sqrt() function in rxmathfn.exec
  78.    * Fixed formatting to obey 2*DIGITS rule for small numbers
  79.    * Fixed format() to obey 2*expt rule, also to round the number on input
  80.    
  81. REXX/imc-beta-1.5 4.00 25 Jun 1993 has the following changes:
  82.  
  83.    * Fixed two erroneous source lines which choke sensitive compilers
  84.    * Distinguished between AIX cc and AIX gcc in the Makefile
  85.    * made "do 3=i" an error instead of a counted loop
  86.    * made "a==4" an error instead of a command
  87.    * Message 15 last word changed from "constant" to "string"
  88.    * '414243'x(3) is now a function call (was abuttal)
  89.    * allowed tab characters in hex and binary strings
  90.    * implemented "drop (list)"
  91.    * Added STUFF_STACK preprocesor symbol
  92.    * Fixed traceback and related things so that, for instance, running
  93.      main.exec, where main, foo and bar are as follows:
  94.  
  95.      main.exec                   foo.exec                          bar.exec
  96.    
  97.      /* call an OK program */    /* call an erroneous program */   /* error */
  98.      call foo                    say "Entered FOO"                 return a+b
  99.                                  say bar()
  100.                                  say "Leaving FOO"
  101.                                  return
  102.                    
  103.      produces the following output:
  104.  
  105.      Entered FOO
  106.          2 +++  return a+b
  107.      Error 41 running /tmp/bar.exec, line 2: Bad arithmetic conversion
  108.          3 +++  say bar()
  109.      Error 50 running /tmp/foo.exec, line 3: Error in called routine
  110.          2 +++ call foo
  111.      Error 50 running /tmp/main.exec, line 2: Error in called routine
  112.  
  113.      whereas only the first four lines would previously have been displayed.
  114.      Similarly, traceback is printed for an error in an external routine
  115.      even when the error is trapped in the calling program.
  116.  
  117.    * Removed the RC messages from error reports such as the above, because
  118.      they were pointless.
  119.    * Changed the format of RC messages from "RC(n)" to "RC=n"
  120.    * Implemented the third parameter of justify()
  121.    * Corrected "parse version" to show a language level as second token
  122.      instead of the interpreter version.
  123.    * Corrected mtest() to keep the old value if realloc fails
  124.    * Rewrote the tokeniser and amended various parts of the interpreter to
  125.      use the new program format
  126.    * Implemented the "name" subkeyword of "signal on"
  127.    * implemented the "failure" and "notready" conditions
  128.    * Added command line option processing
  129.    * Added extra signal handlers to make the interpreter die more cleanly
  130.    * Implemented "call on"
  131.    * Implemented the "condition" builtin function
  132.    * Made "Unexpected '*/'" a separate (nonstandard) error message
  133.    * Trace instructions now ignored in program if interactive tracing is on
  134.    * Implemented "tracefile=" option
  135.    * Improved chars() and lines() for non-open files to get more information
  136.      and raise notready if appropriate.  Improved lines() for persistent
  137.      files to return the correct result (and not just 0 or 1).
  138.    * Deleted ioerr().  RC is no longer set when notready is raised.
  139.    * Fixed the return values of charout() [would sometimes return a null
  140.      string or an incorrect value of 1 if an error occurred].
  141.    * File I/O functions now give error when the file is an empty string.
  142.    * Implemented the stream() function with commands close, fdopen, fileno,
  143.      flush, ftell, open, pclose and popen.
  144.    * Changed rexxtest.exec to use the stream() function instead of all those
  145.      other ones.
  146.    * Changed REXXPATH to REXXIMC and implemented the search so that this
  147.      environment variable is no longer necessary.
  148.  
  149. REXX/imc-beta-1.5a 4.00 5 Sep 1993 was released to patch the following:
  150.  
  151.    * Corrected the AIX cc compile flags -O2 and -qchar=signed.
  152.    * Removed extraneous definition of bsearch.
  153.    * Renamed "free" label to satisfy SunOS cc compiler.
  154.    * Corrected an uninitialised variable reference which caused a crash on
  155.      certain function calls.
  156.    * Corrected "storage exhausted" error with startup on AIX.
  157.    * Corrected a bug which caused looping while reporting "Unmatched quote"
  158.      error in certain input files.
  159.    * Corrected an error which left the default filetype blank when the
  160.      source file was standard input or "-s string".
  161.    * Allowed "address ''" and "trace ''" to run without error.
  162.    * Disallowed "call on novalue" and "call on syntax".
  163.    * Added setrc option to aid compatibility with earlier versions.
  164.    * Added -v and -c commandline flags.
  165.  
  166. REXX/imc-beta-1.6 4.00 29 Apr 1994:  This was released as version 1.59
  167.                                      at the REXX Symposium in Boston.
  168.  
  169.    * Fixed bug with "a.=3" used when a.3 is exposed (but not a.)
  170.    * '\r' added to the list of space characters allowed in source code
  171.      (for DOS format files).
  172.    * Error for the expression "()" changed from "Invalid expression" to
  173.      "Unexpected )"
  174.    * "parse value with ..." allowed
  175.    * Novalue is no longer trapped in a command entered at interactive trace.
  176.      If for some reason a novalue error does occur during such a command,
  177.      the message says "No-value error on X" instead of "No-value errorX".
  178.    * "do while internal_function()" now works properly
  179.    * The exprw in "do i=1 while exprw" is now evaluated after i is incremented
  180.      (which matters if and only if it involves i).
  181.    * Extra comment terminators are ignored instead of being flagged as an
  182.      error.  This is because "a=3*/*comment*/4" is a legal instruction which
  183.      would have been flagged.
  184.    * The while in "do '1' while=x" is now tokenised.
  185.    * It is no longer an error to have an if...then (...else) instruction at
  186.      the end of the program.
  187.    * It is no longer an error to have a label name starting with a number or
  188.      dot.
  189.    * Labels are no longer allowed in INTERPRETed strings.
  190.    * Labels are clauses (makes tracing easier).
  191.    * b2x and b2d changed to accept binary strings with spaces in them.
  192.    * datatype(string,'X') now returns 0 if string contains leading or trailing
  193.      spaces.
  194.    * Bug fixed which prevented REXX from working when file 0 or 1 was closed
  195.      before invoking it.
  196.    * ADDRESS settings are now saved over function calls.
  197.    * "do until while=3" is now "invalid DO syntax" instead of "invalid
  198.      expression" and is an error on the first pass instead of the second.
  199.    * Rudimentary API implemented featuring:
  200.      RexxStart (no tokenised programs)
  201.      RexxVariablePool (except RXSHV_EXIT and RXSHV_PRIV)
  202.      RexxRegisterSubcomExe/RexxDeregisterSubcom/RexxQuerySubcom
  203.      RexxRegsiterExitExe/RexxDeregisterExit/RexxQueryExit (with exits
  204.         RXCMDHST, RXSIODTR, RXSIOSAY, RXSIOTRC, RXSIOTRD, RXINIEXT and
  205.         RXTEREXT)
  206.      RexxRegisterFunctionExe/RexxDeregisterFunction/RexxQueryFunction.
  207.    * Added error message 45 and made RETURN enforce it.
  208.    * The string returned by PARSE SOURCE is now constant within a program,
  209.      as described in TRL (it used to depend on the current function).
  210.    * Implemented searching of *.rxlib files.
  211.    * Functions are now hashed when found, for faster access next time.
  212.    * Rewrote which() to read directories instead of using access().
  213.    * Implemented "unix program called as a function".
  214.    * Changed the continuation trace prefix to "*,*".
  215.    * Changed the distributed Make file to include the release date.
  216.  
  217. REXX/imc-beta-1.6a 4.00 18 May 1994:
  218.  
  219. This was released as version 1.6 two weeks after the Symposium.  The main
  220. difference from 1.59 to 1.6 was a documentation update to include the new
  221. API and function interfaces.  The tutorial was also modified slightly.
  222. Release 1.6 also contained several minor fixes to the API and the following
  223. minor fixes:
  224.  
  225.    * ''b is no longer an error.
  226.    * Justify (x,0) is no longer an error (always returns '').
  227.    * Fixed format(x,,n) when x is in exponential notation (the result did
  228.      not always have n digits after the decimal point).
  229.    * Allowed SYSTEM as a synonym for ENVIRONMENT in the value() call (for
  230.      compatibility with Regina).
  231.    * Changed value() not to apply REXX syntax to names in external pools.
  232.      Environment variables are now restricted to contain REXX symbol
  233.      characters except '.' and '$' and not to start with a digit, but
  234.      they are not uppercased.
  235.    * Fixed bug in value which made the returned string sometimes overwrite
  236.      the new value of the variable.
  237.    * Fixed bug with hashed function names.
  238.    * B2x and x2b rewritten (previously they could return strings with extra
  239.      leading zeros).
  240.    * Fixed INTERPRET so that a syntax error during tokenisation is still
  241.      caught by SIGNAL ON SYNTAX.
  242.    * Fixed charin/linein to raise notready if given a write-only stream.
  243.    * Fixed infinite loop error with INTERPRET "a=/*".
  244.  
  245. REXX/imc-beta-1.6b 4.00 7 Aug 1994
  246.  
  247.    * Fixed error where a file was left open after calling a function which
  248.      was a Unix program.
  249.    * Allowed "signal on syntax" to catch Emem and Esys errors.
  250.    * Fixed wordpos() to check that the match ends on a word boundary
  251.      (e.g. wordpos('foo','x foobar foo') is 3 and not 2).
  252.    * Fixed error where memcpy() was used with overlapping arguments
  253.    * Long echo instruction in Make changed to a <<"@EOF" redirection
  254.      (the long echo instruction apparently choked the Linux shell).
  255.    * Various twiddles for Linux, IRIX and HP-UX, including
  256.      - FSTAT_FOR_CHARS preprocessor symbol added
  257.      - RANLIB defined in makefile
  258.      - I/O functions no longer call ftell before testing for an I/O error
  259.      - twiddles to getwd, rand, srand, siginterrupt and vfork system calls
  260.      - dictionary in rxmathfn.c kludged for IRIX.
  261.  
  262. REXX/imc-beta-1.6c 4.00 10 Aug 1995
  263.  
  264.    * Fixed silly file I/O bugs caused by the Linux twiddles:
  265.      - "parse pull/linein" did not correctly detect I/O errors
  266.      - some I/O functions would not record the error properly so that if
  267.        "signal on notready" was executed without a "notready" label the
  268.        I/O error would not appear in the traceback.
  269.    * Protected RexxStart against a result parameter of NULL.
  270.    * Changed which() not to rely on the value of dir->d_name after the
  271.      directory has been closed.  Did a small number of other similar tweaks
  272.      to fix minor problems detected by Mark Hessling using "Purify".
  273.    * Ported to DEC Alpha.
  274.  
  275. REXX/imc-beta-1.6d 4.00 1 Aug 1996
  276.  
  277.    * Ported to Solaris 2.5 and FreeBSD 2.0.5.
  278.    * Completely rehashed the installation procedure.
  279.    * Fixed trace bug which causes compound symbol to have its first
  280.      character inverted and one which fails to prevent control characters
  281.      from being printed out when results are traced.
  282.    * Slightly redid the order of includes at the top of each source file.
  283.  
  284. REXX/imc-beta-1.6d 4.00 9 Mar 1997
  285.  
  286.    * Fixed some trivial compile errors on Linux and Solaris 2.5 cc.  Added
  287.      Solaris 2.5 cc to the Make file.
  288.  
  289. REXX/imc-beta-1.7 4.00 8 Feb 1999
  290.  
  291.    * Fixed intermittent segmentation fault bug in INTERPRET which only
  292.      shows up on little-endian machines.
  293.    * Fixed bug which sometimes causes INTERPRET "" to return from the
  294.      current routine.
  295.    * Fixed bug which sometimes causes weird effects when END is missing
  296.      (like the error being reported at line 1880 in a 5-line program).
  297.    * Made the interpreter report an error at the unmatched DO instruction
  298.      instead of at end of program, when END is missing.
  299.    * Fixed "Incomplete DO/SELECT/IF" reported inappropriately when END is
  300.      the last line of the program or when "do;return;end" is given to the
  301.      INTERPRET instruction.
  302.    * Fixed occasional crash in "parse arg" instruction when there were no
  303.      arguments.
  304.    * Y2K fixes for DATE builtin function.
  305.    * Removed illegal uses of errno symbol in structures (this caused
  306.      compilation errors on Red Hat 5 and certain other systems).
  307.    * Moved to getcwd and strerror instead of getwd and sys_errlist.
  308.    * Used fd_set variables in rxque instead of old integer pointers.
  309.    * Added time and date conversion, and 'O' option of TIME function.
  310.    * Protected RexxStart against null value of rc.
  311.    * Fixed crash when sending commands to the undefined environment.
  312.    * If RexxStart called with an envname of NULL the default environment
  313.      no longer starts with a dot.
  314.    * When end-of-file was detected, stream(file,'d') would return
  315.      "cannot assign requested address".
  316.    * Format(-0.3,,0) was '-0', now just '0'.
  317.    * Say '-9e999999999'<'9e999999999' was an error, now says '1'.
  318.    * Implemented "expose" option.
  319.    * Fixed bug where OPTIONS instruction sometimes failed to recognise options
  320.      on little-endian architectures.
  321.    * New STREAM commands:
  322.      open write append|replace; open both [append|replace]; transient;
  323.      persistent; query datetime|exists|handle|size|streamtype|timestamp.
  324.    * Bug fixed (again) which prevented Rexx from working when invoked with
  325.      descriptor 0 or 2 closed.
  326.    * Implemented "sigpipe" option.  Tightened error checking in stream I/O
  327.      to help detection of broken pipes.  Made "flush" stream command trigger
  328.      NOTREADY on error.
  329.    * Implemented "rxsaa:" token in .rxlib files.
  330.    * Implemented RexxRegisterFunctionDll and RxFuncAdd/Drop/Query.
  331.    * Made rexx search for filename without extension if filename.exec not
  332.      found. 
  333.    * Made which() function use access() if opendir fails (you can now put
  334.      Rexx programs in unreadable directories).
  335.    * Added #ifdef around the definition of filetype in const.h.
  336.    * Allowed "stderr" and "stdout" as filespecs in the "tracefile=" option.
  337.    * Allowed empty string as a valid stream for most functions.
  338.    * Introduced REXXEXT environment variable; changed default extension
  339.      to ".rexx".
  340.    * Added APIENTRY to rexxsaa.h file.
  341.    * Changed the default location of Rexx libraries from binary dir to
  342.      library dir.
  343.    * Wrote man pages for rexx, rxque, rxstack.
  344.  
  345. REXX/imc-beta-1.7 4.00 31 Mar 1999 (bugfix release)
  346.  
  347.    * Fixed time('O') for glibc and SysV systems.
  348.    * Fixed segmentation fault on: rexx -tr -s "parse arg x"
  349.    * Fixed compilation errors on FreeBSD.
  350.  
  351. REXX/imc-beta-1.75 4.00 1 Jan 2000 (unofficial bugfix release)
  352.  
  353.    * Fixed value length error in RexxVariablePool API function.
  354.    * Compiled on Red Hat 6 / glibc 2.1 (stderr not necessarily constant).
  355.    * Fixed memory corruption occuring rarely in DO loops.
  356.    * Fixed numeric comparison ('say 0 & -1<1' said -1 due to a spurious
  357.      stacked item when the signs differ - bug introduced in 8 Feb release).
  358.    * Fixed date('B',x) (returned wrong answer for x <= 31-Dec-1969).
  359.    * Fixed date(y,x,'B') (returned error for x < 719162).
  360.    * Doc fix: d2b and b2d are not standard functions.
  361.    * Fixed 'query exists' stream function (returned wrong result for
  362.      the file '/' or '/foo').
  363.    * Symbol fixes: value(x) did not allow x to be a number in exponential
  364.      format; value(x,y) did allow x to be a constant symbol; symbol(x) no
  365.      longer allows x to contain a leading sign or leading and trailing spaces;
  366.      datatype(x,'S') changed to test x against the syntax of a symbol
  367.      instead of just testing the individual characters of x.
  368.