Ann: SWI-Prolog 8.1.11

Dear SWI-Prolog user,

I’m happy to announce SWI-Prolog 8.1.11. A lot happened. Highlights:

  • Basic theme support deals with alternative theme for console colors
    as well as PceEmacs. Currently only materizalized for a dark theme.
    To select this, load library(theme/dark). Users of a proper xterm
    compatible terminals such as gnome terminal, terminator and several
    others can load library(theme/auto) to select the theme automatically
    based on the console background color.

  • More XSB emulation and test cases. Several fixes to incremental

  • First implementation of shared tabling. Cannot yet be combined
    with incremental tabling or well formed semantics.

  • Lots of refactoring and cleanup to the tabling code.

  • Re-added Windows registry keys to find the installation. Paulo

    Enjoy — Jan

SWI-Prolog Changelog since version 8.1.10

  • PORT: deselect swipl-win when compiling for single threading.

  • PORT: Make compile for single threading.

  • ADDED: controlling the shared table space limit using
    --shared_table_space=Size and the Prolog flag shared_table_space.

  • TEST: Abolish of an active table.

  • TEST: Elementary test for shared tabling

  • DOC: shared tabling. Use ?- help('tabling-shared').

  • FIXED: Asynchronous abolishing of tables.

  • CLEANUP: re-structured start_tabling/4, fixing deadlock recovery.

  • ENHANCED: still produce results with a table is abolished while
    being completed.

  • MODIFIED: abolish_all_tables/0 abolishes both shared and local
    tables. Possibly incomplete tables are left alone.

  • CLEANUP: Move completed status from worklist to a trie flag.
    Simplifies code and makes the check thread-safe for shared tables.

  • ENHANCED: Directly return the compiled trie for completed (shared)
    tables. Moved ‘$idg_add_edge’/1 into the ‘$get_variant_table’/5 and
    variations, both for improved performance and to avoid the fact that
    we do not always return a trie.

  • CLEANUP: Merge supervisors for trie_gen_compiled/2,3

  • CLEANUP: reuse ClauseRef in blob clause references. This simplifies
    running clauses directly as used for continuations and compiled tries.

  • ENHANCED: provide access to closure referencing the wrapped predicate.
    This will be used to speedup some aspects of tabling.

  • BUILD: Avoid * in Windows daily builds.

  • ENHANCED: thread_join/1: better error message. Also, the error term
    got an extra argument providing the thread that failed.

  • FIXED: listing/1 if variables have been bound. Abramo Bagnara.

  • FIXED: Single threaded build. Patch by Abramo Bagnara.

  • DOC: Use PlDoc for library(prolog_xref)

  • XSB: More compatibility

  • XSB: added xsb_error_get_message/2 to the emulation.

  • FIXED: Re-evaluation of tabled subgoals that only depend on completed
    tables. Could get into a loop.

  • INSTALL: Windows: install registry keys HKLM Software\SWI\Prolog for
    the home and file extension. Paulo Moura.

  • FIXED: Possible execution path that does not perform a stack shift
    while this is still possible, running out of stack while this is
    not needed.

  • FIXED: Propagate stack overflow from unify_trie_term()

  • XSB: Started emulation for curr_sym module.

  • FIXED: Split ‘$tbl_implementation’/2 using a variant that only verifies
    the argument is tabled for tnot/1. Fixes introspection predicates
    from raising errors.

  • FIXED: Planning for re-evaluating invalid tables. It is possible
    that there are paths that end in a complete table rather than a
    dynamic table.

  • FIXED: Reevaluation for incremental tabling with multiple paths to
    the changed dynamic predicate.

  • MODIFIED: allow predicate update hook to veto the assert/retract.

  • ENHANCED: Avoid call/1 for calling cleanup handler of call_cleanup/2
    and friends.

  • CLEANUP: generalise internal ‘$hide’/1 and document these internal

  • FIXED: ansi_get_color/2: Need to switch mode before sending output
    as otherwise the reply may be echoed in the console.

  • ENHANCED: Some further generalizations of theme handling

  • TEST: Fixed broken xsb test.

  • PORT: Do not try to get the background color of Apple Terminal as it
    does not support this

  • ADDED: prevent modifications to incomplete incremental dynamic
    predicates. The error is signalled, but recovery is incomplete.

  • TEST: added three new XSB test files.

  • TEST: Enable XSB nonmt test dir.

  • TEST: Do not load personal init file (-f none) to avoid interference
    with tests.

  • TEST: Start migrating nonmt_tests from XSB.

  • DOC: Theme support.

  • THEME: Provide automatic theme selection

  • ADDED: ansi_get_color/2 to library(ansi_term) to find the current
    fore and background colors. Intended to select an appropriate theme.

  • ADDED: with_tty_raw/1: run code with terminal in raw mode (if

  • THEME: Added styling the core GUI compoments: PceEmacs and the
    graphical tracer.

  • THEME: Allow hooking online manual styles. Added colors for manual
    pages to dark theme.

  • THEME: Windows: set console colors.

  • FIXED: win_window_color/2: set selection colors.

  • BUILD: Added the Windows daily build script for reference purposes.

  • ADDED: library(theme/dark) as a first example for defining themes.

  • ADDED: ansi_format/3: support 8-bit and true color escape sequences.

  • ADDED: Allow hooking console coloring.

  • ADDED: Windows (swipl-win.exe) win_window_color/2 to change the colors
    of the console window.

  • FIXED: win_folder/2: avoid messages did not clear exception.

  • ENHANCED: Get rid of ‘$wfs_call’ in default backtrace.

Package odbc

  • PORT: Make compile in single-threaded mode.

Package xpce

  • THEME: PceEmacs: changed style for matching variables to use the same
    color as alternative matches during search (pale_turquoise).

  • PORT: Make xpce compile without threads. Doesn’t yet work though.

  • ADDED: interfaces to hook styling the debugger.

  • ADDED: multifile hook pce:on_load/0


Hi Jan,

I wanted to let you know that Jotti’s Online Virus scanner is reporting a virus with the latest Windows install EXE swipl-w64-2019-08-06.exe:

It’s probably a false positive. Note, Jotti did not report any problems with the previous Windows install EXE swipl-w64_2019-07-20.exe so something about the code signature of the new Windows install EXE is raising a red flag (however, only 1 out of 15 scanners is reporting the error):

Seeing as a lot of the A/V companies track closely with Jotti, it might be worth filing a false positive report to remove the error.

If someone wants to take care of that, great. I’m not going to do so. This is a regularly reappearing problem that mostly indicates a fundamental flaw in finding viruses and malware using fingerprints.

For what it is worth: the daily’s are built using cross-compilation on a Linux box using a completely isolated user account that performs a git pull, cmake/ninja and an rsync push over ssh. The regular releases are built from my own Linux user account from the development source tree. That is slightly less safe, but I still hope that Linux is a rather hostile environment for Windows viruses and git’s cryptographic hashes, despite being only SHA1, make it hard to temper with the source unnoticed.

1 Like