README for Yap6 This directory contains a release of the Yap 6.0.* Prolog system, originally developed at the Universidade do Porto by Luis Damas and Vitor Santos Costa, with contributions from the Edinburgh Prolog library, the C-Prolog manual authors, Ricardo Lopes, Ricardo Rocha, M. Hermenegildo, D. Cabeza, Eric Alphonse, Paulo Moura, Nuno Fonseca, Jan Wielemaker, Paul Singleton, Fred Dushin, Jan Wielemaker, Markus Triska, and many others. You should read the rest of this file for information on what Yap is and for instructions on how to build it. YAP 6 has been built with several versions on GCC on a variety of Linux, MacOSX. It has been built on Windows XP and VISTA using the mingw toolkit and cygwin from Cygnus Solutions. The main core of the YAP distribution is distributed under a dual license: the Perl Artistic license 2 and the FSF's LGPL. The YAP distribution also contains files distributed under the LGPL exclusively, and under the GPL. The YAP distribution includes several packages ported to Yap, such as Pillow, JPL, CLP(R) and CHR. We would like to take the opportunity to thank the developers of these packages for their generosity in allowing YAP to distribute these packages. Any bugs in these packages are probably our fault. If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to yap-users@lists.sourceforge.net. To subscribe to the mailing list or access the list archives, please see http://lists.sourceforge.net/lists/listinfo/yap-users Online documentation is available for Yap at: http://www.dcc.fc.up.pt/~vsc/Yap/ Recent versions of Yap, including both source and selected binaries, can be found from this same URL. 1. What is YAP The Yap Prolog System is a high-performance Prolog compiler developed at LIACC, Universidade do Porto. Yap provides several important features: o speed: Yap is widely considered one of the fastest available Prolog systems. o functionality: it supports stream I/O, sockets, modules, exceptions, Prolog debugger, C-interface, dynamic code, internal database, DCGs, saved states, co-routining, arrays. o we explicitly allow both commercial and non-commercial use of Yap. Yap is based on the David H. D. Warren's WAM (Warren Abstract Machine), with several optimizations for better performance. Yap follows the Edinburgh tradition, and was originally designed to be largely compatible with DEC-10 Prolog, Quintus Prolog, and especially with C-Prolog. Yap implements most of the ISO-Prolog standard. We are striving at full compatibility, and the manual describes what is still missing. The manual also includes a (largely incomplete) comparison with SICStus Prolog. 2. Obtaining YAP's development sources. YAP is now being maintained using the git source management system. A public repository is available at http://gitorious.org/projects/yap-git Please use git clone git://gitorious.org/yap-git/mainline.git to obtain a copy of the current YAP tree. 3. How to compile YAP To compile YAP from the source directory just do: (1) ./configure (2) check the Makefile for any extensions or changes you want to make. (3) make (4) If the compilation succeeds, try ./yap (5) Happy? make install (6) "make install_info" will create the info files in the standard info directory. (7) "make html" will create documentation in html format in the current directory. In most systems you will need to be superuser in order to do "make install" and "make info" on the standard directories. 3.1 Where to install Yap YAP uses autoconf. Recent versions of Yap try to follow GNU conventions on where to place software. By default, this location is /usr/local on Unix, Linux, and OS/X machines. You can use the --prefix configure option to set the ROOTDIR macro and the --exec-prefix option to set the EROOTDIR macro (for architecture-dependent files). EROOTDIR defaults to ROOTDIR. o The main executable is placed at BINDIR, which defaults at $(EROOTDIR)/bin. This executable is actually a script that calls the Prolog engine, stored at YAPLIBDIR. o SHAREDIR is the directory where the Prolog libraries are stored. Its default value is $(ROOTDIR)/share. The Prolog libraries are machine-independent text files that only need to be installed once, even on systems where multiple copies of Yap of the same version are installed. (e.g. with different configurations or for different architectures sharing a file server.) o LIBDIR is the directory where binary libraries are stored. It is set to $(EROOTDIR)/lib by default. YAPLIBDIR is a subdirectory (by default $(EROOTDIR)/lib/Yap) that contains the Prolog engine and the binary Prolog libraries. o INCLUDEDIR is used if you want to use Yap as a library. o INFODIR is where the info help files will be stored. It defaults to $(SHAREDIR)/info. 3.2 Which YAP to compile Compiling YAP with the standard options give you a plain vanilla Prolog. You can tune Yap to use extra functionality by using the following options to configure: o --enable-depth-limit=yes allows depth limited evaluation, say for implementing iterative deepening. It is required by the ILP system Aleph. o --enable-use-malloc=yes makes YAP use the system's library for all memory allocation. o --enable-threads=yes enables POSIX thread support. o --enable-low-level-tracer=yes allows support for tracing all calls, retries, and backtracks in the system. This can help in debugging your application, but results in performance loss. o --enable-wam-profile=yes allows profiling of abstract machine instructions. This is useful when developing YAP, should not be very useful for normal users. o --enable-parallelism={env-copy,sba,a-cow} allows or-parallelism supported by one of these three forms. This is still highly experimental. o --enable-tabling=yes allows tabling support. This is still experimental. o --with-jpl=JAVA_PATH activates the Java Interface Library JPL. In Linux and WIN32 you have to provide a path to the Java library, in OSX it is sufficient to say yes. 3.3 Porting Yap The system has been mainly tested with GCC, but we have been able to compile older versions of Yap under lcc in Linux, Sun's cc compiler, IBM's xlc, SGI's cc, HP's cc, and Microsoft's Visual C++ 6.0. Recent versions of YAP have also been compiled using Intel's lcc.