Version 2.3 of XSB, a tabled logic programming and deductive database
system has been released. You can find more information, and download
the system from
Included below are the changes for this release.
Release Notes for Version 2.3
A great number of bugs fixed, new features, performance
* Subsumption: In addition to variant-based tabling, XSB now
provides tabling based on subsumption of calls. In such a
"subsumption-based" tabled evaluation, answers from a more general
subgoal are used to satisfy a subsumed (more specific) subgoal,
thereby permitting greater reuse of computed results. The tabling
strategy may be chosen on a per predicate basis. Subsumption-based
tabling typically yields better performance in both time and
space. However, subsumptive tabling is better suited to more
declarative programs, as it may fail to give proper results in the
presence of certain Prolog constructs such as var/1. This
implementation of subsumption-based tabling correctly evaluates normal
logic programs which do not require subgoal delays.
* Jumptable Emulator: The system is now able to take advantage
of special gcc features to implement a jumptable-based emulator, which
speeds up XSB considerably.
* Sockets: XSB now supports the socket select call and
* RDF parser: The XSB libwww package that first appeared in
XSB 2.2 now has new interface to the RDF parser provided by e libwww
package from W3C. It requires that the libwww library from W3C is
* An ISO-compatable throw/catch mechanism: It was already
present in version 2.2, but now it is also documented.
* Foreign C interface now works on SGI's IRIX.
* Backtrackable assert and retract, plus Perl-style
associative arrays. (Read about them in the section on modifying the
database in Manual 1.)
* Oracle Interface: The Oracle interface has been brought
up-to-date with newer versions of Oracle.
* ODBC Interface: The ODBC interface has been some major
cleanups, and several bugs have been fixed; it also now works with SQL
Server as well as Access. Support for multiple simultaneous
connections has been introduced.
* The type bool used by the external C interface has been
renamed to xsbBool, because of clashes with various include files that
exist on some platforms. Likewise, the macros for dealing with the
variable string type used by C programs that call XSB as a library
have been renamed. For instance, vstrDEFINE is now XSB_StrDefine. See
Vol. 2 of the manual for the new names.
* The predicates file_read_line, file_read_line_atom,
file_read_line_list have lost the last argument (the indicator of
whether the read has read the entire line). This argument is no longer
necessary, since buffers expand automatically to accommodate any size