Bugs Fixed in Version 3.8
     
- absolute_file_name/2: could crash under IRIX; nested compound terms allowed
- call_cleanup/2: efficiency
- close/1: efficiency; handling the standard streams
- format/[2,3]:- ~Ndidn't work as expected;
are now meta-predicates--needed by the- ~@format spec
- load_files/[1,2]: avoid changing directory; don't loop on duplicate exports
- load_foreign_resource/1: filenames containing periods under Windows NT
- print_message/2: in runtime systems
- prolog_load_context/2: value of- term_position
- reinitialise/0: sequencing of events
- save_program/[1,2]: fastcode handling; file mode creation masks; in runtime systems
- write_term/[1,2]: the- indented(true)option and non-ground terms
- library(db): efficiency of term deletion
- library(heaps):- delete_from_heap/4
- library(objects): the- new/2method; cyclic dependencies
- library(random): determinacy and efficiency
- library(sockets): noisy startup under Windows; block buffering is now the default;- socket_buffering/4added
- library(system):- sleep/1admits floats as well as integers
- library(terms):- subsumes_chk/2and- variant/2now don't unblock goals
- glue code generator: incorrect translation of +chars; syntax
error messages were suppressed
- all system messages go via the print_message/2interface
- input argument checking is generally stricter
- resources are unloaded in LIFO order but loaded in FIFO order at save/restore
- CLP(Q,R): answer constraint projection
- problems with large integers and large terms in .qlfiles
- detecting invalid goals in meta-calls, asserts, load_files/[1,2]
- spurious redefinition warnings
- bignum quotient/remainder on 64-bit architectures
- compiler: complexity of compiling multiple clauses with same key,
code generation quality for inline goals
- memory manager: avoiding dangling pointers under Windows,
better reclamation of dead clauses and predicates,
using dynamic hashing and hashpjw for atoms,
keeping predicate tables as small as possible,
avoiding stack overflow if multiple goals get simultaneously unblocked,
better reuse of free memory blocks
- garbage collector: removing redundant trail entries for mutables,
improved scope and speed of generational garbage collection
- callbacks to Prolog while reading from the terminal
- printing atoms with character codes in 27...31
- reading atoms with \c
- Floating point NaN (Not a Number). Now behaves consistently across
platforms. In particular, fixed Windows related bugs with arithmetic on
and printing of NaN.
          
- Arithmetic comparisons involving NaN now fails (except =\=). Note
thatX is nan, X =:= Xfails.
- Term order for NaN is now defined and the same for all
platforms. There is a single NaN and it lies between (the float) +infand the integers.