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

SWI-Prolog Changelog from version 9.3.2 to 9.3.3

[Mar 15 2024]

  • FIXED: tell/1: properly manage standard stream references.
  • FIXED: Stream reference counting and reset when closing a standard stream.
  • FIXED: Memory leak in string_bytes/3.
  • FIXED: Properly close temporary redirect to a string tellString()/toldString() could fail to reclaim the temporary stream object.

[Mar 14 2024]

  • ENHANCED: Use a segmented stack for dealing with findall/3. This avoids memory fragmentatation when findall/3 is deeply nested. Although that is a rare occasion, deeply nested findall/3 leads to poor memory reuse. As activating and deactivating is stacked anyway, a segstack avoids the fragmentation.
  • ADDED: help(Name/Arity): handle user predicates.
  • FIXED: xref_source/2: keep processing PlDoc commants after including a file.

[Mar 13 2024]

  • ADDED: help/1: give help on a specific user predicate using Module:PI.
  • ENHANCED: help/1: filter user predicates on the module class. This use to filter on whether they are documented in the manual, making it impossible to show documentation for loaded predicates that conflict with something defined in the manual.
  • FIXED: Thread I/O streams may be invalid If a thread is created using thread_create/3 with the inherit_from(Thread) option or using PL_thread_attach_engine() (which inherits from main), we may copy current_input or current_output from a temporary redirect.

    The reference counting when copying the streams was broken, possibly causing memory corruption. This is improved, but not 100% safe. However, we now set the current_input and current_output to user_input and user_output, which typically never change.

[Mar 12 2024]

  • FIXED: help/1 to deal with help on public predicates in included files. help/1 finds the predicate and, if necessary, reloads the file in which it is defined to get the documentation. If the predicate is defined in an include file it should reload the main file to get the module context right.

[Mar 11 2024]

  • ENHANCED: trace/1,2 and friends. - Code cleanup - Support conditional trace using trace(Head, Port(Condition))

[Mar 12 2024]

  • FIXED: Ensure correct setting file handle for std streams. This was broken after adding the fileno field to the IOSTREAM struct.

[Mar 11 2024]

  • MODIFIED: Discontinue thread_exit/1 on Windows The implementation was broken for some time. The reason is not entirely clear, but possibly related to issues in pthread-win32. As the predicate is unsafe and deprecated anyway, it has now been removed from the Windows version.

[Mar 10 2024]

  • FIXED: pack metadata checking for prolog:Feature requirements.

[Mar 7 2024]

  • FIXED: make stream_property(S, file_no(N)) safe. This used to be subject to race conditions between the enumerating thread and threads that close the underlying stream. We now copy the file handle as it was found when creating the stream to the main stream structure.

[Mar 6 2024]

  • CLARIFIED: PL_free_blob() can be called multiple times. This patch changes subsequent calls to a no-op that returns FALSE and document this is valid. After comment by Peter Ludemann.

[Mar 5 2024]

  • CLEANUP: Do not call blob release() on GC or cleanup after PL_free_blob()

[Mar 4 2024]

  • ENHANCED: Answer/query expansion. Toplevel variable ($Var) handing is now always handled, regardless of the expand_query/4 or expand_answer/2 hooks. The expand_answer/2 hook is superseded by expand_answer/3.
  • DOC: Deprecate format/3 with a non-list 3th argument.

[Mar 3 2024]

  • FIXED: Setting the C-stack limit to values not a multiple of the page size Causes problems on some platforms.

[Mar 2 2024]

  • DOC: Use ASCII LaTeX word''
  • FIXED: Preserve atributes set on foreign functions for saved states. This bug causes http_stream:stream_range_open/3 not be to transparent when reloaded from a saved state. This in turn raises an error with http_open/3 on HTTPS and chunked streams.

[Mar 1 2024]

  • ENHANCED: coverage/2: analyze and annotate included files. The coverage analyzer now deals with files that are included. Files that are included multiple times in different modules get their numbers aggregated.
  • FIXED: Crash when using '$cov_data'/3 if there is no coverage data.

Package cpp

[Mar 2 2024]

  • DOC: improve non-det example (and tests)
  • DOC: Use ASCII LaTeX word''.

Package http

[Mar 10 2024]

  • TEST: Don't reuse original test port for HTTP proxy Instead, use port assigned by OS.

    Intention is to prevent intermittent build test failure on Linux armv7, and Mac M1.

    The HTTP, HTTPS, SOCKS and "unused" ports are still reused, though.

    Original build failure report: https://swi-prolog.discourse.group/t/swi-prolog-9-2-2-fails-http-proxy-test-on-armv7/7275

  • FIXED: Make http session GC thread inherit from main This thread is started lazily from an HTTP worker and would by default interit the temporary CGI stream as current_output. By interiting from main we can safely print debug messages and avoid stream existence exceptions.

[Mar 9 2024]

  • FIXED: HTTP Sessions using Redis to properly handle concurrent delete. Multiple participants may decide to delete a session. By checking the removal from the timeout queue we avoid that two nodes delete the same session.
  • ADDED: HTTP session management granularity This setting controls how precisely we manage idle time updated and session timeouts. This is notably important when using an external (Redis) database for sharing session information to reduce traffic.

[Mar 8 2024]

  • ENHANCED: http_upgrade_to_websocket/3: discard a websocket on failure. When using the guarded(false) option, the created web socket is now only left open if the passed Goal succeeds.

[Mar 7 2024]

  • DOC: http_server/2: Explictly mention the possible use of AF_UNIX sockets
  • ENHANCED: Implementation of open_files in server stats.

[Mar 6 2024]

[Mar 5 2024]

  • ADDED: library(http_server_health)

Package ltx2htm

[Mar 2 2024]

  • FIXED: handling of final single quote
  • ENHANCED: Warn on non-ASCII characters. We can't handle these.

Package pldoc

[Feb 28 2024]

  • ENHANCED: Better ordering of predicates comming from other files. pldoc for "re-exported" predicates are now ordered by position, i.e., file name and line number.

Package plunit

[Mar 13 2024]

  • FIXED: Report tests where the setup goal fail as failed and print output.

Package semweb

[Mar 3 2024]

  • FIXED: #110 Allow blank nodes as graph in TRiG format.

Package swipl-win

[Mar 12 2024]

  • FIXED: Reset fileno for stdio streams