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

SWI-Prolog Changelog from version 9.3.12 to 9.3.15

[Nov 18 2024]

  • FIXED: Handling return values in stack expansion. Introduce more bool to correctly distinguish functions returning true/false/*_OVERFLOW from those raising exceptions and only returning true/false.
  • FIXED: prolog_trace_interception/4: setting up the hook good crash.

[Nov 17 2024]

[Nov 16 2024]

  • ADDED: format/2: support ~:D The colon modifier for D forces the use of Prolog digit grouping using _.
  • FIXED: format/2 handling of Unicode characters Regression from a49fe8cb40fc15b7325a4e4836304cbe6d9ccef0

[Nov 15 2024]

  • ADDED: library(prolog_locale) to setup grouped printing of integers.
  • ADDED: write_term/2 options format_float(+Format) and format_integer(+Format) Using a format seems a more sensible way to control writing numbers from write_term/2. This patch removes the previously introduced radix(+Radix) option. If we want this back we will implement it on top of format_integer(+Format).

    This patch also contains a lot of small code cleanup and some optimization to low-level I/O.

  • ADDED: write_term/2: option radix(Radix). Experimental. Under discussion as PIP-105. The current implementation writes, unlike XSB, the radix prefix. We either need more options or we should consider another alternative such as integer_format(+Format)

    As this patch cleans up a lot of the code regarding numeric output and most will be needed anyway, it is merged despite the fact that the radix option may vanish eventually.

[Nov 14 2024]

  • ADDED: format/2 specifier ~h This provides compatibility to SICStus. It also makes write/1 output for floats compatible to SICStus for deciding between fixed point and exponential notation.
  • FIXED: ISO compatible parsing for `fy 2 yf` and similar cases.

[Nov 13 2024]

  • TEST: Added ISO ambiguous operator tests. Marked two tests as blocked as these currently fail.

[Nov 8 2024]

  • FIXED: #1331 Module issue in SICStus block/1 emulation. This patch also reformats the file, removes some dead code and remove the outdated restriction that it does not work on dynamic or foreign predicates.

[Nov 6 2024]

  • ENHANCED: Avoid spurious tracing in push_msg/2.
  • DEBUG: First print the Prolog stack "safe" on a crash. This guarantees that the stack is printed, including details on the clauses involved and progress in each clause. Next, the stacks are printed with arguments. This however may crash if the crash is caused by corrupt data on the stacks.

[Nov 5 2024]

  • ADDED: Support SSU DCG rules as Head[, Guard] ==> DCGBody.
  • FIXED: libary(prolog_pack): detection of valid download URLs.
  • FIXED: Build order planning. This reverts 1cf4acbe722604857a2627ecc161f80e16f330ed. That patch was broken. The reported failure probably had some other cause.

[Nov 4 2024]

  • FIXED: Installing a pack should attach the pack itself. This incorrectly registered the directory of the pack as a directory that provides packs instead.
  • ENHANCED: explain/1 to enumerate all instances of a non-qualified predicate.
  • TEST: rwlocks unit tests for safety and reliability

[Nov 3 2024]

  • BUILD: plunit requires clib package.

[Nov 1 2024]

  • ENHANCED: Implement distinct/1,2 and reduced/1,3 using tries. This reduces the overhead over 5 times.

[Oct 31 2024]

[Oct 29 2024]

  • ENHANCED: Re-implement library(nb_set) using closed hash tables. This provides better performance at lower memory usage. It comes with a few modifications:
    • The term representation is different. This only affects applications that access the internals.
    • gen_nb_set/2 enumerates the elements in hash order rather than in standard order of terms.
    • Invalid usage now traps nu matching rule errors due to the usage of => rules. Used to fail or succeed incorrectly.

[Oct 24 2024]

  • BUILD: Make sure to clear DISPLAY when running xpce steps (one more)

[Oct 23 2024]

  • BUILD: Make sure to clear DISPLAY when running xpce steps While the build works without a DISPLAY variable, an invalid variable causes the build to fail.
  • TEST: Disable collation_key/2 test for MacOS Macos Sequoia (15) wcsxfrm() returns garbage.

[Oct 22 2024]

  • FIXED: Avoid corruption in setjmp()/longjmp() Clang demands using a volatile variable for protecting the throw environment's parent. This is probably correct, although it seems weird to place this variable in a register.

[Oct 19 2024]

  • ENHANCED: Add Prolog navigator to theme/dark.pl

[Oct 18 2024]

  • FIXED: build order for dependencies in packs. Based on #1326, but fixing build_order/2 rather than reversing afterwards.
  • FIXED: expand_term/2 to succeed twice when expanding a toplevel list. Results in duplicate clauses when compiling [f(1), f(2)].. Reported by Uwe Neumerkel.
  • FIXED: pack management: find available versions from wildcard URL. Patch by Nicos Angelopoulos

[Oct 17 2024]

  • PORT: Added FreeBSD signal names to the name/number map. Contributed by Dewayne Geraghty

[Oct 15 2024]

[Oct 11 2024]

[Oct 10 2024]

  • FIXED: select_dict/3: possible crash. Could crash if the first argument dict did not have unbound keys. The new implementation is also faster, building the new dict opportunistically rather than in a second scan.

[Oct 9 2024]

  • FIXED: Build failure on systems without sem_timedwait()
  • FIXED: Avoid message when assertion/1 is interrupted by abort

[Oct 8 2024]

  • ADDED: Prolog flag halt_grace_time: graceful timeout limit
  • CLEANUP: Getting Prolog flags from C
  • ADDED: PL_print_message() for calling print_message/2 from C
  • FIXED: print_term/2: indentation of right argument of infix term.
  • FIXED: Allow breakpoints in arg(C,T,F) I.e., arg/3 calls with a known argument and the 3th index being a first var. These map to the B_ARG_CF VM instruction.

[Oct 7 2024]

  • FIXED: Possible memory leak in various C API functions using BUF_MALLOC These functions could "stack" intermediate results, overflowing the string stack when used excessively inside a single foreign predicate or outside calls from Prolog (i.e., using "main" in foreign code).

[Oct 6 2024]

  • ADDED: PL_get_stream(): SIO_TRYLOCK flag to allow failure if the stream is locked.

[Oct 5 2024]

  • ADDED: catch/3: support constraints on the Ball.
  • FIXED: Bail out with fatal error if we cannot allocate a foreign frame for an exception.

[Oct 4 2024]

  • FIXED: Generate a fatal error if there is no local stack emergency space
  • FIXED: Partial unification while searching for a matching catch/3. As the partial unification is not undone, we may fail to find the right catch frame.

[Oct 3 2024]

  • FIXED: Memory leak in PL_get_wchars() when using BUF_MALLOC.
  • FIXED: Avoid error message when calling halt/0,1 from -g goals. Reported by Jos de Roo
  • MODIFIED: cancel threads using unwind(halt(Status)) Older versions used '$aborted'
  • MODIFIED: PL_halt() return status and new flag. If the flag PL_HALT_WITH_EXCEPTION is used, PL_halt() tries to raise an exception and returns false. If the halt was cancelled, the return is now true (was false). Otherwise, the function does not return.

[Oct 2 2024]

  • ENHANCED: halt/1: use the unwind(halt(Status)) if possible.
  • CLEANUP: Removed '$aborted'
  • DOC: Status of unwind(...) exceptions.
  • MODIFIED: Re-implement thread_exit/1 based on unwind(thread_exit(Term)).
  • ADDED: Allow unwind(halt(Status)) to halt from an exception.
  • MODIFIED: Introduced unwind(Term) exceptions.
  • ADDED: parse_time/3: support RFC1036 and ASCTIME formats These formats are old HTTP timestamp formats.

[Sep 30 2024]

  • DOC: Added documentation for PL_for_dict()
  • FIXED: Windows format_time/3 implementation for time stamps > 32 bits. While the Windows time_t is 64 bits, it doesn't seem to localtime() seems broken handling large time offsets.

[Sep 29 2024]

  • MODIFIED: parse_time/2,3: interpret missing timezone as local time. This patch fixes parsing YYYY-MM, which used to be a day too early.

[Sep 30 2024]

[Sep 27 2024]

  • DOC: #1323 Wrong claim on default for prefer_rationals flag.

Package bench

[Nov 13 2024]

  • FIXED: Avoid division by zero if no tests are executed.

Package clib

[Oct 2 2024]

  • COMPAT: Support both old and new abort exception

Package cpp

[Nov 2 2024]

  • DEPRECATED: Officially deprecate version 1 of the C++ interface. For now, we will keep SWI-cpp.h in the distribution. We do not plan any updates to keep it in sync with changes to SWI-Prolog or the C++ standard. Users of this old interface are strongly encouraged to update their program.
  • DOC: removed all "(version 2)"
  • DOC: Delete documentation for version 1 of the C++ interface

[Oct 12 2024]

  • TEST: Fixed file tests for Windows where Prolog and OS paths differ,

[Sep 30 2024]

  • FIX: add missing PlStringBuffers in calls to PL_chars(), PL_nchars(), PL_wchars()
  • DOC: adding warning to PlTermv

Package http

[Oct 2 2024]

  • COMPAT: Support both old and new abort exception
  • FIXED: http_reply_file/3: be more tolerant about if-modified-since Recent systems provided file times in sub-second, while HTTP typically looses this.
  • FIXED: Steadfastness of http_timestamp/2

[Sep 30 2024]

[Sep 29 2024]

Package jpl

[Nov 14 2024]

  • TEST: Fix finding hamcrest on Fedora 41

Package libedit

[Oct 6 2024]

  • FIXED: Avoid deadlock when trying to save history from a background thread.

Package mqi

[Oct 25 2024]

  • TEST: Specify encoding in test_prologserver.py [Oct 24 2024]
  • TEST: Specify encoding in test_prologserver.py Fixes a problem for MSYS2. I hope my ad hoc fix is harmless.
    * ERROR: test_variable_attributes (test_prologserver.TestPrologMQI.test_variable_attributes) ---------------------------------------------------------------------- Traceback (most recent call last): File "c:/msys64/home/c7201178/swipl-devel/packages/mqi/python/test_prologserver.py", line 95, in setUp self.initialProcessCount = self.process_count("swipl") ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:/msys64/home/c7201178/swipl-devel/packages/mqi/python/test_prologserver.py", line 123, in process_count output = subprocess.check_output(call).decode() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 237: invalid start byte [Oct 2 2024]
  • COMPAT: Support both old and new abort exception

Package pengines

[Oct 2 2024]

  • COMPAT: Support both old and new abort exception

Package plunit

[Nov 6 2024]

  • ENHANCED: PlUnit message for tests that succeed with a choicepoint.

[Oct 31 2024]

  • FIXED: Report generator state on failing forall(Generator) test. This was completely broken. Format has been changed to print the generator goal rather than just the variables.

Package semweb

[Oct 9 2024]

  • FIXED: Make RDF GC thread stop gracefully.

[Oct 2 2024]

  • COMPAT: Support both old and new abort exception

Package ssl

[Nov 17 2024]

  • PORT: Extended our BIO_ctrl() callback. In Fedora 41, OpenSSL 3.2.2, it appears we need to implement the BIO_ctrl() methods BIO_C_FILE_TELL and BIO_C_FILE_SEEK for properly loading keys from files.

[Oct 2 2024]

  • COMPAT: Support both old and new abort exception

Package swipy

[Oct 3 2024]

  • DOC: Python signal handling
  • ADDED: janus.heartbeat() to make Python process interrupts while Prolog runs.
  • ADDED: propagate keybaord interrupt.
  • ENHANCED: Cooperate with Python sys:exit() Calls from Prolog to Python, where Python raises a SystemExit() exception are mapped to Prolog unwind(halt(Status)) exceptions or, for older versions into abort/0, recording the exit status requested. Consisently, when control comes back from Prolog to Python, the unwind(halt(Status)) raises SystemExit(Status) or, abort with recorded exit status raises this Python exception.

Package tipc

[Oct 2 2024]

  • COMPAT: Support both old and new abort exception

Package xpce

[Oct 19 2024]

  • ENHANCED: #38 Support themes in navigator.

[Oct 18 2024]

  • FIXED: #38 Avoid loading the GUI tracer when trace/util.pl is loaded. The navigator loads this, but should not load the GUI debugger itself.

[Oct 15 2024]

  • FIXED: Class tabbed_window: avoid sending ->resize_window when freed.

[Oct 8 2024]

  • COMPAT: PceEmacs: implemented C-x 5 2 and M-,
  • FIXED: Pass on unwind() exceptions from e.g. timer events calling Prolog.

[Oct 7 2024]

  • ADDED: GUI tracer term viewer: allow pinning.
  • ADDED: PceEmacs Prolog mode: auto-fill the mode line properly.

[Oct 2 2024]

  • COMPAT: Support both old and new abort exception