{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,11]],"date-time":"2026-01-11T20:35:18Z","timestamp":1768163718563,"version":"3.49.0"},"reference-count":26,"publisher":"Cambridge University Press (CUP)","issue":"1-2","license":[{"start":{"date-parts":[[2011,12,12]],"date-time":"2011-12-12T00:00:00Z","timestamp":1323648000000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Theory and Practice of Logic Programming"],"published-print":{"date-parts":[[2012,1]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p><jats:monospace>GNU Prolog<\/jats:monospace>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.<jats:monospace>GNU Prolog<\/jats:monospace>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<jats:monospace>GNU Prolog<\/jats:monospace>: requirements, system organization, performance, and portability issues as well as its position with respect to other Prolog system implementations and the ISO standardization initiative.<\/jats:p>","DOI":"10.1017\/s1471068411000470","type":"journal-article","created":{"date-parts":[[2011,12,12]],"date-time":"2011-12-12T10:48:39Z","timestamp":1323686919000},"page":"253-282","source":"Crossref","is-referenced-by-count":15,"title":["On the implementation of<tt>GNU Prolog<\/tt>"],"prefix":"10.1017","volume":"12","author":[{"given":"DANIEL","family":"DIAZ","sequence":"first","affiliation":[]},{"given":"SALVADOR","family":"ABREU","sequence":"additional","affiliation":[]},{"given":"PHILIPPE","family":"CODOGNET","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2011,12,12]]},"reference":[{"key":"S1471068411000470_ref7","doi-asserted-by":"publisher","DOI":"10.1016\/0743-1066(95)00121-2"},{"key":"S1471068411000470_ref11","volume-title":"Joint International Conference and Symposium on Logic Programming","author":"Gudeman","year":"1992"},{"key":"S1471068411000470_ref17","unstructured":"Lattner C. and Adve V. 2004. LLVM: A compilation framework for lifelong program analysis transformation. In Code Generation and Optimization, 2004. CGO 2004. International Symposium on. 75\u201386."},{"key":"S1471068411000470_ref24","doi-asserted-by":"publisher","DOI":"10.1109\/2.108055"},{"key":"S1471068411000470_ref20","first-page":"161","article-title":"On applying or-parallelism and tabling to logic programs","volume":"5","author":"Rocha","year":"2005","journal-title":"TPLP"},{"key":"S1471068411000470_ref2","doi-asserted-by":"crossref","DOI":"10.7551\/mitpress\/7160.001.0001","volume-title":"Warren's Abstract Machine: A Tutorial Reconstruction","author":"A\u00eft-Kaci","year":"1991"},{"key":"S1471068411000470_ref25","unstructured":"Warren D. H. D. 1983. An Abstract Prolog Instruction Set. Technical Note 309, SRI International."},{"key":"S1471068411000470_ref14","unstructured":"ISO-Part1. 1995. Information Technology \u2013 Programming Languages \u2013 Prolog \u2013 Part 1: General Core. ISO\/IEC 13211-1."},{"key":"S1471068411000470_ref23","first-page":"293","volume-title":"Constraint Programming","author":"Van Hentenryck","year":"1994"},{"key":"S1471068411000470_ref18","unstructured":"Rao P. , Sagonas K. , Swift T. , Warren D. and Freire J. 1997. XSB: a system for efficiently computing well-founded semantics. In Proceedings of the 4th International Conference on Logic Programming and Non-Monotonic Reasoning (LPNMR'97). vol. 1265. 2\u201317."},{"key":"S1471068411000470_ref16","first-page":"1","volume-title":"Implementation of Functional Languages","author":"Jones","year":"1997"},{"key":"S1471068411000470_ref3","unstructured":"Andr\u00e9 P. and Abreu S. 2010. Casting the WAM as an EAM. In Proceedings of CICLOPS-WLPE 2010, Vidal G. and Zhou N.-F. , Eds."},{"key":"S1471068411000470_ref4","unstructured":"Carlsson M. 1990. Design and Implementation of an Or-Parallel Prolog Engine. PhD thesis, SICS."},{"key":"S1471068411000470_ref8","first-page":"764","article-title":"The design of the yap compiler: An optimizing compiler for logic programming languages","volume":"12","author":"da Silva","year":"2006","journal-title":"Journal of Universal Computer Science"},{"key":"S1471068411000470_ref9","unstructured":"Diaz D. and Codognet P. 1993. A minimal extension of the WAM for clp(FD). In ICLP, 774\u2013790."},{"key":"S1471068411000470_ref10","first-page":"243","volume-title":"PADL","author":"Ferreira","year":"1999"},{"key":"S1471068411000470_ref12","unstructured":"Hausman B. 1993. Turbo Erlang: Approaching the speed of C. In ICLP-Workshops on Implementation of Logic Programming Systems, 119\u2013135."},{"key":"S1471068411000470_ref13","first-page":"190","volume-title":"In Proceedings of the Eleventh International Conference on Logic Programming","author":"Haygood","year":"1994"},{"key":"S1471068411000470_ref15","doi-asserted-by":"crossref","unstructured":"Jaffar J. and Lassez J.-L. 1987. Constraint logic programming. In POPL. 111\u201319.","DOI":"10.1145\/41625.41635"},{"key":"S1471068411000470_ref19","unstructured":"Rocha R. , Silva F. and Costa V. S. 2000. YapTab: a tabling engine designed to support parallelism. In Conference on Tabulation in Parsing and Deduction. 77\u201387."},{"key":"S1471068411000470_ref21","volume-title":"Foundations of Constraint Satisfaction","author":"Tsang","year":"1993"},{"key":"S1471068411000470_ref22","unstructured":"Van Hentenryck P. 1989. Parallel constraint satisfaction in logic programming: preliminary results of chip within pepsys. In ICLP. 165\u2013180."},{"key":"S1471068411000470_ref26","first-page":"81","article-title":"Linear tabling strategies and optimizations","volume":"8","author":"Zhou","year":"2008","journal-title":"TPLP"},{"key":"S1471068411000470_ref1","first-page":"128","volume-title":"ICLP","author":"Abreu","year":"2003"},{"key":"S1471068411000470_ref5","first-page":"25","volume-title":"PLILP","author":"Chikayama","year":"1994"},{"key":"S1471068411000470_ref6","unstructured":"Codognet P. and Diaz D. 1995. WAMCC: Compiling prolog to C. In ICLP, 317\u2013331."}],"container-title":["Theory and Practice of Logic Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S1471068411000470","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,6,28]],"date-time":"2020-06-28T17:09:41Z","timestamp":1593364181000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068411000470\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,12,12]]},"references-count":26,"journal-issue":{"issue":"1-2","published-print":{"date-parts":[[2012,1]]}},"alternative-id":["S1471068411000470"],"URL":"https:\/\/doi.org\/10.1017\/s1471068411000470","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2011,12,12]]}}}