Forth Research at Institut für Computersprachen

and related topics, such as stack-based languages (PostScript, JavaVM), and stack machines. For general interpreter topics see our interpreter page.

Persons

Projects

Gforth
a free Forth system (Anton Ertl, Bernd Paysan and others). The goals of this project are explained here. Manual, current version, papers on engine (EuroForth'93), some newer engine developments (Forth-Tagung '02) and locals (Euroforth'94).
Forth native code generation
(Anton Ertl, Christian Pirker). Paper (EuroForth'92); Diplomarbeit (in German); Ph.D. Thesis chapter; a paper on the basic block part, with results (EuroForth'96); and a paper on the internal organization of the compiler (EuroForth '97). Status report. The FWF (Austrian Science Foundation) supported this work (project number P11231).
JavaVM to native code compilation
aka just-in-time compilation (Reinhard Grafl, Andi Krall). Diplomarbeit (in German). The system and more information is available through the CACAO home page.
Compilation of Forth to C
(Anton Ertl, Martin Maierhofer). paper (also in dvi format), Ph.D. Thesis chapter, package and benchmark programs; Related work: Timbre, ^Forth.
Gray, a parser generator in Forth
(Anton Ertl). Package (in tar.gz and zip formats), report (in German) and paper (in German, Forth-Tagung '97). Related: Bradford Rodriguez' simple backtracking BNF parser in Forth.
Forth code size and programming effort
(Anton Ertl). Paper comparing the source code size of parser generators in Forth and other languages. Executable code size of threaded code vs. code generated by forth2c+gcc..
Patterns in interpreted Forth execution
These patterns can be exploited for peephole optimization (on the virtual machine level) and static branch target prediction (as used in the Alpha architecture). Paper, older raw and cooked data. The can be used to select static superinstructions.
Benchmarks
Four small, portable Forth benchmarks, and how various Forth systems perform. See also MPE's benchmarks, Marcel Hendrix' Monster benchmark-suite, Robert Epprecht's brew and Bruce Hoyt's Pentomino.
Forth programming style
notes
STATE-smartness
(Anton Ertl). Commentary explaining the concept of semantics in the standard and the relation to STATE; Paper (EuroForth '98) discussing the problem and suggesting solutions. Package for adding combined words to any system and for repairing some systems that suffer form STATE-smartness. Test, whether POSTPONE conforms to ANS Forth when working on words with special compilation semantics (also included in the Package).
Proposed extensions to the standard
(Anton Ertl) Further efforts in that directions are Forth 200x and the RfD/CfV process. See also the following sites that solicit public input: Proposed ANS Forth Extensions; Some Commonly Used Forth Words; Word proposals on Sourceforge
Object-Oriented Programming
My view on how Forth should be extended for object-oriented programming: package (contains the papers and the code), paper on how to do it and paper on the Neon model.
Garbage Collection
Package (contains code, documentation and tests).
Optimization for Stack machines
(Martin Maierhofer, Anton Ertl). Allocating variables on the stack within basic blocks for JavaVM and another stack machine; Diplomarbeit (in German) and papers (Forth-Tagung '97, CC '98).
References (with abstracts) for the papers. We are looking for students to work on Forth Praktika and Diplomarbeiten.

You may also want to look at our Forth repository.

Events

Some Forth links

FAQs
Books
the Book FAQ, Amazon.com's database on FORTH (Computer program language) and Forth (Programming Language); an old book FAQ; Forth Literature registered in the BIBOS database.

Thinking Forth resurrected!

WWW/FTP sites with lots of stuff
Forth Links, www.taygeta.com, ftp.dei.isep.ipp.pt (formerly asterix), forth.sourceforge.net
Forth search engine.
Native code compilers
iForth; bigForth; FLK (Linux-Intel, no longer maintained); D (MacOS X, not maintained).
History (mostly longer articles)
The Evolution of Forth, by Rather, Colburn, and Moore, published at the History of Programming languages conference (HOPL-II). Forth - The Early Years by Chuck Moore. The Forth family tree and timeline. The Heritage of F83 System (much about the Forth standards from -77 to -83). F-PC users manual, preface 1st ed on the tradition of public-domain Forth systems. FORTH -- A Language for Interactive Computing, by Moore and Leach; Mohasco Industries, Inc., Amsterdam, NY, 1970 (surprising differences from and surprising similarities with modern Forth systems). Forth entry in the Encyclopedia of Computer Languages. Jim Bowery's Genesis of Postscript indicates a link between Forth and Postscript histories, as well as giving an interesting perspective on some of the things going on around 1980.
Conferences and Journals
FIG's conference page, including a link to EuroForth (with refereed section); FORML; Rochester Forth Conference; Forth-Tagung (German). Journal of Forth Application and Research (refereed); Forth Dimensions.
Standard
Everything about Forth 200x. Best version of the Forth-94 document: HTML version (derived from dpANS6). Also available here. Forth-94 reference card containing word name, stack effect, and wordset information. The Forth-83 standard is now also online (one text file, but without links, zip file). Forth-79 (zip file, glossary only). In addition, the Open Firmware (IEEE 1275) standard is now available, even though it's home page doesn't mention it.
Introductions
The Forth Tutorial coming with pForth. A short Introduction (targeted at CFORTH) and a longer one (targetted at 4th); Introducción a Forth (Spanisch); a Forth Lessons Wiki, in particular for Open Firmware. Bernd-M. Stejskal created a page with links to tutorials and other Forth documentation; another tutorial links page.
Introduction to implementation techniques
The Heart of Forth
Stack machines
Phil Koopman's book.
Other stack-based languages
StrongForth, a statically typechecked variant of Forth. Factor, run-time type-checked variant of Forth. Joy, functional, run-time type-checked?. Cat, functional, statically-typed.
Forth Implementations
Google's directory. Systems FAQ.
Forth-Gesellschaft e.V.
The German Forth club.

Anton Ertl

HTML 2.0