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

SWI-Prolog Changelog from version 9.3.35 to 9.3.36

[Dec 2 2025]

  • PORT: Support older gcc and clang versions that do not provide __auto_type

[Nov 30 2025]

  • ENHANCED: On ELF systems that have objcopy, add the state as an ELF section. This makes the system a valid ELF executable on which all ELF tools work normally.
  • ADDED: qsave_program/2: option zip(true) to create a clean .zip file.
  • FIXED: #1414 crash in C_CUT due to reset clause pointer from undo/1.

[Nov 24 2025]

  • MODIFIED: PIP-0105: write_term/2 option max_text to exclude ellipsis. As we already exclude the quotes and escape sequences, excluding the ellipsis is more consistent. After remarks by Joachim Schimpf.
  • FIXED: #1411 Windows issue for handling max_text on UTF-16 pairs.
  • TEST: Relax thread queue timeout tests and provide more accurate failure feedback.

[Nov 23 2025]

  • FIXED: Save history for new directory using swipl-win
  • ENHANCED: On (Linux/Unix) systems with hot-pluggable CPU or running as virtual machines, the cpu_count Prolog flag should be set to the number of online processors (SC_NPROCESSORS_ONLN) instead of the configured maximum number (SC_NPROCESSORS_CONF). Using the online count avoids situations where cpu_count reflects offline or non-present CPUs. If SC_NPROCESSORS_ONLN is not defined by the system, we fall back to the old SWI-Prolog behaviour.

[Nov 21 2025]

  • BUILD: show options in generated file
  • MODIFIED: write_term/2: max_depth(+Depth) to use Unicode If the encoding of the output supports Unicode. Otherwise the ASCII sequence ... is emitted.
  • ADDED: write_term/2: support max_text(+Length) for quoted output.

[Nov 20 2025]

  • ADDED: PIP-0105: write_term/2 support for max_text(+Length) Actually called text_max in the proposal. Considering all other options and flags are named `max_*`, I think this should change.

    This commit only implements this option for unquoted atoms and strings.

  • FIXED: with_tty_raw/1: kept lock on stream.
  • ADDED: PIP-0105: write_term/2 option truncated(-Bool). Bool is unified to true if the term has been truncated due to the max_depth option.
  • ADDED: PIP-0105 write_term/2 option portable(Bool)
  • DOC: Update CMAKE.md, section components
  • TEST: saved_states, disable timeout under MSYS2 (#1406) * TEST: saved_states, disable timeout under Windows

    On Windows, stream timeout only works for sockets. [Nov 19 2025]

  • DIST: Added packages/libedit/libedit to tar archive

Package cpp

[Nov 24 2025]

  • FIXED: compiler warnings for print formats

Package http

[Nov 23 2025]

Package json

[Dec 2 2025]

  • FIXED: Clean exit from client thread on end-of-file When using header(true), EOF resulted in a warning that the thread died on failure.

[Nov 30 2025]

  • ADDED: Allow a JSON RPC client to also act as server on the same connection. This is allowed by the spec and used by the LSP (Language Server Protocol). A new predicate json_full_duplex/2 can be used to add server functionality to a client connection.

[Nov 26 2025]

  • FIXED: Server side positional vs named parameters
  • MODIFIED: Calling conventions for json_call/4 and json_notify/3. Clarify and fix distinguishing named from positional parameters.

[Nov 25 2025]

[Nov 23 2025]

Package xpce

[Dec 2 2025]

  • ADDED: PceEmacs C-mode: declaration of keywords.
  • ADDED: syntax_table->keywords to register known keywords for a syntax

[Dec 1 2025]

  • MODIFIED: Generalised text_buffer->for_all_comments Replaced by text_buffer->for_all_syntax, which qualifies additional syntax types. Currently only quoted material.
  • ADDED: Support for multi-character line comment lead-in (e.g. // comment)
  • MODIFIED: syntax_table->prolog: bool replaced by syntax_table->language
  • ADDED: `text_buffer<-lsp_offset(line,character) --> offset Translate position in LSP notation to an offset.
  • ADDED: text_buffer<-lsp_column Produces the character field of an LSP range start/end. This is the position inside the line in UTF-16 code points.

[Nov 29 2025]

  • ENHANCED: editor->align_line to avoid modifications if alignment is already satisfied.
  • FIXED: text_buffer->insert not to set modified if we insert 0 times.
  • ADDED: PceEmacs: M-x idle-timeout seconds Sets the time we wait before re-running semantic highlighting.

[Nov 28 2025]

  • ADDED: PceEmacs: hooks to allow syncing to an LSP server

[Nov 24 2025]

  • ADDED: Class text_buffer to allow forwarding changes incrementally This implements methods to generate LSP (Language Server Protocol) compatible incremental change events. The basic method is text_buffer<-lsp_changes, which returns a chain of text_change objects that provide the changed range and replacement text.