Ann: SWI-Prolog 8.5.13

Dear SWI-Prolog user,

SWI-Prolog 8.5.13 is ready for download. Highlights:

  • Fixes to write/1 and friends.

  • Various fixes for Windows, notably getenv/2 was broken since recent
    changes to the code that translates between the Windows Unicode
    API and Prolog.

  • The functions in SWI-Stream.h, providing foreign access to Prolog
    streams are now (rudimentary) documented.

  • The PPAs now also include the debug symbols. See
    Installing from PPA (Ubuntu Personal Package Archive)

    Enjoy — Jan

SWI-Prolog Changelog since version 8.5.12

  • MODIFIED: win_add_dll_directory/1: throw exceptions on failure rather
    than assuming failure of AddDllDirectory() indicates we need to
    extend %PATH%.

  • ENHANCED: win_add_dll_directory/2: throw normal Prolog exceptions for
    the two common reasons for this predicate to fail: non-existence of
    the target or the target not being absolute.

  • ENHANCED: building the autoload index now extracts the public
    predicates in a more generic way, processing optional #! line,
    :- encoding directives and (conditional) exports in the header.
    This notably allows for module headers like below to be used
    together with autoloading.

    :- module(m, [p/1]).
    :- if(current_prolog_flag(windows,true)).
    :- export(win_q/2).
    :- endif.
  • ENHANCED: PL_record_external() deal with records > 2Gb on 64 bit

  • FIXED: Issue#114: Windows getenv/2 may return additional garbage
    (typically an extra \u0000 character at the end of variables of
    1023 bytes or longer because the 0-byte is not added. Paul Singleton.

  • FIXED: write_term/2 and friends handling of embrace of operants that
    are operators for partial writes.

  • FIXED: no space is required between a space and (.

  • FIXED: write_term/2 and friends: do not embrace writing a single atom
    if this is an operator and the priority(Priority) option is given.

  • FIXED: Do not close the standard streams as part of atom-GC.

  • DOC: Create links for S*() function references

  • DOC: Started documenting SWI-Stream.h

  • FIXED: Sgets() handling of non-0-terminated output from Sfgets().

  • DOC: ord_intersection/2 is semidet.

  • DIST: Fixed rmd160 generation for scripts/update-macports

  • FIXED: write_term/2 with numbervars and variable_names (#866)

  • ENHANCED: do not map I/O errors to exceptions when the error occurs as
    a result of a close that is initiated from the atom garbage collector.

Package clib

  • FIXED: process_create/3: allow env([]).

  • FIXED: process_create/3: Windows: make environment(List) inherit the
    environment as documented.

  • FIXED: process_create/3: double env/environment option raised an
    assertion failure. Now raises a permission error.

Package cpp

  • ADDED: PlFunctor class conversion and comparison to functor_t

Package http

  • ADDED: Hook html_write:html_header_hook/1 to emit additional HTTP
    headers for HTML pages.

Package pengines

  • FIXED: term//2: operator atoms for other operators must always be

Package pldoc

  • DOC: Support the S*() functions for IOSTREAMS.

Package semweb

  • FIXED: Better ordering of pre_ground_object/2 clauses