There is no consensus for a core library, portable across Prolog systems, let alone a standard for such a library. Since release 3, SICS has acquired Quintus Prolog, which has a rather rich library. For release 4, we have decided to make this asset be available to the SICStus community by providing a library that is a merger of the previous SICStus and Quintus libraries, which already overlap significantly.
The User's Manual documents the library of release 4. For the purposes of aiding code transition to release 4, the following is a list of the release 3 library modules, and their fate in release 4. See also Guide to Porting Code from Release 3.
atts
comclient
fdbg
gauge
heaps
linda/client
linda/server
pillow
prologbeans
tcltk
timeout
trees
wgraphs
xml
arrays
library(logarr)
.
Also available is a deprecated compatibility module library(arrays3)
.
assoc
library(avl)
,
reflecting the abstract data type, AVL trees, and with a modified,
richer API. Also available is a deprecated compatibility module
library(assoc3)
.
bdb
charsio
library(codesio)
in release 4.
Likewise, the syllable ‘chars’ has been renamed to ‘codes’
in predicate names.
clpb
clpq
clpr
clpfd
automaton/8
minimum/2
maximum/2
nvalue/2
cumulative/[1,2]
serialized/[2,3]
and cumulative/[4,5]
.
table/[2,3]
relation/3
.
all_different/[1,2]
all_distinct/[1,2]
scalar_product/[4,5]
knapsack/3
.
global_cardinality/[2,3]
count/4
.
fd_copy_term/3
copy_term/3
.
jasper
lists
library(lists3)
.
ordsets
queues
library(queues3)
.
random
library(random3)
.
Please note: The random number generator state is slightly
different from the one in release 3.
sockets
socket_client_open/3
subsumes socket/2
and socket_connect/3
.
socket_server_open/[2,3]
subsumes socket/2
,
socket_bind/2
and socket_listen/2
.
socket_select/7
can wait for any kind of stream, not just socket
streams. socket_select/7
waits until one unit (character for
text streams, byte for binary streams) can be transferred.
socket_select/7
can wait for streams ready to write.
socket_select/7
does not create streams, you need to explicitly
use socket_server_accept/4
.
Socket streams are binary by default.
Blocking socket operations can be interrupted on both UNIX and Windows.
library(sockets)
should work with IPv6 (in addition to IPv4 and AF_UNIX
).
system
library(file_systems)
. Process primitives have been redesigned
and moved to a new module, library(process)
. The predicates for
creating temporary files, mktemp/2
and tmpnam/1
, have been
removed. They used C library functionality that is broken by design and
insecure. Instead, to create and open a temporary file use something
like open(temp('foo'), write, S,
[if_exists(generate_unique_name)])
, possibly together with
stream_property(S, file_name(Path))
if you need to know the path
to the generated file name.
The (little) remaining functionality is largely as in release 3.
Also available is a deprecated compatibility module library(system3)
.
terms
term_hash/2
is not guaranteed to compute the same hash values as in release 3.
ugraphs
objects
library(objects)
.
chr
library(chr)
,
based on the Leuven implementation.
flinkage
spaceout
vbsp
The following is a list of library modules that are new in release 4.
aggregate
assoc
bags
between
file_systems
objects
library(structs)
.
plunit
process
rem
samsort
sets
structs
library(objects)
.
types
varnumbers
numbervars/3
.