Forth runs in a Windows-provided memory space, which is limited only by the available physical and virtual memory of the system. The dictionary size is dynamically expandable up to a configurable maximum size whose default value is 32 Mb. SwiftForth has been tested and runs nicely with a 64 Mb dictionary.
The dictionary can accommodate word names up to 254 characters in length. This is because the names of Windows functions can be quite long and because being able to keep long filenames as normal dictionary entries is desirable. This choice means that the format of a dictionary header is non-traditional.
Wordlists are multi-threaded via a hashing mechanism to speed up the dictionary search process. Wordlists in SwiftForth may have any number of threads, and the user can set the system default for this. The default number of threads is 31.
SwiftForth was implemented for ANS Forth compliance, and includes a copy of the Hayes compliance test suite. The Core, Core Extensions, Blocks, Double Number, Exception, Facility, File Access, Floating Point, Memory Allocation, Programming Tools, Search Order, and String wordsets are complete except for words marked "obsolescent." A Local Variables wordset is provided that is compliant except for argument order.
The interpreter will handle both text and block files.
For text files, the system provides for linking to an arbitrary external editor. LOCATE is fully supported for both text and block files, displaying a portion of source in the command window with an option to switch to an external editor with the appropriate file open and positioned to the appropriate line. The normal LIST method is used for block files. The command window is treated as "hypertext" such that you can double-click any word that appears there and automatically LOCATE it.
An RPN assembler and disassembler are supplied. The assembler supports most of the Intel-defined operations and addressing modes. Except for the ordering of arguments, it is essentially identical to Intel notation. Structured conditionals (IF, THEN, etc.) are implemented, as well as local labels.
ANS Forth local variables are fully supported. They are instantiated on the return stack, and the processor register EDI is used as the frame pointer.
SwiftForth includes good support for floating-point math. Use of the hardware f-p stack is optional (e.g., use it for optimum speed when you don't require more than about six or seven floating-point values on the stack at a time).
SwiftForth includes the ANS Forth floating-point wordset, plus high-level words for trig, log and exponential functions, and words for defining and displaying matrices. Input and display formats are configurable.
SwiftForth also includes the entire Forth Scientific Library, with the
required compatibility layer. Information about the contents of this library may be found at
www.taygeta.com/fsl/scilib.html
.
Additionally, if you have access to math packages supplied as DLLs, you may call them easily from SwiftForth.