# ----------------------------------------------------------------------------- #
# Copyright (C) 2002 Berlin h-peter recktenwald <phpr@snafu.de>			#
# "lib4th" : Forth dynamically linkable shared library for i468+ pc linux.	#
# non-commercial Q-license applies, re ./doc/QT-license for licensing terms	#
# ----------------------------------------------------------------------------- #

Ver. 0.0.26 (25-Jun-2000)
    was the first trial-release.

Ver. 1.0.6 (20-Mar-2002)
    is current.

# ----------------------------------------------------------------------------- #

planned or, prepared but not implemented or not sufficiently investigated:


ARRAY & DIM
    implement counted data fields, re f6 "forth_scr"

assembler
    which is controllable and fast(er than "nasm")

forth words multitasking
    by internal scheduler - using sys_slect, sigusr and, some <pause>-procedure -?-
    v0.10.xx - test possible w/ {alarm}, may recursivly trigger another {alarm}.

graphics
    1)	basic capabilities, which might require auxilary libraries, e.g. "libGGI", as 
	a runtime loadable extension module - "lib4th" got to remain self contained!
	suid-problem to be solved w. a secondary job, communication to the application
	for a very limited set of root privileged opr's, while the basic job immediately 
	after the 2nd-ary job started giving up its privileged state such that all other 
	jobs in the basic tree run w. the actual user's access rights.
    2)	separate lib4th module which provides words to access the "libggi" libraries.
    3)	by 'graphic' charater fount, per 8-bit-values.

{help}
    extend to including ref to hi-level source files in <app> directories

load-file
    include-file from preset file posn.
    use compressed text source.
    cpl from to a program appended (compressed) text source.

load, -->, thru
    of block-file wordset impl.

locked data transfer
    triggered by rt-signal, which provides origin address at cell @{@{tos+8}+19}.

libraries
    1) access to/from 'alien' libraries or,
    2) supplying library entry-points.

modules
    saving/loading, "save-system"
    word headers ref's relative to base of that list.

multitasking
    check!
    1)	cloned jobs were tested in the early stages of development
	for feasibility, only, which worked out successfully. since
	then no tests have been done, and that functionality might 
	have got lost, by now, while development carried on...
    2)	use <select> for 4th words m-tasking.
    
relocatable
    data-space, for compile-space extendability.
    would require modification of "does>" runtime to ref by disp to <databot>.

software-stacks

terminal control
    terminfo evaluation in {accept} &c,
    {accept} implements a minimal set of ctrl actions to just get some control.

uot
    eliminate duplicate kernel vectors
    change ref to be independent of uvari, by ptr in uvari block

#
# ----------------------------------------------------------------------------- #
# delayed because of minor importance
#

channels
    unlimited number, w. circular(?) linked list

commandline history
    stored in linux user's specific file yet to be implemented

DATE
    linux-ish date-strings(?) - %m, %d, %y, %Y, etc.

demand loading
    i.e. compile and load until then unknown words, automatically.
    shouldn't be that difficult, because uot slots can easily be reserved and 
	resolved after compilation of a word ( -> suits an assembler app).
    or, compilation may be terminated, unfinished word discarded, missing one
	loaded, then compilation of unfinished word restarted. probably as well
	fairly easy to implement, because of known 'head' and 'tail' pointers.

internationalization
    of text, wrt "locales", re <doc/locale.txt>.
    unicode, UCS, UTF, iso character code conversion

<mremap>
    for memory management - not that easy...

windowing
    for the console. - can be done by vt sequences

#
# ----------------------------------------------------------------------------- #
# dun
#
    
- v1.0.6
--

memory protection
    implemented preliminary, to a bare minimum. - re "heap management" v0.1.04
    final implementation to include protected uot data, access rights checks
    and falling back to their required minimum, wherever appropriate.
	=> left to hi-level extension bacause probably effortless, anyway, 
	since the entire Linux console is unsafe, by kernel implementation, to 
	an extent that any other safety measures would be just pretending a 
	system state which, in fact, cannot be achieved w/o thorough kernel 
	modification - where I didn't get any response to, from the newsgroup...
search-file
    use mmap
	=> abandoned because it wouldn't work w/ pipes &c.

- v1.0.3
--
    BLOCK wordset complete and extended,
	w/ self maintaining buffer blocks de/allocation.
    fig-4th line editor for block-files
    {old} variable/value, creating new only if not already present
	=> partly done, for INTEGER which is a VALUE, the rest dispensed with.

- v1.0.2+
--
    pseudo-arg to delimiting executing arguments, passed in from cmd-line

- v 0.12+
host system constants
    fetching from actual Linux sources, at compile-/run-time, as appropriate.

- v 0.12+
console
    orderly restore console setup when exitting, instead of just <stty sane> sim.

- v0.10.xx
forth words multitasking
    test w/ {alarm} executing deferred {(alarm)}.
multi-precision integer arithmetics
    division & multiplication done for quad integers
    'Rational Numbers' to substituting the FLOATING wordsets

- v0.9.xx
vt
    preliminary vt sequences used until terminfo orderly implemented.
    colours setting complete, others prepared by ctrl strings availablity
terminal control
    job supended by sys_select until input - {wait4in} in {key}

- v0.6.xx

commandline history
    recall last line if 1st key is <tab>, expanding w/ <tab> or <cur-right>

skip/scan
    backward
    => v0.6.06 done, -re- {rskip}, {rscan}

FORGET
    appropriately fill {current} in case its wordlist was invalidated <- {forth} ?
    => 1) stacked forgotten vocs replaced w/ {local} <= {forth}!
       2) xec {prevdef} if {current} forgotten
       3) replace both, {current}, {ocurrent}, w/ {forth} if {ocurrent} still invalid.

- v0.5.xx

signal handlers
    defining to something useful, currently just showing that it might work...
    => fpe, sefv, bus, ill, winch re-directed, others retuen w/ message or exit.

FORGET & MARKER
    implemented - {marker} in "mark.f8", {forget} in kernel

- v0.4.xx

CATCH/THROW (delayed, lowest priority! - or none at all..)
    error handling
    => hi-level example from DPANS94 doc.
{just} vocname
    searching just the single one wordlist, once only.
    => not explicitely implemented, can easily be substituted w. {search-wordlist}

terminal control
    => waiting for input by sys_select

- v0.3.03

    p@/p! etc.
multi-precision integer arithmetics
    division & multiplication yet not implemented
    => counted integer by sing done, no more extensions planned

- v0.1.10

debugging
    hi-level debugger yet to be implemented,
    {see} and {dcm} currently very simplistic minimal utility words.
signal handlers
    defining to something useful, currently just showing that it might work...
    => main window resized(v0.2.xx), arithm exception & segfaults handling done.

- v0.1.04

heap (and other resources) management
    heap management part of a general resources allocation sub-system
    => self-maintaining data structures & handlers, need no "garbage collection"
    => MEMORY words implemented

- v0.0.60

channels redirection
    fully redirectable i/o, replacing preliminary access mode (re below).

- v0.0.58 -

i/o
    file descriptors assumed to be 16bit entities, 32bit dwords in lib4th 
    carrying several i/o flags. which complies to linux 2.2. kernel but, 
    is just preliminary, to get hold of i/o, somehow. final implementation 
    would feature fully redirectable i/o and distinct flags, data, etc...

#
# ----------------------------------------------------------------------------- #
# PLANNED for lib4th <eof>
