Ann: SWI-Prolog 8.3.20

Dear SWI-Prolog user,

SWI-Prolog 8.3.20 is ready for download. Highlights:

  • Mostly fixing to lazy monotonic tabling.

  • Updates for MinGW 10. Default Windows release build moved to
    Fedora 33 (from 31), shipping with a new MinGW GCC compiler and
    more recent dependencies.

  • Fixed two possible crashes reported by Jan Burse, dealing with
    calls to predicates with too high arity and too many open
    clause/2 or retract/1 calls.

    Enjoy — Jan

SWI-Prolog Changelog since version 8.3.19

  • ENHANCED: trace/1,2: show calling thread if not main

  • FIXED: Need to enable capturing dependencies when processing lazy
    monotonic answers.

  • ENHANCED: library(portray_text): updated docs, added set_portray_text/3
    to get current settings and added to main documentation.

  • FIXED: abolish_all_tables/0 inside a transaction (more generally,
    abolishing tables inside a transaction).

  • FIXED: Predicates using trie_gen_raw() did not properly handle cuts.

  • FIXED: ‘$idg_mono_empty_queue’/2 should only empty the dependency
    that we just processed (now ‘$idg_mono_empty_queue’/1).

  • FIXED: Issue#791: compiling calls to dynamically creating calls
    that exceed the maximum procedure arity. Exception changed to
    representation_error(max_procedure_arity) (was max_arity).
    Added Prolog flag max_procedure_arity.

  • FIXED: transaction_updates/1: avoid reporting compiled trie
    clauses. Tabling consistency must be managed elsewhere.

  • DOC: transaction_updates/1: erased clauses are flagged erased(Ref)
    rather than erase(Ref).

  • ENHANCED: Save --no-signals state into a saved state.

  • DOC: csv_read_file_row/3: to be done note was outdated. Boris

  • FIXED: After lazy reevaluation of table using answer subsumption we
    should not queue a possibly deleted answer and we must delete pruned
    trie nodes from the lazy queues to affected nodes.

  • FIXED: Issue#785: Crash when creating too many “predicate references”
    as created by e.g. clause/2 and retract/1.

  • FIXED: Path canonisation for relative directories with sequences
    of “…/”. Makes read_link/3 fail on links to ../../file.
    Nicos Angelopoulos.

  • ADDED: attach_pack/2. Suggested by Falco Nogatz.

  • PORT: Make compile using MinGW 10: include new libssp*.dll runtime
    dll in distribution.

  • PORT: Windows: use __declspec(dllexport) extern type.
    Abramo Bagnara.

  • FIXED: propagate changing lazy monotonic into incremental tabling.

  • FIXED: Only clear falsecount if the table is eager.

  • FIXED: False count update after lazy evaluation of monontonic
    dependencies does not need to decrement the falsecount to zero.
    Instead we need to decrement after we processed all answers from an
    dependency edge.

Package plunit

  • ENHANCED: Abstract put_char(user_error, ‘.’), etc. to use
    print_message/2 so we can change and suppress these messages.

  • ADDED: plunit(summary(Dict)) silent message to easily get a summary

Package xpce

  • PORT: Make compile using MinGW 10. Avoids multiple definitions of
    global data symbols XPCE_display, etc.

Keeping on trucking!

how do you find time for so many releases spanning decades? :grinning:
well done and thanks :+1:


Why don’t you add a donate button on the swi prolog home page …

Is git still offering to match donations for projects hosted on git ?


I have tried a donate button in the past. Yes, it made a little money. Barely enough to be worth the trouble though. Possibly this has changed. Surely the attitude towards open source software has changed. I’m mostly interested in things that can make a difference: resources that can help someone to write a good book, online tutorial series, improve the website, improve the system, etc. If anyone has a good plan to get such things organized, please contact me. I prefer to spent most time on improving the system, help people to use the system efficiently and, through SWI-Prolog Solutions b.v., help companies setting up or improving their Prolog related business.

1 Like

I think (hope) that with the (significant?) uptick in the use of swi-prolog, having a donate button might be worth the hassle, in particular, if it offers the option to donate a small, yet, recurring sum – perhaps, it would add up.

There could also be a “fund-me” page – where members of the community could offer to do one of the items you suggest (writing a book, tutorial series, etc) …