Release Notes
Version 2.7.1 (Kinryo)
Version 2.7.1 is a minor release whose main changes are to support the
tagging required by newer versions of Linux, as well as to support
foreign language calls and packages on the Apple Macintosh. Other bug
fixes and functionality improvements have also been made.
- A new tagging scheme has been created to handle tagging on newer
versions of Linux. The choice of tagging is made automatically by
XSB's configuration mechanism.
- The XSB/C foreign language interface is now supported under
Macintosh OS X. In addition, fixes have been made to perlmatch
regmatch, and wildmatch to support these packages on OS X. These
patches were submitted by Barry Evans.
- ODBC Package: Added odbc_sql_cnt/4 predicate to be used to call
an Update, insert, or delete SQL statement. It returns the
number of affected rows in the fourth parameter of the call. Also
added support for use of iodbc (www.iodbc.org) driver manager.
- Fixed bug in setof in handling variables in template and
patterns. The fix was submitted by Bart Demoen and Kostis
Sagonas.
- .cpp files can now be compiled, loaded and called from XSB.
- Changed write_canonical to write more complete floating point numbers.
- New packages sgml and xpath have been added. The sgml package can parse
XML, HTML, and even SGML; it is adapted from SWI Prolog.
The xpath package supports XPath queries to XML documents.
Version 2.7 (Kinryo)
General
Version 2.7 has many fixes to bugs and improvements to packages and
libraries.
Major New Functionality
- The Constraint Handling Rules package includes both a
CHR runtime system and a compiler to convert CHR files to
Prolog files. This packages allow CHR to be used with tabling, and
includes several sample CHR solvers that have been ported to XSB.
-
ISO-style streams are now supported by all XSB file I/O.
Streams can be used to access strings and pipes as well as files,
and the distinction between I/O streams and I/O ports has been
removed. New I/O and other predicates to support ISO functionality
have also been added.
-
The dbdrivers package provides functionality to manage multiple
drivers and databases from XSB, and currently supports ODBC
and mysql drivers.
-
XSB now has the capability to determine the proportion of
time spent in each predicate and module via the XSB Profiling
library.
-
XSB now prints out the forward and backward execution stacks
upon unhandled errors, allowing for better debugging. This facility
is on by default, but can be turned off using an XSB flag.
-
A new faculty xsb_lint has been created to
help determine which predicates must be exported and imported into
files upon modularization. Through the statements
document_export/1 and document_import/1, Version 2.7 also
supports "pseudo-modules". Such files act as are regular files in
terms of execution, but their declarations are used by
xsb_lint, xsbdoc and the compiler's use inference pass.
Other Functionality
-
Functionality for use inference, a part of XSB's compiler has
been expanded. Use inference now checks standard meta-predicates
(e.g. findall, assert) for usage.
-
The predicate parsort/4 has been added to provide
efficient and flexible sorting. It can sort different argument
positions of predicates lexicographically, in either ascending or
descending order, and either eliminate duplicates or not.
-
A new built-in set_file_write_depth/1 controls the depth of
terms printed by standard I/O built-ins.
-
Improvements have been made to the compiler for efficiency,
and several bug fixes have been made to compiling and parsing. In
addition, singleton_warnings_off a new compiler option
suppresses singleton warnings by the compiler, and so is useful for
code generation.
-
Improvements have been made to the ODBC interface, to allow
multiple ODBC connections, to allow querying of information about
the ODBC connection itself, and to allow data to be retrieved as
character lists rather than as atoms.
-
XSB disassembler output is now readable by Prolog.
-
Predicates defined within a module, but not exported can be
called from outside that module using the call Module:Call.
The predicate @=/2 has been added that succeeds if two terms
are identical variables, or if the main functor symbols of two terms
to be compared are identical, and fails otherwise.
-
Improvements have been made to memory management, to better
integrate heap garbage collection and heap stack expansion.
Selected Bug Fixes
-
Java 1.4.2 introduced some incompatibilities in memory
management which broke InterProlog. This has been fixed in this
version. In addition, parameters may now be passed when invoking
XSB from Java.
-
The GPP pre-processor has been updated. Most notably among the
new functionalities is that #include can, now, take a macro as an
argument.
-
XSB's stack reallocation is now aware of attributed variables
and interrupt handlers.
-
An inconsistency in the handling of declarations has been
fixed. The inconsistency involved different handling of predicate
names declared as P/A and P(_,_,_,...).
-
message/2 has been fixed to properly deal with a list as
its 1st argument.
-
A long-standing register allocation bug in the compiler is now
fixed.
-
Optimizations and bug fixes have been made to the XASP Smodels
interface.
-
Various error fixes and improvements made to xsbdoc.
Backward Incompatibility
-
The implementation and interface of attributed variables has
been changed to fix several inconsistencies and to allow attributes in
different modules. These changes were necessary for the CHR
implementation and made the CLP(R) implementation unavailable. CLP(R)
style handling is available through CHR solvers included in the CHR
package.
-
The Oracle interface is no longer supported. Its functionality
can be obtained through either XSB's ODBC interface or through the
new dbdrivers package.
Version 2.6 (Duff)
General
Version 2.6 contains a number of changes, including new packages and
libraries for generation of manuals from code documentation and for
answer set programming. Version 2.6 also allows a user-modifiable
extension for byte-code files, whose default .xwam extension replaces
the previous .O extension. Existing features Version 2.6 have been
improved in various ways, from better exception handling, to a more
robust Windows implementation, to numerous bug-fixes.
News
-
The Chat engine has been removed. An optimized version of the
SLG-WAM is now the single engine supported in XSB. The garbage
collectors have been ported to this engine.
-
Various aspects of XSB have been rewritten to support an
ISO-compatible error handling mechanism in which exceptional
conditions can be caught and handled by user programs.
-
Fixed-depth indexing has been added for dynamic predicates.
Using fixed-depth indexing a term in a given arguments may be indexed
on the first five non-variable symbols. Multiple-argument and
alternative indices also work with fixed-depth indexing just as they
do with outer functor indexing.
-
Full-word integers are now supported in XSB via an implementation
of boxed integers.
-
Date and time routines have been added as standard
predicates.
Packages and Libraries
-
A new package, xsbdoc, has been added. xsbdoc supports a
"literate programming" style, in which code-level comments can be used
to generate manuals. It is based in part on Ciao system's lpdoc.
-
The XASP package provides an efficient interface to SModels from
XSB. It is a significant rewrite of the previous SModels interface.
-
An ODBC interface to MySQL is now supported under Linux. In
addition, Prolog terms can now be written to and read from database
strings.
- A new library, stdscan.P is provided containing a configurable
scanner for text parsing.
-
Updates to the major packages, including Flora-2 and XMC.
Platform stabilization
-
Stability of XSB on Windows has been improved in many ways,
both when XSB is compiled with Cygwin/GCC, and when compiled by
native windows compilers. These changes include a better
configuration mechanism for Windows, a robust XSB-calling-C
interface, and better support for gpp preprocessing of Prolog files.
In addition, many standard and library predicates have been
stabilized for Windows, including cputime/1, directory query
routines, path and file handling, the format.P library, and others.
-
The build process has been fixed for 64-bit MIPS machine. XSB
should be easily portable to most 64-bit machines.
Bugfixes
-
Several bugfixes have been made for the CLP(R) package, including
expansion of math functions to include min/1, max/1, and pow/2.
-
Hashing function have been changed to provide better indexing of
longish strings.
-
Various bugs in pathname handling were fixed, and differences in
pathname handling between Unix and Windows were minimized.
-
Bugs closed since last release (see Bugs
for more information): #585031, #569972, #723875, #535270, #683785,
#666940, #637782, #635399, #524348, #626921, #449237, #706145,
#641852, #638830, #642024, #535257, #529566, #475363, #589668,
#531264
Backward Incompatibility
-
The object files now have the .xwam extension instead of the .O
extension.
-
The xsb_undefined_predicate_hook has been
deprecated. Instead, XSB now throws the exception of the form
error(undefined_predicate(Name,Arity,ModName),ErrorMessage)
when an undefined predicate is called. This exception can be caught
and appropriate action can be taken.
Version 2.5 (Okocim)
General
This is mostly a transitional release, where the major changes are the
move to use the SLG-WAM engine as default, and the introduction of
garbage collection support for this engine. Also, several important
memory management related bugs have been fixed, increasing the
system's stability considerably.
Important Note
This is the last release to support the Chat engine.
News
-
SLG-WAM stack management has been made the default rather than Chat.
Chat is still available through a configuration option.
- A new heap garbage collector, called indirect has
been made the default garbage collector for SLG-WAM. In addition,
the Chat sliding and copying garbage collectors now also work on the
SLG-WAM configuration.
- New builtins round/2, ceil/2 and floor/2 for dealing with
floating point numbers added.
Bugfixes
-
Several memory management related bugs fixed.
-
Minor bug in Prolog debugger fixed.
-
Fixed problem with NULL values and ODBC.
Backward Incompatibility
FLORA News
Flora-2 is still a late alpha release, but there have been
considerable improvements in stability and speed.
This release fixes many bugs, eliminates some restrictions, and adds
new features.
-
The most important new feature is the ability to check for undefined
predicates and methods in debug mode (see the manual regarding
checking undefinedness checks). This feature simplifies debugging
considerably.
-
Flora compiler now checks if a tabled predicate depends on an update
operation and issues appropriate warnings. Such dependency is
considered to be a likely program bug.
-
Numbered anonymous oids added (e.g., _#123). They behave like
regular anonymous oids (_#) in the sense that they are substituted
by a new oid. However, numbered oids can be referenced within the
same clause (e.g., _#12[self->_#12]).
-
Optimized compilation of path expressions and nested terms.
Version 2.4 (Bavaria)
General
News
-
XSB now permits user programs to register hooks to be called when an
undefined predicate is encountered. This and other (previously
undocumented) hooks are described in the chapter titled Hooks
in Manual Part 1.
- The XMC Model Checking
System is now included as a package in XSB.
-
Local scheduling has been made the default scheduler.
- Uniform interface to various file operations (chdir, isdir,
readable, etc.) through the predicate path_sysop/2 and
path_sysop/3 (in module file_io). See Manual, Part 2
(Script Utilities).
-
New string matching function, string_match/4, which extends
str_sub/3 (string_match/4 doesn't do pattern
matching - use the regmatch package for that). See Manual,
Part 2, (String Manipulation).
Bugfixes
-
Fixed subsumption bug prompted by certain uses of functors and
lists. The bug appeared as an inability to unify a (falsely
identified) answer with an answer template.
Backward Incompatibility
-
The meaning of argument 3 in predicate str_sub/3 has changed. It
still represents the position of the substring match. However,
offsets now start from 0, like other string functions, instead of 1.
-
A number of new predicates have been added as a step towards ISO
compatibility.
FLORA News
This release of XSB contains an alpha release of a completely
redesigned and re-implemented FLORA system (now called FLORA-2). Here
is an incomplete list of the main new features of the system:
-
Integrates F-logic, HiLog, and Transaction Logic into one coherent
language
-
Provides a new, flexible module system
-
Better equality maintenance and support for inheritance
-
Support for preprocessing
-
Many more enhancements
We recommend that Flora users should start using Flora-2, as the previous
version of Flora is no longer maintained and will eventually be deprecated.
Version 2.3 (Zombie)
General
A great number of bugs fixed, new features, performance improvements.
News
-
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
timeouts.
-
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
installed.
-
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.
Backward Incompatibility
-
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 input.
Version 2.2 (Tsingtao)
General
News
-
Support of Attributed Variables: Attributed variables are now
supported in XSB (partially compatible with SICStus 3.8). See XSB Manual, Volume 2, Attributed
Variables.
-
Random Number Generator: A builtin random number generator is
implemented, and a set of predicates, which are compatible with
SICStus 3.8, are provided.
New Packages
-
libwww - a powerful Web access package. See XSB Manual, Volume 2, The Libwww
Package. This package has been tested only on Solaris 2.6 and
Linux 2.2. It definitely needs configuration work in order to run
under Windows.
This XSB package relies on the W3C's libwww library and requires it to
be installed. The entire package is implemented in C and is much faster
than other related Internet access packages for Prolog, e.g., PiLLOW). The
package provides the following functionality:
-
HTML parser.
-
(Non-validating) XML parser (including handling of external
entities).
-
The ability to simultaneously dispatch several HTTP requests and
parse the responses as they arrive; no waiting until the entire
document is received.
-
Fetching web pages and filling out forms.
-
Header information.
-
Timeouts.
-
Basic and digest authentication. SSL to follow.
-
Redirection.
-
Error handling.
Backward Incompatibility
-
The C calls xsb_query_string_string and
xsb_next_string that interface C programs to XSB now use
the new VarString data type instead of char*. It
is no longer necessary to pass the size of the buffer to these
functions. See XSB Manual, Volume 2, to learn more about the
variable-length string data type.
Bug Fixes
-
Crashing of XSB-ODBC interface under Windows;
-
Memory violations of some internal operations on delay lists.
Version 2.1 (Skol)
General
News
Process management API: XSB can now spawn subprocesses and
capture their standard I/O into XSB streams. This allows XSB to
communicate with other processes. See XSB
Manual, Volume 2, Communication with Subprocesses.
XSB preprocessor: There is now a compiler option, xpp_on,
which tells the XSB compiler to put the source through a
preprocessor. The default is gpp,
a powerful preprocessor that understands both C and Prolog syntax.
High-level C interface: XSB can now automatically generate
wrappers for the most common C functions. Such functions can now be
simply declared using compiler directives and then be called from XSB.
Enhancements to the sockets interface: New calls such as
socket_set_option, socket_select,, etc. Certain socket calls
and file I/O calls can be timed-out.
I/O enhancements: There are several additions to the low-level
I/O library, such as file_clone, file_reopen,
pipe_open. Certain socket calls and file I/O calls can be
timed-out.
New section on string manipulation in manual part 2: Some of
the predicates described there are old (but weren't documented) and
some are new.
Call changes: New calls: number_digits/2, number_codes/2,
atom_codes/2 replace atom_chars/2 and number_chars/2.
Atom length: Atom length in compiled code is no longer limited
to 255. The 255 limit on the size of ldoptions directive in the
Foreign C interface has been removed as well.
Debugger enhancements: Many additional options: profiling,
verbose skip, extensive trace control facility.
New Packages
sModels: Implements stable model semantics.
Backward Incompatibility
-
Binary incompatibility!!! The format of the XSB .O files has
been changed. Make sure you recompile all your programs! (The
binaries that come with the XSB distribution have the new format.)
-
unix/1 is now called shell/1. It exists in module
shell, and is imported from there automatically.
-
The standard predicates atom_chars/2 and number_codes/2 now behave
as in the Prolog standard (return lists of atoms rather than ASCII
codes). The old behavior is provided by the standard predicates
atom_codes/2 and number_codes/2.
-
A number of backward-incompatible changes in socket calls. First,
the predicates socket_send_eof/1 and socket_send_asci/2 have been
removed. This functionality is available through other calls.
Second, all socket predicates now have an extra argument, the error
code. The old-style predicates have been preserved, but their
behavior isn't guaranteed to be 100% the same. The fileptr argument
in socket_connect call has been deleted. The fileptr argument in
socket_accept no longer denotes an XSB I/O port. Instead, it denoted
a socket descriptor. It can be converted to an I/O port using the
new builtin fd2ioport.
socket_send/3 no longer appends the message delimited (the
backquote). Programs that rely on this feature will not work any
longer. Instead of this old hack, socket_send now prepends a 4-byte
header that specifies the length of the message body. The primitive
socket_recv/3 uses it to determine the length of the message it
received.
Version 2.0 (Gouden Carolus)
General
XSB Version 2.0 offers a more flexible handling of dynamic code. XSB
now also includes a number of preprocessors that allow it to
efficiently evaluate powerful formalisms such as F-logic, Annotated
logic, and the well-founded semantics with explicit negation.
Finally, XSB 2.0 provides various packages for regular expression and
wildcard matching.
Large parts of XSB have been rewritten for this release, especially
memory management, and representation of tabled clauses. The result is
a more robust system with improved functionality that is more suitable
for use in commercial and large-scale research development.
Added support for InterProlog, a Java
front-end enhancement for Prolog
Packages
Version 2.0 of XSB includes the following packages:
-
FLORA: A full-fledged F-logic to XSB compiler and shell.
-
GAP: support for annotated logic programming.
-
SLX: allows XSB to evaluate extended logic programs according
to the well-founded semantics with explicit negation.
-
PERLMATCH: an interface to Perl pattern matching and string
substitution capabilities.
-
REGMATCH: provides similar functionality, but relies on a
POSIX-compliant C library instead of Perl.
-
WILDMATCH: allows matching wildcards and globbing of
directories. Relies on a POSIX 2 compliant C library.
Backward Incompatibility
The following incompatible changes have been made in XSB Version 2.0:
-
The file .xsbrc in the home directory is no longer used. Instead, XSB
now uses the directory .xsb/ and the startup file is .xsb/xsbrc
It is now possible to have pretty much any Prolog code in that file.
-
There is a change in how the library_directory predicate is used.
The user must now assert directories into this predicate.
There is no need to export this predicate (this predicate is now
global).
-
XSB is no longer supported on MS DOS.
-
In order to be consistent with the ISO Prolog standard, XSB no
longer supports mixing compiled and dynamic code for the same
predicate.
-
The predicate is_string/1, which used to check if its argument is a list of
characters, is now replaced by the builtin is_charlist/1. There is now also
is_charlist/2 (see the manual).
Email: xsb-users@lists.sourceforge.net
Last modified: Mon Jun 23 15:08:51 EDT 2003