- Comparison of Prolog implementations
-
The following Comparison of Prolog implementations provides a reference for the relative feature sets and performance of different implementations of the Prolog computer programming language.
Contents
Main features
Platform Features Toolkit Prolog Mechanics Name OS Licence Native Graphics Compiled Code Unicode Object Oriented Native OS Control Stand Alone Executable C Interface[1] Java Interface[1] Interactive Interpreter Debugger Code Profiler Syntax BProlog Unix, Windows, Mac OS X Free for academic uses Yes Yes Yes Yes Yes Yes Yes Yes Yes ISO-Prolog, plus event-handling, CLP(FD), and tabling Ciao Unix, Windows, Mac OS X GPL, LGPL Yes Yes Yes Yes Yes Yes Yes Yes Yes ISO-Prolog, plus extensions DOS-PROLOG MS-DOS Shareware Yes Yes Yes Yes Yes Yes Edinburgh Prolog GNU Prolog Unix, Windows, Mac OS X GPL, LGPL Yes Yes Yes Yes Yes Yes ISO-Prolog Jekejeke Prolog JVM w/o Toolkit Distributable otherwise Evaluation Yes (via Java) Yes (16-bit) Yes (via Java) Yes Yes Yes ISO-Prolog, Java API JLog JVM GPL Yes Yes Yes Yes ISO-Prolog JScriptLog Web Browser GPL Yes ISO-Prolog jTrolog JVM LGPL Yes Yes Yes Yes ISO-Prolog tests LPA-Prolog Windows Commercial Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Edinburgh Prolog with extensions Open Prolog Mac OS Freeware Yes Poplog Prolog Linux (32- and 64-bit), Unix, Windows Free Open Source Only through POP-11, on Linux Yes Yes Yes Yes Yes Yes Edinburgh Prolog, with interfaces to Poplog Common Lisp and Pop-11 SICStus Prolog Unix, Linux, Windows, Mac OS X Commercial Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ISO-Prolog Strawberry Prolog Windows, Unix Freeware, Commercial Yes Yes Yes Yes Yes Not ISO-Prolog + extensions SWI-Prolog Unix, Windows, Mac OS X LGPL Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ISO-Prolog, Edinburgh Prolog tuProlog JVM LGPL Yes Yes Yes Yes Yes Yes ISO-Prolog Visual Prolog Windows Freeware, Commercial Yes Yes Yes Yes Yes Yes Yes Yes Yes XSB Prolog Linux, Windows, Solaris, Mac OS X LGPL Yes Yes Yes Yes Yes Yes Yes Yes ISO-Prolog, tabled WFS YAP-Prolog Linux, Windows, Solaris, Mac OS X, HP-UX GPL or Artistic (user choice) Yes Yes Yes Yes Yes Yes Yes Yes Edinburgh, ISO-Prolog, Quintus and SICStus Prolog compatible Web-related Name Conditional compilation Sockets Multi-threading Tabling HTTP client HTTP server HTML Parser RDF Triple store BProlog Yes Ciao Yes Yes Yes Yes Yes Yes GNU Prolog No Yes Jekejeke Prolog Yes (via Java) Yes Yes (built-in) Yes (via Java) LPA-Prolog Yes Yes Yes Yes SICStus Prolog Yes Yes SWI-Prolog Yes Yes Yes Yes Yes Yes Yes Visual Prolog Yes Yes Yes Yes Yes XSB Yes Yes Yes Yes YAP-Prolog Yes Yes Yes Yes Static analysis
Name Type checker Determinacy checker Call-pattern checker Ciao Yes Yes Yes GNU Prolog Jekejeke Prolog SICStus Prolog Yes SWI-Prolog Visual Prolog Yes Yes Yes XSB YAP-Prolog Optimizations
Name Tail-Call Optimization Choice Point Elimination Environment Trimming Just-in-Time Indexing Ciao Yes Yes Yes ? GNU Prolog ? Jekejeke Prolog Yes (runtime) Yes (runtime) Yes (runtime) Yes SICStus Prolog Yes Yes Yes ? SWI-Prolog Yes Visual Prolog Yes (compile time) Yes (compile time) N/A ? XSB Yes Yes ? YAP-Prolog Yes Yes Yes Portability
Code that strictly conforms to ISO-Prolog is portable across compliant implementations that share the same implementation defined features. Factors that can adversely affect portability include: the processor character set such as Unicode, implementation specific extensions to syntax, bounded vs. unbounded integer arithmetic, non-portable extensions such as string-objects, advanced numeric types (rationals, complex), threads, and tabling. [2]
Benchmarks
- Benchmarking issues: Odd Prolog benchmarking, Performance differences.[3]
- Benchmarking software: older, Dobry, Aquarius benchmark suite, (Bothe, 1990)[4], (Demoen et al. 2001), benchmark descriptions
- Benchmarking results: B-Prolog, SICStus, XSB[5], SICStus vs Yap vs hProlog[6]
- Benchmarking results: Survey of java prolog engines by Michael Zeising
- Benchmarking results: OpenRuleBench yearly open-source benchmark of rule engines
References
- ^ a b C/Java interface can also be used for graphics and OS control.
- ^ Jan Wielemaker and Vıtor Santos Costa: Portability of Prolog programs: theory and case-studies. CICLOPS-WLPE Workshop 2010.
- ^ B. Demoen, and P. Nguyen, About unnecessary performance differences between Prolog implementations, Proceedings of the Colloquium on Implementation of Constraint and Logic Programming Systems (CICLOPS 2001)
- ^ Bothe, K. (1990). "A prolog space benchmark suite". ACM SIGPLAN Notices 25 (12): 54–50. doi:10.1145/122193.122197.
- ^ A Summary of XSB Performance (1993)[1]
- ^ Demoen, B.; Nguyen, P. L.; Vandeginste, R. (2002). Copying Garbage Collection for the WAM: to Mark or Not to Mark?. 2401. pp. 194. doi:10.1007/3-540-45619-8_14.
External Links
- Overview of Prolog Systems by Ulrich Neumerkel
Categories:- Prolog programming language family
Wikimedia Foundation. 2010.