# ---------------------------------------------------------------------------- #
    lib4th "BUGS-TO-SOLVE", latest L4 version is 1.0.4+24
# ---------------------------------------------------------------------------- #
# ---------------------------------------------------------------------------- #

NOTE:
    I'd prefer the basic functionality as set up in ANS standard in an orderly
    and reliable state, and only then extending the library to enabling own
    multitasking and windowing facilities, real-time access, optimizing, etc.

    further corrections/modifications
        may be required, re ":HIER:" or ":HERE:" markers in assemblies.
    uncertain details
        marked "-?-", where any suggestions would be very welocome...
	pse <mailto:phpr@snafu.de>

# ---------------------------------------------------------------------------- #
# - known bugs --------------------------------------------------------------- #

#dcm
    can lock-up when running into invalid address range -?- re abort -?-

abort
    should resolve nested input redirections until initial level.
    => 0.5.00 partially solved

alias
    {forget}ting an {alias}ed word can run into corrupted code. (1.0.4)

bye, bye-r	- re <4th/app/lsof-libs> -
    when scripting, often terminates entire script, {pid@ -1 syskill} is ok.

forget
    can segfault if unresolved locals involved, e.g. after a defn aborted.
    can lock if {alias}ed words involved.

kbd', esc?
    sometimes funny, cannot execute in fast sequence w/ files input, why -?-

lynx
    called via {sh} occasionally corrupts screen display by setting 
    hardware console desription to some odd screen and fount sizes.

# - fixed -------------------------------------------------------------------- #

qvround
    w/ $7fffffffffffffff does not always approximate a feasible value to 
    double range. $7ffffff orderly approximates to sing.
	=> v1.xx.xx

do/loop
    is slow. try mm4/5 for running loop parm.
	=> useless!

DOES>
    funny behaviour: 1st level ok, then errors w. 2nd, else errors w. 1st...
	=> v 0.1.09: (;code) re-done, ok
    
error exit
    sometimes leaves console w/o. echo and <lf>.
    useing Linux command <stty sane> until this is solved.
	=> apparently solved, didn't happen again, since 0.0.56
	=> v0.11.04+12: useing saved console state, ok,
		    errors were due to false calling sequence.
    
{included}
    not nestable, i.e. ret w. segfault if nested.
    	=> v0.0.53, partly fixed by implementing local {tib}-s.
	=> v0.0.55, fixed {quit}, <jnz> after macro <popiosrc>.
	=> v0.0.58, again, w. preliminary channels redirection
	=> ok.

input
    will always be using {stdin}. if STDIN is file, keyboard input can be forced 
    for the next word with the immediate word KBD'.

local values
    non-recursive, v0.2.xx
	=> 0.4.00, ok

{mprotect}
    always returns EINVAL (-22) if not user root -?- why?
	=> not a bug, but was falsely tested (0.0.53):
	   syscall requires page alignment on true address
	   thus 4th word modified to taking :true: address.

sliteral
    should be useable while intermediatly interpreting, within a colon defn.
    and should compile a string while interpreting, i.e. after {create}. -?-
	=> fixed, v0.2.00

<tab>
    character in forth sources not recognized as a blank space.
	=> fixed, v 0.0.55

{type}, {emit}
output	(3.sep.00 bj, 0.0.44) - 1st fix in 0.0.47 - no success (0.0.51)
	=> 0.0.59: falsely opening tty w. O_NONBLOCK resulted to this 
	   behaviour. fixed w. O_SYNC in <setty> and new <setpty> subroutine.
	=> silly enough, any modification to stdin equally affects the stdout 
	   channel which introduced the complementary 'bug', blocking on input!
	=> 0.0.60: solved after opening another stdout channel, w. separate fd.

    for instance, the test
        hex 100000 0 do i . cr loop bye
    left off a considerable number of output lines when executed interactively, 
    but not when in a script and piped to stdout or to a file:
	echo "hex 1000 0 do i . cr loop bye"|./f8 > log

+TO
    +! aequivalent for a {value}
	=> done

{word}
    length error (last char missing) if char not found
    => 0.3.00+6 - fixed -?-
    
{restore-input}
    return flag missing
    => 0.3.00+6 - fixed -?-

[if]/[else]...
	=> bug: left 0 on tos in {word} at e.o.l. - 0.0.59 fixed, ok.
    neither one of library or source-file variant works:
    segfault when [else] branch taken.

<otty>
    segfaults
    => fixed w/ 0.5.xx

{path+file}
    last path segment truncated by last char
    => fixed w/ 0.5.xx

{?do}
    false data @tos 
    => fixed w/ 0.5.xx
    
# ---------------------------------------------------------------------------- #
<eof>
