Did you know ... Search Documentation:
Title for pldoc(default)
Branch: stable (switch to development),
version to version

SWI-Prolog Changelog from version 8.4.1 to 8.4.2

[Feb 9 2022]

  • FIXED: Tracer retry on a parent frame. Notably causes problems if retrying runs cleanup handlers.

[Feb 4 2022]

  • MODIFIED: MacOS SWI-Prolog.app working directory and locale setup.

[Feb 3 2022]

  • MODIFIED: MacOS swipl-win to start in ~/Documents.
  • MODIFIED: MacOS: set LC_CTYPE to UTF-8 if neither LANG nor LC_CTYPE is set. Also set the encoding flag to utf8 if LC_CTYPE is set to UTF-8.
  • PORT: Started Apple specific predicates. Adds apple_current_locale_identifier/1.
  • PORT: Fix compilation using clang in debug mode.

[Feb 2 2022]

  • FIXED: make/0 to consider a file modified if some indirectly included file is modified. Used to only consider directly included files.

[Jan 31 2022]

  • FIXED: Possible GC crash on a rational number appearing in a clause head.

[Jan 30 2022]

  • FIXED: Indexing issue for assessing possible clauses indexes in SSU code. Can lead false "No matching clauses" errors.

[Jan 28 2022]

[Jan 26 2022]

  • COMPAT: format/2: a numeric argument to ~s, e.g., ~3s truncates the string to the given number of characters.
  • COMPAT: format/2: ~r uses default radix of 8, compatible with SICStus and GNU-Prolog (used to raise an exception). Paulo Moura.
  • FIXED: set_prolog_flag(threads, Val) deadlocked. Paulo Moura.
  • FIXED: big integers constants in arithmetic expressions under optimization could be compiled as A_MPQ (rational), resulting in a crash. Paulo Moura.

[Jan 25 2022]

[Jan 24 2022]

[Jan 22 2022]

  • FIXED: call_residue_vars/2: if GC performs early reset on an attvar it is incorrectly considered residual.
  • DOC: Fixed PL_get_dict_key() docs. Matthijs van Otterdijk.

[Jan 21 2022]

  • ENHANCED: Use mallinfo2 when available. By @mgodan1.

[Jan 17 2022]

  • DOC: Fixed error in CMake build script for the manual.
  • DOC: Fixed LaTeX errors.
  • FIXED: Another postfix operator issue as a regression to recent fixes on postfix operator handling. Affects the R interface (reported by Nicos Angelopoulos for real, but probably rserve_client is also victim).

[Jan 16 2022]

  • DOC: clarify module issues wrt. macro expansion and explain what is affected by import modules.
  • DOC: read_term/2: quasi quotation layout
  • TEST: read_term/2 subterm_position option. Contributed by Peter Ludemann.

[Jan 14 2022]

[Jan 5 2022]

  • ADDED: copy_term/4 and copy_term_nat/4. These predicates provide a partial renaming of variables and is used in s(CASP). This patch also improves out-of-memory handling and adds a test suit for copy_term.

[Jan 14 2022]

[Jan 12 2022]

  • ENHANCED: If a package is available both globally and locally (per user), ignore the global one silently rather than with a warning.
  • ADDED: pack_install/2: option global(Boolean) to explicitly install a package for the user or globally.
  • BUILD: Include debug info with PGO build.
  • CMAKE: let Threads use -pthread instead of -lpthread This can link other needed libraries, and fix building on riscv64.

[Jan 11 2022]

[Jan 10 2022]

  • ENHANCED: Edits commit 18690d80fbdc842a5bad3da1fb81a083e55b1b24. Forgotten amend and already pushed to origin.
  • FIXED: qsave_program/2: add missing load_module for shlib The predicate current_foreign_library is used which is from the module shlib. Unfortunately it is not imported though, which makes it impossible to use qsave without autoloading enabled.

    [edited by JW: use autoload/2 and also deal with autoload_all/1 dependency]

[Jan 9 2022]

  • TEST: Started a few operator tests
  • FIXED: handling postfix operators must reduce the left side before reducing the postfix operator.

[Jan 8 2022]

  • ENHANCED: Issue#24: clause_info/4: reject if term layout returned by expand_term/4 is bogus. This forces the guitracer to revert to decompiling.
  • FIXED: arg xf xf (cascading postfix operators) where the priority of the first is higher than the second must generate a syntax error rather than an incorrect term.

[Jan 7 2022]

  • DEBUG: Fixed duplicate debug id
  • FIXED: print_term/2 handling of postfix operators.

[Jan 6 2022]

  • SECURITY: running plain swipl loads init.pl from the current directory if this file exists. It is not advised to load customisation files from the current directory. We now only load init.pl when explicitly called using swipl -f init.pl while an implicit init file is only loaded from the user_app_config path alias.

[Jan 4 2022]

[Jan 3 2022]

  • FIXED: SWISH Issue#146: failure to render stacktrace due to failure of message_to_string/2 on ansi(Style, Fmt, Arg) if Arg is not a list.

[Dec 31 2021]

  • MODIFIED: Query identifiers now keep track of the engine to which they are associated. As a result, they are now anonymous pointers rather than (pointer wide) integers. Does not affect compatibility except source compatibility when the value is combined with integral types.
  • BUILD: Disable MQI if multi-threading is not enabled.

[Dec 27 2021]

  • FIXED: print_term/2 from entering a loop. Also fixes unneeded parenthesis in lists.
  • FIXED: finding clauses from a source location could crash on thread local predicates

[Dec 23 2021]

  • FIXED: print_term/2: respect write options when computing with of native output.
  • MODIFIED: print_term/2 to get the default right margin from tty_size if the output is a tty and tty_size/2 succeeds.
  • FIXED: We must preserve the pack registration when creating a saved state to make loading foreign resources work.
  • ENHANCED: main/0 to avoid setting up application signal handling and termination when run interactively.

[Dec 22 2021]

  • FIXED: Issue#917: separate S_DYNAMIC and S_MULTIFILE. Jos de Roo.
  • ADDED: print_term/2: options fullstop(Boolean) and nl(Bool). Also lots of documentation restyling and removed old conditional compilation.
  • ENHANCED: print_term/2 to deal with operator expressions that exceed the line width.
  • FIXED: print_term/2: max priority of list elements and compound term arguments to 999 to force parenthesis.
  • FIXED: Issue#917: WAM Table mismatch: wam_table[119(s_static)] == wam_table[124(s_multifile)]

[Dec 21 2021]

  • FIXED: Ensure VMI instruction are on unique addresses. This patch extends 7bf463db4dcc7b4e27c820ef8fc6f94fd8116720 for the case that two VMIs jump to the same real implementation.

[Dec 20 2021]

  • PORT: Guarantee two VM instructions are not optimized to use the same code.

[Dec 19 2021]

  • FIXED: Ensure bigints are properly indexed on 32-bit platforms.
  • PORT: On MacOS fat executables, both try fat-darwin and the actual archirecture when searching foreign resources.
  • PORT: Set archirecture name of fat packages to fat.
  • PORT: Support generation of MacOS universal (fat) binaries. Also updates minimum supported MacOS version to 10.14.

[Dec 18 2021]

  • PORT: Dynamically determine actual architecture on MacOS
  • PORT: Install openssl.cnf with MacOS dependencies (scripts/macos-deps.sh)

[Dec 17 2021]

  • PORT: By default disable tcmalloc for MacOS as it causes a crash in setlocale() for Monterey.
  • ENHANCED: explain/1: hide system references.
  • PORT: Building an apple bundle using Qt6
  • PORT: Updated script for MacOS dependencies
  • DOC: return type for PL_put_variable(), PL_put_bool() and PL_put_atom() is int.

[Dec 15 2021]

  • FIXED: Handle new terminal hyperlink elements in message_to_string/2
  • PORT: MacOS to deal with installation directory for libjpeg as installed by Macports. This patch also disables more Macports and Homebrew locations if we provide our own dependencies.

[Dec 14 2021]

  • BUILD: By default use Macports gcc11 (gcc-mp-11)
  • EHNANCED: SICStus datime/2 emulation now supports mode datime(-When, +Datime).

[Dec 13 2021]

[Dec 11 2021]

  • PORT: Fixed cmake issue for MacOS Homebrew dependencies.

[Dec 10 2021]

[Dec 9 2021]

  • ADDED: prolog_choice_attribute/3: clause attribute to find the next candidate clause.
  • FIXED: Initial value for the Prolog flat on_warning must be print.

[Dec 8 2021]

  • FIXED: Stack trace line-level location when parenthesis are used.

[Dec 6 2021]

  • MODIFIED: write_term/3 option brace_terms behavior was the inverse of the documentation. As the docs describe what one would expect and is consistent with YAP, the implementation is fixed. We do not expect this option to be frequently used. Code using brace_terms(true) must be updated to use brace_terms(false). If you need to do a runtime check to beor conditional compilation compatible with older versions, one can use this condition to verify the correct new behavior.
    term_string({a}, S, [brace_terms(false)]), S == "{}(a)"
  • FIXED: Missing import into library(listing).

[Dec 4 2021]

  • ADDED: write_term/2: option quote_non_ascii. This option is enabled by default for write_canonical/1.
  • ADDED: PL_write_term(): PL_WRT_QUOTE_NON_ASCII flag
  • FIXED: write_canonical/1 to use the brace_terms option as false.
  • FIXED: Make write/1 and friends escape characters that the stream cannot represent.

[Dec 3 2021]

  • FIXED: write/1 and friends: we must check that the first character can be represented by the stream.
  • ADDED: Server socket support to SICStus 4 library(sockets) emulation.

[Dec 2 2021]

  • FIXED: If we abort in the tracer from a redo port that is on a foreign predicate we must discard this (foreign) frame.

[Nov 28 2021]

  • PORT: First attempt to support MacOs M1 with brew deps in /opt/homebrew

[Nov 26 2021]

  • ENHANCED: Base clause indexing hash for indirect types (strings, bigints and rationals on the start, end and length if the size exceeds 4 machine words. Without, the time to compute the hash easily becomes dominant. Found by Rick Workman.
  • REFACTOR: Get all index key computation in one place.

[Nov 24 2021]

  • BUILD: Provide more control over the PGO build.
  • ADDED: argv_options/3 to process type number

[Nov 22 2021]

  • FIXED: profile/1 involving code executed in a temporary module.
  • MODIFIED: This patch modifies PL_prof_type_t, the interface to extend the SWI-Prolog profiler. Foreign code using this may need to be updated. Most likely only used by xpce.

[Nov 18 2021]

  • FIXED: dif/2: we should ignore unrelated attributes.

[Nov 17 2021]

  • FIXED: Issue#907: failure to fully reclaim clause indexes under some loads.

[Nov 16 2021]

  • CMAKE: Support older CMake versions.

Package bench

[Jan 14 2022]

  • BUILD: Fixed running the benchmarks if GMP is not provided (perfect.pl causes an integer overflow).

[Nov 24 2021]

  • ENHANCED: Allow deleting the files for certain benchmarks and automatically skip these.

Package clib

[Jan 21 2022]

  • ENHANCED: Use mallinfo2() when available. By @mgodan1.

[Jan 20 2022]

  • FIXED: #pragma inside an if () else goes wrong on gcc.
  • PORT: Silence deprecated vfork() message.

[Nov 22 2021]

  • SANDBOX: Declare part of the SHA predicates sandbox safe.

Package http

[Jan 27 2022]

  • ENHANCED: verify server address when starting an HTTP server and raise an error if this is invalid.

[Jan 4 2022]

  • FIXED: Handle ansi(Style, Fmt, Args), url(Pos) and url(URL, Label) message line elements when formulating an HTTP response.

[Dec 15 2021]

  • ADDED: Handle new console hyperlink message line items when converting error messages to plain text.

[Dec 14 2021]

  • TEST: More debug messages for test_proxy.pl and avoid reporting expected errors.

[Nov 23 2021]

  • FIXED: javascript quasi quotation for regex objects holding backslashes.

[Nov 7 2021]

  • TEST: Simplified shutdown management for the http:proxy tests.

Package jpl

[Jan 9 2022]

  • CLEANUP: Type correctness in debug messages.

[Dec 30 2021]

  • COMPAT: Allow qid_t to be an opaque pointer.

[Dec 14 2021]

  • TEST: Disable prolog-in-java test if hamcrest-core is not found (broken on Macports)

Package mqi

[Feb 2 2022]

  • FIXED: Fix bug in docs that used old (invalid) parameters to Python function

[Jan 31 2022]

[Jan 28 2022]

  • FIXED: Hang with multi-byte UTF8 characters reported by @Losbarthos Details in: https://github.com/SWI-Prolog/packages-mqi/issues/14

    The MQI implementation had a bug where sends to MQI expected the message header to provide a count of Unicode code points instead of what it should have been: UTF8 bytes. This has been corrected but is a breaking change, so:

  • ADDED: A simple protocol versioning interface to the MQI. There is

now a mqi_version/2 predicate and the MQI returns Major and Minor version in its response to an initial connect message.

  • ADDED: The swiplserver Python library properly detects the original

and fixed versions and works against both of them.

  • TEST: Added tests for multi-byte UTF8 characters

[Nov 17 2021]

  • TEST: Do not run tests if we do not have Python3.

[Nov 16 2021]

Package nlp

[Feb 5 2022]

  • MODIFIED: Tokenize +digits as [+, int]. This is consistent with read/1 parsing +42 into +(42).

Package pengines

[Dec 28 2021]

  • FIXED: Pengine emulation of tab/1 to accept an expression.

[Dec 12 2021]

  • ADDED: Deal with new url message line element.

[Nov 19 2021]

  • ADDED: handle full_stop(Bool) and nl(Bool) in translating Prolog terms to HTML.

Package plunit

[Dec 2 2021]

  • FIXED: Allow include/1 to include tests between begin_tests/1 and end_tests/1. This patch is incomplete because failing tests are reported with the source line of he included file but the file name of the main file.

Package protobufs

[Feb 4 2022]

  • BUILD: Silence message about enabling tests. We want the cmake run as quiet as possible.

Package readline

[Nov 28 2021]

  • PORT: allow readline to be installed in /opt/homebrew/
  • PORT: (MacOS M1 with homebrew) allow readline to be installed in /opt/homebrew/

Package semweb

[Feb 4 2022]

[Feb 2 2022]

  • ADDED: rdf_meta/1: apply conversion in SSU heads.

[Jan 31 2022]

[Jan 28 2022]

  • COMPAT: do not require white space after the subject and predicate of ntriple format.

Package sgml

[Nov 29 2021]

Package ssl

[Jan 26 2022]

  • PORT: error: ‘rsa’ undeclared for old OpenSSL and LibreSSL.

[Jan 14 2022]

  • PORT: Make the package use the OpenSSL 3.0 API rather than the deprecated 1.1 API when compiled against OpenSSL 3. Patches 521519daa44b48efa0292cf0d29d741347b8c1bf..ac018967bfdeb4d534a247f879909c6d4a4e3199 Contributed by Matt Lilley.
  • PORT: Silence SecKeyChainOPen deprecation for MacOS.

[Jan 5 2022]

  • PORT: Fix build on OpenBSD 7.0 using LibreSSL LibreSSL 3.4.0 made struct ssl_session_st opaque.

Package swipl-win

[Feb 4 2022]

  • CLEANUP: Avoid messagebox when terminating.

[Dec 18 2021]

  • PORT: Demand Qt 5.15 or 6.

[Dec 17 2021]

  • FIXED: Simplied exit menu, working again, fixed QVariant type() usage warnings

Package xpce

[Jan 27 2022]

  • FIXED: Issue#10 for swipl-win: display->confirm hides message box in the background.
  • FIXED: Issue#14 (swipl-win, should be xpce) emacs_frame->on_current_desktop failed if the frame is iconized. This keeps creating new frames rather than reusing them.
  • FIXED: frame->expose for Windows when xpce is running in the background.

[Jan 20 2022]

  • CLEANUP: workaround to suppress a false positive warning from gcc-11 and avoid a pragma at the same time

[Jan 18 2022]

  • FIXED: Transfer selection from xpce as UTF-8 when requested using a media type (text/plain;charset=utf-8).
  • FIXED: Handle new message elements for generating feedback in PceEmacs.

[Jan 11 2022]

[Jan 7 2022]

  • FIXED: GUI tracer: avoid instantiation error. Kwon-Young Choi.

[Jan 6 2022]

  • FIXED: Allow the Prolog Navigator to work with zero-arity compounds.

[Dec 14 2021]

[Dec 13 2021]