Ann: SWI-Prolog 8.1.28

Dear SWI-Prolog user,

I’m happy to annouce SWI-Prolog 8.1.28. This version is a step towards
version 8.2, i.e., it mainly concentrates on bug fixes and stuff that
needs to be stabilized before a new stable release. Highlights:

  • Cleanup various installation and testing issues with Lev Lamberov.
  • Fix SSL performance and memory issues with help from Matt Lilley and
    Markus Triska.
  • Re-enable large file (>2Gb) support on 32-bit platforms, found broken
    by Nicos Angelopoulos.
  • James Cash implemented AF_UNIX sockets (client side), I have added the
    server side.
  • Edison Mera helped fixing a memory issue in the new allocation code.
  • The new allocation code also surfaced a bug writing long strings to
    streams that are redefined in Prolog (SWISH uses this).
  • Added list_cross_module_calls/0,1 to find Module:Goal calls where
    Goal is a private predicate after discussion with Matt Lilley.
  • Matt did more work on canonical XML (c14n) needed for signing
    XML documents. This now includes adding w3c tests.
  • Completed usage of the new autoload/1,2 directives in all libraries
    and packages. That should allow everything to work normally with
    autoloading turned off.
  • Added missing tcmalloc dependency to MacOS binary bundle.
  • Quite a bit of small stuff.

Memory management, notably for busy HTTP(S) servers, seems to be much
better since 8.1.27. The HTTPS problems were caused by bugs in
library(ssl). The biggest improvement comes from using a combination of
tcmalloc and direct virtual memory management to reduce memory
fragmentation.

I think 8.2 is not far away. There seem to be issues with the ODBC
driver that require attention and I’d like to see automation to create
and maintain use_module/1,2 or autoload/1,2 dependencies.

If you stick to the stable releases, please consider this a pre-release
for 8.2 and start testing your software such that issues can be resolved
before 8.2.

Enjoy --- Jan

SWI-Prolog Changelog since version 8.1.27

  • DOC: aggregate_all/3: document constant memory usage of special
    cases. Boris Vassilev.

  • DOC: Update number/1 for rationals. David Tonhofer.

  • PORT: Check for AF_UNIX socket support.

  • FIXED: library(sandbox): we need to load our dependencies explicitly
    as the sandbox library requires its dependencies while being loaded.

  • FIXED: message_to_string/2 to handle ansi(Class, Fmt, Args) as
    Fmt-Args rather than ignoring it.

  • CMAKE: Config error for Windows.

  • FIXED: Possible race condition in reference counting for predicates.

  • FIXED: findall/3 memory pool allocation for new tmp_malloc().
    With help from Edison Mera.

  • FIXED: Possible data corruption, in most recent versions crash,
    when writing a long string using a Prolog-defined stream (see
    open_prolog_stream/4).

  • PORT: Support large files on 32 bit platforms. Nicos Angelopoulos.

  • TEST: Added Tests component when installing the test database.
    Lev Lamberov.

  • ADDED: library(check): list_cross_module_calls/0,1.

  • CLEANUP: Cleanup cross module calls.

  • ADDED: prolog_walk_code/1: option trace_condition/1.

  • INSTALL: Fixed installation in /share for the documentation.

Package clib

  • ADDED: Server support for AF_UNIX sockets and a test

  • ADDED: unix_domain_socket/1, providing access to AF_UNIX sockets.

Package cpp

  • CLEANUP: Removed old files, updated README.

Package http

  • INSTALL: Removed demo_body from INSTALL_TESTS. Seems unused.

Package ltx2htm

  • CLEANUP: Use autoload/1,2 and replace most deprecated predicate calls.

Package paxos

  • AUTOLOAD: Use autoload/1,2

Package pengines

  • AUTOLOAD: Use autoload/1,2.

Package plunit

  • AUTOLOAD: Use autoload/1,2

Package semweb

  • FIXED: Allow rdf_meta/1 to act on a module-qualified head to support
    multifile predicates. Joost Geurts.

Package sgml

  • TEST: Added test cases from w3c for c14n.

  • FIXED: Preserve prefix name in xmlns declaration if ns/2 is in use

Package ssl

  • ENHANCED: Share certificates between all SSL contexts that only use
    the system root certificates.

  • ADDED: ssl_property/2. Used to maintain compatibility wrt the
    close_parent property of the HTTP SSL hooks.

  • ENHANCED: Share the certificate stack between SSL contexts, making
    cloning these stacks a lot cheaper.

  • ENHANCED: Avoid general SSL context initialization just to replace it.

  • FIXED: Missing prefix on SignedInfo means that the hash is not
    correctly computed, which means that signatures are not correctly
    verified

  • ENHANCED: HTTP SSL plugin: moved setting close_parent(true) to
    creating the SSL context so we can share the same context for each
    accepted connection instead of duplicating the context.

  • INSTALL: Add component to installation of demo etc and tests.

Package tipc

  • AUTOLOAD: Support autoload/1,2.

Package xpce

  • FIXED: PceEmacs compiler warning intercept to handle newer message
    elements such as ansi(Class, Fmt, Args). Matthias.

  • CLEANUP: Make internal cross-module calls declared.

5 Likes

Thanks to Jan and the long list of others who helped. Seems there are more names than usual.