@InProceedings{stoddart-zeyda24, author = {Bill Stoddart and Frank Zeyda}, title = {Towards a Prospective Values semantics for a reversible Forth}, crossref = {euroforth24}, pages = {5--18}, url = {http://www.euroforth.org/ef24/papers/stoddart-zeyda.pdf}, video = {https://www.youtube.com/watch?v=0JpZB5kCtH4}, OPTnote = {refereed}, abstract = {We describe a ``prospective values'' semantics for Forth, including the backtracking extension provided by our reversible virtual machine RVM-Forth. We use $S \diamond E$ to represent the value expression E would have were it to be evaluated after the execution of program S. We call this the prospective value of E after S. This form is expressive enough to describe the semantics of an extended form of guarded command language that incorporates backtracking and speculative computations. We give semantics for Forth stack commands, assignments, speculative computations, conditionals and loops. We sketch the work that remains to be done.} } @InProceedings{stoddart-container24, author = {Bill Stoddart}, title = {Using a container to provide 32 bit gcc5 compilation services on a 64bit Linux system}, crossref = {euroforth24}, pages = {19--23}, url = {http://www.euroforth.org/ef24/papers/stoddart-container.pdf}, video = {https://www.youtube.com/watch?v=fOcJebpbcsg}, OPTnote = {not refereed}, abstract = {At EuroForth 2023 we mentioned that our reversible Forth had become impossible to maintain because the 32 bit gcc compiler is no longer supported. It was suggested that ``containers'' might provide a solution. Here we report on where that suggestion has led us.} } @InProceedings{nelson24, author = {Nick J. Nelson}, title = {A Forth binding for GTK4}, crossref = {euroforth24}, pages = {24--36}, url = {http://www.euroforth.org/ef24/papers/nelson.pdf}, video = {https://www.youtube.com/watch?v=-YvufQLrnL0}, OPTnote = {not refereed}, abstract = {For some years, a Forth binding to major version 3 of the widely used graphical user interface toolkit GTK has been available. The major version 4 of GTK introduces many incompatibilities, so that a completely different approach to the binding is needed. It will be shown how the unique features of Forth can be leveraged to overcome the difficulties introduced by GTK4.} } @InProceedings{laagel24, author = {François Laagel}, title = {Pac-Man for the DEC VT420}, crossref = {euroforth24}, pages = {37--42}, url = {http://www.euroforth.org/ef24/papers/laagel.pdf}, url-slides = {http://www.euroforth.org/ef24/papers/laagel-slides.pdf}, video = {https://www.youtube.com/watch?v=Hc3mxly7RXI}, OPTnote = {not refereed}, abstract = {Pac-Man is a graphical game designed in 1979 by a team of five people and implemented in Z80 assembly language over the course of seventeen months. This article is an evolutionary account of my own Forth implementation in ANS94 Forth for the Digital VT420 text terminal over a three month period. The C port of the resulting application to Linux and OpenVMS 9.2 will also be briefly covered. Stress will be laid upon the value of standards throughout this paper. Various development/prototyping tools were required for this implementation to be successful. In essence, this paper is a first person account of an experience in retrocomputing.} } @InProceedings{ertl24, author = {M. Anton Ertl}, title = {How to Implement Words (Efficiently)}, crossref = {euroforth24}, pages = {43--52}, url = {http://www.euroforth.org/ef24/papers/ertl.pdf}, url-slides = {http://www.euroforth.org/ef24/papers/ertl-slides.pdf}, video = {https://www.youtube.com/watch?v=bAq4760h5ZQ}, OPTnote = {not refereed}, abstract = {The implementation of Forth words has to satisfy the following requirements: 1) A word must be represented by a single cell (for \code{execute}). 2) A word may represent a combination of code and data (for, e.g., \code{does>}). In addition, on some hardware, keeping executed native code and (written) data close together results in slowness and therefore should be avoided; moreover, failing to pair up calls with returns results in (slow) branch mispredictions. The present work describes how various Forth systems over the decades have satisfied the requirements, and how many systems run into performance pitfalls in various situations. This paper also discusses how to avoid this slowness, including in native-code systems.} } @InProceedings{ertl-ip-updates24, author = {M. Anton Ertl}, title = {The Performance Effects of Virtual-Machine Instruction Pointer Updates}, crossref = {euroforth24}, pages = {53--56}, url = {http://www.euroforth.org/ef24/papers/ertl-ip-updates.pdf}, url-slides = {http://www.euroforth.org/ef24/papers/ertl-ip-updates-slides.pdf}, url-paper = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2024.14}, video = {https://www.youtube.com/watch?v=45igb9g-IPA}, note = {presentation slides; the paper appeared at ECOOP'24}, abstract = {How much performance do VM instruction-pointer (IP) updates cost and how much benefit do we get from optimizing them away? Two decades ago it had little effect on the hardware of the day, but on recent hardware the dependence chain of IP updates can become the critical path on processors with out-of-order execution. In particular, this happens if the VM instructions are light-weight and the application programs are loop-dominated. The present work presents several ways of reducing or eliminating the dependence chains from IP updates, either by breaking the dependence chains with the \emph{l}oop optimization or by reducing the number of IP updates (the \emph{c} and \emph{ci} optimizations) or their latency (the \emph{b} optimization). Some benchmarks see speedups from these optimizations by factors $>2$ on most recent cores, while other benchmarks and older cores see more modest results, often in the speedup ranges 1.1--1.3.} } @Misc{nelson-bekki24, author = {Nick Nelson}, title = {SpeechForth aka Bekki}, howpublished = {https://www.youtube.com/watch?v=SMQrrRjRIRI}, year = {2024}, note = {Video of otherwise unpublished talk at EuroForth 2024}, abstract = {An idea for an alternative to touchscreens for user interfaces.} } @Misc{wodni24, author = {Gerald Wodni}, title = {Calling C from Forth automagically}, howpublished = {https://www.youtube.com/watch?v=sHZJ9KfhGYo}, year = {2024}, note = {Video of otherwise unpublished talk at EuroForth 2024}, abstract = {First idea close at Edinburg Conference, now nearly working.} } @Misc{bennet24, author = {Paul E. Bennet}, title = {Why another book on Forth}, howpublished = {https://www.youtube.com/watch?v=Q9T0sJgkbp8}, year = {2024}, note = {Video of otherwise unpublished talk at EuroForth 2024} } @Misc{ertl-decompiler24, author = {M. Anton Ertl}, title = {The new Gforth Decompiler}, howpublished = {https://www.youtube.com/watch?v=EPtLQJLYsKg}, year = {2024}, note = {Video of otherwise unpublished talk at EuroForth 2024}, abstract = {Gforth's decompiler now uses additional metadata for producing its output. This demo shows how it works.} } @Proceedings{euroforth24, title = {40th EuroForth Conference}, booktitle = {40th EuroForth Conference}, year = {2024}, key = {EuroForth'24}, url = {http://www.euroforth.org/ef24/papers/proceedings.pdf} }