EuroForth 2002 - The Report

Bill Stoddart

Hosted by the Technical University of Vienna, the conference began with lunch in the Restaurant Habigoff, a former hat shop which has retained its 19thC interior. As well as presentations and workshops we enjoyed walks in the town centre (just adjacent to the University), in the Vienna Woods, and in the Prater, with its famous beer garden, spectacular funfare and wooded paths. Conference dinner was at the Vienna Town Hall.

There were eight presentations and two workshops.

"Primitive Sequences in General Purpose Forth Programs" by David Gregg and John Waldren continued the work from 17th EuroForth on exploration of threaded code optimisation in gforth via "super instructions". A number of applications have been analysed to check for common instruction sequences and the effects of optimising the most common seqences from each application has been tested on the others. Both static and dynamic analysis has been investigated, with the clear result that static analysis provides the best overall performance increase, whilst dynamic analysis, which gives greater weight to frequently used sequences (e.g. inner loops) can be very effective when applied back on the application which provided the analysis.

"The Evolution of Vmgen" presented by Anton Ertl, described a virtual machine generation tool which will create C code definitions for virtual machine implementation from operation descriptions. As the tool has evolved new features allow more user configuration, the ability to describe effects on multiple stacks, handling of "super instructions", and abstraction away from the mechanics of the threaded code implementation, e.g., for describing the embedding of literal values.

Jaanus Pöial presented a framework for static type checking, refining the stack effect calculus he introduced in the early 1990's. If a, b, c, d are stack argument lists we start with some rules for combining type signatures such as:

( a -- b c ) ( c -- d ) = ( a -- b d )

meaning that if an operation which removes argiments a and leaves b c is followed by one which removes c and leaves d, the overall effect is to take a and leave b and d. New ideas included a more general interpretation for the effects of opeations that operate on any type (wildcards) e.g., dup swap, with rules formulated to allow for inheritence and polymorphism.

Frank Zeyda presented a general implementation of sets in Forth in which sets are held as ordered arrays. Sets of integers or strings are ordered in the obvious ways. Sets of sets are ordered first by size, then by comparing successive elements. Sets of pairs are ordered by their first elements. For data items other than integers a reference semantics is used such that a set is a list of references to data items on the heap.

Frederico de Ceballos presented a tiny UDP stack in Forth for the CS8900 Ethernet Controller, allowing simple connectivity between micro-controllers. In a second talk he described an alternative operating system for the PC and embedded targets: QNX Nuetrino is a real time operating system with a relatively small microkernal architecture which promises simple device driver and interrupt programming as well as the ability to deploy applications on single processors or across clusters of processor without special coding. Slightly dissappointed by the fact the colorforth did not run on his computer, Frederico has been looking for a more appropriate environment for his Forth applications than that provided by Linux or Windows. Further developments awaited...

I presented a paper on mechanisms for reversible computation in the context of native compiled Forth for the Pentium. Two new features are added to Forth called choice and guard. A choice construct has the form <CHOICE A [] B ... CHOICE>.  This makes a provisional choice between A, B, ... . The guard construct, now written as -->, takes a flag from the stack. If true execution continues ahead, if false execution reverses back to the most recent choice which has a still unexplored alternative. The presentation was illustrated with a Knight's Tour case study.

Anton Ertl gave a talk demonstrating the implementation of super instructions in GForth. Instruction sequences are recognised below the level of comma (compilation). lit 5 + is converted to lit+ 5. GForth's built in disassembler was used to demonstrate the code generated, including cases where attemps at optimisation are frustrated by the compiler register spilling.

We had a short workshop on parsing set expressions with demo by Daniel Ciesinger, and an extended wokshop on applying static typing.

Many thanks to Anton Ertl for organising a wonderful conference and being a perfect host.

Nick Nelson and Micross Electronics Ltd have offered to organise the 19th EuroForth at Ross on Wye, Hereforshire, UK. With possible visits to laundries and car plants to see Forth in serious action! Many thanks to them and see you there.

Bill Stoddart

[ Forth | EuroForth | EuroForth 2002 | Conference Report ]