• Division on riscv

    From albert@albert@spenarnc.xs4all.nl to comp.lang.forth on Sat Nov 8 14:47:42 2025
    From Newsgroup: comp.lang.forth

    The division in ciforth was default symmetric. The motivation is that
    SM/REM is a wrapper for the single instruction IDIV while floored
    is more complicated.
    Signed division has a speed advantage for modular arithmetic too.
    [
    Normalizing a remainder to the range 0 .. _m is easily done by

    : _norm_-m DUP 0< _m @ AND + ;

    (Note that all constituents are assembler primitives, such that
    they can be collated into one assembler word.)
    ]

    There are m modulo classes modulo m. Then it embarrasses mathematicians
    that `` I1 @ m MOD '' and `` I2 @ m MOD '' are not equal,
    despite i1 and i2 having the same modulo class.
    Symmetric division:
    2 3 MOD .
    2 OK
    -1 3 MOD .
    -1 OK

    So gforth (at least 0.7.3) avoids this
    2 3 MOD . 2 ok
    -1 3 MOD . 2 ok

    I planned to introduce to change from symmetric division to floored
    division at version 6 of ciforth (it warrants a
    major version change from 5 to 6).
    However the riscv situation is unclear.

    The document I have of the RISCV instruction set doesn't specify
    symmetric or floored division for the DIV instruction, either way! Experimentation shows that for my boards (orange risc RV2 and Dongshan)
    the DIV instruction is symmetric.

    Note: instruction set manuals for RISCV are hard to come by.
    The official documents don't specify the bit pattern.
    A question on stack-over-flow to ask for documentation about this was
    shot down by the men-in-power at stack overflow. It got me fuming.
    Instead of an absolute autoritive instruction manual for i86
    by Intel, are there now competing, possibly incomplete manuals by
    each supplier?

    So should I continue with changing from symmetric to floored?

    Groetjes Albert
    --
    The Chinese government is satisfied with its military superiority over USA.
    The next 5 year plan has as primary goal to advance life expectancy
    over 80 years, like Western Europe.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.lang.forth on Sat Nov 8 17:20:39 2025
    From Newsgroup: comp.lang.forth

    albert@spenarnc.xs4all.nl writes:
    The document I have of the RISCV instruction set doesn't specify
    symmetric or floored division for the DIV instruction, either way!

    The official documentation is "The RISC-V Instruction Set Manual
    Volume I -- Unprivileged Architecture". A somewhat recent version <https://lists.riscv.org/g/sig-documentation/attachment/266/0/riscv-unprivileged.pdf>
    says (in 'Chapter 13. "M" Extension for Integer Multiplication and
    Division, Version 2.0'):

    |DIV and DIVU perform an XLEN bits by XLEN bits signed and unsigned
    |integer division of rs1 by rs2, rounding towards zero. REM and REMU
    |provide the remainder of the corresponding division operation. For
    |REM, the sign of a nonzero result equals the sign of the dividend.

    I.e., DIV is symmetric, and REM gives its remainer.

    Here are Gforth's /s, /f, mods and modf (/ is /f and mod is modf):

    see /s
    Code /s
    15B64: addi s5,s5,8
    15B66: ld a5,8(s6)
    15B6A: addi s6,s6,8
    15B6C: div s9,a5,s9
    15B70: ld a5,0(s5)
    15B74: jr a5
    end-code
    ok
    see /f
    Code /f
    15AA4: addi s5,s5,8
    15AA6: ld a5,8(s6)
    15AAA: mv a4,s9
    15AAC: addi s6,s6,8
    15AAE: xor a3,a5,s9
    15AB2: div s9,a5,s9
    15AB6: bge a3,zero,$15AC6
    15ABA: rem a5,a5,a4
    15ABE: sltu a5,zero,a5
    15AC2: sub s9,s9,a5
    15AC6: ld a5,0(s5)
    15ACA: jr a5
    end-code
    ok
    see mods
    Code mods
    15B76: addi s5,s5,8
    15B78: ld a5,8(s6)
    15B7C: addi s6,s6,8
    15B7E: rem s9,a5,s9
    15B82: ld a5,0(s5)
    15B86: jr a5
    end-code
    ok
    see modf
    Code modf
    15ACC: addi s5,s5,8
    15ACE: ld a4,8(s6)
    15AD2: mv a5,s9
    15AD4: addi s6,s6,8
    15AD6: xor a3,a4,s9
    15ADA: rem s9,a4,s9
    15ADE: bge a3,zero,$15AE8
    15AE2: beq s9,zero,$15AE8
    15AE6: add s9,s9,a5
    15AE8: ld a5,0(s5)
    15AEC: jr a5
    end-code

    Note: instruction set manuals for RISCV are hard to come by.

    Duckduckgo gave me the link above as first hit when I asked for "the
    risc-v instruction set manual volume i: unprivileged isa". This very
    specific request was suggested by my browser when I typed in "risc-v instruction set manual".

    Instead of an absolute autoritive instruction manual for i86
    by Intel, are there now competing, possibly incomplete manuals by
    each supplier?

    AMD documents what they do, and Intel document what they do. That has
    been the case since at least AMD introduced AMD64 was introduced in
    2003, possibly earlier (e.g., with 3DNow and SSE). In my practice,
    this has not been a problem. The same code usually works on both
    Intel and AMD CPUs; and if you use some instruction set extensions,
    and it works on one Intel processor, it may fail on the next one.

    So should I continue with changing from symmetric to floored?

    How does your uncertainty over the meaning of the instruction set have
    any relevance for that? If you don't know what the division
    instructions do, you cannot use them for any kind of division word,
    whether symmetric or floored. Fortunately, we do know it.

    - anton
    --
    M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
    comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
    New standard: https://forth-standard.org/
    EuroForth 2025 CFP: http://www.euroforth.org/ef25/cfp.html
    EuroForth 2025 registration: https://euro.theforth.net/
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Sun Nov 9 13:40:21 2025
    From Newsgroup: comp.lang.forth

    On 9/11/2025 12:47 am, albert@spenarnc.xs4all.nl wrote:
    ...
    So should I continue with changing from symmetric to floored?

    Old news but as mathematician John Wavrik reported to the ANS committee:

    "It is most important that the arithmetic operations be uniform among
    all systems. A uniformly bad choice is better than chaos."

    My understanding is Moore chose whatever the system/hardware provided irrespective of what other systems (including his own) did i.e. he
    wasn't ideologically aligned and didn't much care whether it broke
    previous code. The past was dead as far as he was concerned and he
    owed it nothing.

    AFAICS those are your two choices.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Sun Nov 9 18:17:34 2025
    From Newsgroup: comp.lang.forth

    On 9/11/2025 12:47 am, albert@spenarnc.xs4all.nl wrote:
    The division in ciforth was default symmetric. The motivation is that
    SM/REM is a wrapper for the single instruction IDIV while floored
    is more complicated.
    Signed division has a speed advantage for modular arithmetic too.
    [
    Normalizing a remainder to the range 0 .. _m is easily done by

    : _norm_-m DUP 0< _m @ AND + ;

    (Note that all constituents are assembler primitives, such that
    they can be collated into one assembler word.)
    ]

    There are m modulo classes modulo m. Then it embarrasses mathematicians
    that `` I1 @ m MOD '' and `` I2 @ m MOD '' are not equal,
    despite i1 and i2 having the same modulo class.
    Symmetric division:
    2 3 MOD .
    2 OK
    -1 3 MOD .
    -1 OK

    So gforth (at least 0.7.3) avoids this
    2 3 MOD . 2 ok
    -1 3 MOD . 2 ok
    ...

    2 3 MOD . 2 ok
    -1 3 MOD . 0 ok

    All 'mod' operators in polyForth were unsigned ;-)

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From albert@albert@spenarnc.xs4all.nl to comp.lang.forth on Sun Nov 9 12:37:16 2025
    From Newsgroup: comp.lang.forth

    In article <6910400f$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    On 9/11/2025 12:47 am, albert@spenarnc.xs4all.nl wrote:
    The division in ciforth was default symmetric. The motivation is that
    SM/REM is a wrapper for the single instruction IDIV while floored
    is more complicated.
    Signed division has a speed advantage for modular arithmetic too.
    [
    Normalizing a remainder to the range 0 .. _m is easily done by

    : _norm_-m DUP 0< _m @ AND + ;

    (Note that all constituents are assembler primitives, such that
    they can be collated into one assembler word.)
    ]

    There are m modulo classes modulo m. Then it embarrasses mathematicians
    that `` I1 @ m MOD '' and `` I2 @ m MOD '' are not equal,
    despite i1 and i2 having the same modulo class.
    Symmetric division:
    2 3 MOD .
    2 OK
    -1 3 MOD .
    -1 OK

    So gforth (at least 0.7.3) avoids this
    2 3 MOD . 2 ok
    -1 3 MOD . 2 ok
    ...

    2 3 MOD . 2 ok
    -1 3 MOD . 0 ok

    All 'mod' operators in polyForth were unsigned ;-)


    Interesting. I didn't think of that alternative.
    However that is only useful in modular arithmetic.

    There is a simple way to detect overflow in modular addition,
    for signed numbers.
    : _norm_-m DUP 0< _m @ AND + ; ( x -- xn ) \ -m<x<+m
    : +m + _m @ - _norm_-m ; ( an bn -- sumn )
    That can be changed to usigned, probably.
    As long as you restrict the modulo to a number less than 8000,0000,0000,0000 this might work equally well for unsigned numbers.
    For modulo arithmetic each input has to be in the range 0 .. _m @ .

    As numbers are normally unsigned, restricting MOD to unsigned number
    is not an option in my opinion. Also it is a gratitious deviation from
    ISO 94, a big nono.

    Yes, in ciforth i have replaced WORD by NAME (or TOKEN), FIND by FOUND
    and >IN by PP with good reason. Gratitious, no.

    Groetjes Albert
    --
    The Chinese government is satisfied with its military superiority over USA.
    The next 5 year plan has as primary goal to advance life expectancy
    over 80 years, like Western Europe.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Mon Nov 10 12:14:38 2025
    From Newsgroup: comp.lang.forth

    On 9/11/2025 10:37 pm, albert@spenarnc.xs4all.nl wrote:
    In article <6910400f$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    On 9/11/2025 12:47 am, albert@spenarnc.xs4all.nl wrote:
    The division in ciforth was default symmetric. The motivation is that
    SM/REM is a wrapper for the single instruction IDIV while floored
    is more complicated.
    Signed division has a speed advantage for modular arithmetic too.
    [
    Normalizing a remainder to the range 0 .. _m is easily done by

    : _norm_-m DUP 0< _m @ AND + ;

    (Note that all constituents are assembler primitives, such that
    they can be collated into one assembler word.)
    ]

    There are m modulo classes modulo m. Then it embarrasses mathematicians
    that `` I1 @ m MOD '' and `` I2 @ m MOD '' are not equal,
    despite i1 and i2 having the same modulo class.
    Symmetric division:
    2 3 MOD .
    2 OK
    -1 3 MOD .
    -1 OK

    So gforth (at least 0.7.3) avoids this
    2 3 MOD . 2 ok
    -1 3 MOD . 2 ok
    ...

    2 3 MOD . 2 ok
    -1 3 MOD . 0 ok

    All 'mod' operators in polyForth were unsigned ;-)


    Interesting. I didn't think of that alternative.
    However that is only useful in modular arithmetic.

    There is a simple way to detect overflow in modular addition,
    for signed numbers.
    : _norm_-m DUP 0< _m @ AND + ; ( x -- xn ) \ -m<x<+m
    : +m + _m @ - _norm_-m ; ( an bn -- sumn )
    That can be changed to usigned, probably.
    As long as you restrict the modulo to a number less than 8000,0000,0000,0000 this might work equally well for unsigned numbers.
    For modulo arithmetic each input has to be in the range 0 .. _m @ .

    As numbers are normally unsigned, restricting MOD to unsigned number
    is not an option in my opinion. Also it is a gratitious deviation from
    ISO 94, a big nono.
    ...

    Because you place value on standards? Standards give the illusion of
    stability but the reality is the world moves on before our very eyes.

    I can't think of that many instances where I've used signed division. Are there use cases for floored? Sure. But if the argument be 'a positive mod
    is best' then floored doesn't guarantee that. Realizing there's no one right signed integer division method, I can't get excited about it. I made peace with polyForth's unsigned mods knowing that if signed was needed, it could easily be emulated.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.lang.forth on Mon Nov 10 06:46:20 2025
    From Newsgroup: comp.lang.forth

    dxf <dxforth@gmail.com> writes:
    I can't think of that many instances where I've used signed division.

    When Gforth switched from symmetric to floored for / MOD, etc., there
    were no complaints that I remember.

    This lack of complaints indicates that division with negative operands
    either does not occur, or that it occurs, but the users wanted floored
    division and have not used the earlier symmetric /, MOD etc., but have
    used FM/MOD instead.

    In the latter case, the users might have started using /, MOD etc. for
    such cases in the meantime, and switching back might lead to
    complaints. We are not going to switch back to find that out.

    There have been regular discussions of floored vs. symmetric division,
    and the Forth-83 standardization committee found it important enough
    to specify that /, MOD etc. are floored, so division with negative
    operands is at least on the mind of people.

    Forth-94 specified /, MOD etc. as implementation-defined, which has
    led to the regular discussions mentioned above.

    Bernd Paysan, who switched Gforth to floored, used to work on
    signal-processing equipment for audio applications. These signals
    tend to be signed numbers (for positive and negative voltages), and
    when you scale them with */, rounding towards 0 leads to flatness when
    the signal passes through 0 that was not there in the original signal.
    Floored division avoids that; rounded division may avoid that, too,
    but the round-towards-even tie-breaker is probably a problem.

    Are
    there use cases for floored? Sure. But if the argument be 'a positive mod >is best' then floored doesn't guarantee that.

    If the divisor is positive, the result of floored MOD is >=0.

    If you have negative divisors and want results that are >=0, there is
    also something called "Euclidean division" <https://en.wikipedia.org/wiki/Euclidean_division> where the remainder satisfies 0<=remainder<|divisor|.

    As long as the divisor is positive, the result of Euclidean division
    and floored division are the same, and the remainders are the same,
    too.

    If you look at <https://en.wikipedia.org/wiki/Modulo_operation#In_programming_languages>,
    you find that there are some programming languages that specify
    Euclidean modulo, sometimes just that and sometimes in addition to
    symmetric ("truncated" in the table) or rounded; there seems to be no
    language that has both Euclidean and floored, which may indicate that
    the cases where they differ (i.e., negative divisors) occur too rarely
    to provide both. In any case, the variants and the page itself
    indicate that the topic is not just on the minds of the Forth
    community.

    - anton
    --
    M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
    comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
    New standard: https://forth-standard.org/
    EuroForth 2025 CFP: http://www.euroforth.org/ef25/cfp.html
    EuroForth 2025 registration: https://euro.theforth.net/
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From albert@albert@spenarnc.xs4all.nl to comp.lang.forth on Mon Nov 10 09:28:05 2025
    From Newsgroup: comp.lang.forth

    In article <2025Nov10.074620@mips.complang.tuwien.ac.at>,
    Anton Ertl <anton@mips.complang.tuwien.ac.at> wrote:
    dxf <dxforth@gmail.com> writes:
    I can't think of that many instances where I've used signed division.

    When Gforth switched from symmetric to floored for / MOD, etc., there
    were no complaints that I remember.

    This lack of complaints indicates that division with negative operands
    either does not occur, or that it occurs, but the users wanted floored >division and have not used the earlier symmetric /, MOD etc., but have
    used FM/MOD instead.

    In the latter case, the users might have started using /, MOD etc. for
    such cases in the meantime, and switching back might lead to
    complaints. We are not going to switch back to find that out.

    There have been regular discussions of floored vs. symmetric division,
    and the Forth-83 standardization committee found it important enough
    to specify that /, MOD etc. are floored, so division with negative
    operands is at least on the mind of people.

    Forth-94 specified /, MOD etc. as implementation-defined, which has
    led to the regular discussions mentioned above.

    Bernd Paysan, who switched Gforth to floored, used to work on >signal-processing equipment for audio applications. These signals
    tend to be signed numbers (for positive and negative voltages), and
    when you scale them with */, rounding towards 0 leads to flatness when
    the signal passes through 0 that was not there in the original signal. >Floored division avoids that; rounded division may avoid that, too,
    but the round-towards-even tie-breaker is probably a problem.

    Are
    there use cases for floored? Sure. But if the argument be 'a positive mod >>is best' then floored doesn't guarantee that.

    If the divisor is positive, the result of floored MOD is >=0.

    If you have negative divisors and want results that are >=0, there is
    also something called "Euclidean division" ><https://en.wikipedia.org/wiki/Euclidean_division> where the remainder >satisfies 0<=remainder<|divisor|.

    As long as the divisor is positive, the result of Euclidean division
    and floored division are the same, and the remainders are the same,
    too.

    If you look at ><https://en.wikipedia.org/wiki/Modulo_operation#In_programming_languages>, >you find that there are some programming languages that specify
    Euclidean modulo, sometimes just that and sometimes in addition to
    symmetric ("truncated" in the table) or rounded; there seems to be no >language that has both Euclidean and floored, which may indicate that
    the cases where they differ (i.e., negative divisors) occur too rarely
    to provide both. In any case, the variants and the page itself
    indicate that the topic is not just on the minds of the Forth
    community.

    The more mindless, the more problems. I think that FM/MOD and SM/REM
    are the right decision for Forth. I don't like it that a simple program
    ported from ciforth versus gforth or vice versa stops working because
    of floored/symmetric.
    And then discover that the problem lies in a standard word
    that is implementation defined and overlooked.
    I agree with the theoretical underpinning of gforth's decision
    and ciforth will be compatible in the upcoming version 6.#.#.
    MOD that is compatible with FM/MOD.

    I have a modulo arithmetic screen +m -m *m /m (modulo is _m).
    Negative signed or unsigned modulo is all but nonsensical
    for 64 bit.
    So my modulo arithmetic is based on a positive modulo,
    allowing efficient implementation using SM/REM that is probably
    a low level word. (In riscv ciforth it is.)


    - anton

    Groetjes Albert
    --
    The Chinese government is satisfied with its military superiority over USA.
    The next 5 year plan has as primary goal to advance life expectancy
    over 80 years, like Western Europe.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Mon Nov 10 22:20:33 2025
    From Newsgroup: comp.lang.forth

    On 10/11/2025 5:46 pm, Anton Ertl wrote:
    dxf <dxforth@gmail.com> writes:
    I can't think of that many instances where I've used signed division.

    When Gforth switched from symmetric to floored for / MOD, etc., there
    were no complaints that I remember.
    ...

    Forth-83 got complaints. So much so that it put the fear of Akhenaten
    into the following committee.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From albert@albert@spenarnc.xs4all.nl to comp.lang.forth on Mon Nov 10 12:24:47 2025
    From Newsgroup: comp.lang.forth

    In article <6911ca81$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    On 10/11/2025 5:46 pm, Anton Ertl wrote:
    dxf <dxforth@gmail.com> writes:
    I can't think of that many instances where I've used signed division.

    When Gforth switched from symmetric to floored for / MOD, etc., there
    were no complaints that I remember.
    ...

    Forth-83 got complaints. So much so that it put the fear of Akhenaten
    into the following committee.

    Gforth gets none. The world has progressed.

    Groetjes Albert

    --
    The Chinese government is satisfied with its military superiority over USA.
    The next 5 year plan has as primary goal to advance life expectancy
    over 80 years, like Western Europe.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Tue Nov 11 12:34:32 2025
    From Newsgroup: comp.lang.forth

    On 10/11/2025 10:24 pm, albert@spenarnc.xs4all.nl wrote:
    In article <6911ca81$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    On 10/11/2025 5:46 pm, Anton Ertl wrote:
    dxf <dxforth@gmail.com> writes:
    I can't think of that many instances where I've used signed division.

    When Gforth switched from symmetric to floored for / MOD, etc., there
    were no complaints that I remember.
    ...

    Forth-83 got complaints. So much so that it put the fear of Akhenaten
    into the following committee.

    Gforth gets none. The world has progressed.

    The Forth-94 world moved solidly behind symmetric after the Forth-83 misstep. Win32Forth continued with floored and even there it was planned to go symmetric in support of Forth having a consistent division method.

    But as you say, the world moves on. Gforth hasn't had a Windows release for
    5 years. One could just as easily conclude no complaints in today's world means no interest.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.lang.forth on Tue Nov 11 08:00:23 2025
    From Newsgroup: comp.lang.forth

    albert@spenarnc.xs4all.nl writes:
    I don't like it that a simple program
    ported from ciforth versus gforth or vice versa stops working because
    of floored/symmetric.

    Do you have such programs?

    If you implement floored in ciforth, you will have the same problem
    when running such programs on a Forth system where /, MOD etc. are
    symmetric.

    A way to deal with that may be to use a checking /, MOD etc., and
    replace occurences where the check reports problems with FM/MOD (or
    SM/REM where that is desired). E.g.:

    : / ( n1 n2 -- n )
    2dup xor 0< if \ there may be a difference between floored and symmetric
    /mod swap abort" there is a difference between floored and symmetric"
    else
    /
    then ;

    : foo / ;

    7 3 foo ok 1
    . 2 ok
    -6 2 foo ok 1
    . -3 ok
    -7 2 foo
    *the terminal*:13:6: error: there is a difference between floored and symmetric -7 2 >>>foo<<<

    In Gforth the backtrace resulting from the abort" tells me the
    location of the / that had the problematic parameters, so you can
    decide whether you want to use FM/MOD or SM/REM there (or maybe
    the Gforth-specific /F or /S).

    - anton
    --
    M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
    comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
    New standard: https://forth-standard.org/
    EuroForth 2025 CFP: http://www.euroforth.org/ef25/cfp.html
    EuroForth 2025 registration: https://euro.theforth.net/
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From albert@albert@spenarnc.xs4all.nl to comp.lang.forth on Tue Nov 11 12:27:28 2025
    From Newsgroup: comp.lang.forth

    In article <2025Nov10.074620@mips.complang.tuwien.ac.at>,
    Anton Ertl <anton@mips.complang.tuwien.ac.at> wrote:
    dxf <dxforth@gmail.com> writes:
    I can't think of that many instances where I've used signed division.

    When Gforth switched from symmetric to floored for / MOD, etc., there
    were no complaints that I remember.

    This lack of complaints indicates that division with negative operands
    either does not occur, or that it occurs, but the users wanted floored >division and have not used the earlier symmetric /, MOD etc., but have
    used FM/MOD instead.

    Indeed. The intent of the 94 standard was that one can choose
    where it matters and ignore where it doesn't matter.
    That makes the choice less important.

    - anton
    --
    The Chinese government is satisfied with its military superiority over USA.
    The next 5 year plan has as primary goal to advance life expectancy
    over 80 years, like Western Europe.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From albert@albert@spenarnc.xs4all.nl to comp.lang.forth on Tue Nov 11 12:31:28 2025
    From Newsgroup: comp.lang.forth

    In article <2025Nov11.090023@mips.complang.tuwien.ac.at>,
    Anton Ertl <anton@mips.complang.tuwien.ac.at> wrote:
    albert@spenarnc.xs4all.nl writes:
    I don't like it that a simple program
    ported from ciforth versus gforth or vice versa stops working because
    of floored/symmetric.

    Do you have such programs?
    You got me there. It is highly hypothetical.

    Have you got programs ported from elsewhere that have problems
    on gforth, given that gforth is more widely used?

    - anton
    --
    The Chinese government is satisfied with its military superiority over USA.
    The next 5 year plan has as primary goal to advance life expectancy
    over 80 years, like Western Europe.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.lang.forth on Tue Nov 11 14:03:35 2025
    From Newsgroup: comp.lang.forth

    albert@spenarnc.xs4all.nl writes:
    Have you got programs ported from elsewhere that have problems
    on gforth, given that gforth is more widely used?

    I don't remember any programs where division was a porting problem.

    - anton
    --
    M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
    comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
    New standard: https://forth-standard.org/
    EuroForth 2025 CFP: http://www.euroforth.org/ef25/cfp.html
    EuroForth 2025 registration: https://euro.theforth.net/
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Wed Nov 12 12:27:16 2025
    From Newsgroup: comp.lang.forth

    On 11/11/2025 10:27 pm, albert@spenarnc.xs4all.nl wrote:
    In article <2025Nov10.074620@mips.complang.tuwien.ac.at>,
    Anton Ertl <anton@mips.complang.tuwien.ac.at> wrote:
    dxf <dxforth@gmail.com> writes:
    I can't think of that many instances where I've used signed division.

    When Gforth switched from symmetric to floored for / MOD, etc., there
    were no complaints that I remember.

    This lack of complaints indicates that division with negative operands
    either does not occur, or that it occurs, but the users wanted floored
    division and have not used the earlier symmetric /, MOD etc., but have
    used FM/MOD instead.

    Indeed. The intent of the 94 standard was that one can choose
    where it matters and ignore where it doesn't matter.
    That makes the choice less important.

    In fact it made choice unnecessary. The immediate concern of '94 however
    was avoiding a repeat of the '83 fallout - even if it meant ditching standardization for the moment:

    A.3.2.2.1 Integer division

    "This compromise protects the investment made in current Forth applications"

    The TC effectively pushed the problem of standardizing division into the future, hoping future forthers and Standard would resolve it. The same
    for NOT (another '83 blunder). But as is often the case, what is put off
    is never completed.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.lang.forth on Wed Nov 12 07:16:45 2025
    From Newsgroup: comp.lang.forth

    dxf <dxforth@gmail.com> writes:
    The TC effectively pushed the problem of standardizing division into the >future, hoping future forthers and Standard would resolve it.

    Another way to view it is that Forth-94 provides FM/MOD and SM/REM for
    those who need a specific behaviour and /, MOD etc. for those who
    don't.

    As for common practice, which would be the foundation of standardizing
    one behaviour, among the Forth systems that I often check, on
    iforth, lxf, SwiftForth64, and VFX64 / is symmetric, and on gforth it
    is floored.

    BTW, another advantage of floored / is that "2 /" and 2/ have the same
    result.

    The same
    for NOT (another '83 blunder). But as is often the case, what is put off
    is never completed.

    Forth-94 has 0= that takes 0/non-zero inputs and produces flag outputs
    (i.e., like the Forth-79 NOT, except that TRUE is all-bits-set in
    Forth-94), and INVERT for the Forth-83 NOT. These words have
    certainly been good enough in my work for the last three decades. Do
    we really need NOT?

    Apparently some people have the desire, so 4 out of 5 systems that I
    often check include a NOT. Is there common practice there? iForth,
    lxf, and SwiftForth64 have a NOT that behaves like 0=, while VFX64 has
    a NOT that behaves like INVERT. Gforth does not have a NOT.

    So no common practice has emerged for / nor for NOT, so it is unlikely
    that (more) standardization will happen in this area soon.

    - anton
    --
    M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
    comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
    New standard: https://forth-standard.org/
    EuroForth 2025 CFP: http://www.euroforth.org/ef25/cfp.html
    EuroForth 2025 registration: https://euro.theforth.net/
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From minforth@minforth@gmx.net to comp.lang.forth on Wed Nov 12 11:13:10 2025
    From Newsgroup: comp.lang.forth

    Am 12.11.2025 um 08:16 schrieb Anton Ertl:
    dxf <dxforth@gmail.com> writes:
    The TC effectively pushed the problem of standardizing division into the
    future, hoping future forthers and Standard would resolve it.

    Another way to view it is that Forth-94 provides FM/MOD and SM/REM for
    those who need a specific behaviour and /, MOD etc. for those who
    don't.

    As for common practice, which would be the foundation of standardizing
    one behaviour, among the Forth systems that I often check, on
    iforth, lxf, SwiftForth64, and VFX64 / is symmetric, and on gforth it
    is floored.

    BTW, another advantage of floored / is that "2 /" and 2/ have the same result.

    The same
    for NOT (another '83 blunder). But as is often the case, what is put off
    is never completed.

    Forth-94 has 0= that takes 0/non-zero inputs and produces flag outputs
    (i.e., like the Forth-79 NOT, except that TRUE is all-bits-set in
    Forth-94), and INVERT for the Forth-83 NOT. These words have
    certainly been good enough in my work for the last three decades. Do
    we really need NOT?

    Apparently some people have the desire, so 4 out of 5 systems that I
    often check include a NOT. Is there common practice there? iForth,
    lxf, and SwiftForth64 have a NOT that behaves like 0=, while VFX64 has
    a NOT that behaves like INVERT. Gforth does not have a NOT.

    So no common practice has emerged for / nor for NOT, so it is unlikely
    that (more) standardization will happen in this area soon.

    Agreed.

    Discussions like this remind me of the saying, ‘fly with the
    eagles or scratch with the chickens’. Getting worked up about remainder
    or modulus after decades of Forth doesn't get us anywhere, it's only
    good for the chickens. There are other 'eagle' areas that need work,
    such as libraries.

    But Forth no longer has the critical mass for eagle topics, neither in
    the software industry nor in the open source or hobby sector.

    But to remain constructive: it is positive that at least the existing
    standard is being maintained.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Wed Nov 12 21:23:32 2025
    From Newsgroup: comp.lang.forth

    On 12/11/2025 6:16 pm, Anton Ertl wrote:
    dxf <dxforth@gmail.com> writes:
    The TC effectively pushed the problem of standardizing division into the
    future, hoping future forthers and Standard would resolve it.

    Another way to view it is that Forth-94 provides FM/MOD and SM/REM for
    those who need a specific behaviour and /, MOD etc. for those who
    don't.

    As for common practice, which would be the foundation of standardizing
    one behaviour, among the Forth systems that I often check, on
    iforth, lxf, SwiftForth64, and VFX64 / is symmetric, and on gforth it
    is floored.

    BTW, another advantage of floored / is that "2 /" and 2/ have the same result.

    The same
    for NOT (another '83 blunder). But as is often the case, what is put off
    is never completed.

    Forth-94 has 0= that takes 0/non-zero inputs and produces flag outputs
    (i.e., like the Forth-79 NOT, except that TRUE is all-bits-set in
    Forth-94), and INVERT for the Forth-83 NOT. These words have
    certainly been good enough in my work for the last three decades. Do
    we really need NOT?

    Apparently some people have the desire, so 4 out of 5 systems that I
    often check include a NOT. Is there common practice there? iForth,
    lxf, and SwiftForth64 have a NOT that behaves like 0=, while VFX64 has
    a NOT that behaves like INVERT. Gforth does not have a NOT.

    So no common practice has emerged for / nor for NOT, so it is unlikely
    that (more) standardization will happen in this area soon.

    On the contrary. The common practice for Forth-94 systems was symmetric division and INVERT paved the way for the return of 0= NOT. What was
    lacking was the will to standardize - putting pressure on the holdouts.
    The latter ended with Forth-94.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From albert@albert@spenarnc.xs4all.nl to comp.lang.forth on Wed Nov 12 12:27:03 2025
    From Newsgroup: comp.lang.forth

    In article <2025Nov12.081645@mips.complang.tuwien.ac.at>,
    Anton Ertl <anton@mips.complang.tuwien.ac.at> wrote:
    dxf <dxforth@gmail.com> writes:
    The TC effectively pushed the problem of standardizing division into the >>future, hoping future forthers and Standard would resolve it.

    Another way to view it is that Forth-94 provides FM/MOD and SM/REM for
    those who need a specific behaviour and /, MOD etc. for those who
    don't.

    As for common practice, which would be the foundation of standardizing
    one behaviour, among the Forth systems that I often check, on
    iforth, lxf, SwiftForth64, and VFX64 / is symmetric, and on gforth it
    is floored.

    BTW, another advantage of floored / is that "2 /" and 2/ have the same >result.

    The same
    for NOT (another '83 blunder). But as is often the case, what is put off >>is never completed.

    Forth-94 has 0= that takes 0/non-zero inputs and produces flag outputs
    (i.e., like the Forth-79 NOT, except that TRUE is all-bits-set in
    Forth-94), and INVERT for the Forth-83 NOT. These words have
    certainly been good enough in my work for the last three decades. Do
    we really need NOT?

    Apparently some people have the desire, so 4 out of 5 systems that I
    often check include a NOT. Is there common practice there? iForth,
    lxf, and SwiftForth64 have a NOT that behaves like 0=, while VFX64 has
    a NOT that behaves like INVERT. Gforth does not have a NOT.

    So no common practice has emerged for / nor for NOT, so it is unlikely
    that (more) standardization will happen in this area soon.

    I designed a Forth like language of about 80 words, not minimalistic,
    but small.
    But present are:
    true false not \ boolean operators
    invert \ mask operators
    negate \ integer operators
    are in the language and
    < > <= >= \ comparing integers.
    <> = \ comparing whatever.
    OTOH 0= is not. The burden that <= is missing or that you must use
    '- IF' if you mean '<> IF' are the little things that hurt
    newbies.


    - anton
    --
    M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html >comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
    New standard: https://forth-standard.org/
    EuroForth 2025 CFP: http://www.euroforth.org/ef25/cfp.html
    EuroForth 2025 registration: https://euro.theforth.net/
    --
    The Chinese government is satisfied with its military superiority over USA.
    The next 5 year plan has as primary goal to advance life expectancy
    over 80 years, like Western Europe.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.lang.forth on Thu Nov 13 07:10:05 2025
    From Newsgroup: comp.lang.forth

    minforth <minforth@gmx.net> writes:
    Discussions like this remind me of the saying, ‘fly with the
    eagles or scratch with the chickens’. Getting worked up about remainder
    or modulus after decades of Forth doesn't get us anywhere, it's only
    good for the chickens. There are other 'eagle' areas that need work,
    such as libraries.

    But Forth no longer has the critical mass for eagle topics, neither in
    the software industry nor in the open source or hobby sector.

    I don't think that you need a critical mass for eagle stuff, on the
    contrary, the eagle stuff tends to first come up in research projects
    where only a few people work on it and use it. And then the stuff is
    either forgotten (as seems to happen with the Ivy/Deputy work <http://ivy.cs.berkeley.edu/ivywiki/uploads/deputy-manual.html>), or
    it spreads slowly, in a winding way until it finds acceptance in the mainstream.

    An example of the latter is the Edinburgh LCF project for a theorem
    prover; the theorem prover is long forgotten, but in the course of
    this research Robin Milner and his collaborators developed ML with
    many eagle features, among them type inference. ML and its offspring,
    Standard ML, Ocaml, and F# have been minority languages since then,
    but at least not died out. Type inference has spread, first to other
    minority languages, in the last decade or so to mainstream languages
    like Java.

    Rust was worked on as a personal project by Graydon Hoare starting in
    2006. He wrote <http://venge.net/graydon/talks/intro-talk-2.pdf> that
    there is "hardly anything" new in Rust and mentions a number of
    languages that Rust picks from. To me it looks like it is strongly
    influenced from ML in many respects, not just type inference; the most
    obvious other feature from ML is what Rust calls enumerations, and the matching; however, in many respects Rust is different from ML, in
    particular it is designed for imperative programming, whereas ML is
    designed for functional programming. Interestingly, Hoare does not
    mention ML (even though the first Rust compiler was written in Ocaml),
    but maybe that influence has come through one of the other languages
    he mentions. Rust has later become a Mozilla project, and later
    became independent of Mozilla; it is gaining popularity, and may
    become mainstream soon.

    Bottom line: eagle stuff starts small and takes a long while to
    spread. You don't need "critical mass" to develop eagle stuff. You
    just develop it, and if you are lucky, it spreads and becomes
    mainstream.

    A standard for an existing language is not the place to introduce
    eagle stuff. This is particularly true of standards based on common
    practice like the Forth standard; in some other languages (Java, C++)
    the standard leads and the implementations follow, but Forth is not
    one of these languages.

    Back to Forth:

    The most eagle-like thing in the standards work is recognizers, and it
    seems like we are reaching a consensus among the standardization
    committee <https://forth-standard.org/proposals/recognizer-committee-proposal-2025-09-11#contribution-412>.
    But note that the late Matthias Trute implemented recognizers in
    amForth in 2011, and he made a proposal for standardization in 2014.
    Bernd Paysan picked up recognizers pretty soon, VFX and other systems
    have also picked them up, but then we needed 11 years to reach a
    consensus in the committee; and I hope it holds, and we will have the
    final decision soon; in the meantime, if you have any feedback on the
    proposal, please add it as a reply to the proposal; note that, while
    name changes (bikeshedding) are always a favourite among repliers, the
    names in the proposal have been found in lengthy discussions among the committee, and are unlikely to change.

    As for other eagle features, you have to look at systems. E.g., in
    Gforth we have closures <https://net2o.de/gforth/Closures.html>,
    multi-tasking with message queues
    <https://net2o.de/gforth/Message-queues.html> (although the actor
    model also started in 1973, like ML), user-defined TO (etc.) behaviour <https://net2o.de/gforth/Words-with-user_002ddefined-TO-etc_002e.html>, user-defined "COMPILE," <https://net2o.de/gforth/User_002ddefined-compile_002dcomma.html>, and
    you can set interpretation and compilation semantics of a word pretty arbitrarily <https://net2o.de/gforth/Header-methods.html>, which has
    made it possible to implement, e.g., FORWARD <https://net2o.de/gforth/Calls-and-returns.html#index-forward-_0028-_0022name_0022-_002d_002d-_0029-gforth_002d1_002e0>.

    Maybe other Forth systems will pick some of these features up, maybe
    they won't.

    One area where there has been a lot of work in recent times is in the programming environment, with stuff like Gforth's status bar, VFX's
    status prompt, LOCATE and WHERE spreading and getting new features.
    Does this stuff need standardization? I don't think so, because it
    does not occur in programs that you want to port. OTOH, we have a
    number of such words standardized (e.g., WORDS), so maybe we should
    standardize these words, too, for "programmer portability", as IIRC
    Elizabeth Rather put it.

    - anton
    --
    M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
    comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
    New standard: https://forth-standard.org/
    EuroForth 2025 CFP: http://www.euroforth.org/ef25/cfp.html
    EuroForth 2025 registration: https://euro.theforth.net/
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Thu Nov 13 20:28:48 2025
    From Newsgroup: comp.lang.forth

    On 12/11/2025 9:13 pm, minforth wrote:
    Am 12.11.2025 um 08:16 schrieb Anton Ertl:
    dxf <dxforth@gmail.com> writes:
    The TC effectively pushed the problem of standardizing division into the >>> future, hoping future forthers and Standard would resolve it.

    Another way to view it is that Forth-94 provides FM/MOD and SM/REM for
    those who need a specific behaviour and /, MOD etc. for those who
    don't.

    As for common practice, which would be the foundation of standardizing
    one behaviour, among the Forth systems that I often check, on
    iforth, lxf, SwiftForth64, and VFX64 / is symmetric, and on gforth it
    is floored.

    BTW, another advantage of floored / is that "2 /" and 2/ have the same
    result.

    The same
    for NOT (another '83 blunder).  But as is often the case, what is put off >>> is never completed.

    Forth-94 has 0= that takes 0/non-zero inputs and produces flag outputs
    (i.e., like the Forth-79 NOT, except that TRUE is all-bits-set in
    Forth-94), and INVERT for the Forth-83 NOT.  These words have
    certainly been good enough in my work for the last three decades.  Do
    we really need NOT?

    Apparently some people have the desire, so 4 out of 5 systems that I
    often check include a NOT.  Is there common practice there?  iForth,
    lxf, and SwiftForth64 have a NOT that behaves like 0=, while VFX64 has
    a NOT that behaves like INVERT.  Gforth does not have a NOT.

    So no common practice has emerged for / nor for NOT, so it is unlikely
    that (more) standardization will happen in this area soon.

    Agreed.

    Discussions like this remind me of the saying, ‘fly with the
    eagles or scratch with the chickens’. Getting worked up about remainder
    or modulus after decades of Forth doesn't get us anywhere, it's only
    good for the chickens. There are other 'eagle' areas that need work,
    such as libraries.

    But Forth no longer has the critical mass for eagle topics, neither in
    the software industry nor in the open source or hobby sector.

    But to remain constructive: it is positive that at least the existing standard is being maintained.

    Protected, yes. It should be renamed the FSC - Forth Security Council.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From albert@albert@spenarnc.xs4all.nl to comp.lang.forth on Thu Nov 13 10:58:14 2025
    From Newsgroup: comp.lang.forth

    In article <6915a4cf$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    On 12/11/2025 9:13 pm, minforth wrote:
    <SNIP>
    Discussions like this remind me of the saying, ‘fly with the
    eagles or scratch with the chickens’. Getting worked up about remainder
    or modulus after decades of Forth doesn't get us anywhere, it's only
    good for the chickens. There are other 'eagle' areas that need work,
    such as libraries.

    But Forth no longer has the critical mass for eagle topics, neither in
    the software industry nor in the open source or hobby sector.

    But to remain constructive: it is positive that at least the existing
    standard is being maintained.

    Protected, yes. It should be renamed the FSC - Forth Security Council.


    There are sufficient eagles here. Your remark make me suspect that
    you have not much real life experience in the field.

    Groetjes Albert
    --
    The Chinese government is satisfied with its military superiority over USA.
    The next 5 year plan has as primary goal to advance life expectancy
    over 80 years, like Western Europe.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Thu Nov 13 22:24:33 2025
    From Newsgroup: comp.lang.forth

    On 13/11/2025 8:58 pm, albert@spenarnc.xs4all.nl wrote:
    In article <6915a4cf$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    On 12/11/2025 9:13 pm, minforth wrote:
    <SNIP>
    Discussions like this remind me of the saying, ‘fly with the
    eagles or scratch with the chickens’. Getting worked up about remainder >>> or modulus after decades of Forth doesn't get us anywhere, it's only
    good for the chickens. There are other 'eagle' areas that need work,
    such as libraries.

    But Forth no longer has the critical mass for eagle topics, neither in
    the software industry nor in the open source or hobby sector.

    But to remain constructive: it is positive that at least the existing
    standard is being maintained.

    Protected, yes. It should be renamed the FSC - Forth Security Council.


    There are sufficient eagles here.

    Is that what they call themselves?

    Your remark make me suspect that
    you have not much real life experience in the field.

    What field is that? Luckily I never reached the level where I had to kiss ass.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From albert@albert@spenarnc.xs4all.nl to comp.lang.forth on Fri Nov 14 12:01:35 2025
    From Newsgroup: comp.lang.forth

    In article <6915bff1$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    On 13/11/2025 8:58 pm, albert@spenarnc.xs4all.nl wrote:
    <SNIP>
    In article <6915a4cf$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    There are sufficient eagles here.

    Is that what they call themselves?

    Apparently that is what you call yourself. The eagles that can
    ignore standards. I'm not one of those.


    Your remark make me suspect that
    you have not much real life experience in the field.

    What field is that? Luckily I never reached the level where I had to kiss ass.

    Writing real life programs for a living. You could see my resume on my
    website. The margin is too small to contain it. I had numerous conflicts,
    never kissed ass. Standards is a fact in real life.

    Groetjes Albert
    --
    The Chinese government is satisfied with its military superiority over USA.
    The next 5 year plan has as primary goal to advance life expectancy
    over 80 years, like Western Europe.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From minforth@minforth@gmx.net to comp.lang.forth on Fri Nov 14 12:16:32 2025
    From Newsgroup: comp.lang.forth

    Am 13.11.25 um 08:10 schrieb Anton Ertl:
    minforth <minforth@gmx.net> writes:
    Discussions like this remind me of the saying, ‘fly with the
    eagles or scratch with the chickens’. Getting worked up about remainder
    or modulus after decades of Forth doesn't get us anywhere, it's only
    good for the chickens. There are other 'eagle' areas that need work,
    such as libraries.

    But Forth no longer has the critical mass for eagle topics, neither in
    the software industry nor in the open source or hobby sector.

    I don't think that you need a critical mass for eagle stuff, on the
    contrary, the eagle stuff tends to first come up in research projects
    where only a few people work on it and use it. And then the stuff is
    either forgotten (as seems to happen with the Ivy/Deputy work <http://ivy.cs.berkeley.edu/ivywiki/uploads/deputy-manual.html>), or
    it spreads slowly, in a winding way until it finds acceptance in the mainstream.

    An example of the latter is the Edinburgh LCF project for a theorem
    prover; the theorem prover is long forgotten, but in the course of
    this research Robin Milner and his collaborators developed ML with
    many eagle features, among them type inference. ML and its offspring, Standard ML, Ocaml, and F# have been minority languages since then,
    but at least not died out. Type inference has spread, first to other minority languages, in the last decade or so to mainstream languages
    like Java.

    Rust was worked on as a personal project by Graydon Hoare starting in
    2006. He wrote <http://venge.net/graydon/talks/intro-talk-2.pdf> that
    there is "hardly anything" new in Rust and mentions a number of
    languages that Rust picks from. To me it looks like it is strongly influenced from ML in many respects, not just type inference; the most obvious other feature from ML is what Rust calls enumerations, and the matching; however, in many respects Rust is different from ML, in
    particular it is designed for imperative programming, whereas ML is
    designed for functional programming. Interestingly, Hoare does not
    mention ML (even though the first Rust compiler was written in Ocaml),
    but maybe that influence has come through one of the other languages
    he mentions. Rust has later become a Mozilla project, and later
    became independent of Mozilla; it is gaining popularity, and may
    become mainstream soon.

    Bottom line: eagle stuff starts small and takes a long while to
    spread. You don't need "critical mass" to develop eagle stuff. You
    just develop it, and if you are lucky, it spreads and becomes
    mainstream.

    A standard for an existing language is not the place to introduce
    eagle stuff. This is particularly true of standards based on common
    practice like the Forth standard; in some other languages (Java, C++)
    the standard leads and the implementations follow, but Forth is not
    one of these languages.

    Back to Forth:

    The most eagle-like thing in the standards work is recognizers, and it
    seems like we are reaching a consensus among the standardization
    committee <https://forth-standard.org/proposals/recognizer-committee-proposal-2025-09-11#contribution-412>.
    But note that the late Matthias Trute implemented recognizers in
    amForth in 2011, and he made a proposal for standardization in 2014.
    Bernd Paysan picked up recognizers pretty soon, VFX and other systems
    have also picked them up, but then we needed 11 years to reach a
    consensus in the committee; and I hope it holds, and we will have the
    final decision soon; in the meantime, if you have any feedback on the proposal, please add it as a reply to the proposal; note that, while
    name changes (bikeshedding) are always a favourite among repliers, the
    names in the proposal have been found in lengthy discussions among the committee, and are unlikely to change.

    As for other eagle features, you have to look at systems. E.g., in
    Gforth we have closures <https://net2o.de/gforth/Closures.html>, multi-tasking with message queues <https://net2o.de/gforth/Message-queues.html> (although the actor
    model also started in 1973, like ML), user-defined TO (etc.) behaviour <https://net2o.de/gforth/Words-with-user_002ddefined-TO-etc_002e.html>, user-defined "COMPILE," <https://net2o.de/gforth/User_002ddefined-compile_002dcomma.html>, and
    you can set interpretation and compilation semantics of a word pretty arbitrarily <https://net2o.de/gforth/Header-methods.html>, which has
    made it possible to implement, e.g., FORWARD <https://net2o.de/gforth/Calls-and-returns.html#index-forward-_0028-_0022name_0022-_002d_002d-_0029-gforth_002d1_002e0>.

    Maybe other Forth systems will pick some of these features up, maybe
    they won't.

    One area where there has been a lot of work in recent times is in the programming environment, with stuff like Gforth's status bar, VFX's
    status prompt, LOCATE and WHERE spreading and getting new features.
    Does this stuff need standardization? I don't think so, because it
    does not occur in programs that you want to port. OTOH, we have a
    number of such words standardized (e.g., WORDS), so maybe we should standardize these words, too, for "programmer portability", as IIRC
    Elizabeth Rather put it.

    Thanks for your insights. Of course, “chicken” and “eagle” do not refer
    to people, but to Forth-extending topics. What has been added to Forth
    in recent years are mostly minor improvements, with the exception of quotations and recognizers. Quotations are rather unwieldy for normal
    users, and recognizers are more for people who want to extend the Forth interpreter/compiler, which most normal users probably don't do.


    By ‘low critical mass’ I meant that there are hardly any normal users. Most of the few users are specialists, and many primarily maintain their
    own systems. That's not bad per se, since IMO Forth is more of a toolbox
    than a language that has to be customized for almost every project, such
    as in the embedded sector. However, this also makes it difficult to
    exchange ideas and solutions.


    I compare it a little to Lua. Even though the hype around LuaJit has
    subsided somewhat, there is a large user base, industry customers, and
    an active community. However, Lua also supports working with user data
    more than Forth, which does not even recognize dynamic strings in the standard. UTF-8 is also not supported (the XCHAR wordset is only
    rudimentary).


    But if Forth is primarily a toolbox for small systems, nothing will
    happen in this direction. OTOH multitasking or the integration of driver libraries are two 'eagle' topics which could serve the small system
    domain. However, Do-It-Yourself remains the Forth norm.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Sat Nov 15 02:36:47 2025
    From Newsgroup: comp.lang.forth

    On 14/11/2025 10:01 pm, albert@spenarnc.xs4all.nl wrote:
    In article <6915bff1$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    On 13/11/2025 8:58 pm, albert@spenarnc.xs4all.nl wrote:
    <SNIP>
    In article <6915a4cf$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote: >>> There are sufficient eagles here.

    Is that what they call themselves?

    Apparently that is what you call yourself. The eagles that can
    ignore standards. I'm not one of those.

    I've stopped telling myself Forth has a standard. That's all.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.lang.forth on Sun Nov 16 16:13:22 2025
    From Newsgroup: comp.lang.forth

    minforth <minforth@gmx.net> writes:
    Quotations are rather unwieldy for normal users,

    That's funny, because the more common complaint has been that they are
    just syntactic sugar that offer no functional benefit compared to
    putting the definition in a named word, and ticking that. The latter
    is true, but as Stephen Pelc says, notation matters.

    and recognizers are more for people who want to extend the Forth >interpreter/compiler, which most normal users probably don't do.

    I think that this is true, but see below. Because I think it is true,
    I think we have spent far too much time fiddling with it, but that's
    water down river.

    The benefit for "normal users" is that they can then load and use a
    recognizer written by "the people who extend the Forth
    interpreter/compiler", and it will work on their system if the system
    supports recognizers.

    By 'low critical mass' I meant that there are hardly any normal users.

    If you think so, why worry that they won't use recognizers?

    Most of the few users are specialists, and many primarily maintain their
    own systems.

    There are those, and there are those that use systems like Gforth.

    I compare it a little to Lua. Even though the hype around LuaJit has >subsided somewhat, there is a large user base, industry customers, and
    an active community. However, Lua also supports working with user data
    more than Forth, which does not even recognize dynamic strings in the >standard. UTF-8 is also not supported (the XCHAR wordset is only >rudimentary).

    As it happens, I used Gforth to work around a problem with Python's
    handling of user data (including UTF-8), and reported on it here <2020Jun28.105957@mips.complang.tuwien.ac.at>.

    Anyway, it's not clear what your comparison with Lua is about.

    But if Forth is primarily a toolbox for small systems, nothing will
    happen in this direction.

    If nobody proposes it, nothing will happen in any direction.
    Concerning "dynamic strings", a major problem seems to be that
    everyone has their own ideas on how to do them. I have even written a
    paper about the topic [ertl13-strings].

    @InProceedings{ertl13-strings,
    author = {M. Anton Ertl},
    title = {Standardize Strings Now!},
    crossref = {euroforth13},
    pages = {39--43},
    url = {http://www.euroforth.org/ef13/papers/ertl-strings.pdf},
    OPTnote = {not refereed},
    abstract = {This paper looks at the issues in string words: what
    operations may be required, various design options,
    and why this has lead to the current state of
    standardization of string operations that is
    insufficient in the eyes of many.}
    }

    OTOH multitasking or the integration of driver
    libraries are two 'eagle' topics which could serve the small system
    domain.

    Multitasking is on the table in the Forth200x committee, but the last
    proposal has been abandoned, and the person tasked with writing a new
    proposal has not come up with one yet.

    What do you have in mind about "integration of driver libraries".

    - anton
    --
    M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
    comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
    New standard: https://forth-standard.org/
    EuroForth 2025 CFP: http://www.euroforth.org/ef25/cfp.html
    EuroForth 2025 registration: https://euro.theforth.net/
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Mon Nov 17 11:15:03 2025
    From Newsgroup: comp.lang.forth

    On 17/11/2025 3:13 am, Anton Ertl wrote:
    minforth <minforth@gmx.net> writes:
    Quotations are rather unwieldy for normal users,

    That's funny, because the more common complaint has been that they are
    just syntactic sugar that offer no functional benefit compared to
    putting the definition in a named word, and ticking that. The latter
    is true, but as Stephen Pelc says, notation matters.
    ...

    Only yesterday I was working with code containing quotations. What jumped
    at me (which I'd known from previous experience) is what a PITA they are to document. Unwieldy? You couldn't pay me enough. I'd rather work with :NONAMEs (lesser of the nameless evils). Even H.P. Lovecraft was forced to name his. What use is a god that doesn't have a name?

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From albert@albert@spenarnc.xs4all.nl to comp.lang.forth on Mon Nov 17 13:28:36 2025
    From Newsgroup: comp.lang.forth

    In article <691a6906$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    On 17/11/2025 3:13 am, Anton Ertl wrote:
    minforth <minforth@gmx.net> writes:
    Quotations are rather unwieldy for normal users,

    That's funny, because the more common complaint has been that they are
    just syntactic sugar that offer no functional benefit compared to
    putting the definition in a named word, and ticking that. The latter
    is true, but as Stephen Pelc says, notation matters.
    ...

    Only yesterday I was working with code containing quotations. What jumped
    at me (which I'd known from previous experience) is what a PITA they are to >document. Unwieldy? You couldn't pay me enough. I'd rather work with >:NONAMEs (lesser of the nameless evils). Even H.P. Lovecraft was forced to >name his. What use is a god that doesn't have a name?

    \ An example from MANX
    \ SILVER is the instrument met aluminium tubes metallophone.
    \ REALTIME-TASKS is a set of task that must be executed as soon
    \ as they are viable.
    \-----------------------------
    \ Activate or deactivate the hammer of EVENT.
    : TOGGLE-NOTE-SILVER SILVER-DATA SILVER-INTERFACE ADVANCE-NOTE ;

    \ The real time action of the silver tingle.
    : RT-SILVER SILVER-QUEUE ['] TOGGLE-NOTE-SILVER TRY ;

    ' RT-SILVER REALTIME-TASKS SET+
    \-----------------------------

    With anonumous quotation { } this becomes

    \ The real time action of the silver tingle.
    { SILVER-QUEUE { SILVER-DATA SILVER-INTERFACE ADVANCE-NOTE } TRY } REALTIME-TASKS SET+

    At least it is more compact. More readable? At least it doesn't waste dictionary space and burden the memory.

    "ORANG UTAN" works in both interpretation state and compilation state.
    { } should do too.

    SILVER-QUEUE SILVER-DATA and SILVER-DATA makes an object current.
    It serves the same purpose as dragging the whole environment into
    a quotation, but much cleaner.

    In words:
    We add an attempt to execute an event present in the silverqueue.
    The action is beginning and terminating a note, in the context of
    SILVER-DATA (determines which note couple to a midi event)
    and SILVER-INTERFACE (how the parallel port is to be controlled for
    the silver metallophone.)

    Groetjes Albert
    --
    The Chinese government is satisfied with its military superiority over USA.
    The next 5 year plan has as primary goal to advance life expectancy
    over 80 years, like Western Europe.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From dxf@dxforth@gmail.com to comp.lang.forth on Tue Nov 18 19:40:16 2025
    From Newsgroup: comp.lang.forth

    On 17/11/2025 11:28 pm, albert@spenarnc.xs4all.nl wrote:
    In article <691a6906$1@news.ausics.net>, dxf <dxforth@gmail.com> wrote:
    On 17/11/2025 3:13 am, Anton Ertl wrote:
    minforth <minforth@gmx.net> writes:
    Quotations are rather unwieldy for normal users,

    That's funny, because the more common complaint has been that they are
    just syntactic sugar that offer no functional benefit compared to
    putting the definition in a named word, and ticking that. The latter
    is true, but as Stephen Pelc says, notation matters.
    ...

    Only yesterday I was working with code containing quotations. What jumped >> at me (which I'd known from previous experience) is what a PITA they are to >> document. Unwieldy? You couldn't pay me enough. I'd rather work with
    :NONAMEs (lesser of the nameless evils). Even H.P. Lovecraft was forced to >> name his. What use is a god that doesn't have a name?

    \ An example from MANX
    \ SILVER is the instrument met aluminium tubes metallophone.
    \ REALTIME-TASKS is a set of task that must be executed as soon
    \ as they are viable.
    \-----------------------------
    \ Activate or deactivate the hammer of EVENT.
    : TOGGLE-NOTE-SILVER SILVER-DATA SILVER-INTERFACE ADVANCE-NOTE ;

    \ The real time action of the silver tingle.
    : RT-SILVER SILVER-QUEUE ['] TOGGLE-NOTE-SILVER TRY ;

    ' RT-SILVER REALTIME-TASKS SET+
    \-----------------------------

    With anonumous quotation { } this becomes

    \ The real time action of the silver tingle.
    { SILVER-QUEUE { SILVER-DATA SILVER-INTERFACE ADVANCE-NOTE } TRY } REALTIME-TASKS SET+

    At least it is more compact. More readable? At least it doesn't waste dictionary space and burden the memory.

    "ORANG UTAN" works in both interpretation state and compilation state.
    { } should do too.

    SILVER-QUEUE SILVER-DATA and SILVER-DATA makes an object current.
    It serves the same purpose as dragging the whole environment into
    a quotation, but much cleaner.

    In words:
    We add an attempt to execute an event present in the silverqueue.
    The action is beginning and terminating a note, in the context of
    SILVER-DATA (determines which note couple to a midi event)
    and SILVER-INTERFACE (how the parallel port is to be controlled for
    the silver metallophone.)

    Call me old-fashioned but I find the separate definitions cleaner and
    obviously easier to document. After forth I don't think I could handle
    langs that squish stuff together. It seems so unnecessary.

    --- Synchronet 3.21a-Linux NewsLink 1.2