Dear SWI-Prolog user,
I’m happy to announce SWI-Prolog 8.3.3. Input from Adrian Wong and David
Tonhofer have improved documentation. Input from David Tonhofer and
Sebastian Sardina has further cleaned JPL documentation and error
handling. Discusion on this forum have helped shaping new concurrency
- Added thread_wait/2 and thread_update/2 as new built-ins that support
concurrent blackboard style programming.
- Added concurrent_forall/2,3 and concurrent_and/2 as new high level
predicates for concurrent computation.
- Make thread_get_message/1,2 listen immediately to thread_signal/2.
- Make library(persistency) thread-safe.
- Enhanced and documented saving settings from library(settings)
- Build Windows binaries using the new Docker image. This has some consequences:
- Using PGO optimized code should make this version faster
- JPL is only available for the 64-bit version because OpenJDK
is only available for 64 bits and Oracle JDK doesn’t install in Wine
and cannot easily be included in a Docker image due to license
The 8.3.2 version failed for Macports. Hopefully the upgrade works this time.
Enjoy --- Jan
SWI-Prolog Changelog since version 8.3.2
ADDED: concurrent_and/2,3 based on Jan Burse’s balance/1.
FIXED: Provide elementary thread-safety. Jan Burse.
SKIP_SSL_TESTSoption to CMake config.
ADDED: concurrent_forall/2,3: as forall, running tests in parallel.
ENHANCED: thread_signal/2: avoid a max 0.25 sec wait if the signalled
thread is blocked on a message queue.
PORT: Allow pthread_cond_timedwait() to return EINTR.
ENHANCED: copy_term/3 to sort the attvars prior to generating
the goals. This produces constraints at the toplevel in more
predictable order. Rick Workman.
CLEANUP: Term names set to those of ISO Standard
DOC: Updated “exception term” page with ISO info
DOC: Fix typos in manual
DOC: Remove outdated status in manual Shared table space limit was
added in commit 6a01fbf70447b419447281826e770ec0cd21ab3d
ENHANCED: Issue#625: library(settings): only save when modified and
document persistency issues.
FIXED: Consider files loaded from a state already loaded.
FIXED: Allow for saved states of more than 4Gb.
DOC: add missing documentation for native zip handling predicates.
MODIFIED: Renamed thread_wait_on_goal/2 into thread_wait/2 and added
ENHANCED: save_settings/1 to use setup_call_cleanup/3 to guarantee
FIXED: Recursive autoloading when a saved state loads an additional
file that sets the Prolog flag
false. Peter Ludemann.
MODIFIED: thread_wait_on_goal/2: make it per-module rather than global
over the database.
ADDED: thread_wait_on_goal/2 to wait for database changes.
This predicate is similar to its Qu-Prolog cousin.
MODIFIED: Option processing now raises a type_error(option, Option)
if an option is malformed (not Name(Value) neither Name = Value).
DOC: Fix typos in manual
PPA: Removed support for Ubuntu disco (19.10).
- BUILD: Lacking dependency may cause build failures.
- DOC: Document the library(zlib) and library(http/http_stream) plugins
CLEANUP: Exptn-generating code & msgs streamlined
TEST: Guess /usr/share/java/junit.jar is junit4 if we can’t find a
clear version 4. Not sure how safe this this.
PORT: We do not need javah
DOC: Added link to JPL Github repo in main page
ADDED: Unit testing for checking Prolog and JPL Exceptions
- TEST: Allow disabling the SSL tests. Creating the certificates seems
really hard inside a docker container using wine as it refuses to
seed the openssl.exe random generator. Why remains unclear to me.