From c808b52451c8326f7e66de4035bdbcff0dff3be4 Mon Sep 17 00:00:00 2001 From: vsc Date: Tue, 17 Jun 2008 21:21:35 +0000 Subject: [PATCH] make DOS compatible git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2281 b08c6af1-5177-4d33-ba66-4b1c6b8b522a --- README | 448 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 224 insertions(+), 224 deletions(-) diff --git a/README b/README index 0cabcfe58..3985da8b0 100644 --- a/README +++ b/README @@ -1,224 +1,224 @@ - - - README for Yap 5.1 - - -This directory contains a release of the Yap 5.1.* 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 52 is known to build with many versions of gcc (<= gcc-2.7.2, >= -gcc-2.8.1, >= egcs-1.0.1, gcc-2.95.*) and on a variety of Linux, -MacOSX, and Unix'es: SunOS 4.1, Solaris 2.*, Irix 5.2, HP-UX 10.20, -Dec Alpha Unix, Linux 1.2 and Linux 2.* (RedHat 4.0 through 5.2, -Debian 2.*) in both the x86 and alpha platforms. It has been built on -Windows XP using cygwin/mingw from Cygnus Solutions. and on MaxO - -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.ncc.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. How to compile YAP - -To compile YAP just do: - - (1) mkdir arch - - (2) cd arch - - (3) ../configure - - (4) check the Makefile for any extensions or changes you want to make. - - (5) make - - (6) If the compilation succeeds, try ./yap - - (7) Happy? make install - - (8) "make install_info" will create the info files in the standard - info directory. - - (9) "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. - -2.1 Where to install Yap - - YAP uses autoconf. Recent versions of Yap try to follow GNU -conventions on where to place software. 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. - -2.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-rational-trees=yes gives you support for infinite rational -trees (enabled by default). - - o --enable-coroutining=yes gives you support for coroutining, -including freezing of goals, attributed variables, and -constraints. This will also enable support for infinite rational -trees (enabled by default). - - o --enable-depth-limit=yes allows depth limited evaluation, say for -implementing iterative deepening. - - 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. - -2.3 Porting Yap - -The system has been mainly tested with GCC, but we have been able to -compile 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. - -2.3.1 Yap and GCC - -Yap has been developed to take advantage of GCC (but not to depend on -it). The major advantage of GCC is threaded code and register -reservation. - -YAP is set by default to compile with the best compilation flags we -know. Even so, a few specific options can be used depending on the -architecture: - -2.3.1.1 x86 - -The flag: - - YAP_EXTRAS= ... -DBP_FREE=1 - -tells us to use the %bp register (frame-pointer) as the emulator's -program counter. This seems to be stable and should become default -real soon now. - -2.3.1.2 Sparc/Solaris2 - -Use: - - YAP_EXTRAS= ... -mno-app-regs -DOPTIMISE_ALL_REGS_FOR_SPARC=1 - -and YAP will get two extra registers! This trick does not work on -SunOS 4 machines. - -2.3.1.3 Tuning GCC/Yap for your machine model - -Versions of GCC can be tweaked for different processors, eg, 486, -Pentium, PentiumPro, Ultrasparc, Supersparc. Unfortunately, some of -these tweaks do may make Yap run slower or not at all in other machines -with the same instruction set, so they cannot be made default. - -The best options also depends on the version of GCC you are using, and -it is a good idea to consult the GCC manual under the menus "Invoking -GCC"/"Submodel Options". We next describe a few: - -(a) GCC up to 2.7.*: - - o 486: - - YAP_EXTRAS= ... -m486 -DBP_FREE=1 - - to take advantage of 486 specific optimisations in GCC 2.7.*. - - o Pentium: - - YAP_EXTRAS= ... -m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2 - - o PentiumPros are known not to require alignment. - - o Super and UltraSparcs: - YAP_EXTRAS= ... -msupersparc - -(b) GCC 2.8.*, EGCS, GCC 2.95.* - - o Check -march=XXX for fun. - + + + README for Yap 5.1 + + +This directory contains a release of the Yap 5.1.* 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 52 is known to build with many versions of gcc (<= gcc-2.7.2, >= +gcc-2.8.1, >= egcs-1.0.1, gcc-2.95.*) and on a variety of Linux, +MacOSX, and Unix'es: SunOS 4.1, Solaris 2.*, Irix 5.2, HP-UX 10.20, +Dec Alpha Unix, Linux 1.2 and Linux 2.* (RedHat 4.0 through 5.2, +Debian 2.*) in both the x86 and alpha platforms. It has been built on +Windows XP using cygwin/mingw from Cygnus Solutions. and on MaxO + +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.ncc.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. How to compile YAP + +To compile YAP just do: + + (1) mkdir arch + + (2) cd arch + + (3) ../configure + + (4) check the Makefile for any extensions or changes you want to make. + + (5) make + + (6) If the compilation succeeds, try ./yap + + (7) Happy? make install + + (8) "make install_info" will create the info files in the standard + info directory. + + (9) "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. + +2.1 Where to install Yap + + YAP uses autoconf. Recent versions of Yap try to follow GNU +conventions on where to place software. 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. + +2.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-rational-trees=yes gives you support for infinite rational +trees (enabled by default). + + o --enable-coroutining=yes gives you support for coroutining, +including freezing of goals, attributed variables, and +constraints. This will also enable support for infinite rational +trees (enabled by default). + + o --enable-depth-limit=yes allows depth limited evaluation, say for +implementing iterative deepening. + + 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. + +2.3 Porting Yap + +The system has been mainly tested with GCC, but we have been able to +compile 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. + +2.3.1 Yap and GCC + +Yap has been developed to take advantage of GCC (but not to depend on +it). The major advantage of GCC is threaded code and register +reservation. + +YAP is set by default to compile with the best compilation flags we +know. Even so, a few specific options can be used depending on the +architecture: + +2.3.1.1 x86 + +The flag: + + YAP_EXTRAS= ... -DBP_FREE=1 + +tells us to use the %bp register (frame-pointer) as the emulator's +program counter. This seems to be stable and should become default +real soon now. + +2.3.1.2 Sparc/Solaris2 + +Use: + + YAP_EXTRAS= ... -mno-app-regs -DOPTIMISE_ALL_REGS_FOR_SPARC=1 + +and YAP will get two extra registers! This trick does not work on +SunOS 4 machines. + +2.3.1.3 Tuning GCC/Yap for your machine model + +Versions of GCC can be tweaked for different processors, eg, 486, +Pentium, PentiumPro, Ultrasparc, Supersparc. Unfortunately, some of +these tweaks do may make Yap run slower or not at all in other machines +with the same instruction set, so they cannot be made default. + +The best options also depends on the version of GCC you are using, and +it is a good idea to consult the GCC manual under the menus "Invoking +GCC"/"Submodel Options". We next describe a few: + +(a) GCC up to 2.7.*: + + o 486: + + YAP_EXTRAS= ... -m486 -DBP_FREE=1 + + to take advantage of 486 specific optimisations in GCC 2.7.*. + + o Pentium: + + YAP_EXTRAS= ... -m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2 + + o PentiumPros are known not to require alignment. + + o Super and UltraSparcs: + YAP_EXTRAS= ... -msupersparc + +(b) GCC 2.8.*, EGCS, GCC 2.95.* + + o Check -march=XXX for fun. +