Digest #331 2026-06-16

Contributions

[431] 2026-06-14 22:39:57 oak wrote:

requestClarification - "character string specification"

What does "character string specification" mean? I did a search and this term appears only here.

I also couldn't find terminology in the specification that describes a counted string on the stack (i.e. "c-addr u"), which differs from a counted string at a memory address (i.e. a char length followed by character data).

If "character string specification" were defined to mean "c-addr u" on the stack, that could be helpful, as it seems to be described in varying ways across the spec. For example, TYPE says "the character string specified by c-addr and u", while S" says "c-addr and u describing a string". But perhaps a better, clearer term could be coined. The definition of "counted string" could also be extended to mention that when used as "counted string on the stack" means "c-addr u".

For now, it might be clearer here to change the description of this word to, say,

Return the character string described by c-addr2 and u for the counted string stored at c-addr1. c-addr2 is the address of the first character after c-addr1. u is the contents of the character at c-addr1, which is the length in characters of the string at c-addr2.

This is my first time commenting on this document. Please let me know if I misstepped anywhere. :)


[432] 2026-06-14 22:48:09 oak wrote:

comment - Broken links

If this page is navigated to with no trailing forward slash, these links work fine. (e.g. clicking on "6 Glossary" on the left sidebar)

However, if this page is navigated to with a trailing forward slash, all of these links are broken. They have the structure "https://forth-standard.org/standard/core/core/WORD". "/core" is given twice instead of once.

I don't think anything in the spec links to this page in this fashion. Rather, I may have been on, say, https://forth-standard.org/standard/core/ABS, and just deleted the "ABS" at the end in my browser to get back to the glossary.

Replies

[r1679] 2026-06-14 04:23:46 LeonWagner replies:

requestClarification - Wording in 16.3.3 Find definition names

It is correct as written. Wordlists are searched one at a time, so "each" is correct here. It does not say "all wordlists" (which would be a misinterpretation) and the sentence that follows it gives the clarification.


[r1680] 2026-06-14 09:11:06 ruv replies:

requestClarification - Wording in 16.3.3 Find definition names

Wordlists are searched one at a time, so "each" is correct here.

Regardless of grammatical correctness, this phrasing creates a slight mental friction, because:

  • “a word list” means one arbitrary element of a class;
  • “each word list” means every item in that class;

This in itself might create the misleading impression that when searching one wordlist, the system shall search every wordlist. But that is not what was intended.

It seems to me, a better option would be:

  • When searching a word list for a definition name, the system shall search that word list from its last definition to its first.

In this option, we avoid repeating the same noun at the same abstraction level (“a word list … each word list”).

Other options (explicitly specify the rule for all word lists):

  • Each word list shall be searched for a definition name from the last definition to the first.
  • For each word list, the system shall search for a definition name from the last definition to the first.

[r1681] 2026-06-14 22:50:21 ruv replies:

proposal - Special memory access words

@KrishnaMyneni wrote:

I agree with Anton that UW>S is not needed since the W in W>S just indicates a word type of either signed or unsigned.

I agree with the name w>s. However, "w" in this word name does not indicate a number of either signed or unsigned. It indicates a 16-bit signed number. For example, the integer number 65000 cannot be represented as a 16-bit signed integer, but it can be represented it as a 16-bit unsigned integer.

For an unsigned word on the stack, W>S will sign extend it

w>s cannot extend a 16-bit unsigned integer 65000.


What do you think regarding the naming options uwbe and uw!?