Dear SWI-Prolog user,
SWI-Prolog 9.3.35 is ready for download. This is a pre-release for
10.0.0. As from now, only minor patches will be applied until
version 10 is out and a new development branch is created. Highlights:
-
Sync format/1-3 with PIP-0110, adding additional tests produced
by Joachim Schimpf. This fixes a couple of bugs and adds some
minor features. The only incompatible change is that~Nsnow
performs right padding with spaces if the argument is shorter than
N characters. -
process_create/3 got a pseudo path
prolog, allowing for
process_create(prolog(‘swipl-ld’), …) to reliably call the
SWI-Prolog linker frontend that belongs to the running Prolog
process. After discussion with @mgondan1 to solve issues running
the saved-state tests. -
Make the whole system compile using MSVC on Windows.
-
Better MacOS Homebrew support for using the dependencies from
Homebrew. -
Various fixes to the commandline handling. Line editing now by
default use a bundled version of libedit that works on Windows
and includes upstream patches to define the word characters
that are available in most distributions yet. Also fixes
colour handling for the flatpak version. Fix issues with
resizing the Epilog windows. -
Added library(json_schema), providing JSON schema checking.
-
XPCE:
- Remove old PostScript generation, add PDF generation based
on the Cairo library. - Make the user guide build again and update some vital sections.
- Various minor fixes.
Enjoy — Jan
- Remove old PostScript generation, add PDF generation based
SWI-Prolog Changelog since version 9.3.34
-
ADDED: Using the option
--home=dir, setSWI_HOME_DIR.
This ensures that sub processes can access Prolog’s home and, when
calling Prolog, execute the same Prolog system. -
TEST: Base saved-state tests on new prolog(Tool) option of
process_create/3. -
FIXED: Allow
swipl -o exe -c input.plto pass--home=dir
option. -
PORT: Properly install runtime dependencies for MSVC build This now
depends in CMake > 3.21 install() optionRUNTIME_DEPENDENCY_SET -
PORT: Build
swipl-win.exeunder MSVC Now compiles cleanly.
swipl.exeruns fine, including line editing. The GUI is unresponsive
though. -
FIXED: format/1-3: reset last tab stop on a newline. Spotted by
Joachim Schimpf with the PIP tests. -
ADDED: ansi_format/4, formatting with colours to a stream.
-
PORT: MSVC
-
MODIFIED: format/2 handling of non-list arguments Now, the second
argument is only considered a single argument if it is not or [|].
Notable partial lists or lists not ending in[]are now threaded as
(invalid) argument list. -
ENHANCED: Errors for arithmetic expression
[Code]if list holds no
single code. -
PORT: MSVC compatibility.
-
TEST: Fixed test for format/2
~6s. -
DOC: format and friends. Move documentation of deprecated
writef/2
and friends to the library documentation. Updated the format/1-3
documentation. -
PIP: PIP-0110: make
~<n>semit padding if text is too short. -
TEST: Use
swipl.batfor testing saved states on Windows. 1. allows
for “external” swipl.bat under Windows (see swipl.sh in l. 133)
2. invokes saved state with -x if swipl.bat is used -
PORT: Work around broken MSVC
-
TEST: PIP-0110: added PIP format/2 tests.
-
COMPAT: Extended ECLiPSe test driver to accept
should_output -
MODIFIED: PIP-0110: format/2 using
~Nto ignore the argument.
Most implementations ignore the argument. Others interpret it
inconsistently. New code should use~N~2nas replacement for
~3N. -
MODIFIED: PIP-0110: distributing extra spaces over
~tUsed to
distribute these spaces from the middle. Now distributes them from
the right, compliant with SICStus and ECLiPSe. -
ADDED: PIP-0110: format/2 format specifier
F. This is likef,
but using uppercase letters for non-normal floats. -
PIP: PIP-0110: format/2:
~ato only accept atoms and compact strings. -
PIP: PIP-0110 (format) compatibility: handle expressions for
* -
PORT: Better MacOS Homebrew support
-
FIXED: Typo in updated history code. Caused !/0 to be redefined …
-
FIXED:
!<num>history handling if command contains a . in the
middle. -
FIXED: library(ansi_term): use initialization/1 If not used, the
setup init_color_term_flag/0 will not run when using .qlf files.
Package bdb
- PORT: Honour
LIBBDB_ROOT_DIRcmake variable
Package clib
-
ADDED: process_create/3: specify program as prolog(Tool) This allows
Prolog running one of its tools, with the guarantee that we use the
tools from the same version. This provides a hook prolog:prolog_tool/4
that allows embedded systems to redefine how the Prolog tools should
be executed. -
FIXED: Make library(uuid) work properly if autoloading is disabled.
Package json
-
TEST: Skip JSON schema tests if we have no HTTP server
-
BUILD: Only include library(json_schema) if
pcreis provided. -
FIXED: Make compile if there is no HTTP client support.
-
ADDED: library(json_schema) to provide checking JSON schema.
Package libedit
-
PORT: Clean compilation on MSVC
-
PORT: Allow using bundled libedit This is the default. The system
version can be selected usingcmake -DSYSTEM_LIBEDIT=ON.
This should simplify building -
ADDED: el_set/2 to set the word characters This replies on el_wset()
usingEL_WORDCHARSthat is provided in some recent copies of
libedit. When available, it is used to set the word chars to only
"_"(in addition to iswalnum()). -
FIXED: Avoid full refresh in Epilog windows on each action. Failed to
reset the refresh request. Refreshing causes issues with wrapped
lines. -
FIXED: Synchronise Epilog window size changes with libedit.
Package pldoc
- FIXED: Emit LaTeX for markdown code text that holds
%in tables.
Package utf8proc
- PORT: Compile using MSVC
Package xpce
-
PORT: Fixed emulation of C11 atomic_compare_exchange_strong()
-
PORT: Compilation in MSVC This is only a partial port to MSVC.
It does fix several issues though. -
FIXED: If there is no gui, do not setup xpce for lazy loading.
-
PORT: Hack around MacOS oddities to get
SIGWINCH -
PORT: Make compilation succeed if SIGWINCH is not defined.
-
FIXED: Message handling. Broke emacs/0. Reported by @mike.elston
-
FIXED:
swipl-winto handle interrupt in the console that started
swipl-win. What should we do if there is no terminal, i.e., if
swipl-win is started as app directly from the GUI? It should not
get interrupt signals in that case, but what if it gets one anyway? -
ADDED: Epilog: use pthread_kill() to update client thread of window
size change. This fixes resizing Epilog windows cooperation with
libedit. To work correctly, the libedit package must be updated
as well. -
ENHANCED: Detection of when to load library(pce).
-
ADDED: Epilog: Shift-Ctrl-M to inject make/0.
-
MODIFIED: Removed all PostScript related support This was
non-functional anyway. The Cairo graphics is used to implement
graphical->pdffor generating PDF. This functionality is still
rather minimal. It will be extended in the future. -
FIXED: Colour for class
int_itemup/down arrows. And some code
cleanup. -
ENHANCED: class
font_itemto reflect current possibilities better. -
ENHANCED: Updated PceDraw - Use native file dialog for save, load
and export - Remove windows metafile support - Replace Postscript
output with PDF - Disable printing. Not supported by SDL and not
very important. -
DOC: Revive the XPCE User Guide This commit re-adds the
Makefile,
updates the Prolog helpers and minimal updates to reflect some aspects
of XPCE version 7 in the documentation.Eventually the build process must be migrated to CMake, most images
should be regenerated and the text reviewed and updated where needed. -
ADDED:
graphical->pdfto write PDF to a file -
FIXED: Always enable color on the Epilog consoles.