Next: Limitations in the Current Release, Previous: What Is New In Release 4, Up: Revision History [Contents]
Release 4 does not provide a mode in which it is 100% compatible with earlier releases. However, in addition to what is said in What Is New In Release 4 (read that first!), this section provides further guidelines for migrating Prolog code from release 3 to release 4.
Dropped built-in | Replaced by |
get0/[1,2] , get/[1,2] | get_code/[1,2] , get_byte/[1,2] |
ttyget0/1 , ttyget/1 | get_code/2 , get_byte/2 |
put/[1,2] , tab/[1,2] | put_code/[1,2] , put_byte/[1,2] |
ttyput/1 , ttytab/1 | put_code/2 , put_byte/2 |
skip/[1,2] | skip_code/[1,2] , skip_byte/[1,2] |
ttyskip/1 | skip_code/2 , skip_byte/2 |
ttynl/0 | nl/1 |
ttyflush/0 | flush_output/1 |
fileerrors/0 , nofileerrors/0 | set_prolog_flag/2 |
'C'/3 | unification |
call_residue/2 | call_residue_vars/2 |
undo/1 | prolog:undo/1 |
help/0 | the message system |
version/0 | the message system |
version/1 | the message system |
fcompile/1 | save_files/2 |
load/1 | load_files/2 |
load_foreign_files/2 | splfr + load_foreign_resource/1 |
require/1 | use_module/2 |
is_mutable/1 | mutable/1 |
module/1 | set_module/1 |
user:term_expansion/[2,4]
and
user:term_expansion/3
are now called
user:term_expansion/6
and Module:term_expansion/5
and have a modified API; see
Term and Goal Expansion in the SICStus Prolog Manual.
library(clpb)
, library(clpq)
and library(clpr)
are provided but not supported.
library(flinkage)
and library(spaceout)
are not included
in release 4. library(objects)
has been replaced by its
Quintus counterpart, with a completely different API.
The following table lists the affected SICStus 3 library modules.
Affected module | Closest equivalent | Comment |
arrays | arrays3 | a |
assoc | assoc3 | b |
charsio | codesio | c |
clpfd | clpfd | d |
lists | lists3 | e |
queues | queues3 | f |
random | random3 | g |
sockets | sockets | d |
system | system3 | h |
terms | terms | d |
Comments to the table:
library(arrays3)
is a code migration library module;
the long-term solution is to use library(logarr)
instead.
library(assoc3)
is a code migration library module;
the long-term solution is to use library(avl)
instead.
library(lists3)
is a code migration library module;
the long-term solution is to use library(lists)
instead.
library(queues3)
is a code migration library module;
the long-term solution is to use library(queues)
instead.
library(random3)
is a code migration library module;
the long-term solution is to use library(random)
instead.
library(system3)
is a code migration library module;
the long-term solution is to use library(system)
,
library(file_systems)
and library(process)
instead.
One difference between library(system3)
and the original release
3 version is that exec/3
returns a process reference, a compound
term, instead of an integer process identifier.