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

SWI-Prolog Changelog from version 9.3.7 to 9.3.8

[Jul 10 2024]

  • FIXED: Type for PL_get_intptr_ex(). Breaks on Win32

[Jul 9 2024]

  • CLEANUP: Make all code clean for clang-18 -fsanitize=undefined

[Jul 5 2024]

  • ENHANCED: Added 'c_cxx' flag and env SWIPL_CXX for packs

[Jul 8 2024]

  • FIXED: #1292: possible stack corruption in exception handling. Probably can only be triggered if SECURE_GC is enabled which wipes the unused parts of the stacks in trimStacks().
  • SANDBOX: Allow for term_singletons/2

[Jul 1 2024]

  • FIXED: #1292 Possible stack corruption after exception.

[Jun 14 2024]

  • FIXED: unification of zero-arity compounds

[Jun 8 2024]

  • FIXED: Possible assertion error due to unify refactoring.

[Jun 7 2024]

[Jun 4 2024]

  • CLEANUP: Refactor unify() Split into a function that deals with everything except compounds and one that does the whole thing. This makes the function a lot easier to understand. This rewrite has no measurable performance implication and should make it a bit easier to optimize it further.
  • ENHANCED: Simplify H_VAR
  • ENHANCED: Low-level unification to constants Speeds up unification from foreign code to atoms and small integers.

[Jun 3 2024]

  • ENHANCED: make/0: no longer try to update the indices of system libraries. These libraries are properly maintained by the build and installation process while the time stamps are often wrong after the installation process.

[Jun 1 2024]

  • FIXED: Do not wait longer than 30 seconds after a crash. This deals with situations where error reporting and cleanup hangs due to a deadlock.

    Normally, after a fatal crash report and if the system is connected to a terminal, it waits for user input such that the user can attach a debugger to analyse the state. We now wait at max 30 seconds to avoid indefinite waiting if there is no human in the loop after all.

  • DOC: time/1: we do support per thread CPU time on MacOS.

[May 31 2024]

  • FIXED: Properly export environment_frame in foreign predicate redo. The incorrect setting causes problems in the new consistency checks for term_t as well as confusing backtraces.
  • PORT: Possibly collapsing VM instructions on 64 bit Visible using gcc 14 on arm64 (Asahi Linux)
  • WASM: SWIPL() initialization changed in Emscripten Where SWIPL(Module) used to return a Promise that would complete returning the same Module, it now returns a new module object that is independent from the agument passed.

[May 30 2024]

  • ADDED: PL_free_term_ref() In addition, this patch distinguishes term_t originating from predicate arguments (which cannot be freed and to which we cannot "write" (PL_put_*())) from user allocated term references.

[May 29 2024]

  • ADDED: Validate arguments to the C API PL_*() functions. This commit validates term_t, atom_t and functor_t parameters to the PL_*() functions that terminates the process if it finds invalid data.

    These tests may be disabled using cmake -DVALIDATE_API=OFF. The validation has very little impact on the raw Prolog performance as most internal use of the C api bypass the public API function. It may have measurable impact on packages that use the C interface in a very time critical way.

  • ADDED: PL_api_error() to signal invalid use of the API

[May 30 2024]

  • FIXED: =@=/2: attributed variables must be handled as normal variables.

[May 28 2024]

  • FIXED: Determine file exports under conditional conditional compilation.
  • FIXED: Process multiple predicates from export/1 directives. To determine file exports, we considered only a single predicate for export/1.
  • FIXED: Stops repeated crash reports While recursive crashes where dedected, no appropriate action was taken, leading to endless error reports.
  • FIXED: '$open_xterm'/5: raise exeption if we cannot run xterm. Used to hang, waiting for output from the xterm process.
  • MODIFIED: Renamed open_xterm/5 as private '$open_xterm'/5. open_xterm/5 was not documented. This patch removes the implementation completely if the OS lacks the required POSIX pty support and renames the predicate to '$open_xterm'/5 if xterm consoles can be supported. In addition, this patch adds conditional compilation to console support in library(threadutil) if neither the Windows support nor the xterm support can be provided.

[May 27 2024]

  • FIXED: Build dependency of documentation on utf8proc package

Package cpp

[Jul 1 2024]

  • ENHANCED: Use read mutex for AtomMap::find()

[Jun 30 2024]

  • ENHANCED: added move constructor to PlRecord to support make_pair()

[Jun 29 2024]

  • FIXED: base class visibility

[Jun 28 2024]

  • DOC: fix some obsolete function names

[Jun 21 2024]

  • ENHANCED: convenience methods in PlRecordExternalCopy

[Jun 14 2024]

  • ENHANCED: Experimental PlTermScoped API
  • DOC: PlTail is now PlTerm_tail + fix examples

[Jun 21 2024]

  • PORT: OpenBSD does not have malloc header

Package http

[May 28 2024]

Package jpl

[Jun 7 2024]

  • TEST: removed Garbo.java This file uses the deprecated finalize() method and does not seem to be used anywhere.

[May 31 2024]

  • TEST: Find hamcrest needed for JPL tests on Fedora

[May 30 2024]

  • FIXED: Illegal use of SWI-Prolog API Code as modifying predicate arguments.

Package ltx2htm

[May 31 2024]

  • FIXED: Avoid overwriting predicate argument

Package pengines

[Jun 7 2024]

[Jun 6 2024]

  • ADDED: Add support to collate multiple output events. This extends the HTTP protocol to wait for more output, sending multiple output events as one chunk. The chunk is ended if no more output is timely available, the max of (currently 100) output events is collected, or a non-output event is found.

Package plunit

[Jun 3 2024]

  • FIXED: run_tests/0-2: correctly report combined CPU usage.

Package protobufs

[Jun 15 2024]

  • CLEANUP: tests now run outside the build

[Jun 10 2024]

  • TEST: Use cmake's built swipl executable where possible

[Jun 9 2024]

  • DOC: examples+tests using updated protobuf-compiler package

Package sgml

[May 29 2024]

  • FIXED: Avoid referencig an invalid term_t

Package ssl

[May 30 2024]

  • FIXED: Illegal use of SWI-Prolog API

Package swipl-win

[Jun 14 2024]

  • PORT: Require C++-17 (was C++-11)

Package swipy

[Jun 8 2024]

  • FIXED: accept string(Text) as input Added tests for extended py_string_as().

[Jun 7 2024]

  • ADDED: support for py_string_as() option with codes or chars

Package xpce

[Jul 9 2024]

  • CLEANUP: Use offsetof() where applicable This avoids runtime errors when using -fsanitize=address