// utf-8

vipsi completion file

2003-06-20	Stream:		rework, store/restore tty settings after ^D
						encoding conversion for tty
						BS over Umlaut
2003-08-03	<all>		use of UCS4String lib (work in progress!)
			VScript:	Variable names with non-ascii characters did freeze
						info "sort" et.al. did freeze
2003-08-04	Value:		operator # nur für: Text # Text
						operator ## für: Liste ## Liste
						type conversion with Var::ToNumber() now converts void to 0.0
						new type converters Var::ToList() and Var::ToString()
2003-08-07	VScript:	automatic printing of result: quote strings, disass procs
			Value:		string(proc) => disass; string(text) => leave as is
2003-08-08	test.vs:	list concatenation tests adapted from old '#' to new '##'
			Var:		list#text and text#list now expand the operation on the list
			os_util.cp	SysLoad() for Linux
2003-08-09	execute.cp	ReadDirectory(): mounted devices for all (?) Unixes (some bits still missing)
2003-08-13	VScript		shell commands: now executed shell command is stored in VScript.proc->Var(isProc)
						now using UCS4String for strings in token stream.
						Value() creates 'shared' substrings from proc string for string literals
2003-08-14	execute.cp	changed ExecuteScript() to Execute(Var*proc,Var*&result,uchar*ip=NULL)
						now VScript.proc is always set during execution; initially to tokenized shell line or script
						tIDF now using UCS4String
						now rejecting idf replacement operator @ in argument list of procedures
			MOD: String tokenname[]
			MOD: count(proc_var)  =>  proc size in bytes
			IMP: convert text_var from utf-8
2003-08-15	MOD: use UCS4String in TokenizeScript()
			MOD: use UCS4String library: COMPLETE!
			DOC: updated documentation for 0.8.0
			BUG: "Ein-/Ausgabe ist möglich" -> abort  ((exception wg. non-blocking))
			BUG: io started hogging the cpu after vipsi ran for a while  ((wg. non-blocking))
			BUG: freopen() in main() doesn't work! (erm.. did work. but creating new files was buggy...)
			BUG: Value(): tEVAL: führt proc aus ohne VScript.proc zu setzen!
2003-08-16	MOD: new procs := substring of enclosing proc
			NEW: ln -s vipsi calc; calc "23*44-3"			direkt-ausführung
			MOD: shell: suppress printing of results after assignments
			NEW: value   = exec( "script", arg1, ... )
			NEW: str_val = sys ( "cmd", str_arg1, ... )
2003-08-17	NEW: tokenize bis def. target code size => error position indication
2003-08-18	NEW: proper error position indication in shell
			NEW: history function in shell
			IMP: Terminal-Emulation: improved VT100 usage in editor
2003-08-19	DOC: sys(), exec(), calc mode, bugs
2003-08-21	MOD: eliminated void data type. uninitialized variables default to 0.0
2003-08-23	MOD: operator "<<" and ">>" now take any float number for left-side argument
			MOD: shell: don't store empty input lines in history
			BUG: value(): trap calling of non-procs
			BUG: value(): fixed procs returning no value
2003-08-24	MOD: nach fehler in shell cursor auf fehler positionieren
			NEW: error position indication in script, eval, calc, include, exec
			NEW: list[..to..] sublist
2003-08-25	NEW: operators: >>= <<= &&= ||= ##= &= |= ^=
			MOD: utf8 erzwingen mit ctrl seq. (XTerm)
<-- release 0.8.0 -->
2003-08-31	MOD: minor tweaks to make it compile on MacOS X
<-- release 0.8.1 -->
2003-09-01	MOD: error message in cgi scripts
2003-09-02	MOD: print nl and "byebye" after ^d
			BUG: «info "…"» -> quick syntax -> multi-char operators were split with spaces
2003-09-03	BUG: open/openout and new file|dir failed because FullPath() returned ENOENT
			NEW: ./vipsi self-installer version 0.1 ;-)
			BUG: fixed failed detection for cgi mode when no arguments were passed to script
<-- release 0.8.2 -->
2003-09-05	MOD: optional 3rd parameter to find() and rfind()
			DEL: removed functions tfile() and dfile(); functionality now covered by split()
			NEW: text=split(text[,text]); split textvar[,text]
			NEW: file "name" = binarystring; file "name" #= binarystring
			MOD: convert to/from UCS1/2/4: now packing/unpacking 1/2/4 bytes to/from 1 char
2003-09-07	NEW: preferences for put, get and error text attributes
			IMP: implemented (again) convert text_var|list_var to|from 8bitcharset_idf
			NEW: function convert:  text|list = convert(text|list to|from idf)
2003-09-08	MOD: conversion of lists to text: include names => { a=22, b=33, c=proc(){return a+b} }
			MOD: colorize all output to tty stdin/out/err (attributes customizable via prefs)
2003-09-09	BUG: swap: swap a,a  =>  is a nop, fixed error "must not contain each other"
			MOD: swap: swap values only, don't swap names
			BUG: include: filename and result cell shared same Var => core dump when result cell was written to
			MOD: include: now also as function: included file may return a result
			MOD: exec: now also as instruction:  exec filename, arg1, ...
2003-09-10	MOD: !!!!! renamed "exec" to "call"  ((exec will be used for pipe-connected asynchr. execs))
			MOD: sys: also instruction
			MOD: eval: also instruction
2003-09-13	MOD: added "cursor keys in application mode" to line editor
2003-09-15	MOD: dup2(stdout,stderr) if current script is run as cgi => see error messages in cgi output
			MOD: reading prefs in all run modes
			MOD: errors in procs: error message includes stack trace
			NEW: instruction wait(delay)
2003-09-20	BUG: String::_move(String&) broke linkage if string had no text sharing neighbours => crash later
2003-09-21	BUG: min(), max() with 3 or more arguments
			MOD: listing of variables with names: words starting with '_' need no @"_..." circumscription
			MOD: swap: back to old behaviour ((swap data AND names))
			MOD: midstr(string,start): only 2 args => up to string end
			BUG: dir "..." aborts with error if it encounters a broken link in the directory
			BUG: FullPath() does not distinguish between "any path component" and "last path component" not found
2003-09-27	BUG: in GetEncodingFromName() and String::ConvertedFrom()  => affected: convert to|from
			IMP: FreezeString(), MeltString(): change to UCS4String
			MOD: String::ConvertedTo(): replace not representable characters with '?'
			BUG: Stream::PutString(): bogus handling of conversion to ucs2 and ucs4
			BUG: Var::MinVar() and Var::MaxVar(): handling of NULL in list().array
			MOD: min, max, >, <, >=, <=: now set error if different data types are compared
2003-09-28	MOD: List: assign named list items: var a = { a=1, b=2, @wood.pecker[to 3]="foo", @"%%%"=66 }
			MOD: got rid of special handling of assignments in Execute()  (again)
			MOD: print automagic result after modify-and-assign operators  (again)
			IMP: operator || and &&  --> pruning
			IMP: operator ?:  --> pruning
<-- release 0.8.3 -->
2003-09-30  DOC: operators: >>= <<= &&= ||= ##= &= |= ^=
			DOC: pruning in && || and ?:
2003-10-05	BUG: files with broken utf-8 names were not accessible!
2003-10-09	MOD: filenames with broken utf-8 are now assumed to be latin-1
			BUG: exists("non/ex/file") returned "yes" for circular symbolic link chains
2003-10-11	MOD: match() now also matches broken utf-8; added case-folding
			DOC: tfile and dfile removed
			BUG: checked error handling after call to FullPath()
			BUG: info do loop  -> runs into the loop! :-| (not that fatal: info if then)
			BUG: openin "fname"  ->  get/getchar/etc. all returned empty string
			MOD: get var_ref  ->  always return text
			MOD: getchar var_ref  ->  always return text, return "" if input empty
			BUG: exists file "brokenutf8name" yielded "no"
2003-10-12	BUG: string concatenation: fixed handling of NULL in lists (( NULL <=> 0.0 ))
2003-10-15	MOD: error messages in calc mode colorizing as in shell mode
			MOD: add prefs files to distro
			NEW: replace targettext,oldtext,newtext; text = replace(text,oldtext,newtext)
			MOD: sys: 1) sets error 2) also takes list argument
2003-10-16	NEW: try ... [else ...] then  -> error handling within script
2003-10-17	BUG: mtime/atime exchanged in directory list
2003-10-18	NEW: convert <text> to|from url  ((URI url encode))
2003-10-19	NEW: convert <text> to|from tab[s][1..9]  ((entab/detab))
			BUG: a>=b and a<=b for NaN  ((implemented as inverted '>' and '<' thus yielding true))
			BUG: list: NULL in lists == Var("",0.0)    ((changed from 'void'))
			BUG: list op list: handling of remaining items in longer list
			BUG: a[1]+=a  Speicherzugriffsfehler  ((test for intersection of left and right operand missing))
			DOC: convert to/from url, tabs1..9
			DOC: try .. else .. then
			DOC: sys: 1) sets error 2) also takes list argument
			DOC: replace
2003-10-20	DOC: find,rfind: 3rd parameter
			DOC: dir: instruction and function, examples.
			DOC: midstr(text,start)  ((only 2 args => up to text end))
2003-10-21	DOC: min, max, >, >=, <, <=: error if different types are compared
			DOC: named items in list literals
2003-11-11	BUG: isdir and isfile overwrote their argument with result
2003-11-15	MOD: include names in "componentnotfound" error message
2003-11-23	BUG: put foo() => if foo() does some i/o, that stream remained in effect after returning and put etc. printed to the wrong stream
			BUG: do … { … [exit|next|while|until] … } … loop  =>  private context {…} was not dumped when leaving|restarting loop
			BUG: x##=y and x##y => x or y no list => automatic type casting of x or y preserved name of item in list
			MOD: execute(): sys: set stream to stderr while ExecCmd(), set to stdout before printing result
			BUG: 'get' from file => stalled near eof and hogged cpu;  eof now triggers error
			MOD: eliminated Stream.error; now using errno as well
			BUG: include "~/..." did not work
2003-11-24	NEW: elif
			MOD: liste.@(text)[index]  evaluated to: liste.@(text[index])  now: (liste.@text)[index]
			BUG: try … else …  =>  error handler was not yet used in many cases. fixed.
			BUG: try … then / do … loop / { … } => dropping from try-then or do-loop across any nesting level of other kind of blocks fixed
			MOD: return [<value>|<novalue>]  ((eliminated 'end' for returning 'novalue'))
2003-11-25	BUG: fixed messed up handling of return values from scripts
			MOD: end: now can return value
			MOD: end: now also from within a procedure
			BUG: ExecCmd(): save&restore tty settings
			NEW: Text: string literals with «...» or “...”
			MOD: Text: string literals across nl; checked \<nl> behavior









