Wordset queries

Problem

Wordset queries are the query strings that are defined with verbiage
like "true if ... word set present", e.g., CORE-EXT.  With the arrival
of a new standard (snapshot), what is the meaning of wordset queries?

Compatibility with Forth-94 demands that, by default, they produce the
same answers as for Forth-94; i.e, querying for CORE-EXT could return
true only if all of the Forth-94 CORE EXT words are present.

Should we be able to check for Forth-2010 wordset presence, and if so,
how?


Possible solutions

1) The simplest solution would be to just let the wordset queries work
as before, not provide any way to query for the Forth-2010 version of
the wordset, and declare these query strings as obsolescent.  The lack
of usage of wordset queries (see below) suggests this approach.

Most of the reactions to the first RfD support this approach, too, so
this is the approach being taken in this proposal.  The following
alternatives are kept here just for completeness.

2) Another solution would be to introduce new names for the Forth-2010
versions of the wordsets.  Usage example:

S" core-ext" environment? ...      \ ask about Forth-94 CORE EXT wordset
...
S" core-ext-2010" environment? ... \ ask about Forth 2010 CORE EXT wordset
...

3) Another solution would be to have a query for Forth-2010, and once
the program has queried for that, all wordset queries will refer to
the Forth-2010 versions of the wordsets.  Because a program might want
to include a Forth-94 library that contains Forth-94 wordset queries,
there would also have to be a way to switch back for that particular
library: query for Forth-94 before including that library, and again
for Forth-2010 afterwards.  The implementation of that solution will
be easy on most systems (because most or all wordsets don't change
their answer between Forth-94 and Forth-2010 on most systems), but the
conceptual complexity of this solution is significant (at least when
mixing code from multiple standards).  Usage example:

s" core-ext" environment? ... \ Forth-94 CORE EXT wordset
...
s" forth-2010" environment? ...
...
s" core-ext" environment? ... \ Forth 2010 CORE EXT wordset
...
s" forth-1994" environment? ...
include old-library.fs        \ wordset queries should give Forth-94 answers
s" forth-2010" environment? ...


Experience

Wordset queries seem to be very little used.  Checking all the
occurences of ENVIRONMENT? in appbench (containing 6 portable programs
of significant size), there is only one occurence: It is in a
PFE-specific part of brew (where it is apparently used to load
floating-point words).  So wordset queries are not used in portable
parts of these programs.  This suggests that putting more
(standardization and implementation) effort into wordset queries may
be wasted and that it may be possible to find consensus on solution 1.

The first RfD revealed one person (Dennis Ruffer) who uses wordset
queries; he would prefer solution 2.  Five persons (Gerry Jackson
<h986k1$blh$1@news.eternal-september.org>, Michael Gassanenko
<615700f8-a8d6-406d-a052-434e242f24f0@n2g2000vba.googlegroups.com>,
Stephen Pelc, Leon Wagner, and Alex McDonald
<1f243bfe-9ec4-4453-af67-ca985342b637@m1g2000yqo.googlegroups.com>)
reported that they like solution 1.


Proposal

Note: This is just a documentation change.  It does not add or remove
any capabilities that programs can use, so programs are currently not
affected by this change.  Even in the long term (when these queries
are finally de-standardized), programs are not really affected: no
query is guaranteed to be known by a system even in Forth-94, and some
systems actually do not know many wordset queries.  This proposal also
does not change how systems are required to behave, so system
implementations should not need to change, either.

Replace the entries for CORE and CORE-EXT in Table 3.5 (Environmental
Query Strings) with

CORE                    flag    no      
					true if the complete core word
                                        set of Forth-94 is present
                                        (i.e., not a subset as defined
                                        in 5.1.1).  This query string
                                        is obsolescent and will be
                                        removed in a future standard.
CORE-EXT                flag    no      
					true if the core extensions
                                        word set of Forth-94 is
                                        present.  This query string is
                                        obsolescent and will be
                                        removed in a future standard.

Add the following entries to Table 3.5:

BLOCK            flag  no   Forth-94 block word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
BLOCK-EXT	 flag  no   Forth-94 block extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
		            This query string is obsolescent and
			    will be removed in a future standard.
DOUBLE		 flag  no   Forth-94 double number word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
DOUBLE-EXT	 flag  no   Forth-94 double number extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
EXCEPTION	 flag  no   Forth-94 exception word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
EXCEPTION-EXT	 flag  no   Forth-94 exception extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
FACILITY	 flag  no   Forth-94 facility word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
FACILITY-EXT	 flag  no   Forth-94 facility extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
FILE		 flag  no   Forth-94 file word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
FILE-EXT	 flag  no   Forth-94 file extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
FLOATING	 flag  no   Forth-94 floating-point word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
FLOATING-EXT	 flag  no   Forth-94 floating-point extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
LOCALS		 flag  no   Forth-94 locals word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
LOCALS-EXT	 flag  no   Forth-94 locals extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
MEMORY-ALLOC	 flag  no   Forth-94 memory-allocation word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
MEMORY-ALLOC-EXT flag  no   Forth-94 memory-allocation extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
SEARCH-ORDER	 flag  no   Forth-94 search-order word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
SEARCH-ORDER-EXT flag  no   Forth-94 search-order extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
STRING		 flag  no   Forth-94 string word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
STRING-EXT	 flag  no   Forth-94 string extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
TOOLS		 flag  no   Forth-94 programming-tools word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.
TOOLS-EXT        flag  no   Forth-94 programming-tools extensions word set present.
		            This query string is obsolescent and
			    will be removed in a future standard.

Remove these query strings from each of the tables in sections
7.3-17.3.  If the resulting table is empty, remove it and the verbiage
around it.


Proponent:  Anton Ertl