AbstractWe describe theBinPrologsystem's compilation technology, runtime system and its extensions supporting first-class Logic Engines while providing a short history of its development, details of some of its newer re-implementations as well as an overview of the most important architectural choices involved in their design. With focus on its differences with conventional Warren Abstract Machine (WAM) implementations, we explain key details ofBinProlog's compilation technique, which replaces the WAM with a simplifiedcontinuation passingruntime system (the “BinWAM”), based on a mapping of full Prolog tobinary logic programs. This is followed by a description of aterm compressiontechnique using a “tag-on-data” representation. Later derivatives, the Java-basedJinni Prologcompiler and the recently developedLean Prologsystem refine theBinPrologarchitecture withfirst-class Logic Engines, made generic through the use of anInteractorinterface. An overview of their applications with focus on the ability to express at source level a wide variety of Prolog built-ins and extensions covers these newer developments.
Read full abstract