7 research outputs found

    On the Implementation of GNU Prolog

    Get PDF
    GNU Prolog is a general-purpose implementation of the Prolog language, which distinguishes itself from most other systems by being, above all else, a native-code compiler which produces standalone executables which don't rely on any byte-code emulator or meta-interpreter. Other aspects which stand out include the explicit organization of the Prolog system as a multipass compiler, where intermediate representations are materialized, in Unix compiler tradition. GNU Prolog also includes an extensible and high-performance finite domain constraint solver, integrated with the Prolog language but implemented using independent lower-level mechanisms. This article discusses the main issues involved in designing and implementing GNU Prolog: requirements, system organization, performance and portability issues as well as its position with respect to other Prolog system implementations and the ISO standardization initiative.Comment: 30 pages, 3 figures, To appear in Theory and Practice of Logic Programming (TPLP); Keywords: Prolog, logic programming system, GNU, ISO, WAM, native code compilation, Finite Domain constraint

    SICStus MT - A Multithreaded Execution Environment for SICStus Prolog

    Get PDF
    The development of intelligent software agents and other complex applications which continuously interact with their environments has been one of the reasons why explicit concurrency has become a necessity in a modern Prolog system today. Such applications need to perform several tasks which may be very different with respect to how they are implemented in Prolog. Performing these tasks simultaneously is very tedious without language support. This paper describes the design, implementation and evaluation of a prototype multithreaded execution environment for SICStus Prolog. The threads are dynamically managed using a small and compact set of Prolog primitives implemented in a portable way, requiring almost no support from the underlying operating system

    The implementation of GNU Prolog

    Get PDF
    Abstract GNU Prolog is a general-purpose implementation of the Prolog language, which distinguishes itself from most other systems by being, above all else, a native-code compiler which produces stand-alone executables which do not rely on any bytecode emulator or meta-interpreter. Other aspects which stand out include the explicit organization of the Prolog system as a multipass compiler, where intermediate representations are materialized, in Unix compiler tradition. GNU Prolog also includes an extensible and high-performance finite-domain constraint solver, integrated with the Prolog language but implemented using independent lower-level mechanisms. This paper discusses the main issues involved in designing and implementing GNU Prolog: requirements, system organization, performance, and portability issues as well as its position with respect to other Prolog system implementations and the ISO standardization initiative

    Run-time compilation techniques for wireless sensor networks

    No full text
    Wireless sensor networks research in the past decade has seen substantial initiative,support and potential. The true adoption and deployment of such technology is highly dependent on the workforce available to implement such solutions. However, embedded systems programming for severely resource constrained devices, such as those used in typical wireless sensor networks (with tens of kilobytes of program space and around ten kilobytes of memory), is a daunting task which is usually left for experienced embedded developers.Recent initiative to support higher level programming abstractions for wireless sensor networks by utilizing a Java programming paradigm for resource constrained devices demonstrates the development benefits achieved. However, results have shown that an interpreter approach greatly suffers from execution overheads. Run-time compilation techniques are often used in traditional computing to make up for such execution overheads. However, the general consensus in the field is that run-time compilation techniques are either impractical, impossible, complex, or resource hungry for such resource limited devices.In this thesis, I propose techniques to enable run-time compilation for such severely resource constrained devices. More so, I show not only that run-time compilation is in fact both practical and possible by using simple techniques which do not require any more resources than that of interpreters, but also that run-time compilation substantially increases execution efficiency when compared to an interpreter

    Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz

    Get PDF
    Diese Arbeit beschreibt Design, Implementierung und Evaluierung einer virtuellen Maschine für die Kernsprache von Oz, die wir mit L bezeichnen. Wir stellen L aus didaktischen Gründen als Erweiterung einer Teilsprache von SML dar. Die wichtigsten Unterschiede von L zu SML sind: logische Variablen, Threads, Synchronisation und dynamische Typisierung. Ausgehend von einer informellen Beschreibung der dynamischen Semantik über ein Graphenmodell entwickeln wir daraus schrittweise auf unterschiedlichen Abstraktionsebenen eine virtuelle Maschine für L. Wir beschreiben zunächst ein einfaches Grundmodell. Darauf aufbauend diskutieren wir verschiedene Optimierungen. Schließlich verfeinern wir weiter, indem wir auf Aspekte der Implementierung des Modells eingehen. Abschließend evaluieren wir die Effektivität der vorgestellten Techniken an einer Reihe von größeren Anwendungen aus der Praxis. Weiter zeigen wir, daß die Implementierung der Sprache kompetitiv ist mit den schnellsten Emulatoren für statisch getypte funktionale Sprachen.This thesis presents the design, implementation and evaluation of a virtual machine for the core language of Oz, which we call L. We present L for didactic reasons as an extension of a sublanguage of SML. The most important differences between L and SML are: logic variables, threads, synchronization and dynamic typing. Starting from an informal description of the dynamic semantics in terms of a graph model, we develop step by step on various levels of abstraction a virtual machine for L. We begin with a simple basic model. We then propose several optimizations of this model. Afterwards we keep refining our approach by addressing specific aspects of the implementation of the model. Finally we evaluate the effectiveness of the techniques using a set of larger real world applications. Further we show, that the implementation of the language is competitive with the fastest emulators for statically typed functional languages

    Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz

    Get PDF
    Diese Arbeit beschreibt Design, Implementierung und Evaluierung einer virtuellen Maschine für die Kernsprache von Oz, die wir mit L bezeichnen. Wir stellen L aus didaktischen Gründen als Erweiterung einer Teilsprache von SML dar. Die wichtigsten Unterschiede von L zu SML sind: logische Variablen, Threads, Synchronisation und dynamische Typisierung. Ausgehend von einer informellen Beschreibung der dynamischen Semantik über ein Graphenmodell entwickeln wir daraus schrittweise auf unterschiedlichen Abstraktionsebenen eine virtuelle Maschine für L. Wir beschreiben zunächst ein einfaches Grundmodell. Darauf aufbauend diskutieren wir verschiedene Optimierungen. Schließlich verfeinern wir weiter, indem wir auf Aspekte der Implementierung des Modells eingehen. Abschließend evaluieren wir die Effektivität der vorgestellten Techniken an einer Reihe von größeren Anwendungen aus der Praxis. Weiter zeigen wir, daß die Implementierung der Sprache kompetitiv ist mit den schnellsten Emulatoren für statisch getypte funktionale Sprachen.This thesis presents the design, implementation and evaluation of a virtual machine for the core language of Oz, which we call L. We present L for didactic reasons as an extension of a sublanguage of SML. The most important differences between L and SML are: logic variables, threads, synchronization and dynamic typing. Starting from an informal description of the dynamic semantics in terms of a graph model, we develop step by step on various levels of abstraction a virtual machine for L. We begin with a simple basic model. We then propose several optimizations of this model. Afterwards we keep refining our approach by addressing specific aspects of the implementation of the model. Finally we evaluate the effectiveness of the techniques using a set of larger real world applications. Further we show, that the implementation of the language is competitive with the fastest emulators for statically typed functional languages
    corecore