Lightweight compilation of (C)LP to JavaScript*

  title={Lightweight compilation of (C)LP to JavaScript*},
  author={Jos{\'e} Francisco Morales and R{\'e}my Haemmerl{\'e} and Manuel Carro and Manuel V. Hermenegildo},
  journal={Theory and Practice of Logic Programming},
  pages={755 - 773}
Abstract We present and evaluate a compiler from Prolog (and extensions) to JavaScript which makes it possible to use (constraint) logic programming to develop the client side of web applications while being compliant with current industry standards. Targeting JavaScript makes (C)LP programs executable in virtually every modern computing device with no additional software requirements from the point of view of the user. In turn, the use of a very high-level language facilitates the development… 

The Ciao CLP ( ^ X > ) Library A Modular CLP Extension for Prolog ( System Description )

A new free library for Constraint Logic Programming over Finite Domains, included with the Ciao Prolog system, which is entirely written in Prolog, leveraging on Ciao's module system and code transformation capabilities in order to achieve a highly modular design without compromising performance.

The Ciao clp(FD) Library. A Modular CLP Extension for Prolog

We present a new free library for Constraint Logic Programming over Finite Domains, included with the Ciao Prolog system. The library is entirely written in Prolog, leveraging on Ciao's module system

Tail call elimination and data representation for functional languages on the Java virtual machine

This paper focuses on two overall challenges: how to efficiently represent algebraic data types in the presence of tags and tuples, option types, newtypes, and parametric polymorphism, and how to support full tail call elimination on the JVM.

GNU Prolog-PHP multi-tier integration

  • R. Szklarczyk
  • Computer Science
    2013 IEEE 7th International Conference on Intelligent Data Acquisition and Advanced Computing Systems (IDAACS)
  • 2013
The paper provides a concept of GNU-Prolog integration with PHP using ANSI C socket server as a middleware to separate user interface (web based) from CLP program execution.

An s(CASP) In-Browser Playground based on Ciao Prolog

A browser-based environment for developing s(CASP) programs, based on the Ciao Prolog playground and its components is presented, which runs locally on the browser with no need for interaction with a server beyond code download.



Improved Compilation of Prolog to C Using Moded Types and Determinism Information

The current status of and performance results for a prototype compiler of Prolog to C, ciaocc are described, which is designed to accept different kinds of high-level information, typically obtained via an automatic analysis of the initial Prolog program and expressed in a standardized language of assertions.

Towards a jitting VM for prolog execution

It is shown that declarative languages such as Prolog can indeed benefit from having a just-in-time compiler and that PyPy can form the basis for implementing programming languages other than Python.

An overview of Ciao and its design philosophy

An overall description of the Ciao multiparadigm programming system emphasizing some of the novel aspects and motivations behind its design and implementation is provided, and an informal overview of the language and program development environment is provided.

The BinProlog experience: Architecture and implementation choices for continuation passing Prolog and first-class logic engines

  • Paul Tarau
  • Computer Science
    Theory and Practice of Logic Programming
  • 2011
Abstract We describe the BinProlog system's compilation technology, runtime system and its extensions supporting first-class Logic Engines while providing a short history of its development, details

Emscripten: an LLVM-to-JavaScript compiler

This work presents and proves the validity of Emscripten's Relooper algorithm, which recreates high-level loop structures from low-level branching data, and opens up two avenues for running code written in languages other than JavaScript on the web.

A Register-Free Abstract Prolog Machine with Jumbo Instructions

This paper presents a stack machine for Prolog, named TOAM Jr., which departs from the TOAM adopted in early versions of B-Prolog in that it employs no registers for temporary data and it offers variable-size instructions for encoding unification and procedure calls.

Comparing tag scheme variations using an abstract machine generator

This paper is able to automatically generate code featuring all the optimizations present in a hand-written, highly-optimized abstract machine and it can also obtain emulators with larger addressable space and better performance.

SWI-Prolog and the web

This article motivates the design decisions in the libraries and extensions to Prolog for handling Web documents and protocols and proposes an architecture where Prolog communicates to other components in a Web application using the standard HTTP protocol.

Trace-based just-in-time type specialization for dynamic languages

This work presents an alternative compilation technique for dynamically-typed languages that identifies frequently executed loop traces at run-time and then generates machine code on the fly that is specialized for the actual dynamic types occurring on each path through the loop.