test/ttester.fs: Version of tester.fs with improved interface (T{...}T).

compat library:

compat/execute-parsing.fs

Speed improvements:

automatic performance tuning on building

static stack caching (good speedup on PPC)

mixed-precision division is now faster

support for int128 types on AMD64

workarounds for gcc performance bugs (in particular, PR 15242)

branch target alignment (good speedup on Alpha).

User-visible changes between 0.6.1 and 0.6.2:

Bug fixes

(in particular, gforth-0.6.2 compiles with gcc-3.3)

New words:

LATEST, LATESTXT (LASTXT deprecated)

Operating environment:

Added optional support for a C interface built
on the ffcall libraries (more portable and powerful than the old
one, but still not documented). To use it, the ffcall libraries
have to be installed before building Gforth (see INSTALL).

Miscellaneous:

Gforth-fast now uses static superinstructions (some
speedup on some platforms); generally this is transparent (apart
from the speedup), but there are lots of command-line options for
controlling the static superinstruction generation.

User-visible changes between 0.6.0 and 0.6.1:

Bug fixes (installation on big-endian machines sometimes did not work)

User-visible changes between 0.5.0 and 0.6.0:

Changes in behaviour:

S": interpreted use now ALLOCATEs the string (they live until BYE).

Long word names (512MB on 32-bit systems) are now supported (change to
the header format).

Large file support on OSs that support them (i.e., files with more
than 2GB on 32-bit machines).

Gforth can now deal well with broken pipes in most situations.

vi tags files can be built with tags.fs
(usage like etags.fs).

gforth.el mostly rewritten.

New image file format.

New words:

Keyboard input: EDIT-LINEK-PRIORK-NEXTK-DELETE

File input: SLURP-FILESLURP-FID

Programming tools: ID. .ID WORDLIST-WORDS SIMPLE-SEE

Conditional execution: [DEFINED][UNDEFINED]

Defining Words: CONST-DOES>]]

Input stream: PARSE-WORD EXECUTE-PARSING EXECUTE-PARSING-FILE

String comparison: STR= STR< STRING-PREFIX?

String literals: S\" .\" \"-PARSE

Floating point output: F.RDP F>STR-RDP F>BUF-RDP

Miscellaneous:

Generalized prims2x.fs into Vmgen (see README.vmgen etc.); used the
new capabilities in prims (e.g., automatic handling of the return
stack and instruction stream).

User-visible changes between 0.4.0 and 0.5.0:

Changes in behaviour:

There are now two engines: the fast engine (gforth-fast) is at
least as fast as gforth in earlier releases; the debugging engine
(gforth) supports precise backtracing for signals (e.g., illegal
memory access), but is slower by a factor of 1-2.

Block files now start at block 0 by default (instead of block
1). If you have block files around, prepend 1024 bytes to
convert them, or do a 1 OFFSET ! to establish the old
behaviour.

Gforth now does not translate newlines to LFs on reading.
Instead, READ-LINE now interprets LF, CR, and CRLF as
newlines. Newlines on output are in the OSs favourite format.

SEE now disassembles primitives (or hex- DUMPs the code if no
disassembler is available).

>HEAD
(aka >NAME) now returns 0 (instead of the nt of ???) on failure.

Syntax of prim changed: stack effects are now surrounded by
parentheses, tabs are insignificant.

Operating environment:

Gforth now produces a backtrace when catching an exception.

On platforms supporting the Unix 98 SA_SIGINFO semantics, you
get more precise error reports for SIGSEGV and SIGFPE (e.g.,
"stack underflow" instead of "Invalid memory address").

Gforth now produces exit code 1 if there is an error (i.e.,
an uncaught THROW) in batch processing.

You can use " gforthmi --application ..." to build an image that
processes the whole command-line when invoked directly (instead of
through gforth -i).

Ports:

AIX.

20% speedup on 604e under powerpc-unknown-linux-gnu,

19%-29% speedup on Celeron with gcc-2.95.

New words:

Missing ANS Forth words: EKEY EKEY? EKEY>CHAR

Timing words: CPUTIME UTIME

Vector arithmetic: V*FAXPY

FP comparison: F~ABSF~REL

Deferred words: [IS]

Nested number output:

<<# #>>

Exception handling: TRY RECOVER ENDTRY

Directory handling: OPEN-DIR READ-DIR CLOSE-DIR FILENAME-MATCH

Other: ]L PUSH-ORDER

Miscellaneous:

Significant extensions to the manual (added an introduction,
among other things), many of them due to a new team member: Neal
Crook.

Added assemblers and disassemblers for 386, Alpha, MIPS (thanks to
contributions by Andrew McKewan, Bernd Thallner, and Christian
Pirker). Contributions of assemblers and disassemblers for other
architectures are welcome.

User-visible changes between 0.3.0 and 0.4.0:

Operating environment:

Path handling: "." at the start of the path represents the directory
the nearest enclosing file resides in (if there is none: the working
directory). "~+" indicates the working directory. The default path now
has "." in front.

gforth and gforthmi is now more GNU standards compliant (wrt
command-line options).

New command-line-option: --die-on-signal

Errors are now directed to stderr.

Stdout is now unbuffered, if it is a tty.

User input device redirection (for filters) is now possible.

Ports:

Now runs on IRIX (and other MIPS-based systems without
linker-flag -d). Direct threading now works on PowerPC (20% speedup on
604e). Better support for m68k (thanks to Andreas Schwab and Jorge
Acereda). It is possible to create executables that contain the image
(for non-OS systems).

Plain text documentation is now available in doc/gforth.txt.
Documentation improvements.

Wordlist structure changed.

Added mini-oof.

Reorganized files: added directories and reorganized many
files into them; renamed files into 8.3 format to work with
completely broken systems (but there are again some files
that won't work there).

Bug fixes.

Various changes without log information only known as
mega-patches. Cross compiler now also supports compilation
only for undefined or forward referenced words. Plugins to
support some native code generation (for PSC1000).