Gforth gforth

Gforth is the Forth implementation of the GNU project (Current release 0.7.3, have a look to the User Manual). Source distributions can be found on GNU's Gforth directory, source and binary distributions for popular platforms such as Windows, GNU/Linux, etc. can be found in Home of Gforth, as well as snapshots of the development version in the git repository on Savannah. Read the updated documentation for the snapshots in Gforth's snapshot manual.

Gforth uses GCC to compile a fast direct or indirect threaded Forth; Gforth is fully ANS FORTH compliant. Authors of Gforth are Anton Ertl, Bernd Paysan, Jens Wilke, Neal Crook, David Kühling and others.

The goal of the Gforth Project is to develop a standard model for ANSI Forth. This can be split into several subgoals:

To achieve these goals Gforth should be

There's an object oriented package, written in almost plain ANS Forth (now part of Gforth's distribution).

News

User-visible changes between 0.7.2 and 0.7.3:

Bug fixes
Backported protection against glibc math functions clobbering TOS

User-visible changes between 0.7.1 and 0.7.2:

Bug fixes
Makefile fixes for installing

User-visible changes between 0.7.0 and 0.7.1:

Bug fixes
amd64 gdb disassembler works with syntax change (autodetected) workaround for gcc 4.6 and 4.7 problems (newline and superinstructions)
Miscellaneous
changed repository from CVS to git

User-visible changes between 0.6.2 and 0.7.0:

Requirements: : At run-time requires libtool and gcc (for the libcc C interface) and gdb (for the disassembler (SEE)) on some platforms.
Installation:
support for DESTDIR, POST_INSTALL, INSTALL_SCRIPT
automatic performance tuning on building (--enable-force-reg unnecessary)
report performance and functionality problems at end of "make"
autogen.sh now exists
License:
Changed to GPLv3
Bug fixes
Now works with address-space randomization.
The single-step debugger works again in some engines.
Many others.
Ports:
AMD64, ARM, IA-64 (Itanium): better performance
PPC, PPC64: disassembler and assembler
Gforth EC: R8C, 4stack, misc, 8086 work
MacOS X: better support
Invocation:
New flags --ignore-async-signals, --vm-commit (default overcommit), --print-sequences
Forth 200x:
X:extension-query: produce true for all implemented extensions
X:required REQUIRED etc. (not new)
X:defined: [DEFINED] and [UNDEFINED]
X:parse-name: PARSE-NAME (new name)
X:deferred: deferred words (new: DEFER@ DEFER! ACTION-OF)
X:structures: +FIELD FIELD: FFIELD: CFIELD: etc.
X:ekeys: new: EKEY>FKEY K-SHIFT-MASK K-CTRL-MASK K-ALT-MASK K-F1...K-F12
X:fp-stack (not new)
X:number-prefixes (partially new, see below)
Number prefixes:
0x is a hex prefix: 0xff and 0XfF now produces (decimal) 255
is a decimal prefix: 10 now produces (decimal) 10
Signs after the number prefix are now accepted, e.g, -50.
' now only handles a single (x)char: 'ab is no longer accepted, 'a' now produces (decimal) 97
Unicode support (currently supports only uniform encoding):
added xchars words for dealing with variable-width multi-byte characters
provide 8bit (ISO Latin 1) and UTF-8 support for xchars
New words:
<C C-FUNCTION C-LIBRARY END-C-LIBRARY C-LIBRARY-NAME (libcc C interface)>
LIB-ERROR (complements OPEN-LIB)
OUTFILE-EXECUTE INFILE-EXECUTE BASE-EXECUTE (limited change of global state)
16-bit and 32-bit memory acces: UW@ UL@ SW@ SL@ W! L! W@ L@ W L
NEXT-ARG SHIFT-ARGS (OS command-line argument processing)
NOTHROW (for backtrace control)
FTRUNC FMOD (undocumented)
SEE-CODE SEE-CODE-RANGE (show generated dynamic native code)
Improvements/changes of existing words:
S\", .\" now support <l, >m, <z, and limits hex and octal character specs.>
OPEN-FILE with W/O no longer creates or truncates files (no compat. file)
OPEN-LIB now understands at the start, like OPEN-FILE.
TRY...ENDTRY changed significantly, compatibility files available (see docs).
The disassembler (DISCODE) can now use gdb to disassemble code
Uninitialized defered words now give a warning when executed
Division is floored (disable with "configure --enable-force-cdiv")
Gforth (not gforth-fast) reports division by zero and overflow on division on all platforms.
Newly documented words:
S>NUMBER? S>UNUMBER?
EKEY keypress names: K-LEFT K-RIGHT K-UP K-DOWN K-HOME K-END K-PRIOR K-NEXT K-INSERT K-DELETE
CLEARSTACKS
FORM
Environment variable GFORTHSYSTEMPREFIX (used by word SYSTEM and friends)
C interface:
exported symbols now start with "gforth_" (for referencing them from C code)
libcc C function call interface (requires libtool and gcc at run-time)
alternative: undocumented libffi-based interface
Libraries:
depth-changes.fs: report stack depth changes during interpretation
ans-report.fs now reports CfV extensions
fsl-util.4th: FSL support files (undocumented)
regexp.fs for regular expressions (undocumented)
complex.fs for complex numbers (undocumented)
fft.fs for Fast Fourier Transform (undocumented)
wf.fs, a Wiki implementation (undocumented)
httpd.fs, a web server (undocumented)
status.fs, show interpreter status in separate xterm (undocumented)
profile.fs for profiling (undocumented, incomplete)
endtry-iferror.fs, recover-endtry.fs to ease the TRY change transition
test/tester.fs: Now works with FP numbers (undocumented)
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:

Operating environment:

New words:

Miscellaneous:

User-visible changes between 0.4.0 and 0.5.0:

Changes in behaviour:

Operating environment:

Ports:

New words:

Miscellaneous:

User-visible changes between 0.3.0 and 0.4.0:

Operating environment:

Ports:

New, changed, and removed words:

Miscellaneous:

Mailing List

There's a mailing list around Gforth-related topics: gforth@gnu.org.

Read old postings in the list archive of the Gforth list.

Subscribe by filling out the Form here.


Copyright © 1997-2013 Free Software Foundation, Inc.

This page is licensed under a Creative Commons Attribution-NoDerivs 3.0 United States License.

Copyright Infringement Notification


Created 21may1997. Last modified: 10nov2015 by MailBernd Paysan