• kForth-32 v 2.7.0

    From Krishna Myneni@krishna.myneni@ccreweb.org to comp.lang.forth on Thu Mar 19 12:34:22 2026
    From Newsgroup: comp.lang.forth

    A new version of kForth-32 (v 2.7.0) is now available for 32-bit/64-bit
    Linux users, at the link below. Note that this is an integrated data/fp
    stack version of Forth which provides many of the features of both
    Forth-94 and Forth-2012.


    ====== Start of commit 6818538 message ======
    kForth-32 v 2.7.0: revised interpreter/compiler
    This update of kForth-32 (v 2.7.0) mirrors recent substantial
    changes to kForth-64, in particular to the interpreter/compiler
    which has been rewritten to align with the recognizers proposal
    for the Forth 202x standard. See

    https://forth-standard.org/proposals/recognizer-committee-proposal-2025-09-11

    Changes include:
    -- following new words:
    NAME>EXECUTE (non-standard; for support of recognizers)
    COMPILE-NAME-BC (non-standard; for support of recognizers)
    REC-NAME proposed standard
    REC-NUMBER " "
    REC-FLOAT " "
    REC-NONE " "
    TRANSLATE-NAME " "
    TRANSLATE-CELL " "
    TRANSLATE-DCELL " "
    TRANSLATE-FLOAT " "
    TRANSLATE-NONE " "
    INTERPRET " "

    -- interpreter recognizes standard base prefixes for numbers:
    $ prefix for hex number
    # prefix for decimal number
    % prefix for binary number

    -- interpreter recognizes double length integers when entered
    with a base prefix and a trailing decimal point.

    -- coreplus.4th system test renamed to coreplustest.4th to
    follow upstream naming.

    -- +LOOP fixed to pass all coreplustest.4th DO ... +LOOP tests.

    -- error reporting added for POSTPONE.

    -- system tests in forth-src/system-test have been revised
    to report Error Count and number of skipped tests (this
    is incomplete and an ongoing effort).

    On branch master
    modified: forth-src/system-test/core.4th
    modified: forth-src/system-test/coreexttest.4th
    deleted: forth-src/system-test/coreplus.4th
    new file: forth-src/system-test/coreplustest.4th
    modified: forth-src/system-test/dbltest.4th
    modified: forth-src/system-test/facilitytest.4th
    modified: forth-src/system-test/fatan2-test.4th
    modified: forth-src/system-test/filetest.4th
    modified: forth-src/system-test/fpio-test.4th
    modified: forth-src/system-test/regress.4th
    modified: src/ForthCompiler.cpp
    modified: src/ForthCompiler.h
    modified: src/ForthVM.cpp
    modified: src/ForthVM.h
    modified: src/ForthWords.h
    modified: src/Makefile
    modified: src/fbc.h
    modified: src/kfmacros.h
    modified: src/kforth.cpp
    modified: src/vm32-common.s
    modified: src/vm32-fast.s
    modified: src/vm32.s
    modified: src/vmc.c
    ====== End of commit 6818538 message ======

    A transcript of the system tests is given below.

    ====== Start of system tests transcript ======
    \ 19 March 2026
    \ System test of kForth-32 master branch at commit 6818538
    \ Tester: K. Myneni
    \ Transcript follows
    \
    $ kforth32
    kForth-32 v 2.7.0 (Build: 2026-03-19)
    Copyright (c) 1998--2026 Krishna Myneni
    Contributions by: dpw gd mu bk abs tn cmb bg dnw
    Provided under the GNU Affero General Public License, v3.0 or later


    Ready!
    \ ==== core.4th ===
    include core

    /home/krishna/kforth/tester.4th

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th
    TESTING CORE WORDS
    TESTING BASIC ASSUMPTIONS
    TESTING BOOLEANS: INVERT AND OR XOR
    TESTING 2* 2/ LSHIFT RSHIFT
    TESTING COMPARISONS: 0= = 0< < > U< MIN MAX
    TESTING STACK OPS: 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP TESTING >R R> R@
    TESTING ADD/SUBTRACT: + - 1+ 1- ABS NEGATE
    TESTING MULTIPLY: S>D * M* UM*
    TESTING DIVIDE: FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD
    TESTING @ ! CELL+ CELLS C@ C! CHARS 2@ 2! +!
    Skipping tests: HERE ,
    Skipping tests: ALIGN
    TESTING CHAR [CHAR] [ ] BL S"
    TESTING ' ['] FIND EXECUTE IMMEDIATE COUNT LITERAL POSTPONE STATE
    TESTING IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE
    TESTING DO LOOP +LOOP I J UNLOOP LEAVE EXIT
    TESTING DEFINING WORDS: : ; CONSTANT VARIABLE CREATE DOES> >BODY
    TESTING EVALUATE
    TESTING WORD
    Skipping tests: SOURCE >IN
    TESTING <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL
    TESTING FILL MOVE
    TESTING OUTPUT: . ." CR EMIT SPACE SPACES TYPE U.
    YOU SHOULD SEE THE STANDARD GRAPHIC CHARACTERS:
    !"#$%&'()*+,-./0123456789:;<=>?@
    ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
    abcdefghijklmnopqrstuvwxyz{|}~
    YOU SHOULD SEE 0-9 SEPARATED BY A SPACE:
    0 1 2 3 4 5 6 7 8 9
    YOU SHOULD SEE 0-9 (WITH NO SPACES):
    0123456789
    YOU SHOULD SEE A-G SEPARATED BY A SPACE:
    A B C D E F G
    YOU SHOULD SEE 0-5 SEPARATED BY TWO SPACES:
    0 1 2 3 4 5
    YOU SHOULD SEE TWO SEPARATE LINES:
    LINE 1
    LINE 2
    YOU SHOULD SEE THE NUMBER RANGES OF SIGNED AND UNSIGNED NUMBERS:
    SIGNED: -80000000 7FFFFFFF
    UNSIGNED: 0 FFFFFFFF
    TESTING INPUT: ACCEPT

    PLEASE TYPE UP TO 80 CHARACTERS:
    hello world
    RECEIVED: "hello world"
    TESTING DICTIONARY SEARCH RULES
    GDX is redefined
    ok
    cold
    ok
    \ === asm-x86-test.4th ===
    include asm-x86-test

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th

    /home/krishna/kforth/asm-x86-examples.4th

    /home/krishna/kforth/modules.4th

    /home/krishna/kforth/syscalls.4th

    /home/krishna/kforth/mc.4th

    /home/krishna/kforth/asm-x86.4th

    /home/krishna/kforth/dump.4th
    TESTING Use of ADD, MOV, IMUL,
    TESTING Use of CXNZ, IF, THEN, DO, LOOP, INC,
    TESTING Use of BEGIN, WHILE, REPEAT, CMP, <, XOR,
    TESTING Use of LABEL: JMP, >,
    ok
    cold
    ok
    \ === coreexttest.4th ===
    include coreexttest

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th
    TESTING Core Extension words
    TESTING TRUE FALSE
    TESTING <> U> (contributed by James Bowman)
    TESTING 0<> 0> (contributed by James Bowman)
    TESTING NIP TUCK ROLL PICK (contributed by James Bowman)
    TESTING 2>R 2R@ 2R> (contributed by James Bowman)
    TESTING HEX (contributed by James Bowman)
    TESTING WITHIN (contributed by James Bowman)
    Skipping tests of UNUSED
    TESTING AGAIN (contributed by James Bowman)
    Skipping tests of MARKER
    TESTING ?DO
    Skipping tests of BUFFER:
    TESTING VALUE TO
    Skipping IMMEDIATE tests for VALUEs
    TESTING CASE OF ENDOF ENDCASE
    TESTING :NONAME RECURSE
    TESTING C"
    TESTING COMPILE,
    Skipping tests of SAVE-INPUT and RESTORE-INPUT
    TESTING .(


    Output from .(
    You should see -9876: -9876
    and again: -9876


    On the next 2 lines you should see First then Second messages:
    First message via .(
    Second message via ."

    TESTING .R and U.R - has to handle different cell sizes


    Output from .R and U.R
    You should see lines duplicated:
    indented by 0 spaces
    1984383623
    1984383623
    -2088648479
    -2088648479
    1984383623
    1984383623
    2206318817
    2206318817

    indented by 0 spaces
    1984383623
    1984383623
    -2088648479
    -2088648479
    1984383623
    1984383623
    2206318817
    2206318817

    indented by 5 spaces
    1984383623
    1984383623
    -2088648479
    -2088648479
    1984383623
    1984383623
    2206318817
    2206318817

    TESTING PAD ERASE
    TESTING PARSE
    TESTING PARSE-NAME (Forth 2012)
    TESTING DEFER DEFER@ DEFER! IS ACTION-OF (Forth 2012)
    Skipping test of HOLDS
    Skipping tests of REFILL and SOURCE-ID
    Skipping tests of S\"

    Error Count: 0
    Tests Skipped [see comments above]: 58
    End of Core Extension word tests
    ok
    cold
    ok
    \ === coreplutest.4th ===
    include coreplustest

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th
    TESTING DO +LOOP with run-time increment, negative increment, infinite loop TESTING DO +LOOP with large and small increments
    TESTING DO +LOOP with maximum and minimum increments
    TESTING +LOOP setting I to an arbitrary value
    TESTING multiple RECURSEs in one colon definition
    TESTING multiple ELSE's in an IF statement
    Skipping tests: manipulation of >IN in interpreter mode
    TESTING IMMEDIATE / NONDEFERRED with CONSTANT VARIABLE and CREATE [ ...
    DOES> ]
    TESTING that IMMEDIATE doesn't toggle a flag
    TESTING parsing behaviour of S" ." and (

    You should see 2345: 2345
    TESTING number prefixes # $ %
    Skipping tests: 'c' character input
    TESTING definition names
    TESTING FIND with a zero length string and a non-existent word

    Error Count: 0

    Tests Skipped [see comments above]: 6
    End of additional Core tests
    ok
    cold
    ok
    \ === dbltest.4th ===
    include dbltest

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th
    TESTING M+ D+ D- DNEGATE
    TESTING D2* D2/
    TESTING D= D<
    Skipping tests: D<> D> D>= D<=
    TESTING D0= D0< DU<

    Error Count: 0
    Tests Skipped [see comments above]: 19
    End of Double Number word tests
    ok
    cold
    ok
    \ === divtest.4th ===
    include divtest

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th
    TESTING UTS/MOD
    TESTING num.hi = num.mi = 0
    TESTING num.mi.sd >= denom.sd
    TESTING num.mi > denom, denom.sd = 32
    TESTING num.mi = denom, denom.sd = 32
    TESTING num.mi < denom, denom.sd = 32
    TESTING num.mi.sd < denom.sd
    TESTING num.mi < denom, denom.sd = 32
    TESTING num.hi.sd >= denom.sd
    TESTING num.hi.sd < denom.sd
    TESTING STS/REM
    INCORRECT RESULT: t{ 2 0 minint ds* 2 sts/rem -> 0 minint -1 -1 }t INCORRECT RESULT: t{ 2 0 minint ds* minint sts/rem -> 0 2 0 0 }t INCORRECT RESULT: t{ 0 minint maxint ds* minint sts/rem -> 0 0 maxint
    0 }t
    INCORRECT RESULT: t{ 0 minint maxint ds* maxint sts/rem -> 0 0 minint
    -1 }t
    TESTING UTM/
    TESTING num.hi = num.mi = 0
    TESTING num.mi.sd >= denom.sd
    TESTING num.mi > denom, denom.sd = 32
    TESTING num.mi = denom, denom.sd = 32
    TESTING num.mi < denom, denom.sd = 32
    TESTING num.mi.sd < denom.sd
    TESTING num.mi < denom, denom.sd = 32
    TESTING num.hi.sd >= denom.sd
    TESTING num.hi.sd < denom.sd
    Use core.4th for UM/MOD FM/MOD nonexception tests.
    TESTING SM/REM
    Uncomment lines in divtest.4th to test error reports.
    ok
    cold
    ok
    \ === facilitytest.4th ===
    include facilitytest

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/struct-200x.4th

    /home/krishna/kforth/ttester.4th
    TESTING Facility words
    TESTING BEGIN-STRUCTURE END-STRUCTURE +FIELD
    TESTING FIELD: CFIELD:
    TESTING Nested structures

    Error Count: 0

    End of Facility word tests
    ok
    cold
    ok
    \ === fatan2-test.4th ===
    include fatan2-test

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th

    floating-point and data stacks *not separate*
    TESTING normal values
    TESTING Single UNIX 3 special values spec
    TESTING Single UNIX 3 special values optional spec

    Error Count: 0
    ok
    cold
    ok
    \ === filetest.4th ===
    include filetest

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th

    /home/krishna/kforth/strings.4th

    /home/krishna/kforth/files.4th
    TESTING File Access word set
    TESTING CREATE-FILE CLOSE-FILE
    TESTING OPEN-FILE W/O WRITE-LINE
    TESTING R/O FILE-POSITION (simple) READ-LINE
    TESTING S" in interpretation mode (compile mode tested in Core tests)
    TESTING R/W WRITE-FILE REPOSITION-FILE READ-FILE FILE-POSITION S"
    TESTING BIN READ-FILE FILE-SIZE
    Skipping tests: RESIZE-FILE
    TESTING DELETE-FILE
    rm: cannot remove 'fatest2.txt': No such file or directory
    TESTING multi-line ( comments
    Skipping tests: SOURCE-ID
    TESTING RENAME-FILE FLUSH-FILE
    rm: cannot remove 'fatest3.txt': No such file or directory
    Skipping tests: FILE-STATUS

    Error Count: 0

    Tests Skipped [see comments above]: 16
    End of File-Access word tests
    ok
    cold
    ok
    \ === fpio-test.4th ===
    include fpio-test

    FPIO-TEST V1.2 12 Mar 2026
    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th

    TESTING Conversion of Exactly Representable Numbers

    TESTING Rounding of Numbers

    Error Count: 0

    End of Core Extension word tests
    ok
    cold
    ok
    \ === fpzero-test.4th ===
    include fpzero-test

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th


    System supports fp signed zero.
    #ERRORS: 0
    ok
    cold
    ok
    \ === ieee-arith-test.4th ===
    include ieee-arith-test

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th

    TESTING F+
    TESTING F-
    TESTING F*
    TESTING F/
    TESTING FSQRT
    NOT TESTING F*+
    #ERRORS: 0
    ok
    cold
    ok
    \ === ieee-fprox-test.4th ===
    include ieee-fprox-test

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th

    TESTING equality of floating-point encoding
    TESTING absolute tolerance
    TESTING relative tolerance
    #ERRORS: 0
    ok
    cold
    ok
    \ === memorytest.4th ===
    include memorytest

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th
    TESTING Memory-Allocation word set
    TESTING ALLOCATE FREE RESIZE
    Skipping tests involving HERE
    TESTING failure of RESIZE and ALLOCATE (unlikely to be enough memory)
    TESTING @ and ! work in ALLOCATEd memory (provided by Peter Knaggs)

    End of Memory-Allocation word tests
    ok
    cold
    ok
    \ === regress.4th ===
    include regress

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th
    TESTING 0<> 0> <> U>
    TESTING WITHIN
    TESTING UW@ SW@ W! UL@ SL@ L!
    TESTING <= >= -ROT 2ROT
    TESTING 2+ 2-
    Need tests for DNEGATE D< besides Gforth
    TESTING CMOVE CMOVE> FILL ERASE
    TESTING SP@ RP@ SP! RP! 2R@ 2>R 2R>
    TESTING NIP TUCK PICK ROLL
    TESTING UDM* DABS M/ M*/ DS*
    TESTING DMAX DMIN
    TESTING NUMBER?
    TESTING SYNONYM
    Uncomment lines in regress.4th to test errors.
    TESTING F= F<> F< F> F<= F>= F0= F0< F0>
    TESTING S>F D>F F>D FROUND>S FTRUNC>S SF@ SF! DF@ DF!
    Skipping overflow F>D tests.
    TESTING DEG>RAD RAD>DEG
    TESTING DFLOATS DFLOAT+ F+ F- F* F/ FABS FNEGATE
    TESTING FROUND FLOOR FTRUNC
    TESTING FSQRT FCOS FSIN FATAN2 FSINCOS
    TESTING Additional POSTPONE tests
    TESTING COMPILE,
    TESTING MS USLEEP
    Assumes MS@ works -- test MS@ manually.
    TESTING Deferred Execution
    ok
    cold
    ok
    \ === searchordertest.4th ===
    include searchordertest

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th
    TESTING Search-order word set
    TESTING FORTH-WORDLIST GET-ORDER SET-ORDER
    TESTING ALSO ONLY FORTH
    TESTING GET-CURRENT SET-CURRENT WORDLIST (simple)
    TESTING minimum search order list contains FORTH-WORDLIST and SET-ORDER
    TESTING GET-ORDER SET-ORDER with 0 and -1 number of wids argument
    TESTING DEFINITIONS PREVIOUS
    TESTING SEARCH-WORDLIST WORDLIST FIND
    TESTING new definitions are put into the correct wordlist
    TESTING ORDER \ Should display search order and compilation wordlist

    ONLY FORTH DEFINITIONS search order and compilation list
    [Forth] Root
    Plus another unnamed wordlist at the head of the search order
    [Unnamed] Forth Root
    End of Search Order word tests
    ok
    cold
    ok
    \ === stringtest.4th ===
    include stringtest

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th
    TESTING String word set
    TESTING -TRAILING
    TESTING /STRING
    TESTING SEARCH
    TESTING COMPARE
    TESTING CMOVE and CMOVE>
    TESTING BLANK
    TESTING SLITERAL

    End of String word tests
    ok
    cold
    ok
    \ === to-float-test.4th ===
    include to-float-test

    /home/krishna/kforth/ans-words.4th

    /home/krishna/kforth/ttester.4th
    TESTING >FLOAT

    #ERRORS: 0
    ok
    cold
    ok
    \ === paranoia.4th ===
    include paranoia

    /home/krishna/kforth/ans-words.4th
    SIGN is redefined


    Type "main" to start the tests.
    ok
    main

    Lest this program stop prematurely, i.e. before displaying

    `END OF TEST',

    try to persuade the computer NOT to terminate execution when an
    error like Over/Underflow or Division by Zero occurs, but rather
    to persevere with a surrogate value after, perhaps, displaying some
    warning. If persuasion avails naught, don't despair but run this
    program anyway to see how many milestones it passes, and then
    amend it to make further progress.

    Answer questions with Y, y, N or n (unless otherwise indicated).

    To continue, press RETURN
    Diagnosis resumes after milestone Number 0
    Page: 1

    Users are invited to help debug and augment this program so it will
    cope with unanticipated and newly uncovered arithmetic pathologies.
    Please send suggestions and interesting results to

    Richard Karpinski
    Computer Center U-76
    University of California
    San Francisco, CA 94143-0704, USA

    In doing so, please include the following information:

    Precision: double
    Version: 10 February 1989; Forth
    Computer:
    Compiler:
    Optimization level:
    Other relevant compiler options:

    To continue, press RETURN
    Diagnosis resumes after milestone Number 1
    Page: 2

    Running this program should reveal these characteristics:

    Radix = 1, 2, 4, 8, 10, 16, 100, 256 ...
    Precision = number of significant digits carried.
    U2 = Radix/Radix^Precision = One Ulp
    (OneUlpnit in the Last Place) of 1.000xxx .
    U1 = 1/Radix^Precision = One Ulp of numbers a little less than 1.0 .
    Adequacy of guard digits for Mult., Div. and Subt.
    Whether arithmetic is chopped, correctly rounded, or something else
    for Mult., Div., Add/Subt. and Sqrt.
    Whether a Sticky Bit used correctly for rounding.
    UnderflowThreshold = an underflow threshold.
    E0 and PseudoZero tell whether underflow is abrupt, gradual, or fuzzy.
    V = an overflow threshold, roughly.
    V0 tells, roughly, whether Infinity is represented.
    Comparisions are checked for consistency with subtraction
    and for contamination with pseudo-zeros.
    Sqrt is tested. Y^X is not tested.
    Extra-precise subexpressions are revealed but NOT YET tested.
    Decimal-Binary conversion is NOT YET tested for accuracy.

    To continue, press RETURN
    Diagnosis resumes after milestone Number 2
    Page: 3

    The program attempts to discriminate among

    FLAWs, like lack of a sticky bit,
    Serious DEFECTs, like lack of a guard digit, and
    FAILUREs, like 2+2 == 5 .

    Failures may confound subsequent diagnoses.

    The diagnostic capabilities of this program go beyond an earlier
    program called `MACHAR', which can be found at the end of the
    book `Software Manual for the Elementary Functions' (1980) by
    W. J. Cody and W. Waite. Although both programs try to discover
    the Radix, Precision and range (over/underflow thresholds)
    of the arithmetic, this program tries to cope with a wider variety
    of pathologies, and to say how well the arithmetic is implemented.
    The program is based upon a conventional radix representation for floating-point numbers, but also allows logarithmic encoding
    as used by certain early WANG machines.

    BASIC version of this program (C) 1983 by Prof. W. M. Kahan;
    see source comments for more history.

    To continue, press RETURN
    Diagnosis resumes after milestone Number 3
    Page: 4

    Program is now RUNNING tests on small integers:
    -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 are O.K.

    Searching for Radix and Precision.
    Radix = 2 .
    Closest relative separation found is U1 = 1.11022302462516e-16

    Recalculating radix and precision
    confirms closest relative separation U1 .
    Radix confirmed.
    The number of significant digits of the Radix is 53

    To continue, press RETURN
    Diagnosis resumes after milestone Number 30
    Page: 5

    Subtraction appears to be normalized, as it should be.
    Checking for guard digit in F*, F/, and F-.
    F*, F/, and F- appear to have guard digits, as they should.

    To continue, press RETURN
    Diagnosis resumes after milestone Number 40
    Page: 6

    Checking rounding on multiply, divide and add/subtract.
    Multiplication appears to round correctly.
    Division appears to round correctly.
    Addition/Subtraction appears to round correctly.
    Checking for sticky bit.
    Sticky bit apparently used correctly.

    Does Multiplication commute? Testing on 20 random pairs.
    No failures found in 20 integer pairs.

    Running test of square root(x).
    Testing if sqrt(X * X) == X for 20 Integers X.
    Test for sqrt monotonicity.
    sqrt has passed a test for Monotonicity.
    Testing whether sqrt is rounded or chopped.
    Square root appears to be correctly rounded.

    To continue, press RETURN
    Diagnosis resumes after milestone Number 90
    Page: 7

    Testing powers Z^i for small Integers Z and i.
    ... no discrepancies found.

    Seeking Underflow thresholds UfThold and E0.
    Smallest strictly positive number found is E0 = 4.94065645841247e-324
    Since comparison denies Z = 0, evaluating (Z + Z) / Z should be safe.
    What the machine gets for (Z + Z) / Z is 2
    This is O.K., provided Over/Underflow has NOT just been signaled.
    Underflow is gradual; it incurs Absolute Error =
    (roundoff in UfThold) < E0.
    The Underflow threshold is 2.22507385850720e-308 below which
    calculation may suffer larger Relative error than merely roundoff.
    Since underflow occurs below the threshold
    UfThold = 2.00000000000000e+00 ^-1.02200000000000e+03
    only underflow should afflict the expression
    2.00000000000000e+00 ^-2.04400000000000e+03
    actually calculating yields: 0.00000000000000e+00
    This computed value is O.K.

    Testing X^((X + 1) / (X - 1)) vs. exp(2) = 7.38905609893065e+00 as X -> 1. Accuracy seems adequate.
    Testing powers Z^Q at four nearly extreme values.
    ... no discrepancies found.


    To continue, press RETURN
    Diagnosis resumes after milestone Number 160
    Page: 8

    Searching for Overflow threshold:
    This may generate an error.
    Can `Z = -Y' overflow?
    Trying it on Y = -inf
    Seems O.K.
    Overflow threshold is V = 1.79769313486232e+308
    Overflow saturates at V0 = inf
    No Overflow should be signaled for V * 1 = 1.79769313486232e+308
    nor for V / 1 = 1.79769313486232e+308
    Any overflow signal separating this * from the one
    above is a DEFECT.


    To continue, press RETURN
    Diagnosis resumes after milestone Number 190
    Page: 9


    What message and/or values does Division by Zero produce?
    This can interupt your program. You can skip this part if you wish.
    Do you wish to compute 1 / 0?
    Trying to compute 1 / 0 produces ...inf

    Do you wish to compute 0 / 0?
    Trying to compute 0 / 0 produces ...-nan

    To continue, press RETURN
    Diagnosis resumes after milestone Number 220
    Page: 10


    FAILUREs encountered = 0
    SERIOUS DEFECTs discovered = 0
    DEFECTs discovered = 0
    FLAWs discovered = 0

    No failures, defects nor flaws have been discovered.
    Rounding appears to conform to the proposed IEEE standard P754
    except for possibly Double Roundingduring Gradual Underflow.
    The arithmetic diagnosed appears to be Excellent!
    END OF TEST.
    ok
    cold
    ok
    c" ../fsl" chdir .
    0 ok
    \ === fsl/fsl-tester.4th ===
    include fsl-tester

    /home/krishna/kforth/ans-words.4th

    FSL-UTIL V1.3d 21 Apr 2024 EFC, KM /home/krishna/kforth/modules.4th

    DYNMEM V1.9d 19 February 2012 EFC /home/krishna/kforth/strings.4th

    /home/krishna/kforth/struct-200x.4th

    /home/krishna/kforth/ttester.4th



    isaac.f translated from Bob Jenkins' rand.c
    by Pierre Abbat Version 1.4 1999-03-23

    TESTING ISAAC



    PRNG V1 28 November 2007 JVN TEST is redefined

    TESTING PRNG



    SPH-BES V1.0b 25 November 2007 JVN
    TESTING SPHBES



    Logistic V1.2c 27 October 2007 EFC
    TESTING LOGISTIC D_LOGISTIC



    POLRAT V1.2f 19 February 2012 MH
    TESTING POLINT
    TESTING RATINT



    EXPINT V1.1c 27 October 2007 EFC
    TESTING expint



    HORNER V1.5d 19 February 2012 EFC
    TESTING }HORNER



    AITKEN V1.1.5 19 February 2012 EFC, KM
    TESTING AITKEN



    HERMITE V1.2c 19 February 2012 EFC
    TESTING HERMITE



    ELIP V1.2c 27 September 2007 EFC
    TESTING ELIP1 ELIP2



    ELIP12 V1.1c 19 February 2012 EFC
    TESTING E[k] K[k]



    POLYS V1.1e 19 February 2012 EFC
    TESTING CH_N
    TESTING HE_N
    TESTING LA_N
    TESTING LE_N
    TESTING BE_N
    TESTING LAG_N



    FACTORIAL V1.1 18 October 1994 EFC
    TESTING FACTORIAL



    GAMMA V1.2e 19 February 2012 EFC
    TESTING GAMMA
    TESTING RGAMMA



    ERF V1.03 19 February 2012
    TESTING ERF1
    TESTING ERF
    TESTING ERFC



    PCYLFUN V1.1d 19 February 2012 EFC
    TESTING UPCF VPCF



    SHANKS V1.0b 19 February 2012 EFC
    TESTING SHANKS



    HILBERT V1.2 15 May 2021 EFC
    TESTING HILBERT HILBERT-INV HILBERT-DET



    LUFACT V1.6j 11 December 2023 EFCikm
    TESTING LUMATRIX-INIT LUFACT LU-MALLOC LU-FREE



    DETS V1.0g 16 May 2021 EFC
    TESTING DET



    BACKSUB V1.2g 16 May 2021 EFC
    TESTING problem 1
    TESTING problem 2



    INVM V1.2e 16 May 2021 EFC
    TESTING INVM



    GAUSSJ & MATRICES V1.1d 07 July 2021 MH,KM
    TESTING GET-ROW GET-COLUMN TRANSPOSE
    TESTING MAT- MAT+ }}ABSMAT MAT+! MAT^-1 MAT*
    TESTING GAUSSJ SOLVE



    DFourier V1.3b 19 February 2012 EFC, KM FAC is
    redefined

    TESTING DFT-T
    TESTING DFT-1
    TESTING DFT-2
    TESTING DFT-2F



    ADAPTINT V1.2 14 August 2009 JVN
    TESTING )INTEGRAL
    F1 is redefined



    GAULEG V1.1g 07 May 2024 EFC,KM
    TESTING GAULEG GL-INTEGRATE



    QUADRATIC V1.3c 19 February 2012 KM, HD
    TESTING solve_quadratic



    CUBIC V1.1d 25 November 2007 JVN X' is redefined

    TESTING CUBIC-ROOTS



    LAGROOTS V1.0.2b 19 February 2012 JVN, CGM
    TESTING }ZSYNTH
    TESTING ZROOTS



    REGFALSI V1.1g 10 May 2021 JVN F1 is redefined

    TESTING )ROOT



    RUNGE4 V1.2g 09 July 2021 EFC A1 is redefined
    A2 is redefined

    TESTING E&P Non-Stiff ODE Problems A1 to A4 (Adaptive Step)
    TESTING Damped Vibration (Adaptive Step)
    TESTING Charging Capacitor (Adaptive Step)
    TESTING Damped Vibration (Fixed Step)
    TESTING Charging Capacitor (Fixed Step)



    16 Bit Cyclic Redundancy Checksums. Version FSL1.0 29th October 1994
    Gordon Charlton - gordon@charlton.demon.co.uk

    S1 is redefined
    S2 is redefined

    TESTING >XMODEM >X.25 >CRC-CCITT



    Permutations & Combinations. Version FSL1.0 27th October 1994
    Gordon Charlton - gordon@charlton.demon.co.uk


    TESTING PERMS COMBS



    GAUSS V1.0c 19 February 2012 EFC
    TESTING GAUSS



    R250 V1.5c 19 February 2012 EFC
    TESTING LCM_RAND

    TESTING R250D



    SHELLSORT v1.3c 30 November 2023 cgm,km
    TESTING }SHELLSORT


    Goodbye.
    $
    ====== End of system tests transcript ======



    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From Krishna Myneni@krishna.myneni@ccreweb.org to comp.lang.forth on Thu Mar 19 12:37:46 2026
    From Newsgroup: comp.lang.forth

    On 3/19/26 12:34 PM, Krishna Myneni wrote:
    A new version of kForth-32 (v 2.7.0) is now available for 32-bit/64-bit Linux users, at the link below. ..
    Oops, I forgot the link:

    https://github.com/mynenik/kForth-32


    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From thresh3@thresh3@fastmail.com (Lev) to comp.lang.forth on Thu Mar 19 17:54:31 2026
    From Newsgroup: comp.lang.forth

    Krishna Myneni <krishna.myneni@ccreweb.org> wrote:

    This update of kForth-32 (v 2.7.0) mirrors recent substantial
    changes to kForth-64, in particular to the interpreter/compiler
    which has been rewritten to align with the recognizers proposal
    for the Forth 202x standard.

    How much did the rewrite change your text interpreter? The
    recognizer proposal essentially factors what was a monolithic
    INTERPRET into a chain of recognizers -- rec-name, rec-number,
    etc. -- each returning a typed translation.

    I'm curious whether you found this made things cleaner in
    practice or just moved the complexity around. The proposal
    defines translate: for building new recognizer types, which
    seems like it could open up things like recognizing hex
    literals with 0x prefix or string literals inline, without
    touching the core interpreter. Have you experimented with
    custom recognizers beyond the standard set?

    Also -- integrated data/fp stack is unusual. What drove that
    design choice over separate stacks?
    --- Synchronet 3.21d-Linux NewsLink 1.2