text:
You can subscribe to this list here.
Update of /cvsroot/xsb/XSB/packages/xsbdoc In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv17666 Modified Files: xsbdoc_term_proc.P Log Message: Commented out export of several predicates that are no longer defined. Index: xsbdoc_term_proc.P =================================================================== RCS file: /cvsroot/xsb/XSB/packages/xsbdoc/xsbdoc_term_proc.P,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- xsbdoc_term_proc.P 8 Apr 2008 14:02:57 -0000 1.10 +++ xsbdoc_term_proc.P 30 May 2008 14:53:59 -0000 1.11 @@ -1,7 +1,8 @@ -:- export comma_append/3, comma_length/2, - comma_member/2, comma_memberchk_eq/2, - comma_to_list/2, +:- export +%% comma_append/3, comma_length/2, +%% comma_member/2, comma_memberchk_eq/2, +%% comma_to_list/2, corrected_search_module/5, get_atom_from_body/2, messageln/1,
Update of /cvsroot/xsb/XSB/packages/xsbdoc In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv17178 Modified Files: xsbdoc1.P Log Message: Minor change in calling shell to make it handle more types of input. Index: xsbdoc1.P =================================================================== RCS file: /cvsroot/xsb/XSB/packages/xsbdoc/xsbdoc1.P,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- xsbdoc1.P 9 Apr 2008 21:34:12 -0000 1.15 +++ xsbdoc1.P 30 May 2008 14:53:04 -0000 1.16 @@ -206,7 +206,8 @@ findall(Val,xsbdoc_component(Val),Vals). shell_list(List) :- - concat_atom(List,AList), %shell doesn't use get_longstring, but parses list + flatten(List,List0), + concat_atom(List0,AList), %shell doesn't use get_longstring, but parses list shell(AList). make_bibfiles(Main):-
Update of /cvsroot/xsb/XSB/packages/xsbdoc In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15399 Modified Files: ciaoaux.P Log Message: Minor change to messaging predicate, to take advantage of lower level string concatenation when possible. Index: ciaoaux.P =================================================================== RCS file: /cvsroot/xsb/XSB/packages/xsbdoc/ciaoaux.P,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ciaoaux.P 24 Nov 2004 12:35:27 -0000 1.2 +++ ciaoaux.P 30 May 2008 14:50:01 -0000 1.3 @@ -13,6 +13,7 @@ :- import format/2 from format. :- import warning/1,messageln/2, message/2 from standard. :- import member/2 from basics. +:- import concat_atom/2 from string. #include "flag_defs_xsb.h" #include "standard.h" @@ -69,7 +70,11 @@ optional_message(Message,Opts):- member('-v',Opts),!, - writeln(Message). + (atomic(Message) + -> writeln(Message) + ; concat_atom(Message,MessageAtom), + writeln(MessageAtom) + ). optional_message(_Message,_Opts). xsbdoc_warning(Message):-
Update of /cvsroot/xsb/XSB/packages/xsbdoc In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv14937 Modified Files: autodocformats.P Log Message: Minor changes to avoid warnings. Index: autodocformats.P =================================================================== RCS file: /cvsroot/xsb/XSB/packages/xsbdoc/autodocformats.P,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- autodocformats.P 5 Apr 2008 16:37:06 -0000 1.9 +++ autodocformats.P 30 May 2008 14:47:56 -0000 1.10 @@ -204,9 +204,12 @@ % typeindex(prop, "prindex","code",'Property Definition Index', ''). % typeindex(decl, "deindex","code",'Declaration Definition Index', ''). +/* unused ... concepttype(index). concepttype(cindex). concepttype(concept). +***/ + %% --------------------------------------------------------------------------- %% Should really use sourcename, but not really supported until we eliminate @@ -626,7 +629,7 @@ list(Ops),list(NDecls,atom),list(NModes,atom), list(Indices,atom),stream(OS)) -# "The module header info is documented as the first section of the + # "The module header info is documented as the first section of the chapter.". %% --------------------------------------------------------------------------- @@ -880,7 +883,7 @@ :- pred format_predicates_begin(Format,Name,Text,OS) : '='(texinfo) * atom * string * stream -# "Predicates will formatted as an itemized list. Corresponds to a + # "Predicates will formatted as an itemized list. Corresponds to a begin itemize.". %% --------------------------------------------------------------------------- @@ -896,7 +899,7 @@ :- pred format_predicates_end(Format,OS) : '='(texinfo) * stream -# "Predicates will formatted as an itemized list. Corresponds to an + # "Predicates will formatted as an itemized list. Corresponds to an end itemize.". %% --------------------------------------------------------------------------- @@ -918,14 +921,14 @@ : '='(texinfo) * atom * predname * list(atom) * list(supported_option) * stream -# "Each predicate is an item in an itemized list.". + # "Each predicate is an item in an itemized list.". %% --------------------------------------------------------------------------- % TLS: 08/04/05: changed edef stuf to get the xsbdoc manual to compile. % TeX 3.141592 (Web2C 7.5.5) kpathsea version 3.5.5 % texi2dvi (GNU Texinfo 4.7) 1.3 % Dont know why this works, but it does on my Mac -format_predicate_begin(texinfo,Type,PN,Indices,Opts,OS) :- +format_predicate_begin(texinfo,Type,PN,Indices,_Opts,OS) :- texinfo_escape_ats_etc_all_atoms(PN,F/A), typetext(Type,Text,_Prefix,_Postfix), % ( member('-shorttoc', Opts)
Update of /cvsroot/xsb/XSB/packages/xsbdoc In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv14095 Modified Files: autodoc.P Log Message: Minor changes: formatting output messages, and deleting some exports of nondefined predicates. Index: autodoc.P =================================================================== RCS file: /cvsroot/xsb/XSB/packages/xsbdoc/autodoc.P,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- autodoc.P 9 Apr 2008 21:34:11 -0000 1.18 +++ autodoc.P 30 May 2008 14:46:13 -0000 1.19 @@ -1,11 +1,11 @@ :- compiler_options([ciao_directives,spec_off]). -:- export classify_import_files/4. +%%:- export classify_import_files/4. % not defined? :- export autodoc/7, clause_read/3, - generate_description/3, - generate_info_dir_entry/2, +% generate_description/3, +% generate_info_dir_entry/2, % generate_man_page/2, rewrite_docstring/4, detect_filetypes/4, @@ -303,7 +303,6 @@ (nonvar(IntroOS),stream_property(IntroOS,type(_)) -> close(IntroOS) ; true), - writeln(here3), read_file_reset, message('}'), ttyflush,!. @@ -372,7 +371,7 @@ %% version maintained in dir (computed relative to .pl file Dir!) concat_atom([Dir,'/',VDir,'/','GlobalChangeLog'],ChangeLogFile), % optional_message( -% "Getting global version from ~w...",[ChangeLogFile],Opts), +% ['Getting global version from ~w...',ChangeLogFile],Opts), ( file_exists(ChangeLogFile), !, open(ChangeLogFile,read,CLFS), @@ -414,7 +413,7 @@ # "Generates the documentation for the interface of a module.". %% --------------------------------------------------------------------------- -doc_interface(File,_,_FileLevel,FileType,_Base,_Name, +doc_interface(_File,_,_FileLevel,FileType,_Base,_Name, _Idxs,_NOS,_IntroOS,_Opts):- ( FileType = application; FileType = part ), !. @@ -434,7 +433,7 @@ get_comment(nodoc,multiple,ignore(_),_Format,_Idxs,Opts,NoDocS), (NoDocS == [] -> true - ; optional_message('Not documenting'(NoDocS),Opts)), + ; optional_message(['Not documenting: ',NoDocS],Opts)), % Usage comment to override automatic one get_comment(usage,single,ignore(_),Format,Idxs,Opts,Usage), @@ -453,13 +452,13 @@ sort(Exports,SortedExports), format_module_usage(Format,Name,RModuleType,SortedExports, UFiles,SysFiles,Ops,NDecls,Idxs,OS), -% optional_message("Documenting (new) declarations...",Opts), +% optional_message('Documenting (new) declarations...',Opts), % doc_decls(Name,NDecls,Base,Idxs,OS,Format,Opts), -% optional_message("Documenting (new) mode definitions...",Opts), +% optional_message('Documenting (new) mode definitions...',Opts), % doc_modes(Name,NModes,M,Base,Idxs,OS,Format,Opts), -% optional_message("Documenting exported predicates...",Opts), +% optional_message('Documenting exported predicates...',Opts), doc_exports(Name,Exports,File,Idxs,OS,Format,Opts), -% optional_message("Documenting multifile predicates...",Opts), +% optional_message('Documenting multifile predicates...',Opts), % doc_multifiles(Name,Multifiles,M,Base,Idxs,OS,Format,Opts), optional_message('Documenting internal preds, etc. ...',Opts), doc_internals(Name,Exports,Base,Idxs,OS,Format,Opts). @@ -490,7 +489,7 @@ findall(F/A,(defines(Goal), functor(Goal,F,A)),DupAllExports), eliminate_duplicates(DupAllExports,AllExports), - optional_message('Documenting all defined predicates'(AllExports), + optional_message(['Documenting all defined predicates: ',AllExports], Opts). %% --------------------------------------------------------------------------- @@ -618,7 +617,7 @@ %% General case: doc_predicate(F/A,IsDecl,File,Idxs,OS,Format,Opts):- - optional_message(['Generating documentation for ',File,':',F/A],Opts), + optional_message(['Generating documentation for ',File,':',F,'/',A],Opts), functor(Pred,F,A), predicate_usages(Pred,IsDecl,Usages,_N,Multiple), predicate_level_comment(F/A,Format,Idxs,Opts,Comment,CommentHead), @@ -1089,7 +1088,7 @@ %% Else, we need to infer the type detect_filetypes(Opts,Components,Type,Level) :- (exports(_,_) -> Type = module ; Type = file), - optional_message('File being documented as a library'(Type),Opts), + optional_message(['File being documented as a library ',Type],Opts), detect_filelevel(Opts,Components,Level). detect_filelevel(Opts,[],component) :- @@ -1508,8 +1507,8 @@ ( Functor \== 0, functor(Pattern,Functor,Arity), copy_term(Pattern,TmpPattern), - optional_message(['-> Including code for ',Functor/Arity, - 'in documentation string'],Opts), + optional_message(['-> Including code for ',Functor,'/',Arity, + ' in documentation string'],Opts), clause_read(TmpPattern,_,_) -> open(autodocXXXXXX,write,Tmp), telling(Old), tell(Tmp), @@ -1562,7 +1561,7 @@ % EpsFile = <DIR>/<FILE>.eps optional_message(['-> Including image ',EpsFile, - 'in documentation as NameEpsRelFile'],Opts), + ' in documentation as', NameEpsRelFile],Opts), concat_atom(['cp -f ', EpsFile, ' ', NameEpsRelFile],Command), ( shell(Command) -> true @@ -1689,7 +1688,7 @@ -> true ; error_message("unrecognized type in comment/filetype declaration")), !, - optional_message('File being documented as a library'(Type),Opts), + optional_message(['File being documented as a library: ',Type],Opts), detect_filelevel(Opts,Components,Level). filetype_usage_command(module, use_module). @@ -1784,7 +1783,7 @@ list(PredList), member(F/A,PredList) ) ) -> %optional_message( - % "following reexport chain for ~w to ~w",[F/A,UM],Opts), + % ['following reexport chain for ',F,'/',A,' to ',UM'],Opts), doc_predicate(F/A,IsDecl,UM,UBase,Idxs,OS,Format,Opts) ; format_predicate_begin(Format,udreexp,F/A,Idxs,Opts,OS),
Update of /cvsroot/xsb/XSB/docs/userman In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv29774 Modified Files: intro.tex quick_start.tex rbltin.tex system.tex Log Message: Revised and extended some old parts of the manual. Index: intro.tex =================================================================== RCS file: /cvsroot/xsb/XSB/docs/userman/intro.tex,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- intro.tex 10 Aug 2007 15:22:16 -0000 1.28 +++ intro.tex 11 May 2008 18:23:52 -0000 1.29 @@ -7,30 +7,34 @@ \begin{itemize} % \item Evaluation of queries according to the Well-Founded Semantics - \cite{VGRS91} through full SLG resolution; -% -\item A fully multi-threaded evaluation mechanism with thread-shared - static code, and that allows dynamic code and tables to be - thread-shared or thread-private. + \cite{VGRS91} through full SLG resolution (tabling with negation). + XSB's tabling implementation supports incremental tabling, as well + as call and answer subsumption. +% +\item A fully multi-threaded engine with thread-shared static code, + and that allows dynamic code and tables to be thread-shared or + thread-private. This engine fully supports the draft ISO standard + for multi-threading~\cite{Prolog-MT-ISO}. % \item Constraint handling for tabled programs based on an engine-level - implementation of annotated variables and a package, {\tt clpqr} for - handling real constraints, and the addition of Constraint Handling - Rules \cite{}; + implementation of annotated variables and various costraint + packages, including {\tt clpqr} for handling real constraints, and + {\tt bounds} a simple finite domain constraint library. +% + \item A package for Constraint Handling Rules \cite{Fruh} which can be + used to implement user-written constraint libraries. % \item A variety of indexing techniques for asserted code including variable-depth indexing on several alternate arguments, - fixed-depth indexing on combined arguments, trie-indexing. In - addition, both backtrackable and non-backtrackable updates to asserted - code are supported. + fixed-depth indexing on combined arguments, trie-indexing. % \item A set of mature packages, to extend XSB to evaluate - F-logic~\cite{KLW95} through the {\em FLORA} package, to model check - concurrent systems through the {\em XMC} system, to manage - ontologies through the {\em Cold Dead Fish} package, to support - literate programming through the {\tt xsbdoc} package, and to - support answer set programming through the {\tt XASP} package among - other features. + F-logic~\cite{KLW95} through the {\em FLORA-2} package (distributed + separately from XSB), to model check concurrent systems through the + {\em XMC} system, to manage ontologies through the {\em Cold Dead + Fish} package, to support literate programming through the {\tt + xsbdoc} package, and to support answer set programming through the + {\tt XASP} package among other features. % \item A number of interfaces to other software systems, such a C, Java, Perl, ODBC, SModels \cite{NiSi97}, and Oracle. @@ -62,9 +66,10 @@ the GNU General Public Library License. \end{itemize} -Though XSB can be used as a Prolog system\footnote{Many of the Prolog - components of XSB were originally based on PSB-Prolog~\cite{Xu90}, - which itself is based on version 2.0 of SB-Prolog~\cite{Debr88}.}, +Though XSB can be used as a Prolog system, +%\footnote{Many of the Prolog +% components of XSB were originally based on PSB-Prolog~\cite{Xu90}, +% which itself is based on version 2.0 of SB-Prolog~\cite{Debr88}.}, we avoid referring to XSB as such, because of the availability of SLG resolution and the handling of HiLog terms. These facilities, while seemingly simple, significantly extend its capabilities beyond those @@ -141,25 +146,30 @@ \end{example} \index{multi-threading} -\paragraph{Multi-threading} New to \version{} of XSB is a thorough -revision of XSB to support multi-threading using POSIX or -Windows-level threads. Detached XSB threads can be created to execute -specific tasks, and these threads will exit when the query succeeds -(or fails) and all thread memory reclaimed. While a thread's +\paragraph{Multi-threading} From Version 3.0 onward, XSB has been thoroughly +revised to support multi-threading using POSIX or Windows threads. +Detached XSB threads can be created to execute specific tasks, and +these threads will exit when the query succeeds (or fails, or throws +an exception) and all thread memory reclaimed. While a thread's execution state is, of course, private, it shares many resources with other threads, such as static code and I/O streams. Dynamic code and -tables are thread-private by default, but if a predicate is declared -thread-shared, any dynamic code and tables for this predicate will be -shared among threads. - -We also note that tabled programs can be used with attributed -variables, leading to constraint tabled programs (see Volume 2 of this -manual for a discussion of the interfaces to attributed variables). +tables can be either thread-shared or thread-provate by default or by +explicit declaration. -\comment{TLS: constraint handling?} +\paragraph{Constraint Support} +\index{attributed variables} +\index{Constraint Handling Rules} +% +XSB supports logic-based constraint handling at a low level through +attributed variables and associated packages (e.g. {\tt setarg/3}. In +addition, constraints may be handled through Constraint Handling +Rules. Constraint logic programs that use attributed variables may be +tabled; those that use Constraint Handling Rules may be efficiently +tabled if the {\tt CHRd} package is used. Constraint programming in +XSB is mainly covered in Volume 2. \index{indexing!star-indexing} -\paragraph{Indexing Methods} Data oriented applications may also +\paragraph{Indexing Methods} Data oriented applications may require indices other than Prolog's first argument indexing. XSB offers a variety of indexing techniques for asserted code. Clauses can be indexed on a group of arguments or on alternative arguments. @@ -168,7 +178,7 @@ {\em or} on a combination of (the outer function symbol of) the second and first arguments. If data is expected to be structured within function symbols and is in unit clauses, the directive {\tt - index(p/4,trie)} constructs an indexing trie of the {\tt p/4} + i ndex(p/4,trie)} constructs an indexing trie of the {\tt p/4} clauses using a depth-first, left-to-right traversal through each clause. Representing data in this way allows discrimination of information nested arbitrarily deep within clauses. Advantages of @@ -289,20 +299,15 @@ manual. \section{Using This Manual} -It should be mentioned that we adopt some standard notational -conventions, such as the name/arity convention for describing -predicates and functors, {\tt +} to denote input arguments, {\tt -} to -denote output arguments, {\tt ?} for arguments that may be either -input or output and {\tt \#} for arguments that are both input and -output (can be changed by the procedure). See Section -\ref{mode_declarations} for more details. \index{notational - conventions} Error cases for predicates designate the first argument -of a 2 or 3 argument error term, to allow use by error -handlers~\footnote{We are approaching compatibility in the use of - ISO-errors for ISO predicates, but in \version, we aren't quite - there yet.}. Also, the manual uses UNIX syntax for files and -directories except when it specifically addresses other operating -systems such as Windows. +We adopt some standard notational conventions, such as the name/arity +convention for describing predicates and functors, {\tt +} to denote +input arguments, {\tt -} to denote output arguments, {\tt ?} for +arguments that may be either input or output and {\tt \#} for +arguments that are both input and output (can be changed by the +procedure). See Section \ref{mode_declarations} for more details. +\index{notational conventions}. Also, the manual uses UNIX syntax for +files and directories except when it specifically addresses other +operating systems such as Windows. Finally, we note that XSB is under continuous development, and this document ---intended to be the user manual--- reflects the current @@ -312,9 +317,7 @@ When the research features of XSB --- tabling, HiLog, and Indexing Techniques --- are discussed in this manual, we also cite documents where they are fully explained. All of these documents can be found -via the world-wide web or anonymous ftp from {\tt -$\{$www/ftp$\}$.cs.sunysb.edu}, the same host from which XSB can be -obtained. +without difficulty on the web. While some of \version\ is subject to change in future releases, we will try to be as upward-compatible as possible. We would also like to Index: quick_start.tex =================================================================== RCS file: /cvsroot/xsb/XSB/docs/userman/quick_start.tex,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- quick_start.tex 3 Apr 2008 00:15:52 -0000 1.33 +++ quick_start.tex 11 May 2008 18:23:52 -0000 1.34 @@ -32,7 +32,7 @@ \verb'build', and \verb'etc'. \index{configuration} - +\index{installation into shared directories} \item Change directory to {\tt \$XSB\_DIR/build} and then run these commands: %% \begin{quote} @@ -109,18 +109,20 @@ \item[Type of Machine.] The configuration script automatically detects your machine and OS type, and builds XSB accordingly. On 64-bit platforms, the default compilation of XSB will reflect the - default of gcc on that platform. Moreover, you can build XSB for - different architectures while using the same tree and the same - installation directory provided, of course, that these machines are - sharing this directory, say using NFS or Samba. All you will have to - do is to login to a different machine with a different architecture - or OS type, and repeat the above sequence of commands. + default for the C compiler (e.g. gcc) on that platform. Moreover, + you can build XSB for different architectures while using the same + tree and the same installation directory provided, of course, that + these machines are sharing this directory, say using NFS or + Samba. All you will have to do is to login to a different machine + with a different architecture or OS type, and repeat the above + sequence of commands -- or configure with different parameters. - The configuration files for different architectures reside in different - directories, and there is no danger of an architecture conflict. - Moreover, you can keep using the same {\tt ./bin/xsb} script regardless - of the architecture. It will detect your configuration and will use the - right files for the right architecture! + The configuration files for different architectures reside in + different directories, and there is no danger of an architecture + conflict. In fact, you can keep using the same {\tt ./bin/xsb} + script regardless of the architecture. It will detect your + configuration and will use the right files for the right + architecture! If XSB is being built on a machine running Windows in which Cygwin is installed, Cygwin and Windows are treated as separate operating @@ -135,29 +137,30 @@ Section~\ref{quick:DOS} for more details. \index{cc} \index{gcc} \index{acc} -\item[Choice of the C Compiler and Other options] \label{cc} The {\tt - configure} script will attempt to use {\tt gcc}, if it is available. - Otherwise, it will revert to {\tt cc} or {\tt acc}. Some versions - of {\tt gcc} are broken for particular platforms, in which case you - would have to give {\tt configure} an additional directive {\tt - --with-cc} (or {\tt --with-acc}). If you must use some special - compiler, use {\tt --with-cc=your-own-compiler}. You can also use - the {\tt --with-optimization} option to change the default C - compiler optimization level. (or {\tt --disable-optimization} to - disable all compiler optimizations). {\tt --enable-debug}, and - there are many other options. Finally, the {\tt --with-bits64} - option forces compilation to use 64 bit mode on 64-bit machines that - default to 32 bit compilation; likewise, {\tt --with-bits32} forces - compilation to use 32 bit mode on 64-bit machines that default to - 64-bit compilation. Type {\tt configure --help} to see them - all. Also see the file~\verb'$XSB_DIR/INSTALL' for more details. +\item[Choice of the C Compiler and compiler-related + options] \label{cc} On Unix systems, XSB is developed and tested + mainly using gcc. Accordingly, the {\tt configure} script will + attempt to use {\tt gcc}, if it is available. Otherwise, it will + revert to {\tt cc} or {\tt acc}. Some versions of {\tt gcc} are + broken for particular platforms or {\tt gcc} may not have been + installed; in which case you would have to give {\tt configure} an + additional directive {\tt --with-cc} (or {\tt --with-acc}). If you + must use some special compiler, use {\tt + --with-cc=your-own-compiler}. You can also use the {\tt + --with-optimization} option to change the default C compiler + optimization level. (or {\tt --disable-optimization} to disable all + compiler optimizations). {\tt --enable-debug} is mainly a + devlopment option that allows XSB to be debugged using gdb -- there + are many other compiler-based options options. Type {\tt configure + --help} to see them all. Also see the file~\verb'$XSB_DIR/INSTALL' + for more details. \item[Word Size] XSB's configuration script checks whether the default compilation mode of a platform is 32- or 64-bits, and will build a version of XSB accoringly. Some platforms, however, support both 32-bit and 64-bit compilation. On such a platform, a user can explicitly specify the type of compilation using the options {\tt - with-bits32} and {\tt with-bits64}. + with-bits32} and {\tt with-bits64}. \item[XSB and Site-specific Information] Using the option {\tt --prefix=PREFIX} installs architecture-independent files in the @@ -168,15 +171,16 @@ for site-specific static and dynamic libraries, and for include files. -\item[Multi-threading] Version 3.0 of XSB is the first version that +\item[Multi-threading] Version 3.0 of XSB was the first version that supports multi-threading. On some platforms, the multi-threaded engine is slightly slower than the single-threaded engine, mostly due to its need for concurrency control. To obtain the benefits of multiple threads on a platform that supports either POSIX or Windows threads (i.e. nearly all platforms) users must configure XSB with - the directive {\tt enable-mt}. The multi-threaded engine works with - other configuration options, multi-threading can be compiled with - batched or local scheduling, with the ODBC or Interprolog + the directive {\tt enable-mt} (see Section~\ref{sec:mt-windows} for + instructions specific to Windows. The multi-threaded engine works + with other configuration options, multi-threading can be compiled + with batched or local scheduling, with the ODBC or Interprolog interfaces, and so on. %%$ @@ -274,32 +278,28 @@ \paragraph*{XSB on 64-bit platforms} \index{64-bit architectures} % -XSB has been tested on 64-bit Debian linux, and runs well there, -overall. However, there are a few minor details that have not been -worked out at the time of release of \version{}~\footnote{64-bit XSB - was broken in a few recent releases, because the developers did not - have access to a 64-bit machine. Access to a 64-bit machine is - recent at the time of release of \version{}.}. When XSB is compiled -in 64-bit mode, full floating point precision is not yet available as -XSB uses 3 of the 64 bits for a tag. Also, the sockets library may -have problems in \version{}. If any of these limitations prove a -problem, please contact {\tt xsb-development@...}. +XSB has been fully tested on 64-bit Debian Linux, 64-bit and Mac OS X. +However, the sockets library may have problems in \version{}. If this +limitation prove a problem, please contact {\tt + xsb-development@...}~\footnote{64-bit XSB was + broken in a recent releases prior to Version 3.1 because for a time + the developers did not have access to a 64-bit machine.}. Typically, if the 64-bit system generates 32-bit code by default, XSB will run just as in 32-bit mode (including 64-bit floats). 64-bit compilation can be forced for XSB by configuring with the option {\tt --with-bits64}, and in a similar manner 32-bit compilation can be -forced with the option {\tt --with-bits32}. The latter option may be -useful for linking XSB into an application that is not yet safe for 64 -bits. Users who employ either option should be aware of issues that -may arise when linking XSB to external C code. +forced with the option {\tt --with-bits32}. Users who employ either +option should be aware of issues that may arise when linking XSB to +external C code. \bi \item When XSB calls C code the C file must have been compiled with the same memory option as XSB. This is done automatically if the C file is compiled via a call from XSB's compiler, but must be handled by the user otherwise. For instance, if XSB were configured {\tt --with-bits32} on a 64-bit machine defaulting to 64-bits, then C - files called by XSB require the {\tt -m32} option in {\tt gcc}. + files called by XSB require the {\tt -m32} option in {\tt gcc} (if + not compiled by XSB). \item The appropriate memory option must be used when embedding XSB into a C or Java process. For instance, if a XSB is to be linked into a 32-bit application on a 64-bit platform defaulting to @@ -406,9 +406,9 @@ \tt \$XSB\_DIR/bin/xsb \end{quote} %%$ -if you have installed XSB in your private directory. -If XSB is installed in a shared directory ({\it e.g.}, \$SHARED\_XSB -for the entire site (UNIX only), then you should use +if you have installed XSB in your private directory. If XSB is +installed in a shared directory ({\it e.g.}, {\tt \$SHARED\_XSB} for +the entire site (UNIX only), then you should use \begin{quote} \tt \$SHARED\_XSB/bin/xsb \end{quote} @@ -436,23 +436,23 @@ not find its libraries. That said, you {\bf can} create other scripts and call the above script from there. -Most of the ``standard'' Prolog predicates are supported by XSB, -so those of you who consider yourselves champion entomologists, can try -to test them for bugs now. Details are in Chapter~\ref{standard}. +ISO``standard'' Prolog predicates are supported by XSB, in addition to +many other predicates: so those of you who consider yourselves +champion entomologists, can try to test them for bugs now. Details +are in Chapter~\ref{standard}. \section{Compiling XSB programs} %=============================== -All source programs should be in files whose names have the -suffix {\tt .P}. One of the ways to compile a program from a file in +One way to compile a program from a file, such as {\tt myfile.P} in the current directory and load it into memory, is to type the query: \begin{verbatim} [my_file]. \end{verbatim} -where \verb'my_file' is the name of the file, or preferably, the name -of the module (obtained from the file name by deleting the suffix {\tt .P}). -To find more about the module system of XSB see Section~\ref{Modules}. +where \verb'my_file' is the name of the file. +Chapter~\ref{chap:system} contains a full discussion of the compiling +and consulting. If you are eccentric (or you don't know how to use an editor) you can also compile and load predicates input directly from the terminal by using the @@ -467,19 +467,14 @@ \section{Sample XSB Programs} %============================ -If for some reason you don't feel like writing your own XSB programs, -there are several sample XSB programs in the directory: -{\tt \$XSB\_DIR/examples}. All contain source code. - -The entry predicates of all the programs in that directory are given -the names {\tt demo/0} (which prints out results) and {\tt go/0} -(which does not print results).\footnote{ - %% - This convention does not apply to the subdirectories of the examples - directory, which illustrate advanced features of XSB. - %% - } -%% +There are several sample XSB source programs in the directory: {\tt + \$XSB\_DIR/examples} illustrating a number of standard features, as +well as a number of non-standardized or XSB-specific features +including plain tabling, incremental tabling, tabling with negation, +attributed variables, annotated programs, constraint handling rules, +XSB embedded in a C program, XSB calling C functions, sockets, and +various semantic web appliation + Hence, a sample session might look like (the actual times shown below may vary and some extra information is given using comments after the \% character): @@ -488,8 +483,8 @@ \begin{verbatim} my_favourite_prompt> cd $XSB_DIR/examples my_favourite_prompt> $XSB_DIR/bin/xsb -XSB Version 2.0 (Gouden Carolus) of June 27, 1999 -[i586-pc-linux-gnu; mode: optimal; engine: slg-wam; scheduling: batched] +XSB Version 3.1 (Incognito) of August 10, 2007 +[i386-apple-darwin8.9.1; mode: optimal; engine: slg-wam; scheduling: local; word size: 32] | ?- [queens]. [queens loaded] Index: rbltin.tex =================================================================== RCS file: /cvsroot/xsb/XSB/docs/userman/rbltin.tex,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- rbltin.tex 3 Apr 2008 00:15:52 -0000 1.56 +++ rbltin.tex 11 May 2008 18:23:52 -0000 1.57 @@ -741,7 +741,7 @@ \ei \standarditem{load\_dync(+FileName)}{load\_dync/1} -\index{canonical forma} +\index{canonical format} Acts as {\tt load\_dyn/1}, but assumes that facts are in ``canonical'' format and is much faster as a result. In XSB, a term is in canonical format if it does not use any operators other Index: system.tex =================================================================== RCS file: /cvsroot/xsb/XSB/docs/userman/system.tex,v retrieving revision 1.76 retrieving revision 1.77 diff -u -r1.76 -r1.77 --- system.tex 16 Apr 2008 16:14:33 -0000 1.76 +++ system.tex 11 May 2008 18:23:52 -0000 1.77 @@ -30,7 +30,7 @@ :- go.}, and {\tt foo.P} has been compiled to an object file ({\tt foo.xwam}), then \begin{verbatim} - $XSB_DIR/bin/xsb -B foo.xwam + $XSB_DIR/bin/xsb foo \end{verbatim} will execute {\tt go} (and any other directives), loading the appropriate files as needed~\footnote{In XSB, all extensions except @@ -129,17 +129,16 @@ necessary. Unless your application needs to rebuild XSB, the {\tt emu} and {\tt build} directories do not need to be distributed. -\section{File Names and XSB} \label{sec:filenames} +\section{How XSB Finds Files: Source File Designators} \label{sec:filenames} % \index{base file name} -\index{file designator} +\index{source file designator} Three files are associated with Prolog source code in XSB~\footnote{Other types of files may be associated with foreign code --- see Volume 2.}. \begin{itemize} \item A single {\it source} file, whose name is the {\em base file - name} plus the an extension suffix {\tt .P} or if a {\tt .P} file - cannot be found , {\tt .pl}. + name} plus an optional extension suffix {\tt .P} or {\tt .pl}. \item An {\it object (byte-code)} file, whose name consists of the base file name plus the suffix {\tt .xwam}. \item An optional {\it header} file, whose name is the base file name @@ -150,13 +149,37 @@ equivalently put into the {\tt .P} (or {\tt .pl} file. \end{itemize} % -Most of the XSB system predicates, such as {\tt consult/[1,2]}, {\tt -compile/[1,2]} and others are somewhat flexible in how they allow -file designation. A file may be designated by a {\em file designator} -which can be a base file name, a source file name; or the relative or -absolute paths to a base or source file name. Unfortunately, the -exact semantics of a file designator differs among system predicates -in \version, as well as among platforms. +Most of the XSB system predicates for compiling, consulting, and +loading code, such as {\tt consult/[1,2]}, {\tt compile/[1,2]}, {\tt + load\_dyn/1} and others are somewhat flexible in how they designate +the file of interest. Each of these predicates take as input a {\em + source file designator} which can be a base file name, a source file +name; or the relative or absolute paths to a base or source file name. +Unfortunately, the exact semantics of a file designator differs among +system predicates in \version, as well as among platforms. + +In general, however, when given a source file designator, system +predicates perform {\em name resolution}. There are two steps to name +resolution: determining the proper directory prefix and determining +the proper file extension. When {\tt FileName} is absolute (i.e. it +contains a path from the file to the root of the file system) +determining the proper directory prefix is straightforward. If {\tt + FileName} is relative, i.e. it contains a {\tt '/'} in Unix or {\tt + '/'} in Windows, {\tt FileName} is expanded to a directory prefix in +an OS-dependent way, resolving symbols like {\tt '.'}, {\tt '..'} and +{\tt '\~{}'} when applicable. However, the user may also enter a name +without any directory prefix. In this case, XSB tries to determine the +directory prefix using a set of diretories it knows about: those +directories in the dynamic loader path (see Section~\ref{LibPath}). +As it searches through directory prefixes, different forms of the file +name may be checked. If the source file designator has no extension +the loader first checks for a file in the directory with the {\tt .P} +extension, (or {\tt .c} for foreign modules) before searching for a +file without the extension, and finally for a file with a {\tt .pl} +extension. Note that since directories in the dynamic loader path are +searched in a predetermined order (see Section~\ref{LibPath}), if the +same file name appears in more than one of these directories, the +first one encountered will be used. \section{The Module System of XSB} \label{Modules} %======================================================== @@ -566,10 +589,10 @@ \index{load search path} XSB differs from some other Prolog system in its ability to {\tt -dynamically} load modules. In XSB, the loading of user modules Prolog -libraries (such as the XSB compiler) is delayed until predicates in -them are actually needed, saving program space for large Prolog -applications. Dynamic loading is done by default, unlike other + dynamically} load modules. In XSB, the loading of user modules and +Prolog libraries (such as the XSB compiler) is delayed until +predicates in them are actually needed, saving program space for large +Prolog applications. Dynamic loading is done by default, unlike other systems where it is not the default for non-system libraries. When a predicate imported from another module (see @@ -590,33 +613,45 @@ \subsection{Changing the Default Search Path and the Packaging System} %========================================================= -The default search path of the dynamic loader can easily be changed by -having a file named {\verb|.xsb/xsbrc.P|} in the user's home -directory. User-supplied library directories are searched by the -dynamic loader {\em before} searching the default library directories. -\index{\texttt{library\_directory/1}} The {\verb|.xsb/xsbrc.P|} file, -which is automatically consulted by the XSB interpreter, might look -like the following: +\index{\texttt{library\_directory/1}} +\index{xsbrc.P initialization file} +The default search path of the dynamic loader is based on the dynamic +predicate {\tt library\_directory/1} so it can easily be changed. For +instance, to make sure a user's home directory is loaded, the goal +{\tt assert(library\_directory('~/'))} needs to be executed from the +command line or from within a program. If you always want XSB to +search particular directories, the easiest way is to have a file named +{\verb|.xsb/xsbrc.P|} in the user's home directory. User-supplied +library directories are searched by the dynamic loader {\em before} +searching the default library directories. The {\verb|.xsb/xsbrc.P|} +file, which is automatically consulted by the XSB interpreter, might +look like the following: \begin{verbatim} - :- assert(library_directory('./')). :- assert(library_directory('~/')). :- assert(library_directory('/usr/lib/sbprolog')). \end{verbatim} -After loading the module of the above example, the current working -directory is searched first, then the user's home directory,, then -{\tt "/usr/lib/sbprolog/"}, and finally XSB's system library -directories ({\tt lib, syslib}, and {\tt cmplib}). XSB also uses {\tt -library\_directory/1} for internal purposes. For instance, before the -user's {\verb|.xsb/xsbrc.P|} is consulted, XSB puts the {\tt packages} -directory and the directory \verb|.xsb/config/$CONFIGURATION| on the -library search path. The directory -\verb'.xsb/config/$CONFIGURATION' is used to store user libraries that -are machine or OS dependent. (\verb'$CONFIGURATION' for a machine is -something that looks like {\tt sparc-sun-solaris2.6} or {\tt -pc-linux-gnu}, and is selected by XSB automatically at run time). -Note that the file {\verb|.xsb/xsbrc.P|} is not limited to setting the -library search path. In fact, arbitrary Prolog code can go there. +After loading the module of the above example the user's home +directory is searched first, then {\tt "/usr/lib/sbprolog/"}, and +finally XSB's system library directories ({\tt lib, syslib}, {\tt + cmplib}) as well as the current working directory. XSB also uses +{\tt library\_directory/1} for internal purposes. For instance, +before the user's {\verb|.xsb/xsbrc.P|} is consulted, XSB puts the +{\tt packages} directory and the directory +\verb|.xsb/config/$CONFIGURATION| on the library search path. The +directory \verb'.xsb/config/$CONFIGURATION' is used to store user +libraries that are machine or OS dependent. (\verb'$CONFIGURATION' for +a machine is something that looks like {\tt sparc-sun-solaris2.6} or +{\tt pc-linux-gnu}, and is selected by XSB automatically at run time). +If a user wished, say, to search the current working directory {\em + before} her home directory, she could simply add +\begin{verbatim} + :- asserta(library_directory('./')). +\end{verbatim} +to her {\verb|.xsb/xsbrc.P|} file (or anywhere else). The file +{\verb|.xsb/xsbrc.P|} is not limited to setting the library search +path. In fact, arbitrary Prolog code can go there so that XSB can be +initialized in any manner desired. We emphasize that in the presence of a {\verb|.xsb/xsbrc.P|} file {\em it is the user's responsibility to avoid module name clashes with @@ -630,7 +665,7 @@ Apart from the user libraries, XSB now has a simple packaging system. A {\em package\/} is an application consisting of one or more files that are organized in a subdirectory of one of the XSB system or user libraries. -The system directory \verb|$XSB_DIR/packages| has several examples +The system directory \verb|$XSB_DIR/packages| has a number examples %%$ of such packages, many of which are documented in Volume 2 of this manual, or contain their own manuals. Packages are convenient @@ -751,25 +786,15 @@ synopsis obtained by the command {\tt \$XSB\_DIR/bin/xsb --help} is: {\small \begin{verbatim} -xsb [flags] [-l] [-i] -xsb [flags] -n +xsb [flags] [-l] xsb [flags] module -xsb [flags] -B boot_module [-D cmd_loop_driver] [-t] [-e goal] -xsb [flags] -B module_to_disassemble -d -xsb -[h | v] -xsb --help | --version | --nobanner | --quietload | --noprompt - -memory management flags: - -c tcpsize [unit] | -m glsize [unit] | -o complsize [unit] - | -u pdlsize [unit] | -r | -g gc_type - unit: k/K memory in kilobytes; m/M in megabytes; g/G in gigabytes - -c tcpsize | -m glsize | -o complsize | -u pdlsize | -r | -g gc_type -miscellaneous flags: - -s | -S | -T +xsb [flags] -B boot_module [-D cmd_loop_driver] [-t] +xsb [flags] -B module.suffix -d +xsb [-h | -v | --help | --version] module: Module to execute after XSB starts up. - Module should have no suffixes, no directory part, and + Module should have no suffixes, and either be an absolute pathname the file module.xwam must be on the library search path. boot_module: This is a developer's option. @@ -783,46 +808,70 @@ cmd_loop_driver: The top-level command loop driver to be used instead of the standard one. Usually needed when XSB is run as a server. - - -i : bring up the XSB interpreter - -e goal : evaluate goal when XSB starts up - -l : the interpreter prints unbound variables using letters - -n : used when calling XSB from C + -B : specify the boot module to use in lieu of the standard loader -D : Sets top-level command loop driver to replace the default -t : trace execution at the SLG-WAM instruction level (for this to work, build XSB with the --debug option) -d : disassemble the loader and exit + -v, --version : print the version and configuration information about XSB + -h, --help : print this help message + +Flags: + memory management flags: + + -c tcpsize [unit] | -m glsize [unit] | -o complsize [unit] + | -u pdlsize [unit] | -r | -g gc_type + unit: k/K memory in kilobytes; m/M in megabytes; g/G in gigabytes + + -e goal : evaluate goal when XSB starts up + -p : enable Prolog profiling through use of profile_call/1 + -l : the interpreter prints unbound variables using letters + --nobanner : don't show the XSB banner on startup + --quietload : don't show the `module loaded' messages + --noprompt : don't show prompt (for non-interactive use) + --max_threads N : maintain information for up to N threads + -S : set default tabling method to call-subsumption +--shared_predicates : make predicates thread-shared by default + -g gc_type : choose heap garbage collection ("indirection","none" or "copying") -c N [unit]: allocate N units (def. KB) for the trail/choice-point stack -m N [unit]: allocate N units (def. KB) for the local/global stack -o N [unit]: allocate N units (def. KB) for the SLG completion stack -u N [unit]: allocate N units (def. KB) for the SLG unification stack -r : turn off automatic stack expansion - -g gc_type : choose heap garbage collection ("none", "sliding", - "indirection", or "copying") - -p : enable Prolog profiling thru use of profile_call/1 -s : maintain detailed statistical information - -S : set default tabling method to subsumption-based -T : print a trace of each called predicate - --max_threads N : maintain information for up to N threads - -v, --version : print the version and configuration information about XSB - -h, --help : print this help message - --nobanner : don't show the XSB banner on startup - --quietload : don't show the `module loaded' messages - --noprompt : don't show prompt (for non-interactive use) ---shared_predicates : make predicates thread-shared by default - \end{verbatim} } -The order in which these options appear makes no difference. + +\paragraph*{Command-line Options} These options tend to be most useful for developers. \begin{description} -\item[{\tt -i}] Brings up the XSB interpreter. This is the normal - use, and the option is kept only for backward compatability. +\item[{\tt -t}] Traces through code at SLG-WAM instruction level. + This option is intended for developers and is not fully supported. + It is also not available when the system is being used at the + non-debug mode (see Section~\ref{debugging}). +\item[{\tt -D}] Tells XSB to use a top-level command loop driver specified + here instead of the standard XSB interpreter. This is most useful when + XSB is used as a server. +\item[{\tt -d}] Produces a disassembled dump of {\tt byte\_code\_file} to + {\tt stdout} and exits. +\end{description} + +\paragraph*{Flags} +The order in which flags appear makes no difference. + +\begin{description} +\item {\bf General Flags} +\begin{description} \item[{\tt -e goal}] Pass {\tt goal} to XSB at startup. This goal is evaluated right before the first prompt is issued. For instance, \verb'xsb -e "write('Hello!'), nl."' will print a heart-warming message when XSB starts up. +% +\item[{\tt -p}] Enables the engine to collect information that can be + used for profiling. See Volume 2 of this manual for details. +% \item[{\tt -l}] Forces the interpreter to print unbound variables as letters, as opposed to the default setting which prints variables as memory locations prefixed with an underscore. @@ -840,17 +889,89 @@ \begin{verbatim} | ?- Y = X, Z = 3, W = foo(X,Z). - Y = _10073976 - X = _10073976 + Y = _h118 + X = _h118 Z = 3 - W = foo(_10073976,3); + W = foo(_h118,3); \end{verbatim} -\item[{\tt -n}] used in conjunction with the {\tt -i} option, to - indicate that the usual read-eval-print top-loop is not to be - entered, but instead will interface to a calling C program. See - the chapter {\it Calling XSB from C} in Volume 2 for details. -\item[{\tt -d}] Produces a disassembled dump of {\tt byte\_code\_file} to - {\tt stdout} and exits. + \item[{\tt --nobanner}] Start XSB without showing the startup banner. + Useful in batch scripts and for interprocess communication (when XSB is + launched as a subprocess). For instance, +\begin{verbatim} + xsb -e "writeln('hello world'),halt." +[xsb_configuration loaded] +[sysinitrc loaded] + +XSB Version 3.1 (Incognito) of August 10, 2007 +[i386-apple-darwin8.9.1; mode: optimal; engine: slg-wam; scheduling: local; word size: 32] + + +Evaluating command line goal: +| ?- writeln('hello world'),halt. + +| ?- hello world + +End XSB (cputime 0.02 secs, elapsetime 0.02 secs) +\end{verbatim} +Prints out quite a bit of verbiage. Using the {\tt --nobanner} option +reduces this verbiage somewhat. +\begin{verbatim} +xsb --nobanner -e "writeln('hello world'),halt." +[xsb_configuration loaded] +[sysinitrc loaded] + +Evaluating command line goal: +| ?- writeln('hello world'),halt. + +| ?- hello world +\end{verbatim} +% + \item[{\tt --quietload}] Do not tell when a new module gets + loaded. Again, is quseful in non-interactive activities and for + interprocess communication. Continuing our example: +\begin{verbatim} +xsb --quietload --nobanner -e "writeln('hello world'),halt." +| ?- +| ?- hello world +\end{verbatim} +% + \item[{\tt --noprompt}] Do not show the XSB prompt. This is useful only in batch + mode and in interprocess communication when you do not want the prompt + to clutter the picture. Putting all this together, we finally get: +\begin{verbatim} +xsb --noprompt --quietload --nobanner -e "writeln('hello world'),halt." + +hello world +\end{verbatim} +So that XSB can be used to write reasonable scripts. +% +\item[{\tt --max\_threads N}] Allows XSB to maintain information for + up to {\tt N} threads. This means that XSB can currently run {\tt + N} threads that are active, or that are inactive, non-detached, + and not yet joined. Has no effect if the engine has been configured + without multi-threading. +\item[{\tt -S}] Indicates that tabled predicates are to be evaluated + using subsumption-based tabling as a default for tabled predicates + whose tabling method is not specified by using {\tt + use\_variant\_tabling/1} or {\tt use\_subsumptive\_tabling/1} (see + Section \ref{sec:TablePred:Decl&Mod}). If this option is not + specified, variant-based tabling will be used as the default tabling + method by XSB\@. +\index{shared\_predicates} +\item[{\tt --shared\_predicates}] In the multi-threaded engine, makes + all predicates thread-shared by default; has no effect in the + single-threaded engine. +\end{description} +\item {\bf Memory Management Flags} +\begin{description} +\index{garbage collection} +\item[{\tt -g gc\_type}] Chooses the heap garbage collection strategy + that is employed; choice of the strategy is between the default {\tt + "indirection"}, {\tt ``copying''} which should be regarded as + experimental, or {\tt ``none''}. (See \cite{CaSC01} for a + description of the indirection garbage collector, and + \cite{CATmem@...} for the copying garbage collector. +% \item[{\tt -c} {\em size [units]}] Allocates {\em initial size\/} units of space to the trail/choice-point stack area. The trail stack grows upward from the bottom of the region, and the choice point stack @@ -870,85 +991,47 @@ gigabytes. Because this region is expanded automatically from Version 1.6.0 onward, this option is rarely needed. If this option is not specified the default initial size is 768 KBytes. +% \item[{\tt -o} {\em size [units]}] Allocates {\em initial size\/} units of space to the completion stack area. If units is not provided or is {\tt k} or {\tt K}, the size is allocated in kilobytes; if {\tt m} or {\tt M} in megabytes; and if {\tt g} or {\tt G} in gigabytes. Because this region is expanded automatically from Version 1.6.0 onward, this option is rarely needed. If this option is not - specified the default initial size is 768 KBytes. + specified the default initial size is 768 KBytes. \item[{\tt -u} {\em size [units]}] Allocates {\em initial size} KBytes of space to the unification (and table copy) stack. If units is not provided or is {\tt k} or {\tt K}, the size is allocated in kilobytes; if {\tt m} or {\tt M} in megabytes; and if {\tt g} or {\tt G} in gigabytes. Default 64 KBytes. (This option is rarely needed.) -\item[{\tt -D}] Tells XSB to use a top-level command loop driver specified - here instead of the standard XSB interpreter. This is most useful when - XSB is used as a server. -\item[{\tt -t}] Traces through code at SLG-WAM instruction level. - This option is intended for developers and is not fully supported. - It is also not available when the system is being used at the - non-debug mode (see Section~\ref{debugging}). -\item[{\tt -r}] Turns off automatic stack expansion. -% -\index{garbage collection} -\item[{\tt -g gc\_type}] Chooses the heap garbage collection strategy - that is employed; choice of the strategy is between {\tt "none"} - (meaning perform no garbage collection), or garbage collection based - on {\tt sliding} on {\tt copying}, or on {\tt indirection} (See - \cite{CATmem@...} for descriptions of the first two garbage - collectors, and \cite{CaSC01} for a description of the third). -% -\item[{\tt -p}] Enables the engine to collect information that can be - used for profiling. See Volume 2 of this manual for details. -% +\item[{\tt -r}] Turns off automatic stack expansion. This can + occasionally be useful for isolating memory management problems. +\end{description} +\item {\bf Obsolete or obsolescent options} While sometimes useful, these + options may not be fully supported in future versions, or are + provided only for backward compatability. +\begin{description} \item[{\tt -s}] Maintains information on the size of program stacks for the predicate {\tt statistics/0}. This option may be expected to slow execution by around 10\%. Default: off. Note: this option is not available with the multi-threaded engine. -\item[{\tt -S}] Indicates that tabled predicates are to be evaluated - using subsumption-based tabling as a default for tabled predicates - whose tabling method is not specified by using {\tt - use\_variant\_tabling/1} or {\tt use\_subsumptive\_tabling/1} (see - Section \ref{sec:TablePred:Decl&Mod}). If this option is not - specified, variant-based tabling will be used as the default tabling - method by XSB\@. \item[{\tt -T}] Generates a trace at entry to each called predicate (both system and user-defined). This option is available mainly for people who want to modify and/or extend XSB, and it is {\em not\/} the normal way to trace XSB programs. For the latter, the standard predicates {\tt trace/0} or {\tt debug/0} should be used (see Chapter~\ref{debugging}). - Note: This option is not available when the system is being used at the non-tracing mode (see Section~\ref{debugging}). - \item[{\tt --maxthreads N}] Allows XSB to maintain information for - up to {\tt N} threads. This means that XSB can currently run {\tt - N} threads that are active, or that are inactive, non-detached, - and not yet joined. - \item[{\tt --nobanner}] Start XSB without showing the startup banner. - Useful in batch scripts and for interprocess communication (when XSB is - launched as a subprocess). - \item[{\tt --quietload}] Do not tell when a new module gets loaded. Again, is - useful in non-interactive activities and for interprocess communication. - \item[{\tt --noprompt}] Do not show the XSB prompt. This is useful only in batch - mode and in interprocess communication when you do not want the prompt - to clutter the picture. % -\index{shared\_predicates} - \item[{\tt --shared\_predicates}] In the multi-threaded engine, makes - all predicates thread-shared by default; has no effect in the - single-threaded engine. +\item[{\tt -i}] Brings up the XSB interpreter. This is the normal + use, and the option is kept only for backward compatability. +% +\item[{\tt -n}] Formerly used in conjunction when XSB was called from + C. This option is used only for backward compatability. +\end{description} \end{description} - -As an example, if you would like to use XSB as part of a script, where -XSB loads up a file {\tt foo.P}, and execute {\tt goal} simply -use the command: -\begin{verbatim} -xsb --nobanner --quietload --noprompt -e "[foo], goal, halt." -\end{verbatim} - \section{Memory Management}\label{memory_management} \index{memory management} \index{garbage collection} @@ -957,7 +1040,7 @@ including the local stack/heap region, the trail/choice point region, and the completion stack region. For the main thread, each of these regions begin with an initial value set by the user at the -command-line or with a default value -- see +command-line or with a default value (see Section~\ref{sec:EmuOptions}). Execution stacks increase their size until it is not possible to do so with available system memory. At that point XSB tries to find the maximal amount of space that will @@ -974,7 +1057,7 @@ garbage collection or to turn it off altogether, see the predicate {\tt garbage\_collection/1} or Section~\ref{sec:EmuOptions} for command-line options). In \version{} the default behavior is indirect -garbage collection. Starting with \version{}, heap garbage collection +garbage collection. Starting with Version 3g.0, heap garbage collection may automatically invokes garbage collection of XSB's atom table, which stores Prolog's atomic constants. Expansion and garbage collection of execution stacks can occur when multiple threads are @@ -983,7 +1066,7 @@ The program area (the area into which XSB byte-code is loaded) is also dynamically expanded as needed. For dynamic code (created using {\tt - assert/1}, or the standard predicates {\tt load\_dyn/1} and {\tt + assert/1}, or standard predicates such as {\tt load\_dyn/1} and {\tt load\_dync/1}) index size is also automatically reconfigured. Space reclaimed for dynamic code depends on several factors. If there is only one active thread, space is reclaimed for retracted clauses and @@ -1014,114 +1097,59 @@ (currently) available only for dynamically asserted predicates (see {\tt index/2}). -Unlike some Prologs, however, there is no difference between compiled -and consulted code: ``Compiling'' in XSB means creation of a file -containing SLG-WAM byte-code; ``Consulting'' means loading such a -byte-code file, after compiling it (if the source file was altered -later than the object file). +\subsection{Static Code} +% +In XSB, there is no difference between compiled and consulted static +code: ``compiling'' in XSB means creation of a file containing SLG-WAM +byte-code; ``consulting'' means loading such a byte-code file, after +compiling it (if the source file was altered later than the object +file). -\index{\texttt{consult/[1,2]}} +\begin{description} +\repeatstandarditem{consult(+Files,+OptionList)}{compile/2} +\repeatstandarditem{consult(+Files)}{compile/1} +\standarditem{[+Files]}{[]/1 (consult)} +% The standard predicate {\tt consult/[1,2]} is the most convenient method for entering static source code rules into XSB's database~\footnote{In XSB, {\tt reconsult/[1,2]} is defined to have -the same actions as {\tt consult/[1,2]}.}. {\tt consult/1} has the -form: -% -\begin{center} -{\tt consult(+Files)} -\end{center} -% -in which {\tt Files} is either a file designator (see -Section~\ref{sec:filenames}) or a list of file designators. {\tt -consult/1} compiles any files specified in {\tt Files} that have been -touched later than their byte-code files, and loads them into XSB. In -addition the form -% -\begin{center}{\tt - [Files]. -}\end{center} -% -Is an alternative syntax for {\tt consult(Files)}. - -{\tt consult/2} has the form. -\begin{center}{\tt - consult(+Files, +CompilerOptionList) } -\end{center} -{\tt Files} is as in {\tt consult/1} and {\tt CompilerOptionList} -is a list of options that are to be passed to the compiler if it is -invoked (alternatively, these compiler options can be declared in the -files themselves, as in Section~\ref{the_compiler}. {\tt consult/2} -is more general than {\tt consult/1}, and {\tt consult(Files)} is -defined as {\tt consult(FileName, [])}. - -Consulting a file (module) conceptually consists of the following five -steps which are described in detail in the following paragraphs. + the same actions as {\tt consult/[1,2]}.}. Files is either s source +file designator (see Section~\ref{sec:filenames}) or a list of source +file designators, and {\tt Options} is a list of options to be passed +to XSB's compiler if the file needs to be compiled (see +Section~\ref{the_compiler}). {\tt consult(Files)} is defined as {\tt + consult(Files,[])}, as is {\tt [Files]}. + +Consulting a file {\tt File} (module) conceptually consists of the +following five steps which are described in detail in the following +paragraphs. \begin{description} -\item[Name Resolution:] determine the file to be consulted, including - directory and drive location and extension. -\item[Compilation:] if the source file has changed later than the - object file, compile the module using predicate {\tt - compile/2} with the options specified. -\item[Loading:] load the object code of the file into memory. +\item[Name Resolution:] determine the file that {\tt File} designates, + including directory and drive location and extension, as discussed + in Section~\ref{sec:filenames}. +\item[Compilation:] if the source file or header has changed later + than the object file (or if there is no byte-code file) compile the + file using {\tt compile/2} with the options specified, creating a + byte-code file. This strategy is used whether the source file is + Prolog, C, or C++. +\item[Loading:] load the byte-code file into memory. \item[Importing:] if the file is a module, import any exported predicates of that module to {\tt usermod}. -\item[Query Execution:] execute any queries that the file may contain. +\item[Query Execution:] execute any queries that the file may contain, + i.e. any terms with principal functor {\tt '?-'/1}, or with the + principal functor {\tt ':-'/1} and that are not directives like the + ones described in Section~\ref{the_compiler}. The queries are + executed in the order in which they appear in the source file. \end{description} - -There are two steps to name resolution: determining the proper -directory prefix and determining the proper file extension. When {\tt -FileName} is absolute (i.e. it contains a path from the file to the -root of the file system) determining the proper directory prefix is -straightforward. If {\tt FileName} is relative, i.e. it contains a -{\tt '/'} in Unix or {\tt '/'} in Windows, {\tt FileName} is expanded -to a directory prefix in an OS-dependent way, resolving symbols like -{\tt '.'}, {\tt '..'} and {\tt '\~{}'} when applicable. However, the -user may also enter a name without any directory prefix. In this case, -the directory prefix is a directory in the dynamic loader path (see -Section~\ref{LibPath}) where the source file exists. Once the -directory prefix is determined, the file name is checked for an -extension. If there is no extension the loader first checks for a -file in the directory with the {\tt .P} extension, (or {\tt .c} for -foreign modules) before searching for a file without the extension, -and finally for a file with a {\tt .pl} extension. Note that since -directories in the dynamic loader path are searched in a predetermined -order (see Section~\ref{LibPath}), if the same file name appears in -more than one of these directories, the compiler will consult the -first one it encounters. - -Compilation is performed if the update date of a source file ({\tt -*.P/.pl} or {\tt *.H}) is later than that of the the object file ({\tt -*.xwam}). -%% -%---------------------------------------------------------------------- \comment{ -{\em and} if the source file is not larger than the default compile -size. This default compile is set to be 5000 words (via a declaration -in {\tt cmplib/config.P}), but can be reset by the user. If the -source file is larger than the default compile size, the file will be -loaded using {\tt load\_dyn/1}, and otherwise it will be compiled -({\tt load\_dyn/1} can also be called separately, see the Section {\it -Asserting Dynamic Code} for details). While {\tt load\_dyn} gives -reasonably good execution times, compilation can always be done by -using {\tt compile/[1,2]} explicitly. } -%---------------------------------------------------------------------- -%% -Currently (\version), a foreign language module is compiled when at -least one of files {\tt *.c} or {\tt *.H} has been changed from the -time the corresponding object files have been created. - Once the file is compiled into byte-code, the byte-code for the file is loaded into XSB's database. After loading the file all exported predicates of that module are imported into the current environment (the current working module {\tt usermod}) if the file is a module. For non-modules, all predicates are imported into the current working -module. As the last part of loading, any queries --- that is, any -terms with principal functor {\tt '?-'/1}, or with the principal -functor {\tt ':-'/1} and that are not directives like the ones -described in Section~\ref{the_compiler} are executed in the order that -they are encountered. +module. } -Error conditions for {\tt consult(+File)} are as follows: +Error conditions for {\tt consult(+File,+Options)} are as follows: \bi \item {\tt File} is not instantiated \bi @@ -1147,8 +1175,72 @@ \item {\tt misc\_error} \ei \ei +Error conditions of compiler options are determined by {\tt compile/2} +which {\tt consult/[1,2]} calls. +\end{description} + +In addition, {\tt ensure\_loaded/[1,2]} acts much like {\tt consult/[1,2]} +\begin{description} +\standarditem{ensure\_loaded(+FileName)}{ensure\_loaded/1} +% +This predicate checks to see whether the object file for {\tt +FileName} is newer than the source code and header files for {\tt +FileName}, and compiles {\tt FileName} if not. If {\tt FileName} is +loaded into memory, {\tt ensure\_loaded/1} does not reload it, unlike +{\tt consult/1} which will always reload. In addition, {\tt + ensure\_loaded/2} can be used to load a file with dynamic code. It +is fully documented in Section~\ref{sec:LoadDyn}. +\end{description} +% + +\index{dynamic loading of files} +\index{canonical format} +\subsection{Dynamic Code} +% +In XSB, most source code file can also be ``consulted'' dynamically +via the predicates {\tt load\_dyn/[1,2]}, {\tt load\_dync/[1,2]} and +{\tt ensure\_loaded/2}. These predicates act as {\tt consult/2} in +that if a given file {\tt File} has already been dynamically loaded, +old versions of predicates defined in {\tt File} will be retracted and +their new definitions made to correspond to those in {\tt File} +(except for predicates in which a {\tt multifile/1} declaration is +present in {\tt File}). Dynamic loading can be performed using XSB's +reader of canonical terms (which does not include operators, but does +allow list and comma-list notation) via {\tt load\_dync/2}; dynamic +loading using XSB's general reader for Hilog terms is performed via +{\tt load\_dyn/2}. + +The predicates mentioned above are described more fully in +Chapter~\ref{standard}. Here, we simply compare the tradeoffs of +static and dynamic loading. +\bi +\item Advantages for Dynamic Loading +\bi +\item For large files, containing $10^4-10^7$ clauses, dynamic loading + is much faster than XSB's compiler, especially when the canonical + reader is used. +% +\item Dynamically loaded files have advantages of dynamic code + including star-, trie, compound, and alternate indexes, as well as + being modifiable via assert and retract. +\ei +\item Advantages for Static Compilation +\bi +\item Although dynamically loaded predicates are compiled into SLG-WAM + code, compiled static clauses are more optimized than dynamically + predicates, particularly when the cloauses have large bodies or when + arithmetic is used. For facts and pure binary predicates (those + containing a single literal in their body) however, static and + dynamic byte code is essentially the same. +% +\item Dynamic loading does not allow module/export declarations, mode + declarations, or unification factoring. It does however, allow + files to import predicates, allows tabling declarations (except for + {\tt auto\_table} and {\tt suppl\_table}, operator declarations + (when a canonical read is not used) and declarations of a predicate + to be thread\_shared or thread\_private. \ei \ei -\paragraph*{The multifile directive} +\subsection{The multifile directive} \index{\texttt{multifile/2}} The default action upon loading a file or module is to delete all previous byte-code for predicates defined in the file. If this is not @@ -1174,20 +1266,6 @@ % \end{itemize} -Other predicates for loading files are {\tt ensure\_loaded/[1,2]}. - -\begin{description} -\standarditem{ensure\_loaded(+FileName)}{ensure\_loaded/1} -% -This predicate checks to see whether the object file for {\tt -FileName} is newer than the source code and header files for {\tt -FileName}, and compiles {\tt FileName} if not. If {\tt FileName} is -loaded into memory, {\tt ensure\_loaded/1} does not reload it, unlike -{\tt consult/1} which will always reload -\end{description} -% -{\tt ensure\_loaded/2} is documented in Section~\ref{sec:LoadDyn}. - \section{The Compiler} \label{the_compiler} \index{Compiler} %======================================================== @@ -1260,8 +1338,8 @@ For a given, {\tt File} to be compiled, the source file name corresponding to {\tt File} is obtained by concatenating a directory -prefix and the extension {\tt .P}, {\tt .pl} or other filenames, see -Section~\ref{sec:filenames} to {\tt File}. The directory prefix must +prefix and the extension {\tt .P}, {\tt .pl} or other filenames as +discussed in Section~\ref{sec:filenames}. The directory prefix must be in the dynamic loader path (see Section~\ref{LibPath}). Note that these directories are searched in a predetermined order (see Section~\ref{LibPath}), so if a module with the same name appears in @@ -1289,13 +1367,13 @@ } The result of the compilation (an SLG-WAM object code file) is stored -in a ($\langle$filename$\rangle$.xwam), but {\tt compile/[1,2]} does -{\em not\/} load the object file it creates. (The standard predicates -{\tt consult/[1,2]} and {\tt reconsult/[1,2]} both load the object -file into the system, after recompiling the source file if needed.) -The object file created is always written into the directory where the -source file resides: the user must therefore have write permission in -that directory. +in ($\langle filename \rangle$.xwam), but {\tt compile/[1,2]} does {\em + not\/} load the object file it creates. (The standard predicate +{\tt consult/[1,2]} loads the object file into the system, after +recompiling the source file if needed.) The object file created is +always written into the directory where the source file resides: the +user must therefore have write permission in that directory to avoid +an error. If desired, when compiling a module (file), clauses and directives can be transformed as they are read. This is indeed the case for definite clause @@ -1381,6 +1459,11 @@ The following options are currently recognized by the compiler: \begin{description} +\item[{\tt singleton\_warnings\_off}] Does not print out any warnings + for singleton variables during compilation. This option can be + useful for compiling XSB programs that have been generated by some + other program. +% \item[{\tt optimize}]\index{\texttt{optimize}} When specified, the compiler tries to optimize the object code. In \version, this option optimizes predicate calls, among other features, so execution @@ -1391,12 +1474,14 @@ the {\tt optimize} option may not be suitable for the development phase, but is recommended once the code has been debugged. % -\item[{\tt singleton\_warnings\_off}] Does not print out any warnings - for singleton variables during compilation. This option can be - useful for compiling XSB programs that have been generated by some - other program. +\item[{\tt allow\_redefinition}] \index{standard predicates} + By default the compiler refuses to compile a file that + contains clauses that would redefine a standard predicate + (unless the {\tt sysmod} option is in effect.) By specifying + this option, the user can direct the compiler to quietly allow + redefinition of standard predicates. % -v\item[{\tt xpp\_on}]\index{\texttt{xpp\_on}}\index{GPP} +\item[{\tt xpp\_on}]\index{\texttt{xpp\_on}}\index{GPP} Filter the program through a preprocessor before sending it to the XSB compiler. By default (and for the XSB code itself), XSB uses GPP, a preprocessor developed by Denis Auroux (auroux@...) @@ -1538,31 +1623,28 @@ %-------------------------------------- \index{specialization!compiler options} %-------------------------------------- -\item[{\tt spec\_repr}]\index{\texttt{spec\_repr}} - When specified, the compiler performs specialization of partially - instantiated calls by replacing their selected clauses with the - representative of these clauses, i.e. it performs {\em folding\/} - whenever possible. We note in general, the code replacement - operation is not always sound; i.e. there - are cases when the original and the residual program are not - computationally equivalent. The compiler checks for sufficient (but - not necessary) conditions that guarantee computational equivalence. - If these conditions are not met, specialization is not performed - for the violating calls. -\item[{\tt spec\_off}]\index{\texttt{spec\_off}} - When specified, the compiler does not perform specialization of - partially instantiated calls. -\item[{\tt unfold\_off}]\index{\texttt{unfold\_off}} - When specified, singleton sets optimizations are not performed - during specialization. This option is necessary in \version\ - for the specialization of {\tt table} declarations that select - only a single chain rule of the predicate. +\item[{\tt spec\_repr}]\index{\texttt{spec\_repr}} When specified, the + compiler performs specialization of partially instantiated calls by + replacing their selected clauses with the representative of these + clauses, i.e. it performs {\em folding\/} whenever possible. In + general specialization with replacement is correct only under + certain conditions. XSB's compiler checks for sufficient conditions + that guarantee correctness, and if these conditions are not met, + specialization with replacement is not performed for the violating + calls. +\item[{\tt spec\_off}]\index{\texttt{spec\_off}} When specified, the + compiler does not perform specialization of partially instantiated + calls. +\item[{\tt unfold\_off}]\index{\texttt{unfold\_off}} When specified, + singleton sets optimizations are not performed during + specialization. This option is necessary in \version\ for the + specialization of {\tt table} declarations that select only a single + chain rule of the predicate. %qtls ?? -\item[{\tt spec\_dump}]\index{\texttt{spec\_dump}} - Generates a {\tt module.spec} file, containing the result of - specializing partially instantiated calls to predicates defined - in the {\tt module} under compilation. The result is in Prolog - source code form. +\item[{\tt spec\_dump}]\index{\texttt{spec\_dump}} Generates a {\tt + module.spec} file, containing the result of specializing partially + instantiated calls to predicates defined in the {\tt module} under + compilation. The result is in Prolog source code form. %--------------------------------------------- \index{unification factoring!compiler options} @@ -1627,30 +1709,25 @@ {\tt syslib}. -\item[{\tt sysmod}] \index{standard predicates} - Mainly used by developers when compiling system modules. If - specified, standard predicates (see {\tt - /\$XSB\_DIR/syslib/std\_xsb.P}) are automatically available - for use only if they are primitive predicates (see the file - {\tt \$XSB\_DIR/syslib/machine.P} for a current listing of - primitive predicates. When compiling in this mode, - non-primitive standard predicates must be explicitly imported - from the appropriate system module. Also standard predicates - are permitted to be defined. -\item[{\tt allow\_redefinition}] \index{standard predicates} - By default the compiler refuses to compile a file that - contains clauses that would redefine a standard predicate - (unless the {\tt sysmod} option is in effect.) By specifying - this option, the user can direct the compiler to quietly allow - redefinition of standard predicates. - +\item[{\tt sysmod}] \index{standard predicates} +% +Mainly used by developers when compiling system modules and used for +boot-strapping. If specified, standard predicates (see {\tt + /\$XSB\_DIR/syslib/std\_xsb.P}) are automatically available for use +only if they are primitive predicates (see the file {\tt + \$XSB\_DIR/syslib/machine.P} for a current listing of primitive +predicates.) When compiling in this mode, non-primitive standard +predicates must be explicitly imported from the appropriate system +module. Also standard predicates are permitted to be defined. +% \item[{\tt verbo}] Compiles the files (modules) specified in ``verbose'' mode, printing out information about the progress of the compilation of each predicate. +% \item[{\tt profile}] This option is usually used when modifying the XSB compiler. When specified, the compiler prints out information about the time spent in certain phases of the compilation process. - +% \item[{\tt asm\_dump, compile\_off}] Generates a textual representation of the SLG-WAM assembly code and writes it into the file {\tt module.A} where {\tt module} is the name of the module (file) being compiled.
Update of /cvsroot/xsb/XSB/docs/newpages In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv25373 Modified Files: eclipse.html index.html Log Message: Updates for eclipse plugin link. Index: eclipse.html =================================================================== RCS file: /cvsroot/xsb/XSB/docs/newpages/eclipse.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- eclipse.html 9 May 2008 11:36:42 -0000 1.1 +++ eclipse.html 9 May 2008 16:19:30 -0000 1.2 @@ -14,17 +14,18 @@ <p> This link provides information about a basic Eclipse Plugin for Prolog. Using the plugin, the Eclipse workspace gives access to the -Prolog command-line interface, and the editor gives Prolog syntactic -highlighting. The plugin works fine for XSB and has allowed some -users to use Eclipse as their XSB development environment. The plugin -was apparently written for Ciao, so their logo appears in several -places, but there seems to be nothing Ciao-specific in the plugin. +Prolog command-line interface, and the editor gives syntactic +highlighting for Prolog. The plugin works fine for XSB and has +allowed some users to use Eclipse as their XSB development +environment. It was apparently written for Ciao, so their +logo appears in several places, but there seems to be nothing +Ciao-specific in the plugin. </p> <p> We do not have the resources to actively maintain or extend the plugin -ourselves, but welcome support for the Eclipse environment by the -community. +ourselves, but welcome support for the Eclipse Prolog environment by +the community. </p> Index: index.html =================================================================== RCS file: /cvsroot/xsb/XSB/docs/newpages/index.html,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- index.html 9 May 2008 11:35:09 -0000 1.14 +++ index.html 9 May 2008 16:19:30 -0000 1.15 @@ -127,10 +127,20 @@ <p> XJ provides a way to program interfaces in XSB based on Java's Swing, and on Interprolog.</p> +<p> <dir> <li><a href="http://www.xsb.com/xj.aspx"; >XJ</a> </dir> -<p> Eclipse Plugin for Prolog: <a href="eclipse.html">Information</a> +<p> + +<h2>Integrated Development Environment</h2> +The popular Eclipse toolset provides an open-source IDE that is +language independent. Through a plugin, it has been partially +tailored to support Prolog. +<p> +<dir> + <li><a href="eclipse.html">Eclipse Plugin for Prolog</a> +</dir> <h2 class="ack"><a href="nsf-acks.html" > Acknowledgement of Support</a></h2>
Update of /cvsroot/xsb/XSB/docs/newpages In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv20618 Added Files: eclipse.html Log Message: Adding page about eclipse plugin --- NEW FILE: eclipse.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <link type="text/css" rel="stylesheet" href="xsb.css"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> <title>Eclipse Plugin for XSB</title> </head> <body> <li> <a href="http://eclipse.ime.usp.br/projetos/grad/plugin-prolog/index.html">The Eclipse Plugin for Prolog Homepage</a> </li> <p> This link provides information about a basic Eclipse Plugin for Prolog. Using the plugin, the Eclipse workspace gives access to the Prolog command-line interface, and the editor gives Prolog syntactic highlighting. The plugin works fine for XSB and has allowed some users to use Eclipse as their XSB development environment. The plugin was apparently written for Ciao, so their logo appears in several places, but there seems to be nothing Ciao-specific in the plugin. </p> <p> We do not have the resources to actively maintain or extend the plugin ourselves, but welcome support for the Eclipse environment by the community. </p> </body> </html>
Update of /cvsroot/xsb/XSB/docs/newpages In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv19882 Modified Files: index.html Log Message: Added info for Eclipse plugin Index: index.html =================================================================== RCS file: /cvsroot/xsb/XSB/docs/newpages/index.html,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- index.html 6 Oct 2007 15:51:52 -0000 1.13 +++ index.html 9 May 2008 11:35:09 -0000 1.14 @@ -130,6 +130,7 @@ <dir> <li><a href="http://www.xsb.com/xj.aspx"; >XJ</a> </dir> +<p> Eclipse Plugin for Prolog: <a href="eclipse.html">Information</a> <h2 class="ack"><a href="nsf-acks.html" > Acknowledgement of Support</a></h2>
Update of /cvsroot/xsb/XSB/cmplib In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv10121 Modified Files: compile.H Log Message: Export for compiler options check. Index: compile.H =================================================================== RCS file: /cvsroot/xsb/XSB/cmplib/compile.H,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- compile.H 27 Apr 2008 15:29:10 -0000 1.20 +++ compile.H 8 May 2008 10:41:11 -0000 1.21 @@ -26,7 +26,7 @@ :- export compile/4, compile/5, mc/2, abort_if_syntax_errors/1. -:- export current_compiled_module/1. +:- export current_compiled_module/1, check_compiler_options/1. :- import spec/2 from spec. :- import cp_opt/2 from cp_opt.
Update of /cvsroot/xsb/XSB/syslib In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv9615 Modified Files: consult.P consult.xwam Log Message: Changes to checker for + and - operators for compiler options. Index: consult.P =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/consult.P,v retrieving revision 1.68 retrieving revision 1.69 diff -u -r1.68 -r1.69 --- consult.P 27 Apr 2008 15:25:56 -0000 1.68 +++ consult.P 8 May 2008 10:39:59 -0000 1.69 @@ -56,7 +56,10 @@ check_compile_option(Option):- check_nonvar(Option,compile/[1,2],2), - (current_xsb_compiler_option(Option) -> + (Option @= +(_) -> Option = +(Option_1) + ; Option = -(_) -> Option = -(Option_1) + ; Option = Option_1), + (current_xsb_compiler_option(Option_1) -> true ; domain_error(xsb_compiler_option,Option,compile/[1,2],2) ). Index: consult.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/consult.xwam,v retrieving revision 1.72 retrieving revision 1.73 diff -u -r1.72 -r1.73 Binary files /tmp/cvshjpEUC and /tmp/cvsx5oxPt differ
Update of /cvsroot/xsb/XSB/cmplib In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv17452 Modified Files: asm.P symtab.P Log Message: Added parens around some uses of pred, to allow these files to be read when ciao operators are defined. (Necessary for xsb_lint_impexp to process.) Index: asm.P =================================================================== RCS file: /cvsroot/xsb/XSB/cmplib/asm.P,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- asm.P 10 Aug 2005 20:08:25 -0000 1.8 +++ asm.P 7 May 2008 15:12:00 -0000 1.9 @@ -183,7 +183,7 @@ asm_text_size([label(T,X)|Rest], Lc, NewLc, HashSize, HashLabelTab) :- !, hash_insert((X,Lc), HashSize, HashLabelTab), - ( T == pred -> X = (Sym,_), sym_propin(ep(Lc), Sym) ; true ), + ( T == (pred) -> X = (Sym,_), sym_propin(ep(Lc), Sym) ; true ), asm_text_size(Rest, Lc, NewLc, HashSize, HashLabelTab). asm_text_size([Inst|Rest], Lc, NLc, HashSize, HashLabelTab):- asm_inst(Inst, Nbytes, _, _), % get the size of the instruction Index: symtab.P =================================================================== RCS file: /cvsroot/xsb/XSB/cmplib/symtab.P,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- symtab.P 10 Jul 2004 21:08:11 -0000 1.12 +++ symtab.P 7 May 2008 15:12:00 -0000 1.13 @@ -243,7 +243,7 @@ sym_prop(X, sym(_,_,PropList,_)) :- sym_prop0(X, PropList). -sym_prop0(pred, prop(Type,_,_,_,_,_)) :- !, Type == pred. +sym_prop0(pred, prop(Type,_,_,_,_,_)) :- !, Type == (pred). sym_prop0(module, prop(Type,_,_,_,_,_)) :- !, Type == module. sym_prop0(ex, prop(_,Env,_,_,_,_)) :- !, Env == ex.
Update of /cvsroot/xsb/XSB/syslib In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv16983 Modified Files: consult.xwam tables.xwam thread.xwam xsb_read.xwam Log Message: Update .xwam files. These seem to have gotten out of sync somehow... Index: consult.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/consult.xwam,v retrieving revision 1.71 retrieving revision 1.72 diff -u -r1.71 -r1.72 Binary files /tmp/cvss5Xe2j and /tmp/cvsTGDAMH differ Index: tables.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/tables.xwam,v retrieving revision 1.46 retrieving revision 1.47 diff -u -r1.46 -r1.47 Binary files /tmp/cvsSJy1iy and /tmp/cvsTniivW differ Index: thread.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/thread.xwam,v retrieving revision 1.62 retrieving revision 1.63 diff -u -r1.62 -r1.63 Binary files /tmp/cvsXGmsy0 and /tmp/cvsPWZgCp differ Index: xsb_read.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/xsb_read.xwam,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 Binary files /tmp/cvsouX3Dc and /tmp/cvsNai2ZB differ
Update of /cvsroot/xsb/XSB/emu In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv16146 Modified Files: cinterf.h loader_xsb.c psc_xsb.c Log Message: To make snprintf available where it is not needed in systems in which it is not in the library (as MSWIN) Index: cinterf.h =================================================================== RCS file: /cvsroot/xsb/XSB/emu/cinterf.h,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- cinterf.h 27 Mar 2008 19:55:16 -0000 1.47 +++ cinterf.h 7 May 2008 15:08:31 -0000 1.48 @@ -299,6 +299,9 @@ extern char *vfile_open(/* vfile, func, func, func, func, func */); extern char *vfile_obj(/* vfile */); +#ifndef HAVE_SNPRINTF +extern int snprintf(char *buffer, size_t count, const char *fmt, ...); +#endif /*======================================================================*/ /* Routines to call xsb from C */ Index: loader_xsb.c =================================================================== RCS file: /cvsroot/xsb/XSB/emu/loader_xsb.c,v retrieving revision 1.74 retrieving revision 1.75 diff -u -r1.74 -r1.75 --- loader_xsb.c 6 Apr 2008 23:04:22 -0000 1.74 +++ loader_xsb.c 7 May 2008 15:08:31 -0000 1.75 @@ -62,6 +62,7 @@ #endif #include "debug_xsb.h" +#include "cinterf.h" /* === stuff used from elsewhere ====================================== */ Index: psc_xsb.c =================================================================== RCS file: /cvsroot/xsb/XSB/emu/psc_xsb.c,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- psc_xsb.c 6 Apr 2008 23:04:23 -0000 1.39 +++ psc_xsb.c 7 May 2008 15:08:31 -0000 1.40 @@ -45,6 +45,7 @@ #include "memory_xsb.h" #include "register.h" #include "thread_xsb.h" +#include "cinterf.h" extern Psc synint_proc(Psc, int);


text:
Apartment in the heart of ShadysideUnited States, Pennsylvania, Pittsburgh
Request to Book
About this listing
If you are looking for a nice place to stay during your visit to Pittsburgh.... look no longer... you found it ;)
Our apartment is clean and cozy and has everything you can possibly need!!!
Space where guests can cook their own meals
Central heating or a heater in the listing
Space where guests can cook their own meals
Towels, bed sheets, soap, and toilet paper
Central heating or a heater in the listing
In the building, free or for a fee
In the building, free or for a fee
Continuous access in the listing
Breakfast is provided.
The listing can accommodate a gathering of 25 or more attendees
Easy access to the building and listing for guests in wheelchairs
Private or Shared
Free, in the building or nearby
Posted emergency information and resources
The Space
Spacious apartment in the heart of Shadyside, close to Oakland (CMU, University of Pittsburgh, Chatham and Carlow Universities).
Only 5 minute drive to downtown Pittsburgh.
Apartment on the second floor, perfect for singles and couples.
1 bedroom, 1 living room, fully equipped kitchen, bathroom, washer and drier in the building.
Safe on-street parking.
Apartment is in the walking distance from the nicest restaurants in the area, close to parks, bars, coffee shops, bakery, and grocery stores (Whole Foods, Giant Eagle, Trader Joe's).
The bus stop is 2 blocks away.
Shadyside is well known as one of the nicest and safest areas in Pittsburgh!
The apartment is equipped with everything you need for your stay:
- internet
- WiFi
- air conditioner
- heater
- fan
- microwave
- toaster
- linens and towels
- washer
- drier
- hair dryer
- iron
- ironing board
Please feel free to contact us regarding any questions you might have. We are looking forward having you in our apartment! We are sure you will enjoy the stay just like our previous guest had. :)
Check in is flexible, but I need to mention that we both work till 5pm during the week, so I am asking for you to be flexible as well with checking is. Checking out is not the issue, you can stay longer if needed in the case we don't have anyone checking in the same day or day after. We can also mail you the key to your address and you can check in whenever you get there in the case we are not able to meet you on desired time.
The Neighborhood
We absolutely love Shadyside. The best area in Pittsburgh. Check out our recommendations for nearby stores, restaurants and bars under Map tab :)
Getting Around
The access to bus lines is within two blocks, nearest bus station S Negley and Fifth Ave, express busway is three blocks away (easy and fast access to downtown).
Make yourself at home, but dont have other people staying in the apartment without notifying us. Please respect your neighbors.
67 Reviews
Kat and Marko were wonderful hosts! They met us at the apartment building and gave us a warm welcome. When they learned we were looking for an apartment, they gave us plenty of helpful information. They also provided us with snacks at the apartment. Very kind.
The neighbourhood was great and the apartment is in a perfect location for walking everywhere within Shadyside. The apartment was clean and had everything we needed.
We had a great experience staying in Kat & Marko's apartment. The place was as described and walking distance to restaurants, shops and the bike share stations. We would stay again next time we go to Pittsburgh.
This apartment is perfect : you have everything you need, it is cosy, clean, really pleasant and convenient to walk to CMU or to Pittsburgh University.
Kat was adorable, very helpful, answering at one at my texts and asking for news.
She made me feel at home, waiting for me in the apartment when I arrived and showing me everything.
The street is perfectly calm, but you have very close to the apartment all you can need : supermarkets, including a whole food, nice cafés and restaurants and even the apple store, right in the street.
I highly recommend this place and will rent again next time I will come to Pittsburgh.
Our stay went without a hitch. We had no trouble finding the address. Kat & Marko had the key ready for us, & the rest of the weekend was perfect. The apt's location couldn't be better. We walked to restaurants on Walnut St. & the Carnegie Museums in Oakland. Really enjoyed the area's wide array of architecture during our walks. The apt itself was cozy & outfitted with everything we needed. Returning the key was a breeze. We'd stay here again in a heartbeat. Highly recommended!
The location was perfect as it was walking distance from the shadyside bars, shopping, and restaurants. The place itself felt a little smaller than what we expected from the photos, but it was just right for the time we stayed. The stairs going up to the apartment had a really foul smell and was not lit in any way, but Kat & Marko's space was clean!
The neighborhood was (email hidden)rfect walking distance to restaurants, shopping and Carnegie Melon.
Nice place to work if needed as well.
Kat and Marko were available and apt was clean and comfortable.
Highly recommend this spot to anyone needing a place to stay in Pittsburgh.
Me and my wife stayed at Kat and Marko's apartment for about 2 months.
The apartment is exactly as described and has a great location:
* Near many restaurants and shops;
* Has many public transportation options;
* Easy to get to the CMU and Pitt universities (it is located at CMU's shuttle route).
The hosts were great to work with, always answering all questions very quickly.
Additionally, I had to leave Pittsburgh earlier than I had expected and the hosts waived our end date alteration fee.
This host has 39 reviews for other properties.View Other Reviews
About the Host, Kat & Marko
We are Marko and Kat .We love to travel and explore new places. We recently joined Airbnb and decided to rent out apartment as well. So far it has been a great experience and we really love Airbnb :)

subset: commoncrawl


text:
Available in Light Denim
These chambray shorts are crafted to absolute perfection. From their dainty crochet trim to the layered tulip design on the front, these are complete an elasticized waist because comfort is just as important as cute design. Woven, unlined100% lyocell10" full length, 2.5" inseam, 11" rise, 29" waistMeasured from SmallHand wash coldMade in Indonesia
Available in Fuchsia
Forever 21 Contemporary - Cut from a fluid woven fabric, this top has tons of chic versatility. Its sleeveless and sleek design features a tulip back and a round neckline. Layer a long-sleeved knit top underneath for work, then rock it with a bralette and cutoffs come the weekend. Unlined100% polyester25" full length, 32" chest, 34" waistMeasured from SmallHand wash coldMade in Vietnam
Available in Black/Cream, Blue/Cream, Wine/Cream
Made to stun while keeping you comfortable, these shorts boast an abstract ornate print, a partially elasticized waist, and a super-soft woven fabrication. Better still, their delicate lace trim and tulip design lend even more eye-catching appeal. Trust us, their beauty and breezy will make them a fast summer favorite. UnlinedLightweight100% rayon10.5" full length, 2" inseam, 9.75" rise, 28" waistMeasured from SmallHand wash coldMade in China
Available in Cream/Red
A knotted back tulip top featuring a floral paisley print. Round neckline. Short sleeves. Woven. Lightweight. DETAILS:20.5" approx. length from high point shoulder to hem, 31" chest, 34" waist, 9" sleeve length from high point shoulderMeasured from Small100% rayonHand wash, line dryImported
Available in Cream/Pink
Fresh and feminine, these pants put an emphasis on motif and shape for a truly standout look. They're already eye-catching thanks to the vibrant flower print on their woven fabric, but what makes them even more head-turning is their self-tie front that creates a layered tulip design. We think their high-waisted cut looks best with simple cropped or fitted tees. Zip fly, unlinedLightweight100% rayon31.75" inseam, 27" waist, 11.5" riseMeasured from SmallHand wash coldImported


text:
SAN FRANCISCO —Startup studio The Giant Pixel Corporation is launching the Antenna Radio app for iOS; an updated version of the app will be available on August 28th.
Antenna delivers a "quick listening" audio experience, offering active listeners a personalized stream of curated talk, news, informational and entertainment-based content.
The app is intended to address the demand from radio listeners who are migrating from conventional radio but want to stay connected to real-time news with personalized content, program flexibility and uninterrupted mobile access anywhere they go, according to The Giant Pixel Corporation.
Antenna offers short-form talk, information and entertainment programing customized to meet each listener''s specific preferences. The app also provides access to regional or location-based information.
"Our goal is to reinvent the terrestrial radio experience, giving listeners access to the world-class talk radio they love, but delivered when and where they want it," said Elliot Loh, creator of Antenna and co-founder at The Giant Pixel Corporation.
Antenna features more than 1,000 channels of curated content. Channels are selected according to criteria such as quality, length and relevance to the experience users want, and these are further targeted by proximity to major U.S. radio listening markets. Users also have the option of adding location-based weather and traffic updates.
With each use, Antenna learns listener preferences and draws on crowd-sourced ratings to adjust programming in real-time, building up 30 minutes of program clips to match behaviors and tastes.
The app''s interface was designed to help promote radio show producers with a player interface that supports branded program graphics and a channel profile that includes hooks to social media platforms and links directly to selected radio websites. In addition, Antenna plays audio directly from radio program servers, preserving producers'' relationships with listeners and partners.
Download Antenna via the iTunes Store.
Aug. 5-6, Raleigh, N.C.
Aug. 5–6, Austin, Texas
Aug. 11-12, Murfreesboro, Tenn.
Aug. 11-12, Omaha, Neb.
Five Questions: Gary Kline
New EAS Event Codes Proposed
Radio Plays Vital Role in Quake-Ridden Nepal
Thomson Video Networks Offers New SingleFeed Technology
Martin-Cleves Joins Pebble Beach Systems as VP Sales, Latin America
Clear-Com Taps Hans Chia as Regional Sales Manager
A.C.T Lighting Opens New Distribution Facility
St. Mary's Gets New EAW Loudspeakers
LynTec Names Dan Nguyen VP of Engineering
TCA: PBS Says Goodbye to 'Downton Abbey'
TCA: 'Mercy Street' Offers 'Context to Conversation' Around Confederacy
TCA: PBS Chief Kerger 'Hopeful' 'Finding Your Roots' Will Return