SWI-Prolog 5.6.0/XPCE 6.6.0 stable release
==========================================

Highlights of changes since 5.4.x
=================================

Unicode support
---------------

The basic SWI-Prolog engine and many of   the important packages now the
UNICODE character set. This simplifies   applications handling documents
of several characters sets simultaneously,   something which is commonly
found in web-applications. Prolog can now  represent any HTML, SGML, XML
or  RDF  document   without   loss    of   information   or  complicated
representations.

Especially programs manipulating character sets   other than ISO-Latin-1
must be checked. The  predicates  get_code/2   and  get_byte/2  are  now
different! Character codes are indenpendent  of   the  locale,  but code
using explicit numeric character  codes  must   be  updated  to  use the
UNICODE values or -better- the 0'<char> syntax

Please check the section name "Wide character encodings on streams" in
the manual for further reference.


Unbounded integer and rational arithmetic
-----------------------------------------

By default SWI-Prolog is now linked   against the GNU Multiple Precision
arithmetic library (GMP), This provides unbounded arithetic as expressed
in the ISO Prolog flag `bounded' absence of the Prolog flags min_integer
and max_integer. With this  change  the   dubious  silent  conversion of
integer to float on arithmetic overflow   as  well conversion of `whole'
floats to integers has been removed.

Rational arithmetic allows for expressions such as

	?- A is 1 rdiv 4 + 5 rdiv 6.

	A = 13 rdiv 12


New and improved constraint libraries
-------------------------------------

5.6.0 has a much faster version  of   the  CHR constraint library by Tom
Schrijvers, clp(r) by Leslie  de  Koninck   as  well  as  some dedicated
constraint libraries by Markus Triska.


Semantic Web library
--------------------

There are many additions to the  semantic web infra-structure, including
full  thread-safety,  transaction  support  and   triggers  in  the  RDF
store.


Version 5.6.27 Patches relative to 5.6.26
=========================================

* Fixed various signed/unsigned issues resulting from the Windows 64 port.

* Fixed data-alignment issues (portability).

* Fixed issues in semweb package: file/url compatibility issues and a
  bug in rdf_litindex.pl that can cause crashes (failing to lock atoms).



Version 5.6.26 Patches relative to 5.6.25
=========================================

Version 5.6.26 contains many changes to   accomodate the Win64 platform.
Unlike most other 64-bit platforms,  Win64   uses  32-bit long integers.
This request for consistent use of  the   types  size_t and the new type
intptr_t (an integer big enough to hold a pointer).

As this was a good opportunity, the SWI-Prolog C-API has been changed to
use the type size_t for all lengths   of strings. On 32-bit systems this
is both source and binary compatible. Foreign  code on 64-bit systems is
typically neither source nor binary compatible. Recompile the code using
a high warning level of the compiler  and fix reported problems, notably
those involving incompatible pointer types. Here is a typical example:

OLD	{ unsigned int len;
	  char *s;

	  if ( PL_get_atom_nchars(term, &len, &s) )
	    ...

NEW	{ size_t len;
	  char *s;

	  if ( PL_get_atom_nchars(term, &len, &s) )
	    ...

Failing to make these changes causes undefined behaviour.
