[Up] [Contents] [Index] [Summary]
Version 2.0 is first of all a freeze of 
all the features added to the various 1.9.x releases. Version 2.0.6 for 
PC has moved from the WATCOM C 32-bit windows extender to Windows NT 
and runs under Windows 3.1 using the Win32s NT emulator.
New features offered:
- 32-bit Virtual Machine
Removes various limits and improves performance.
 - Inline foreign functions
`Simple' foreign predicates no longer build a Prolog stack-frame, but 
are directly called from the VM. Notably provides a speedup for the test 
predicates such as var/1, 
etc.
 - Various compatibility improvements
 - Stream based I/O library
All SWI-Prolog's I/O is now handled by the stream-package defined in the 
foreign include file SWI-Stream.h. Physical I/O of Prolog 
streams may be redefined through the foreign language interface, 
facilitating much simpler integration in window environments.
 
Version 2.0.6 offers a few incompatibilities:
- retractall/1
In previous releases, the definition of retractall/1 
was:
retractall(Term) :-
        retract(Term),
        fail.
retractall(_).
As from version 2.0.6, retractall/1 
is implemented as a deterministic foreign predicate compatible with 
Quintus Prolog. It behaves as:
retractall(Head) :-
        retract(Head),
        fail.
retractall(Head) :-
        retract((Head :- _)),
        fail.
retractall(_).
I.e. the definition behaves the same when handling predicates 
consisting of facts. Clauses with a non-true body will be retracted if 
their head matches.
 - Foreign interface types
All foreign interface types now have names ending in _t to 
lessen the chance for conflicts. term, atomic, functor 
and
module have #define's for backward 
compatibility.
 - PL_register_foreign()
The attributes is now a bitwise or of the attribute flags rather than a 
0 terminated list. This has no consequences for predicates that have no 
attributes (99% of them), while predicates with just one attribute will 
generate a compiler warning, but work properly otherwise. Predicates 
with more than one attributes must be changed.
 PL_dispatch_events
This pointer is replaced by PL_dispatch_hook(). A function was necessary 
for the Win32 .DLL interface.