This file is indexed.

/usr/lib/swi-prolog/doc/Manual/relnotes.html is in swi-prolog-nox 5.10.4-3ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<HTML>
<HEAD>
<TITLE>SWI-Prolog 5.11.18 Reference Manual: Section 1.6</TITLE><LINK REL=home HREF="index.html">
<LINK REL=contents HREF="Contents.html">
<LINK REL=index HREF="DocIndex.html">
<LINK REL=summary HREF="summary.html">
<LINK REL=previous HREF="xpce.html">
<LINK REL=next HREF="sponsor.html">
<STYLE type="text/css">
/* Style sheet for SWI-Prolog latex2html
*/

dd.defbody
{ margin-bottom: 1em;
}

dt.pubdef
{ background-color: #c5e1ff;
}

dt.multidef
{ background-color: #c8ffc7;
}

.bib dd
{ margin-bottom: 1em;
}

.bib dt
{ float: left;
margin-right: 1.3ex;
}

pre.code
{ margin-left: 1.5em;
margin-right: 1.5em;
border: 1px dotted;
padding-top: 5px;
padding-left: 5px;
padding-bottom: 5px;
background-color: #f8f8f8;
}

div.navigate
{ text-align: center;
background-color: #f0f0f0;
border: 1px dotted;
padding: 5px;
}

div.title
{ text-align: center;
padding-bottom: 1em;
font-size: 200%;
font-weight: bold;
}

div.author
{ text-align: center;
font-style: italic;
}

div.abstract
{ margin-top: 2em;
background-color: #f0f0f0;
border: 1px dotted;
padding: 5px;
margin-left: 10%; margin-right:10%;
}

div.abstract-title
{ text-align: center;
padding: 5px;
font-size: 120%;
font-weight: bold;
}

div.toc-h1
{ font-size: 200%;
font-weight: bold;
}

div.toc-h2
{ font-size: 120%;
font-weight: bold;
margin-left: 2em;
}

div.toc-h3
{ font-size: 100%;
font-weight: bold;
margin-left: 4em;
}

div.toc-h4
{ font-size: 100%;
margin-left: 6em;
}

span.sec-nr
{
}

span.sec-title
{
}

span.pred-ext
{ font-weight: bold;
}

span.pred-tag
{ float: right;
padding-top: 0.2em;
font-size: 80%;
font-style: italic;
color: #202020;
}

/* Footnotes */

sup.fn { color: blue; text-decoration: underline; }
span.fn-text { display: none; }
sup.fn span {display: none;}
sup:hover span
{ display: block !important;
position: absolute; top: auto; left: auto; width: 80%;
color: #000; background: white;
border: 2px solid;
padding: 5px; margin: 10px; z-index: 100;
font-size: smaller;
}
</STYLE>
</HEAD>
<BODY BGCOLOR="white">
<DIV class="navigate"><A class="nav" href="index.html"><IMG SRC="home.gif" BORDER=0 ALT="Home"></A>
<A class="nav" href="Contents.html"><IMG SRC="index.gif" BORDER=0 ALT="Contents"></A>
<A class="nav" href="DocIndex.html"><IMG SRC="yellow_pages.gif" BORDER=0 ALT="Index"></A>
<A class="nav" href="summary.html"><IMG SRC="info.gif" BORDER=0 ALT="Summary"></A>
<A class="nav" href="xpce.html"><IMG SRC="prev.gif" BORDER=0 ALT="Previous"></A>
<A class="nav" href="sponsor.html"><IMG SRC="next.gif" BORDER=0 ALT="Next"></A>
</DIV>

<H2><A NAME="sec:1.6"><SPAN class="sec-nr">1.6</SPAN> <SPAN class="sec-title">Release 
Notes</SPAN></A></H2>

<A NAME="sec:relnotes"></A>

<P>Collected release-notes. This section only contains some highlights. 
Smaller changes to especially older releases have been removed. For a 
complete log, see the file <CODE>ChangeLog</CODE> from the distribution.

<H3>Version 1.8 Release Notes</H3>

<A NAME="sec:rel-1.8"></A>

<P>Version 1.8 offers a stack-shifter to provide dynamically expanding 
stacks on machines that do not offer operating-system support for 
implementing dynamic stacks.

<H3>Version 1.9 Release Notes</H3>

<A NAME="sec:rel-1.9"></A>

<P>Version 1.9 offers better portability including an MS-Windows 3.1 
version. Changes to the Prolog system include:

<P>
<UL class="latex">
<LI><I>Redefinition of system predicates</I><BR>
Redefinition of system predicates was allowed silently in older 
versions. Version 1.9 only allows it if the new definition is headed by 
a :- <A NAME="idx:redefinesystempredicate1:12"></A><A class="pred" href="db.html#redefine_system_predicate/1">redefine_system_predicate/1</A> 
directive.top-level
<LI><I>`Answer' reuse</I><BR>
The top-level maintains a table of bindings returned by top-level goals 
and allows for reuse of these bindings by prefixing the variables with 
the $ sign. See <A class="sec" href="topvars.html">section 2.8</A>.
<LI><I>Better source code administration</I><BR>
Allows for proper updating of multifile predicates and finding the 
sources of individual clauses.
</UL>

<H3>Version 2.0 Release Notes</H3>

<A NAME="sec:rel-2.0"></A>

<P>New features offered:

<P>
<UL class="latex">
<LI><I>32-bit Virtual Machine</I><BR>
Removes various limits and improves performance.
<LI><I>Inline foreign functions</I><BR>
`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 <A NAME="idx:var1:13"></A><A class="pred" href="typetest.html#var/1">var/1</A>, 
etc.
<LI><I>Various compatibility improvements</I><BR>
<LI><I>Stream based I/O library</I><BR>
All SWI-Prolog's I/O is now handled by the stream-package defined in the 
foreign include file <CODE>SWI-Stream.h</CODE>. Physical I/O of Prolog 
streams may be redefined through the foreign language interface, 
facilitating much simpler integration in window environments.
</UL>

<H3>Version 2.5 Release Notes</H3>

<A NAME="sec:rel-2.5"></A>

<P>Version 2.5 is an intermediate release on the path from 2.1 to 3.0. 
All changes are to the foreign-language interface, both to user- and 
system-predicates implemented in the C-language. The aim is twofold. 
First of all to make garbage-collection and stack-expansion 
(stack-shifts) possible while foreign code is active without the 
C-programmer having to worry about locking and unlocking C-variables 
pointing to Prolog terms. The new approach is closely compatible with 
the Quintus and SICStus Prolog foreign interface using the <CODE>+term</CODE> 
argument specification (see their respective manuals). This allows for 
writing foreign interfaces that are easily portable over these three 
Prolog platforms.

<P>Apart from various bug fixes listed in the ChangeLog file, these are 
the main changes since 2.1.0:

<P>
<UL class="latex">
<LI><I>ISO compatibility</I><BR>
Many ISO compatibility features have been added: <A NAME="idx:open4:14"></A><A class="pred" href="IO.html#open/4">open/4</A>, 
arithmetic functions, syntax, etc.
<LI><I>Win32</I><BR>
Many fixes for the Win32 (NT, '95 and win32s) platforms. Notably many 
problems related to pathnames and a problem in the garbage collector.
<LI><I>Performance</I><BR>
Many changes to the clause indexing system: added hash-tables, lazy 
computation of the index information, etc.
<LI><I>Portable saved-states</I><BR>
The predicate <A NAME="idx:qsaveprogram12:15"></A><A class="pred" href="runtime.html#qsave_program/1">qsave_program/[1,2]</A> 
allows for the creating of machine independent saved-states that load 
very quickly.
</UL>

<H3>Version 2.6 Release Notes</H3>

<A NAME="sec:rel-2.6"></A>

<P>Version 2.6 provides a stable implementation of the features added in 
the 2.5.x releases, but at the same time implements a number of new 
features that may have impact on the system stability.

<P>
<UL class="latex">
<LI><I>32-bit integer and double float arithmetic</I><BR>
The biggest change is the support for full 32-bit signed integers and 
raw machine-format double precision floats. The internal data 
representation as well as the arithmetic instruction set and interface 
to the arithmetic functions has been changed for this.
<LI><I>Embedding for Win32 applications</I><BR>
The Win32 version has been reorganised. The Prolog kernel is now 
implemented as Win32 DLL that may be embedded in C-applications. Two 
front ends are provided, one for window-based operation and one to run 
as a Win32 console application.
<LI><I>Creating stand-alone executables</I><BR>
Version 2.6.0 can create stand-alone executables by attaching the 
saved-state to the emulator. See <A NAME="idx:qsaveprogram2:16"></A><A class="pred" href="runtime.html#qsave_program/2">qsave_program/2</A>.
</UL>

<H3>Version 2.7 Release Notes</H3>

<A NAME="sec:rel-2.7"></A>

<P>Version 2.7 reorganises the entire data-representation of the Prolog 
data itself. The aim is to remove most of the assumption on the 
machine's memory layout to improve portability in general and enable 
embedding on systems where the memory layout may depend on invocation or 
on how the executable is linked. The latter is notably a problem on the 
Win32 platforms. Porting to 64-bit architectures is feasible now.

<P>Furthermore, 2.7 lifts the limits on arity of predicates and number 
of variables in a clause considerably and allow for further expansion at 
minimal cost.

<H3>Version 2.8 Release Notes</H3>

<A NAME="sec:rel-2.8"></A>

<P><A NAME="idx:AlphaDEC:17"></A><A NAME="idx:DECAlpha:18"></A>With 
version 2.8, we declare the data-representation changes of 2.7.x stable. 
Version 2.8 exploits the changes of 2.7 to support 64-bit processors 
like the DEC Alpha. As of version 2.8.5, the representation of recorded 
terms has changed, and terms on the heap are now represented in a 
compiled format. SWI-Prolog no longer limits the use of malloc() or uses 
assumptions on the addresses returned by this function.

<H3>Version 2.9 Release Notes</H3>

<A NAME="sec:rel-2.9"></A>

<P>Version 2.9 is the next step towards version 3.0, improving ISO 
compliance and introducing ISO compliant exception handling. New are
<A NAME="idx:catch3:19"></A><A class="pred" href="exception.html#catch/3">catch/3</A>, <A NAME="idx:throw1:20"></A><A class="pred" href="exception.html#throw/1">throw/1</A>, <A NAME="idx:abolish1:21"></A><A class="pred" href="db.html#abolish/1">abolish/1</A>, <A NAME="idx:writeterm23:22"></A><A class="pred" href="termrw.html#write_term/2">write_term/[2,3]</A>, <A NAME="idx:writecanonical12:23"></A><A class="pred" href="termrw.html#write_canonical/1">write_canonical/[1,2]</A> 
and the C-functions <A class="func" href="foreigninclude.html#PL_exception()">PL_exception()</A> 
and <A class="func" href="foreigninclude.html#PL_throw()">PL_throw()</A>. 
The predicates
<A NAME="idx:display12:24"></A><SPAN class="pred-ext">display/[1,2]</SPAN> 
and <A NAME="idx:displayq12:25"></A><SPAN class="pred-ext">displayq/[1,2]</SPAN> 
have been moved to <CODE>library(backcomp)</CODE>, so old code referring 
to them will autoload them.

<P>The interface to <A class="func" href="foreigninclude.html#PL_open_query()">PL_open_query()</A> 
has changed. The <VAR>debug</VAR> argument is replaced by a bitwise 
or'ed <VAR>flags</VAR> argument. The values
<CODE>FALSE</CODE> and <CODE>TRUE</CODE> have their familiar meaning, 
making old code using these constants compatible. Non-zero values other 
than
<CODE>TRUE</CODE> (1) will be interpreted different.

<H3>Version 3.0 Release Notes</H3>

<A NAME="sec:rel-3.0"></A>

<P>Complete redesign of the saved-state mechanism, providing the 
possibility of `program resources'. See <A NAME="idx:resource3:26"></A><A class="pred" href="useresource.html#resource/3">resource/3</A>, <A NAME="idx:openresource3:27"></A><A class="pred" href="useresource.html#open_resource/3">open_resource/3</A>, 
and
<A NAME="idx:qsaveprogram12:28"></A><A class="pred" href="runtime.html#qsave_program/1">qsave_program/[1,2]</A>.

<H3>Version 3.1 Release Notes</H3>

<A NAME="sec:rel-3.1"></A>

<P>Improvements on exception-handling. Allows relating software 
interrupts (signals) to exceptions, handling signals in Prolog and C 
(see
<A NAME="idx:onsignal3:29"></A><A class="pred" href="signal.html#on_signal/3">on_signal/3</A> 
and <A class="func" href="foreigninclude.html#PL_signal()">PL_signal()</A>). 
Prolog stack overflows now raise the <CODE>resource_error</CODE> 
exception and thus can be handled in Prolog using <A NAME="idx:catch3:30"></A><A class="pred" href="exception.html#catch/3">catch/3</A>.

<H3>Version 3.3 Release Notes</H3>

<A NAME="sec:rel-3.3"></A>

<P>Version 3.3 is a major release, changing many things internally and 
externally. The highlights are a complete redesign of the high-level I/O 
system, which is now based on explicit streams rather then current 
input/output. The old Edinburgh predicates (<A NAME="idx:see1:31"></A><A class="pred" href="IO.html#see/1">see/1</A>, <A NAME="idx:tell1:32"></A><A class="pred" href="IO.html#tell/1">tell/1</A>, 
etc.) are now defined on top of this layer instead of the other way 
around. This fixes various internal problems and removes Prolog limits 
on the number of streams.

<P>Much progress has been made to improve ISO compliance: handling 
strings as lists of one-character atoms is now supported (next to 
character codes as integers). Many more exceptions have been added and 
printing of exceptions and messages is rationalised using Quintus and 
SICStus Prolog compatible <A NAME="idx:printmessage2:33"></A><A class="pred" href="exception.html#print_message/2">print_message/2</A>, <A NAME="idx:messagehook3:34"></A><A class="pred" href="exception.html#message_hook/3">message_hook/3</A> 
and <A NAME="idx:printmessagelines3:35"></A><A class="pred" href="exception.html#print_message_lines/3">print_message_lines/3</A>. 
All predicates described in <CITE><A class="cite" href="Bibliography.html#Deransart:96">Deransart <EM>et 
al.</EM>, 1996</A></CITE> are now implemented.

<P>As of version 3.3, SWI-Prolog adheres the ISO <EM>logical update view</EM> 
for dynamic predicates. See <A class="sec" href="db.html">section 4.12.1</A> 
for details.

<P>SWI-Prolog 3.3 includes garbage collection on atoms, removing the 
last serious memory leak especially in text-manipulation applications. 
See
<A class="sec" href="foreigninclude.html">section 9.4.2.1</A>. In 
addition, both the user-level and foreign interface supports atoms 
holding <EM>0-bytes</EM>.

<P>Finally, an alpha version of a multi-threaded SWI-Prolog for Linux is 
added. This version is still much slower than the single-threaded 
version due to frequent access to `thread-local-data' as well as some 
too detailed mutex locks. The basic thread API is ready for serious use 
and testing however. See <A class="sec" href="threads.html">section 8</A>.

<H4>Incompatible changes</H4>

<P>A number of incompatible changes result from this upgrade. They are 
all easily fixed however.

<P>
<UL class="latex">
<LI><I><A class="pred" href="control.html#!/0">!/0</A>, <A NAME="idx:call1:36"></A><A class="pred" href="metacall.html#call/1">call/1</A></I><BR>
The cut now behaves according to the ISO standard. This implies it works 
in compound goals passed to <A NAME="idx:call1:37"></A><A class="pred" href="metacall.html#call/1">call/1</A> 
and is local to the <EM>condition</EM> part of if-then-else as well as 
the argument of <A class="pred" href="control.html#\+/1">\+/1</A>.
<LI><I>atom_chars/2</I><BR>
This predicate is now ISO compliant and thus generates a list of 
one-character atoms. The behaviour of the old predicate is available in 
the ---also ISO compliant--- <A NAME="idx:atomcodes2:38"></A><A class="pred" href="manipatom.html#atom_codes/2">atom_codes/2</A> 
predicate. Safest repair is a replacement of all <CODE>atom_chars</CODE> 
into <CODE>atom_codes</CODE>. If you do not want to change any 
source-code, you might want to use

<PRE class="code">
user:goal_expansion(atom_chars(A,B), atom_codes(A,B)).
</PRE>

<P>
<LI><I>number_chars/2</I><BR>
Same applies for <A NAME="idx:numberchars2:39"></A><A class="pred" href="manipatom.html#number_chars/2">number_chars/2</A> 
and <A NAME="idx:numbercodes2:40"></A><A class="pred" href="manipatom.html#number_codes/2">number_codes/2</A>.
<LI><I>feature/2 , set_feature/2</I><BR>
These are replaced by the ISO compliant <A NAME="idx:currentprologflag2:41"></A><A class="pred" href="flags.html#current_prolog_flag/2">current_prolog_flag/2</A> 
and
<A NAME="idx:setprologflag2:42"></A><A class="pred" href="flags.html#set_prolog_flag/2">set_prolog_flag/2</A>. 
The library <CODE>library(backcomp)</CODE> provides definitions for 
these predicates, so no source <B>must</B> be updated.
<LI><I>Accessing command-line arguments</I><BR>
This used to be provided by the undocumented '$argv'/1 and Quintus 
compatible library <A NAME="idx:unix1:43"></A><A class="pred" href="system.html#unix/1">unix/1</A>. 
Now there is also documented
<CODE>current_prolog_flag(argv, Argv)</CODE>.
<LI><I>dup_stream/2</I><BR>
Has been deleted. New stream-aliases can deal with most of the problems 
for which <A NAME="idx:dupstream2:44"></A><SPAN class="pred-ext">dup_stream/2</SPAN> 
was designed and <A NAME="idx:dup2:45"></A><SPAN class="pred-ext">dup/2</SPAN> 
from the <EM>clib</EM> package can with most others.
<LI><I>op/3</I><BR>
Operators are now <B>local to modules</B>. This implies any modification 
of the operator-table does not influence other modules. This is 
consistent with the proposed ISO behaviour and a necessity to have any 
usable handling of operators in a multi-threaded environment.
<LI><I>set_prolog_flag(character_escapes, Bool)</I><BR>
This Prolog flag is now an interface to changing attributes on the 
current source-module, effectively making this flag module-local as 
well. This is required for consistent handling of sources written with 
ISO (obligatory) character-escape sequences together with old Edinburgh 
code.
<LI><I>current_stream/3 and stream_position</I><BR>
These predicates have been moved to <CODE>library(quintus)</CODE>.
</UL>

<H3>Version 3.4 Release Notes</H3>

<A NAME="sec:rel-3.4"></A>

<P>The 3.4 release is a consolidation release. It consolidates the 
improvements and standard conformance of the 3.3 releases. This version 
is closely compatible with the 3.3 version except for one important 
change:

<P>
<UL class="latex">
<LI><I>Argument order in <A NAME="idx:select3:46"></A><A class="pred" href="lists.html#select/3">select/3</A></I><BR>
The list-processing predicate <A NAME="idx:select3:47"></A><A class="pred" href="lists.html#select/3">select/3</A> 
somehow got into a very early version of SWI-Prolog with the wrong 
argument order. This has been fixed in 3.4.0. The correct order is 
select(?Elem, ?List, ?Rest).

<P>As <A NAME="idx:select3:48"></A><A class="pred" href="lists.html#select/3">select/3</A> 
has no error conditions, runtime checking cannot be done. To simplify 
debugging, the library module <CODE>library(checkselect)</CODE> will 
print references to <A NAME="idx:select3:49"></A><A class="pred" href="lists.html#select/3">select/3</A> 
in your source code and install a version of select that enters the 
debugger if select is called and the second argument is not a list.

<P>This library can be loaded explicitly or by calling <A NAME="idx:checkoldselect0:50"></A><SPAN class="pred-ext">check_old_select/0</SPAN>.
</UL>

<H3>Version 4.0 Release Notes</H3>

<A NAME="sec:rel-4.0"></A>

<P>As of version 4.0 the standard distribution of SWI-Prolog is bundled 
with a number of its popular extension packages, among which the now 
open source XPCE GUI toolkit (see <A class="sec" href="xpce.html">section 
1.5</A>). No significant changes have been made to the basic SWI-Prolog 
engine.

<P>Some useful tricks in the integrated environment:

<P>
<UL class="latex">
<LI><I>Register the GUI tracer</I><BR>
Using a call to <A NAME="idx:guitracer0:51"></A><A class="pred" href="guitracer.html#guitracer/0">guitracer/0</A>, 
hooks are installed that replace the normal command-line driven tracer 
with a graphical front-end.

<P>
<LI><I>Register PceEmacs for editing files</I><BR>
From your initialisation file. you can load <CODE>library(emacs/swi_prolog)</CODE> 
that cause <A NAME="idx:edit1:52"></A><A class="pred" href="listing.html#edit/1">edit/1</A> 
to use the built-in PceEmacs editor.
</UL>

<H3>Version 5.0 Release Notes</H3>

<A NAME="sec:rel-5.0"></A>

<P>Version 5.0 marks a breakpoint in the philosophy, where SWI-Prolog 
moves from a dual GPL/proprietary to a uniform LGPL (Lesser GNU Public 
Licence) schema, providing a widely usable Free Source Prolog 
implementation.

<P>On the technical site the development environment, consisting of 
source-level debugger, integrated editor and various analysis and 
navigation tools progress steadily towards a mature set of tools.

<P>Many portability issues have been improved, including a port to MacOS 
X (Darwin).

<P>For details, please visit the new website at
<A class="url" href="http://www.swi-prolog.org">http://www.swi-prolog.org</A>

<H3>Version 5.1 Release Notes</H3>

<A NAME="sec:rel-5.1"></A>

<P>Version 5.1 is a beta-serie introducing portable multi-threading. See
<A class="sec" href="threads.html">chapter 8</A>. In addition it 
introduces many new facilities to support server applications, such as 
the new <CODE>library(rlimit)</CODE> library to limit system resources 
and the possibility to set timeouts on input streams.

<H3>Version 5.2 Release Notes</H3>

<A NAME="sec:rel-5.2"></A>

<P>Version 5.2 consolidates the 5.1.x beta series that introduced 
threading and many related modifications to the kernel.

<H3>Version 5.3 Release Notes</H3>

<A NAME="sec:rel-5.3"></A>

<P>Version 5.3.x is a development series for adding coroutining, 
constraints, global variables, cyclic terms (infinite trees) and other 
goodies to the kernel. The package JPL, providing a bidirectional 
Java/Prolog interface is added to the common source-tree and common 
binary packages.

<H3>Version 5.4 Release Notes</H3>

<A NAME="sec:rel-5.4"></A>

<P>Version 5.4 consolidates the 5.3.x beta series.

<H3>Version 5.5 Release Notes</H3>

<A NAME="sec:rel-5.5"></A>

<P>Version 5.5.x provides support for <EM>wide characters</EM> with 
UTF-8 and UNICODE I/O (<A class="sec" href="widechars.html">section 
2.17.1</A>). On both 32 and 64-bit hardware Prolog integers are now at 
minimum 64-bit integers. If available, SWI-Prolog arithmetic uses the 
GNU GMP library to provided
<EM>unbounded</EM> integer arithmetic as well as rational arithmetic. 
Adding GMP support is sponsored by Scientific Software and Systems 
Limited, <A class="url" href="www.sss.co.nz">www.sss.co.nz</A>. This 
version also incorporates clp(r) by Christian Holzbaur, brought to 
SWI-Prolog by Tom Schrijvers and Leslie De Koninck (<A class="sec" href="clpqr.html">section 
A.8</A>).

<H3>Version 5.6 Release Notes</H3>

<A NAME="sec:rel-5.6"></A>

<P>Version 5.6 consolidates the 5.5.x beta series.

<H3>Version 5.7 Release Notes</H3>

<A NAME="sec:rel-5.7"></A>

<P>The aim of the 5.7 series is to cleanup much of the system. Notably, 
the virtual machine has a much simpler setup that makes it much easier 
to add new instructions. This facility has been exploited to enhance 
performance and provide proper support for the <A NAME="idx:metapredicate1:53"></A><A class="pred" href="metapred.html#meta_predicate/1">meta_predicate/1</A> 
directive for enhanced portability.

<H3>Version 5.10 Release Notes</H3>

<A NAME="sec:rel-5.10"></A>

<P>The 5.9 series has enhanced SWI-Prolog in terms of memory management, 
scalability and robustness. Notable, threads are much cheaper and now 
limited in count only by the OS. Database and stream-handles have 
becomes safe. Compatibility to YAP and SISCtus has been improved.

<P></BODY></HTML>