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

SWI-Prolog Changelog from version 9.0.3 to 9.0.4

[Jan 27 2023]

  • TEST: Run unsafe thread_wait tests only if SWIPL_TEST_FAIL_ON_UNLIKELY is set to y.
  • FIXED: `1Inf` should be invalid syntax.

[Jan 26 2023]

  • DOC: Foreign language details. Notable PL_raise_exception().

[Jan 23 2023]

  • FIXED: With float_undefined set to nan, 0/0 must return NaN.

[Jan 20 2023]

  • FIXED: with_output_to/3 to flush the streams before finishing the capture.
  • ADDED: Sdprintf() and friends to accept the t integer size specified for ptrdiff_t.

[Jan 19 2023]

[Jan 17 2023]

  • FIXED: Windows: string_length/2 did not handle UTF16 surrogate pairs correctly.
  • DOC: Document PL_write_term()

[Jan 16 2023]

  • FIXED: Possible deadlock in a transaction commit due to different ordering in locking L_GENERATION and L_PREDICATE locks.

[Jan 14 2023]

  • DOC: fix minor typo

[Jan 13 2023]

  • FIXED: Issue#195: cmpFloatNumbers() for NaN.

[Jan 12 2023]

  • FIXED: Implement A_MPZ and A_MPQ instructions when using LibBF binding. This fixes using such numbers in expressions compiled with optimization enabled. Reported by Rick Workman.

[Jan 11 2023]

  • FIXED: Issue#1091: optimised compilation of clauses containing big integers or rational numbers in expressions.
  • FIXED: Issue#1092: term_hash/2,4 crashes on Unicode strings.
  • ADDED: list_debug_topics/1 to search, only print active topics, etc. This predicate now uses print_message/2. debugging/0 is hooked to show the active topics.
  • ADDED: debugging/0: allow extensions using prolog_debug_tools:debugging_hook/0
  • DOC: Fixed PL_Q_CATCH_EXCEPTION interaction with the debugger.
  • DOC: Reviewed and updated foreign language sections on exception handling. Thanks to Peter Ludemann for pointing the many parts of the docs that were unclear or outdated.

[Jan 10 2023]

  • DOC: Added some details for PL_exception()

[Jan 5 2023]

  • FIXED: Issue#1087: crash on inlined unification against a rational number.

[Dec 28 2022]

[Dec 19 2022]

  • PORT: msys2, add %MINGW_PREFIX%/bin to dll path
  • PORT: msys2, do not copy system dlls into home
  • ADDED: Prolog flag msys2 to detect the MSYS2 installation.

Package archive

[Dec 21 2022]

  • PORT: Simply use int64_t as older 3.x libarchive versions do not define la_int64_t. Simply using int64_t seems the easiest way out.

Package clib

[Jan 26 2023]

  • FIXED: uri_iri/2 to not decode encoding &=; in the query string.

[Jan 9 2023]

  • FIXED: detach_IO/1: Protect I/O stream against garbage collection.

Package http

[Jan 27 2023]

  • FIXED: `1Inf -> 1.0Inf` syntax.

[Jan 23 2023]

  • ENHANCED: More robust restoring of current output after redirection to the CGI stream.

[Jan 11 2023]

[Jan 9 2023]

  • FIXED: Avoid recursion when garbage collecting HTTP sessions under Redis session management.
  • ENHANCED: Do not try to send websocket broadcast messages after shutdown progressed too far.

[Jan 6 2023]

  • ADDED: library(http_unix_daemon) to broadcast http(shutdown) before calling halt(0).
  • ENHANCED: http_absolute_uri/2 to use the setting http:public_scheme or the port to find the scheme (http or https)

[Jan 4 2023]

  • ENHANCED: Redis http session plugin to use caching to speedup checking whether a session is alive.

[Dec 21 2022]

  • FIXED: Issue#120: term//2 (term to HTML) rendering of infix terms if these contain "member" terms with arity 2.

Package odbc

[Dec 18 2022]

  • PORT: More odbc type work around. As we do not use long [long] int sizes or availability, just leave them undefined and let unixODBC do its magic.
  • PORT: Include patch from Debian for some 32-bit systems. Some versions of sql.h depend on HAVE_LONG_LONG. Our code does not use any of the properties for `long int`.

Package pldoc

[Jan 25 2023]

  • FIXED: Possible race condition when pldoc is loaded concurrently from multiple threads. Hook is installed before the predicates it needs are defined.

Package redis

[Jan 2 2023]

  • ENHANCED: Avoid hanging connection on invalid authentication.

[Dec 30 2022]

  • ADDED: Split authentication for the redis instances from the sentinel network.
  • FIXED: Also connecting to the sentinels require authentication.

[Dec 28 2022]

  • ADDED: Connect to a master through a sentinel network.
  • ADDED: Support Redis TLS connections.

Package sgml

[Jan 18 2023]

  • FIXED: Back skip over UTF-16. @UweR.

[Jan 17 2023]

  • ENHANCED: Partial support for full Unicode handling ion Windows (UTF-16).

[Jan 16 2023]

  • ADDED: Add ignore_doctype(+Bool) option to explicitly ignore DOCTYPEs embedded in XML

Package ssl

[Jan 14 2023]

  • FIXED: Allow HTTPS server to be started as Interface:Port.

Package sweep

[Jan 23 2023]

  • DOC: improve documentation for holes

[Jan 22 2023]

  • ADDED: command to pipe output of Prolog goals to Emacs buffers * sweep.c (sweep_open_channel(), sweep_fd_open()): new helper functions for obtaining Prolog streams from Emacs pipe buffers. * sweep.pl (sweep_async_goal/2, sweep_interrupt_async_goal/2): new predicates.
    • sweeprolog.el (sweeprolog-async-goal): new command, executes a goal in a separate thread and redirects its output to a buffer with mode.. (sweeprolog-async-goal-output-mode): new major mode, derived from Compilation mode. (sweeprolog-mode-map, sweeprolog-prefix-map, sweeprolog-menu): bind sweeprolog-async-goal. * README.org (Executing Prolog Asynchronously): new manual section.

[Jan 21 2023]

  • FIXED: possible race condition when signaling new top-level threads

[Jan 20 2023]

  • ENHANCED: consult with library index for finding predicate defs * sweep.pl (sweep_predicate_location_/4): also check library_index/3.
    • sweeprolog-tests.el: add test for finding the source location of a predicate in the package clib.
  • FIXED: stale xref data when jumping across files with M-.

[Jan 19 2023]

  • ADDED: right-click context menus in sweeprolog-mode * sweeprolog.el (sweeprolog-context-menu-find-module) (sweeprolog-context-menu-find-module-other-window) (sweeprolog-context-menu-describe-module) (sweeprolog-context-menu-find-file) (sweeprolog-context-menu-find-file-other-window) (sweeprolog-context-menu-describe-predicate): new commands, add to context menus by... (sweeprolog-context-menu-for-predicate) (sweeprolog-context-menu-for-module) (sweeprolog-context-menu-for-file): new functions, used in... (sweeprolog-context-menu-functions): new abnormal hook, used by... (sweeprolog-context-menu-function): new function. (sweeprolog-mode): add it to context-menu-functions.
    • README.org (Context Menu): new section.

[Jan 16 2023]

  • ADDED: short description for tokens on mouse hover (help-echo)
    • sweep.pl (sweep_predicate_dependencies/2): new predicate. * sweeprolog.el (sweeprolog-enable-help-echo): new user-option, when non-nil sweeprolog-analyze-region-start-hook and sweeprolog-analyze-region-fragment-hook are extended with... (sweeprolog-analyze-start-help-echo) (sweeprolog-analyze-fragment-help-echo): new functions, manage the help-echo text property for Prolog text. * README.org ("Hover for Help"): new section about help-echo.
  • ENHANCED: improve semantic highlighting for several constructs

[Jan 14 2023]

  • DOC: improve listings in the "Editing Prolog Code" section

[Jan 12 2023]

  • ADDED: command for sending a goal to top-level from any buffer
    • sweeprolog.el (sweeprolog-top-level): extract buffer setup logic to... (sweeprolog-top-level-buffer): new function. (sweeprolog-top-level-send-string): new function, used by... (sweeprolog-top-level-send-goal): new command, reads a goal from the minibuffer and sends it to a Prolog top-level buffer. (sweeprolog-mode-map): bind it to C-c C-q. (sweeprolog-menu): add "Send Goal to Top-level" entry. * README.org ("Sending Goals to the Top-level"): new manual section.

[Jan 8 2023]

  • DOC: explain how to follow source locations in top-level messages
  • MODIFIED: do not force set next-error buffer to Prolog buffer

[Jan 7 2023]

  • ENHANCED: use terms at point as "future history" for term-search * sweep.pl (sweep_terms_at_point/2): new predicate. * sweeprolog.el (sweeprolog-terms-at-point): new function. (sweeprolog-read-term): use it for setting the future history. (sweeprolog-read-goal): new function. (sweeprolog-term-search): use it for reading a goal when called with prefix argument.

[Jan 6 2023]

  • ENHANCED: Support refining term searches with arbitrary goals * sweep.pl (sweep_term_search/2): extend with an extra goal argument.
    • sweeprolog.el (sweeprolog-read-term): new function, similar to read--expression but for Prolog terms rather than Elisp expressions. (sweeprolog-term-search): use it, and prompt for goal with prefix arg.

[Jan 5 2023]

  • ENHANCED: restore original point when a term search is quit

[Jan 4 2023]

  • ADDED: command for finding terms subsumed by a given term * sweep.pl (sweep_term_search/2): new predicate. * sweeprolog.el (sweeprolog-term-search-in-buffer): new function. (sweeprolog-term-search): new command. * README.org ("Term Search"): new manual section.

[Jan 1 2023]

  • FIXED: find next predicate definition more reliably
  • ADDED: user option to control predicate documentation composition * sweeprolog.el (sweeprolog-insert-pldoc-for-predicate): remove in favor of... (sweeprolog-insert-predicate-documentation): new function. (sweeprolog-format-term-with-holes): new utility function, used by... (sweeprolog-read-predicate-documentation-with-holes) (sweeprolog-read-predicate-documentation-default-function): new functions, used for... (sweeprolog-read-predicate-documentation-function): new user option, used by... (sweeprolog-read-predicate-documentation): new function, used by... (sweeprolog-document-predicate-at-point): refactor.

[Dec 22 2022]

  • ADDED: New command sweeprolog-insert-term-with-holes * sweep.pl (sweep_format_term/2, sweep_current_functors/2): new predicates. * sweeprolog.el (sweeprolog-read-functor-history): new variable, history list for... (sweeprolog-read-functor): new function. (sweeprolog-forward-hole-repeat-mode): rename to... (sweeprolog-forward-hole-repeat-map): corrected name for keymap. (sweeprolog-analyze-end-font-lock): don't rely on sweeprolog--next-hole to move point. (sweeprolog-at-hole-p, sweeprolog-beginning-of-hole) (sweeprolog-end-of-hole): new functions, used by... (sweeprolog--previous-hole, sweeprolog--next-hole): revise. (sweeprolog--precedence-at-point): new function, used by... (sweeprolog-insert-term-with-holes): new command. (sweeprolog-mode-map): bind it to C-c C-m * sweeprolog-tests: test it. * README.org ("Filling Holes"): move to top and rename to... ("Holes"): document sweeprolog-insert-term-with-holes.

[Dec 21 2022]

  • ENHANCED: use variable names from docs when inserting next clause
  • ENHANCED: highlight holes in incomplete terms * sweeprolog.el (sweeprolog-predicate-completion-at-point): fontify holes when inserting them. (sweeprolog-analyze-start-font-lock): reset font-lock-face in analyzed region. (sweeprolog-analyze-fragment-to-faces): fix syntax error handling, don't highlight holes as it is done by... (sweeprolog-analyze-end-font-lock): new function, highlights holes in analyzed region when sweeprolog-highlight-holes is non-nil. (sweeprolog-analyze-region-end-hook): add it. (sweeprolog--hole): fix text property used for setting stickiness.

[Dec 18 2022]

  • FIXED: possible crash after calling sweeprolog-restart

Package swipl-win

[Jan 25 2023]

  • PORT: qmake.pro and includes to compile in QtCreator (up to Qt 6.4)

Package xpce

[Jan 24 2023]

  • TEST: Skip test if xpce cannot be found.