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

SWI-Prolog Changelog from version 9.3.15 to 9.3.18

[Jan 5 2025]

  • FIXED: library(prolog_colour): misleading colouring of Dict.field Field was flagged as an error (no_function).
  • DOC: sort/4 stable sort example. Suggested by Pierpaolo Bernardi.

[Jan 4 2025]

  • ASAN: Avoid runtime errors on field[1]
  • PORT: More C99 unspecified array at end of struct issues.
  • PORT: Use portable definition of struct clause
  • PORT: Use C99 constructs for a portable version of struct functor Structs may use type name[] as last field for a dynamic array.

[Jan 3 2025]

  • ENHANCED: Simplify generating a joined key for multiple arguments.
  • ENHANCED: app splfr to use new argv_options/4 ability to pass unknown options.
  • ADDED: argv_options/4: option unknown_option(pass) This passes unknown options to the positional argument list without warning. This is intended for processing some options while some downstream component processes the remaining options.

[Jan 2 2025]

  • MODIFIED: Turn SICStus splfr script into a SWI-Prolog app Allows for swipl splfr [option..] input ...

    Patch also fixes typing in sicstus.h, check the return of PL_put_term() and adds SP_cons_functor().

  • DOC: spellchecked documentation

[Jan 1 2025]

  • CLEANUP: Clause indexing code. Split into smaller functions, use bool type, avoid goto, add more comments, etc. This is a preparation before improvements.

[Dec 30 2024]

  • ADDED: foldall/4. Suggested by Boris Vassilev.
  • DOC: clarified (new) destructive assignment complexity.
  • ENHANCED: Use improved sharing in nb_set_dict/3. This patch makes nb_set_dict/3 call the low-level code for nb_setarg/3, providing better code reuse.

[Dec 29 2024]

  • ENHANCED: nb_setval/2: avoid quadradic complexity.
  • ENHANCED: nb_setarg/3: avoid copying the old value. If the new value contains the old, the old value is not copied, making many applications linear instead of having quadratic cost.
  • CLEANUP: Pack context for copy_term/2 and friends into a struct Also type and declaration cleanup

[Dec 23 2024]

  • ADDED: swipl pack remove: --dir=DIR option
  • ADDED: swipl pack info: --dir=DIR option Give info on packs installed below DIR

[Dec 21 2024]

  • ADDED: swipl pack rebuild [--dir=dir] [pack ...]
  • ADDED: swipl pack list --dir=DIR option to list packs installed in DIR.

[Dec 19 2024]

  • FIXED: dict_same_keys/2 could overflow the global stack.
  • ADDED: trap/1: aliases for e.g. type_error -> type_error(_,_) So one does not need to remember the number of arguments.

[Dec 18 2024]

  • FIXED: Preserve incremental property when creating a saved state.

[Dec 13 2024]

  • BUILD: Add CMake option -DSWIPL_SO_VERSIONS to remove SOVERSION properties.

[Dec 12 2024]

  • DOC: statistics/2 lost the keys globallimit, locallimit and traillimit. Reported by Jelmer Jellema.

[Dec 10 2024]

  • FIXED: print_term/2: proper handling of operators(Ops) Needs to be kept consistent with write_options([... ignore_ops(IgnOps)]). Implemented consistency and deprecated the option. Reported by Mike Elston.

[Dec 9 2024]

  • FIXED: merge_options(+Dict, +List, Merged) Resulted in no matching rule exception.
  • ADDED: library(prolog_colour): track CHR declaration locations

[Dec 8 2024]

  • FIXED: Handling of home during boot session.

[Dec 4 2024]

  • ENHANCED: pack_info/1: use colours and indicate autoload status.
  • MODIFIED: pack_install/2 option autoload(true) If present, the pack is installed as autoload pack regardless of autoload option in the meta-data. If the option is not present, the system asks the user to install as autoload library if the meta-data contains autoload(true).

    If autoloading is not enabled, the INDEX.pl file that may appear in the pack is removed.

    This patch also adds swipl pack install --autoload ...

  • FIXED: Make packs that provide an autoload library work again.

[Dec 3 2024]

  • FIXED: cmake/TestSignalType.c for C++
  • PORT: Make cmake test for signal handler compatible with c23

[Dec 2 2024]

  • ENHANCED: gui tracer support for Head ==> Body rules.
  • ENHANCED: Set non_terminal property for clauses for Head ==> Body

[Nov 29 2024]

  • WASM: Include ABI file to make the home search work.
  • FIXED: New home search to actually try the compiled in value.

[Nov 28 2024]

  • ENHANCED: Verify sanity of the Prolog home directory This patch validates that the home directory contains a file ABI holding the ABI information and compares this. On failure, it reports a detailed report on why Prolog could not find its home directory.

[Nov 27 2024]

  • FIXED: explain/1 to report the same predicate multiple times. This happens if the predicate is imported into multiple modules.
  • ADDED: library(exceptions) This library provides catch/4 and error/2 to define error types and catch based on types rather than unification. Experimental.

[Nov 25 2024]

[Nov 24 2024]

  • FIXED: Pass command line arguments in class Prolog.

[Nov 22 2024]

  • DOC: gcd/2 and lcm/2 are not operators.
  • ADDED: Prolog flag unknown_option with values {ignore,warning,error}. As a result of PIP-105. May change, but unlikely as their was clear agreement.

    This flag disables the iso flag from reporting errors on unknown options because this breaks large parts of SWI-Prolog's libraries. The user can now explicitly enable this as well as make the system pring warnings to investigate possible issues.

[Nov 21 2024]

  • FIXED: Use of undefined options in the toplevel. This makes the toplevel unusable if the Prolog flag iso is set to true.
  • PORT: WASM: Get rid of deprecated allocate, ALLOC_NORMAL and ALLOC_STACK
  • FIXED: WASM: Query.next() to set done to true on last answer. This must be false when used as iterator.
  • ENHANCED: Allow suppressing autoload warnings.
  • TEST: Move test_rwlocks.pl from library to thread test dir. This test should not run in the single threaded version.

[Nov 20 2024]

  • FIXED: WASM: for(x of prolog.query(...)) lost last answer

Package clib

[Dec 28 2024]

  • PORT: Support inet6 on NetBSD

Package http

[Jan 3 2025]

  • DOC: spellchecked documentation

[Dec 16 2024]

[Nov 20 2024]

  • DOC: Fixed example code for apropos with HTML output.

Package jpl

[Nov 22 2024]

  • TEST: #104 prolog_in_java test fails if multiple copies of junit*.jar are found. Now first search for junit*4*.jar. On success, use first, else search for junit.jar. On success, use first.
  • TEST: Cache JUNIT_JAR in CMake. This provides better cmake performance and easier inspecting the configuration result.

Package semweb

[Jan 4 2025]

  • ASAN: Avoid runtime errors. All "fixed" issues are benign

[Jan 2 2025]

  • DOC: spellchecked documentation

Package swipy

[Dec 11 2024]

  • FIXED: Allow using the janus module from Prolog when loaded as Python module.

[Dec 10 2024]

  • FIXED: When loading janus_swi into Python, use janus.pl from Python package.

[Nov 25 2024]

  • BUILD: Honour environment variable SWIPL for `pip install .`
  • DOC: Document creating the Windows binary wheel in scripts/README.md

Package xpce

[Jan 4 2025]

  • PORT: Avoid -Wstringop-truncation warning.
  • PORT: Silence address sanitizer errors.

[Jan 3 2025]

  • MODIFIED: PceEmacs: sync comment commands with (my)GNU Emacs. - \C-c\C-h (insert_section_comment) Insert code section comment from prompted title - \C-c\C-q (insert_long_comment) Insert /* - - - .... - - - */ comment