// utf-8

P|T|W = priority: 1..9 | estimated time [hours] | weighted priority: P/T

______________________________________________
P	T	W	TODO:
______________________________________________

8	4	2	IMP: VolumeFlags() für _LINUX und _SOLARIS
6	1	3	IMP: VolumeFree() für _LINUX und _SOLARIS
			IMP: ReadDirectory(): still some items to do

			BUG: dir "..." bricht ab wenn ein broken link im verzeichnis ist
			BUG: do { <loop_control> } loop  ->  private context wird nicht gelöscht
			BUG: info ...: syntaxzeile: operatoren wie >> werden zerrissen

			MOD: FreezeString(), MeltString(): change to UCS4String
			MOD: Execute(), Value(): operator=(): create target as late as possible => a={}; a[1]=a[5]=a[3]=a; => a={{},*,{},*,{}}
			MOD: tNEW, tVAR: create target as late as possible.
			MOD: tVAR: assume "target does not exist" even if it already exists => var a=a reads always a from outer context
			MOD: listing von listen: include names => { a=22, b=33, c=proc(){return a+b} }  ((wie für zuweisung!))
			MOD: zuweisen von listen mit names => var a = { a=1, b=2 }   // note: geht so nicht!! oder kein operator= in list literals!!
			MOD: neuer name für "eval" := "value"   (( ? ))
			MOD: prozeduren in listen bei log und put komplett ignorieren  (( ? ))
			MOD: String::NumVal(): Zahlen länger als 40 Zeichen
			MOD: Var.name als pointer wg. platz und vielen unnamed variablen
			MOD: error werfen bei ungleichen datentypen für vergleichsoperator, min und max
			MOD: statt var, proc:   :a  :a=*  :a=0  :a=""  :a={} :a(b,c){...}   (( ?? ))  ==> named items in lists easier?
			MOD: sys() return return code if return code != 0   ((?))
			MOD: konvertierung mit: encode v_ref to idf; decode v_ref from idf; a=encode(str to idf); a=decode(str from idf)
			MOD: kein sys(..) wenn cgi
			MOD: sys(..) listen item-weise als cmd line args anhängen
			MOD: find(targettext,suchtext,startoffset)
			MOD: print automagic result after modify-and-assign operators
			MOD: print nl after ^d


			DOC: shell editor: error indication, history, colors
			DOC: operators: >>= <<= &&= ||= ##= &= |= ^=

9			NEW: list[..] = ...
9			NEW: text[..] = ...
9			NEW: sockets, ftp, http, smtp, tcp, udp, etc.
9			NEW: pipes
9			NEW: word to change encoding for stream
8			NEW: GUI interface
7			NEW: preferences
3			NEW: execute sourcestring  (( supplement to eval for Execute() ))
1			NEW: var xy = proc(...){...}
3			NEW: non-blocking file i/o, ioctl()
2			NEW: threads
3			NEW: ctrl-c abfangen
5			NEW: quotedstr, unquotedstr, escapedstr, unescapedstr, toutf8str, fromutf8str
4			NEW: ioctl() um Stream.error zu lesen, setzen, löschen
5			NEW: prüfsummen-funktionen, z.b. MD5, crc
5			NEW: encrypt/decrypt-funktion, z.b. RSA
3			NEW: decode MIME
2			NEW: this, self
5			NEW: errorstr
5			NEW: token profiling in Value() und in Execute()  =>  sortierung wg. cpu instr cache
5			NEW: split(text,char)
3			NEW: command env (( in Execute() ))
3			NEW: wort für introspection, zb. version usw.
			NEW: cache tokenized scripts in cache folder
			NEW: error handling from within script
			NEW: command 'help'
			NEW: elif
			NEW: switch .. case .. default .. then		((?))


planned for version > 1.0:

			vip code interpreter with tokenize, reorder -> forth-style vip code with stack and heap
			will solve the following problems

			BUG: crash: deleting a variable in use: var a; proc bummer() { del a }; a=bummer();

			NEW: operator ?: und || und && pruning



eventually never fixed:

			BUG: wrong result:  refvar(x) op sideeffect(x)  oder  fu(refvar(x),sideeffect(x))













