// utf-8

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

______________________________________________
P	T	W	TASK
______________________________________________

bugs:
9	4	2.2	BUG: do { <loop_control> } loop  ->  private context is not dumped when jumping from <loop_control> to DO or LOOP
8	4	2.0	BUG: check error handling after call to FullPath()
8	8	1.0	BUG: List: NULL in lists are equivalent to unnamned numeric items with value 0.0  ((changed from 'void'))
5	5	1.0	BUG: String::ConvertedTo(): handle char(0) in conversion to UTF-8
2	4	0.5	BUG: main.cp: restore tty settings also on error exit.  ((how??))
			BUG: Var::append_list(): NULL == 0.0

missing implementations:
6	2	3.0	IMP: SystemIO.cp: VolumeFree() for _SOLARIS
8	4	2.0	IMP: VolumeFlags() for _LINUX und _SOLARIS
2	2	1.0	IMP: utf-8.cp: ucs4_char_to_upper/lower(): handle characters beyond UCS-2
1	2	0.5	IMP: Stream::SetWindowSize()
2	5	0.4	IMP: SystemIO.cp: ReadDirectory(): _NON_BSD: check for read-only device
2	5	0.4	IMP: SystemIO.cp: ReadDirectory(): _NON_BSD: mount flags
2	5	0.4	IMP: SystemIO.cp: ReadDirectory(): _NON_BSD: file system owner
			IMP: cstrings.cp: va_copy(...) for FreeBSD

internal changes:
5	5	1.0	MOD: String::NumVal(): number literals with more than 40 characters
5	5	1.0	NEW: token profiling in Value() and Execute()  =>  sorting of handlers for cpu cache optimization
8	10	0.9	MOD: Var.name as pointer for space conservation ((lots of unnamed variables in arrays!!))

visible changes:
5	2	2.5	NEW: replace(text,old,new)
8	4	2.0	MOD: sys: { stdout, stderr, returncode } = sys ( path, { arguments } | argument_list )
8	4	2.0	NEW: Text: string literals with «...» or “...”
9	5	1.8	NEW: sema: kind of global semaphor for synchronization of different scripts (e.g. cgi scripts)
8	6	1.5	MOD: Text: string literals across nl; check \nl behaviour
4	4	1.0	NEW: proc a.b(){}   ((like var a.b=...))
5	5	1.0	NEW: convert: convert to|from tab[1..9]  -> entab/detab
8	8	1.0	NEW: elif
4	4	1.0	NEW: env:   instruction env: print beautified env data
9	20	0.4	NEW: list[..] = ...
9	10	0.9	NEW: text[..] = ...
3	5	0.6	NEW: convert: encode/decode MIME
5	10	0.5	NEW: convert: calculate misc. checksums, e.g. MD5, crc
5	40	0.1	NEW: convert: encryption/decryption, e.g. RSA
3	15	0.3	NEW: switch .. case .. default .. then
8	15	0.2	NEW: try ... catch ... then  -> error handling within script
3	6	0.5	NEW: env:   assignment to env
2	6	0.3	NEW: prefs: cmd and fn to access preferences from script: "prefs" or "conf" or similar
1	6	0.2	NEW: prefs: assignment to prefs

big chunks:
4	8	0.5	NEW: cache tokenized scripts in cache folder
2	10	0.2	MOD: use kio's malloc for new/delete
8	99	0.1	NEW: GUI interface
2	99	0.1	NEW: threads
9	99	0.1	NEW: port to Windows

ideas/unsorted:
			MOD: getchar default to nonblocking, return string: count=0 <-> input empty
9			NEW: non-blocking file i/o, ioctl()
			MOD: wildcard in open, close
9			NEW: sockets, ftp, http, smtp, tcp, udp, etc.
9			NEW: pipes
9			NEW: word to change encoding for stream
3			NEW: catch signals, e.g. ctrl-c
4			NEW: ioctl() um Stream.error zu lesen, setzen, löschen
2			NEW: this, self
5			NEW: errorstr, SetError or the like; e.g. word "error" which can be read and written like a var
3			NEW: wort für introspection, zb. version usw.
			NEW: exec external_cmd asynchronously fully connected via pipes
			NEW: access to own file name&path for scripts ((word for introspection))
			MOD: a?b:c  if called with accept_novalue then accept no value for b and c
			NEW: proc:  function to define a proc; e.g.: var a = proc(){return 77}  or  in list definitions
			MOD: freeze/melt with convert to|from ice (and zip, gzip, zip2 usw.)
			MOD: globals: rework instruction globals
			MOD: var: "var xyz" for an existing xyz should set it to 0.0
			IMP: &&= and ||= : pruning

more ideas:
		??	NEW: adate filename, cdate filename
		??	NEW: autocompletion of idfs and filenames in shell
5		??	NEW: quotedstr, unquotedstr, escapedstr, unescapedstr, toutf8str, fromutf8str
		??	MOD: function inkeystr(#5)  or  function variants of get and getchar -> var a = get#5; ((ambiguous))
0		??	MOD: conversions with encode/decode: encode v_ref to idf; decode v_ref from idf; a=encode(str to idf); a=decode(str from idf)
			NEW: instruction 'help'

documentation:
			DOC: shell editor: error indication, history, colors,
			DOC: find,rfind: 3rd parameter
			DOC: tfile and dfile removed
			DOC: split
			DOC: file name [=|#=] string
			DOC: operators: >>= <<= &&= ||= ##= &= |= ^=
			DOC: colors, and color examples
			DOC: standard stream for pwd et.al. changed from stderr to stdout
			DOC: include: now also function: included file now may return a result: var a = include filename
			DOC: call: was: exec; now also instruction:  call filename, argument, ...
			DOC: sys:  now also instruction
			DOC: eval: now also instruction
			DOC: midstr(text,start)  ((only 2 args => up to text end))
			DOC: min, max, >, >=, <, <=: error if different types are compared
			DOC: named items in list literals
			DOC: pruning in && || and ?:



planned for version > 1.0:

3			MOD: Execute(), Value(): operator=(): create target as late as possible => a={}; a[1]=a[5]=a[3]=a; => a={{},*,{},*,{}}
3			MOD: tNEW, tVAR: create target as late as possible.
3			MOD: tVAR: assume "target does not exist" even if it already exists => var a=a reads always a from outer context

			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();

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













