Did you know ... Search Documentation:
Title for pldoc(default)
Branch: stable (switch to development),
version to version

SWI-Prolog Changelog from version 7.6.3 to 7.6.4

[Jan 12 2018]

  • CLEANUP: Avoid strict-aliasing issues in some of the Windows code.
  • FIXED: Port to 32-bit platforms. Fixes 73e5eb44f40ae3e96e25bff39d7c50c2e016f6d9.
  • FIXED: Possibility of GC thread missing signals, notably to abort when the system is idle.

[Jan 10 2018]

  • FIXED: Avoid message that [] threads did not terminate. This MODIFIES the return type for the PL_thread_attr_t.cancel function from int to an enum rc_cancel. Old code is binary compatible but leads to a C compiler warning.

[Jan 9 2018]

  • PORT: do not bump predicate generations twice on 32 bit Windows when calling setGenerationFrameVal()

[Jan 8 2018]

  • ENHANCED: self-kill after receiving a fatal signal
  • ADDED: set_prolog_gc_thread/1 to control the gc flag using a supported API.
  • ADDED: prolog_alert_signal/2 to query/set the signal used for alerts dynamically.
  • ENHANCED: Avoid using signals to talk to the gc thread. This reduces signal dependency.
  • FIXED: Compilation error for single-threaded version. Roberto Bagnara.
  • FIXED: debug message on signal processing

[Jan 5 2018]

[Jan 2 2018]

[Dec 29 2017]

  • FIXED: Resolve a race condition if two threads join the same thread. This happens in particular when calling halt/0 while a thread is being waited for. The second thread now raises an existence error. Wouter Beek.

[Dec 22 2017]

  • ENHANCED: sigCrashHandler() to self-kill the specific thread

[Dec 21 2017]

  • TEST: Relax agc-2 test as it may legally fail on heavily loaded and/or slow machines. Keri Harris.

[Dec 20 2017]

  • FIXED: format/3: Slock()/Sunlock() balancing.
  • FIXED: Errornous calls to new setGenerationFrame().
  • PORT: install TeX fonts for generating plaintext manual.
  • ENHANCED: library(nb_set): avoid cyclic term error when compiled with occurs check set to error.

[Dec 19 2017]

  • DEBUG: Fixed consistency check in nextClause__LD().
  • MODIFIED: current_atom/1 no longer returns the reserved atom '<garbage_collected>'. This atom blocks internal consistency checks.
  • DEBUG: make -d chk_secure work again.
  • TEST: findnsols/4 AGC interaction.
  • FIXED: findnsols/4: prevent early release of findall bag, causing a crash in AGC. Found by Wouter Beek.
  • TEST: Make save state tests run on Windows.
  • TEST: Avoid loading library(limit) if the shared object does not exist.
  • CLEANUP: format/3 and friends: avoid start/endCritical to allow for signal processing and move Slock() to the wrapper to make its use obviously correct.
  • FIXED: Avoid critical regions to stop processing fatal signals such as SEGV. Synchronous handling of such signals in Prolog leads to a signal handling loop.

[Dec 18 2017]

  • TEST: Allow save-program tests to run concurrently by avoiding fixed file names.
  • CLEANUP: variant/2: Avoid copying inunstantiated data. Although benign, the old implementation leads to messages from debugging tools and performs unnecessary work.
  • FIXED: markAccessedPredicates() did not use atomic management of the last access generation.
  • FIXED: mistakes in previous commit
  • FIXED: Race conditions establishing the generation at which a predicate is about to be accessed for retract/1, retractall/1, clause/2 and nth_clause/3. May lead to accessing freed clauses, typically causing a crash.
  • CLEANUP: retract/1: remove start/endCritical() calls. They are no longer needed and were not properly balanced.
  • CLEANUP: gcClauseRefs() can be static in pl-proc.c
  • FIXED: race condition when adding a fresh atom to a bucket while rehashing is in progress that may cause the bucket to become corrupted

[Dec 16 2017]

  • FIXED: Use UTF-8 encoding for CLP(FD) source code, closing #281. Without this directive, you may get warnings when CLP(FD) is used in non-UTF8 environments.

    For example, with LANG=C, I previously got:

    Warning: clpfd.pl:5463: 'clpfd.pl':5463:26: Illegal multibyte
            Sequence
    Warning: clpfd.pl:6101: 'clpfd.pl':6119:21: Illegal multibyte
            Sequence

    Now, library(clpfd) is loaded without warnings also with LANG=C.

  • PORT: Provide fallback for sigCrashHandler()
  • PORT: Win32: pthread_setname_np() is a stub in some versions of the winpthread library. Avoid it.
  • CLEANUP: Avoid compiler warnings
  • PORT: Updated build instructions for Ubuntu 17.10
  • TEST: Added test case used for tracking AGC issue
  • CLEANUP: marking atoms
  • FIXED: Possibility that atoms are not marked for GC. With Keri Harris.

[Dec 15 2017]

  • DEBUG: More atom debugging stuff
  • DEBUG: Make -DO_DEBUG_ATOMGC work again.
  • ENHANCED: Avoid looping when catching a fatal signal in foreign
    extensions. Now tries: get back to Prolog using a longjmp(). Note that this may leak resources. If that fails, try to print a stack trace and exit. Abramo Bagnara.

[Dec 13 2017]

  • FIXED: mutex_statistics/0 printing wrong value for lock count if the
    mutex is locked (this predicate only supports analysis of performance issues in multi-threaded applications).
  • DOC: wrong arity for thread_join/1, so it doesn't show up in the manual completion.

[Dec 12 2017]

  • TEST: Make test thread_agc_findall.pl both test different and equal prefixes, stressing AGC better.
  • TEST: Do not considet queue_gc tests failing to reclaim the queues a fatal test failure. This just can happen.
  • FIXED: retract/1: terminate with error if decompilation raises an
    error. Without, it is possible that retract/1 should logically succeed on a clause but skips the clause due to e.g., a resource exception.

[Dec 11 2017]

  • FIXED: Race condition updating the frame generation and the notion of the global generation. Solution suggested by Keri Harris.
  • CLEANUP: Move global_generation() to pl-inline.h for all platforms for better readability.
  • TEST: Remove more concrete file names to allow tests to run concurrently.
  • TEST: Avoid hard-coded file names such that we can run the test from the same directory concurrently.
  • FIXED: Lowering the oldest_generation must be thread-safe. Spotted by Keri Harris.
  • FIXED: Dirty predicates activated while CGC is running must have their active generation updated.
  • FIXED: race condition for cleaning lingering data on predicates.

[Dec 10 2017]

  • FIXED: If we push an accessible predicate while clause GC is active, we must update the generation if it is dirty.
  • DEBUG: Protect against recursive use of acquire_def()
  • FIXED: acquire_def() cannot be used recursively. Doing so in
    hashDefinition may lead to early release of indexes and clause references.

[Dec 9 2017]

  • FIXED: Possible race extending referenced predicate dynamic array.
  • FIXED: Test for kill(), such that core dumps work after fatal signals are trapped.

[Dec 8 2017]

  • FIXED: Could not build due to syntax error. Wouter Beek.

[Dec 7 2017]

  • ADDED: PL_cvt_i_uint(), PL_cvt_i_ulong(), PL_cvt_i_uint64()
  • ENHANCED: On 64 bit machines we do not have to check bignums as these never fit an int.
  • ADDED: PL_cvt_i_uchar() and PL_cvt_i_ushort()

[Dec 6 2017]

  • ADDED: PL_cvt_i_char() to accept one-character atoms, strings and lists

[Dec 5 2017]

  • FIXED: open_string/2: double free if stream argument is instantiated.

[Dec 4 2017]

  • FIXED: debug/1, nodebug/1: possible duplication of clauses when called at the same time from multiple threads. Wolfram Diestel.

[Dec 1 2017]

  • FIXED: perform DCG and goal expansion if the result of term-expansion is a list.

[Nov 29 2017]

  • ADDED: PL_cvt_i_char(), PL_cvt_i_short() and PL_cvt_i_int64(), extending Quintus/SICStus style native C conversions

Package archive

[Jan 3 2018]

Package clib

[Jan 8 2018]

  • COMPAT: fork/1: Stop gc thread using new supported API

[Dec 20 2017]

  • TEST: library(process): make test suite test availability of programs.
  • FIXED: chmod/2 for Windows to use _wchmod().

[Dec 19 2017]

  • PORT: use correct winsock error codes
  • ENHANCED: support blocking UDP sockets
  • FIXED: enable signals to be handled when send() blocks on a partially-full TCP buffer

[Nov 17 2017]

  • FIXED: typo it -> in

Package cpp

[Jan 12 2018]

  • REMOVED: PlCompound::PlCompound(name, arity). This leads to ambiguous constructors. Revert "ADDED: PlCompound::PlCompound(name, arity) to create a compund with"

    This reverts commit 7dcfa05dbfaaeea1d8453b0c117fdb8456fb5202.

[Jan 9 2018]

  • ADDED: PlCompound::PlCompound(name, arity) to create a compund with unbound arguments, including zero arguments. Suggested by Matthias Gondan.

[Dec 20 2017]

  • CLEANUP: Update links to manual tools

Package http

[Jan 8 2018]

  • FIXED: HTTP chunked stream to return EOF after EOF has been reset. This is needed for peek_string/3 if the length of the peeked string exceeds the document.

[Dec 28 2017]

[Dec 21 2017]

[Dec 1 2017]

  • FIXED: Typo's in type documentation for `http_parameter/2'.

Package pengines

[Dec 21 2017]

[Dec 7 2017]

  • FIXED: make sure that the variable names are also correct when the goal is being executed rather than only when the goal is being expanded.

Package semweb

[Jan 11 2018]

  • DOC: Avoid Unicode in comment.

[Jan 8 2018]

[Jan 2 2018]

  • FIXED: Turtle parser error recovery on an illegal IRIREF. Wouter Beek.

[Dec 21 2017]

[Dec 20 2017]

  • ENHANCED: Add support for relaxed XSD date/time literal notation. This adds support for the relaxed XSD date/time literal notations that are already documented for rdf_canonical_literal/2, specifically:

[Dec 6 2017]

  • ENHANCED: rdf_save/2: more efficient enumeration of subjects if a small graph from a large database is saved.
  • FIXED: Meta-predicate declaration for rdf_save_canonical_trig/2.

Package ssl

[Dec 21 2017]

  • CLEANUP: ssl_negotiate/5: removed obviously wrong and redundant assert() statement.

Package xpce

[Dec 21 2017]

  • ADDED: PceEmacs server for Edit With Emacs FireFox/Chrome extension.