Version 0.7.0 ------------- Moved default routines directory from /usr/local/M/rtns to /usr/local/M/mgr/rtns (see the file UPGRADING). Fixed a small but serious memory problem in retrieve.c; this was causing a segfault when long nodes were added at the start of an array. Fixed a regression bug where D without parameters could go into a loop if not followed by a '.' Fixed a problem whereby extrinsic functions could adversly affect the following 'do' statement. Changed default save mode for routines to be world readable. Added the -d startup option to set the routines directory on startup, e.g. oMega -d usr which will then load/save routines from /usr/local/M/usr/rtns. Added the $ZD(IR) function to enable the routine directory to be changed. Eg. S $ZD="usr" W $ZD Changed $E(XTRACT) slightly so that a negative end parameter no longer gives an error, instead a null is returned. A negative start parameter is now considered the same as a start parameter of 1. Removed newline() from ZCALL. Fixed a bug where commas in paramaters were being interpreted as lists in FOR loop definitions. A similar bug with parameters inside extrinsic function parameters was also fixed. Fixed a bug with $A where values > 127 were being returned incorrectly. If a(1,2) was defined but not a(1), taking the value of a(1) showed a as being undefined instead of a(1). Fixed. Fixed a typo in EXTENSIONS, $RANDOM should have read @RANDOM. Generally reworked the EXTENSIONS file. Fixed a problem where the second part of a binary operator could be null, e.g 1+ . This now gives a syntax error. Code optimisations giving about 15-25% improvement on last version :) Version 0.7.0 ------------- Not released Version 0.6.10 ------------- Changed -s option to -S, and -b to -B. This is so that -s can be used for the probably more common 'symbol space size' option. (See below). Made the filename for omegastart() in tools/omegactrl.c be unique dependant on the callers pid. This means that multiple C embedded versions of oMega may now be run side by side. Added a new function $ZENVIRONMENT ($ZENV) - {equivalent to getenv() in C} for example, W $ZENV("SHELL") should give output like "/bin/bash" Added the oMega -x command line option. This makes oMega not use curses; useful for things like HTML output which gets messed up by curses. (Note, this will not work in interactive mode, only in tied mode; eg. oMega -x PROGRAM) Fixed a bug in 'ZWRITE' so "ZWRITE array" now works correctly. Fixed a bug which was affecting loops on the first line of indented blocks. Fixed a bug in ^PRIMES (doh !!!). Fixed a bug to do with closing lowercase filenames from 0.6.9. Background mode (oMega -B file &) is now working properly. If you do this and then write commands to 'file' one at a time, oMega will execute them in the background. Added the oMega -s option to set the symbol space, e.g. oMega -s 1024 will start oMega with symbol space size of 1024K. Default is 640K. Added the oMega -c option to set the code space, e.g. oMega -c 1024 will start oMega with code space size of 1024K. Default is 640K. Version 0.6.9.1 ------------- Fixed a nasty syntax error bug. Added two new options: oMega -s filename which runs oMega, using the file 'filename' as a command source, and still displaying to the screen. Filename is a fifo file, so writing to filename (should be by the same user) will execute commands in there as they are written. This is used in tools/omegactrl.c to allow C embedding. oMega -b filename & which runs oMega in background mode, i.e without a terminal, reading its commands from 'filename; like -s but without a screen. This may or may not be working. Created tools/omegactrl.c to allow oMega to be embedded in C. Started work on a sample 'gnomega' application. kill -HUP pid *should* cause oMega to shutdown cleanly. 29/09/1999 Version 0.6.9 ------------------------ Added some experimental 'object' orientation - see file *EXTENSIONS* Fixed up paren() better after last 2 patches. I _think_ it's ok now. stuff like 'S @Q(A)=1' now works reliably. Fixed a bug which had crept in preventing deletion of array nodes. Added MERGE Added '?' pattern match. D ^A,^B,^C would only DO ^A and ^B - FIXED. Fixed a couple of bugs to do with array pointers and newed variables which were giving segfaults. Files are now opened by default as readonly. To write to a file now requires WRITE,NEW or APPEND - e.g.: S FILE="/usr/local/M/test/out.txt" O FILE:N U FILE W !,"OK" C FILE This also works for things like O "/dev/tty2":WRITE Improved the error checking for file operations. Fixed a couple of bugs in JOB. Fixed a bug which was preventing FOR I=1,2,3 from working. Changed W to ZWR; also you can do eg. ZWR A to show array A. Added CLOSE FILE:DELETE or CLOSE FILE:D Added $STACK (stack depth) Made ZQ(UIT) close all open files. Added ZQUIT x which will force a command line even in tied mode (see EXTENSIONS). Added the ZE(RROR) command, eg. ZE 3:"DATA" Ctrl C is now trapped during any execution. Added seed for $R based on $H. 22/09/1999 Version 0.6.8, 0.6.7 ------------------------ Fixed problems with brackets inside function parameters. 18/09/1999 Version 0.6.6 ------------------------ Fixed some bugs with error messaging in extrinsics and in executes. Improved xecute and breakmode - lines are now pushed and popped to a line stack Added the ZQ(UIT) command which will return immediately to the command line. Fixed a bug in readl() concerning the line length. Added $ZT(RAP) as a trap for error messages. Any code in here will be eXecuted on error. Exception - any errors during processing of $ZT(RAP) will still produce normal error messages. This avoids an infinite loop. Added $E as a record of the last error message. *See the sample routine ^TESTERR for a demonstration of error trapping* Changed ZS(AVE) and ZL(OAD) to use ^RTN rather than just RTN for consistency. Stability improvements in running code. 04/09/1999 Version 0.6.5 ------------------------ Cleaned up and optimised some of the code. Deleting TABS in lines now works properly. Control C is trapped. Fixed a bug with $T always being set in direct mode. Added $XMAX and $YMAX as system variables. Added the ]] (collates after) operator. Delete now works with xterm. Pass by reference implemented. Extrinsic functions implemented. Job statement implemented. W $ZPOS shows the line in break mode - ZP @$ZPOS works also. Changed name of binary to oMega to avoid conflict with an existing program. 29/08/1999 Version 0.6.4 ------------------------ Fixed slen bug in dpcenqzero(). Fixed (aptr>end) bug in locarr(). Added the NEW statement. Implemented primitive BREAK - you can stop and restart execution using BREAK and ZK(ONTINUE). Stepping thru code is not yet supported. Fixed a bug to do with array ptrs when a variable is added just before an array Added in the ability to call subroutines/routines which pass variables (call by reference will be in the next version). 26/08/1999 Version 0.6.2 ------------------------ Fixed a bug which had crept in to $ORDER. 25/08/1999 Version 0.6.1 ------------------------ Fixed a few bugs from 0.6.0. Also changed internal subscript separator to be $C(0). This allows commas to be used in array subscripts. Fixed a bug in string handling which was causing errors when literals contained quotes. 20/08/1999 Version 0.6.0 ------------------------ Major change to the way variables are located from the stack. Now uses a much smarter and more efficient algorithm. 05/08/1999 Version 0.5.82 ------------------------- Tidied up a lot of the flow code.