An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Warren's abstract machine: a tutorial reconstruction
Warren's abstract machine: a tutorial reconstruction
A New Data Structure for Implementing Extensions to Prolog
PLILP '90 Proceedings of the 2nd International Workshop on Programming Language Implementation and Logic Programming
Metastructures versus Attributed Variables in the Context of Extensible Unification
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
From Prolog Algebras Towards WAM - A Mathematical Study of Implementation
CSL '90 Proceedings of the 4th Workshop on Computer Science Logic
Compiling Constraint Handling Rules into Prolog with Attributed Variables
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Distributed WWW programming using (Ciao-)Prolog and the PiLLoW library
Theory and Practice of Logic Programming
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
Comparing tag scheme variations using an abstract machine generator
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Theory and Practice of Logic Programming
An Operational Semantics for JavaScript
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Trace-based just-in-time type specialization for dynamic languages
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
A register-free abstract prolog machine with jumbo instructions
ICLP'07 Proceedings of the 23rd international conference on Logic programming
Towards a jitting VM for prolog execution
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Integrated symbol table, engine and heap memory management in multi-engine prolog
Proceedings of the international symposium on Memory management
Emscripten: an LLVM-to-JavaScript compiler
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Theory and Practice of Logic Programming - Prolog Systems
An overview of ciao and its design philosophy
Theory and Practice of Logic Programming - Prolog Systems
A pearl on SAT solving in prolog
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Hi-index | 0.00 |
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 of high-quality, complex software. The compiler is a back end of the Ciao system and supports most of its features, including its module system and its rich language extension mechanism based on packages. We present an overview of the compilation process and a detailed description of the run-time system, including the support for modular compilation into separate JavaScript code. We demonstrate the maturity of the compiler by testing it with complex code such as a CLP(FD) library written in Prolog with attributed variables. Finally, we validate our proposal by measuring the performance of some LP and CLP(FD) benchmarks running on top of major JavaScript engines.