Dear SWI-Prolog user,
SWI-Prolog 8.5.19 is ready for download. Highlights:
- Lots of new features to the new Emacs sweep mode by @oskardrums.
Sweep improvements also concern platform issues in getting the
mode running. Please report your findings. - More bigint to float improments by @ridgeworks.
- Various enhancements to the WASM port. See details below.
- Updates to embedding: enhance
<home>/cmake/swipl.cmake
and
provide access from scripts to the Prolog home simply usingswipl --home
.
According to the plan, the next release should bump the stable version,
releasing the current state as 8.6.0 (maybe 9.0.0, opinions?). From
there, 8.6.x/9.0.x should stabilize quickly.
Enjoy --- Jan
SWI-Prolog Changelog since version 8.5.18
-
PORT: Include Emacs interface in MacOS bundle
-
MODIFIED: Removed an ancient mechanism for finding the Prolog home
directory from a magic string in the binary. Changed plain-home
to print the home directory and exit (used to ignore and run). -
WASM: Maintain a stack of open queries such that we can detect when
we act on a query that is not the innermost. Currently only prints
to the console. -
WASM: By default load scripts and files into the
user
module. -
PORT: Emscripten does not set
CMAKE_EXECUTABLE_FORMAT
. As all
this is meaningless with statically linked WASM version we do not
set theexecutable_format
andlibswipl
flags -
ADDED: prolog_walk_code/3 option
on_edge
which is similar to
on_trace
, but provide easier to understand source locations. -
FIXED: Add â$seek_listâ/4 to library(sandbox). Breaks nth1/3 and
nth0/3. -
FIXED: Make Prolog backtrace work in ISO mode.
-
FIXED: Big integer to float (mpz_to_double()) to_nearest, half to
even rounding and also a couple of minor cosmetic changes. -
ADDED: Extend check_installation/0 with sweep.
-
ADDED: new flags executable_format and libswipl New read-only Prolog
flags determined at swipl compile time. These flags are intended
to allow package sweep to determine if libswipl needs to be loaded
ahead of sweep-module (when executable_format=elf), and if so to
locate libswipl. -
WASM: Shell: make edit/1 work to show source of the libraries.
-
WASM: Shell: allow collapsing the answers to a query.
-
WASM: Enhanced
:=/2
: get global variables using eval() such that
it also works on Node and raise a Prolog exception in case something
goes wrong. -
WASM: Shell: add splitter to allow changing the distribution of the
output and editor. -
WASM: make shell demo console output more structured.
-
WASM: Shell: add examples from the server
-
WASM: Added fetch/3 as public function of library(wasm).
-
WASM: Cleanup js_script/2 to simply call
_ := eval(String).
This also makes this work in Node. -
WASM: Make Prolog.call() and Prolog.forEach() call by default in the
user
module rather than system. -
FIXED: help/1: avoid problems with modules that are also section
labels. @swi. -
WASM: Use CodeMirror in shell.html (from CDN such that we do not need
to grow our distribution). -
WASM: Make local compilation not use sig_atomic/1 as that breaks
yielding and we have no signals anyway. -
ADDED: Support conditional compilation in boot/init.pl
-
DOC: updated manual section about GNU Emacs interfaces
-
ADDED: flag libswipl_dir holding the installation dir of libswipl
-
WASM: Extend data transformation in
:=/2
and improve documentation. -
FIXED: WASM: await if the promise returns a compound term or list.
-
WASM:
:=/2
should pass a list as data instead as a call on
'[|]'(h,t)
. -
WASM: Documentation updates and LaTeX fixes to the docs.
Package cpp
- TEST: Avoid dependency on gethostname introduced by the tests.
Package sweep
-
ENHANCED: prompt for sweeprolog-describe-predicate Following feedback
from Jan Wielemaker -
FIXED: additional compatibility issue with buttons
-
FIXED: sweeprolog-describe-predicate compatibility with Emacs 28
-
ADDED: new command for showing help for Prolog predicates *
sweep.pl: sweep_predicate_html_documentation/2: new predicate- sweeprolog.el: - sweeprolog-read-predicate-history: new
variable. - sweeprolog-read-predicate: use it, and default to
the predicate at point. - sweeprologâcolour-term-to-faces:
quote symbol - sweeprolog-describe-predicate: new command. -
sweeprolog-help-prefix-map: bind it. * README.org: Prolog Help:
mention it.
- sweeprolog.el: - sweeprolog-read-predicate-history: new
-
ADDED: new command for showing help for Prolog modules *
sweep.pl: sweep_module_html_documentation/2: new predicate. *
sweeprolog.el: - sweeprolog-read-module-history: new variable. -
sweeprolog-read-module-name: use it. - sweeprologâdescribe-module:
new function. - sweeprolog-describe-module: new command. -
sweeprolog-help-prefix-map: new keymap. - sweeprolog-prefix-map:
bind it keymap to `hâ. * README.org: Prolog Help: new section. -
ENHANCED: update xref data for buffer after exporting predicate
-
FIXED: possible loop finding start of clause at start of buffer
-
ADDED: new command for exporting Prolog predicates * sweep.pl:
sweep_local_predicate_export_comment/2: new predicate. *
sweeprolog.el: - sweeprolog-read-exportable-predicate-prompt:
new user option. - sweeprologâexportable-predicates: new buffer
local variable. - sweeprologâcolour-term-to-faces: accumulate
exportable predicates. - sweeprolog-colourise-buffer: reset
sweeprologâexportable-predicates. - sweeprolog-export-predicate:
new command. - sweeprolog-mode-map: bind it. - sweeprolog-menu:
bind it. - README.org: document it. -
DOC: mention new sweep Prolog flag in README.org and NEWS.org
-
FIXED: sweep_identifier_at_point/2: possible infinite failure loop
-
FIXED: disregard stderr when invoking write_sweep_module_location
-
ENHANCED: create Prolog flag sweep=true when running under sweep
-
DOC: index some keystrokes in the manual
-
PORT: Try to find emacs-module.h in the $MINGW_ROOT to build it along
with the Windows versions. -
DOC: Update section âThings to doâ
-
ENHANCED: use next-error-select-buffer when switching to
a buffer * sweeprolog.el: sweeprolog-mode: add hook to
window-selection-change-functions. -
FIXED: sweeprolog-end-of-top-term would get confused by â=âŚâ *
sweeprolog.el: sweeprolog-end-of-top-term: donât stop after â=âŚâ.- sweeprolog-tests.el: add unit test.
-
ADDED: Flymake integration in sweeprolog-mode *
sweeprolog.el: - sweeprolog-enable-flymake: new user option.- sweeprologâdiagnostics: new buffer-local variable. -
sweeprologâdiagnostics-report-fn, sweeprologâdiagnostics-changes-beg,
sweeprologâdiagnostics-changes-end: new buffer-local
variables. - sweeprolog-defface: add docstrings for generated
functions. - sweeprologâcolourise: accumulate diagnostics when
sweeprolog-enable-flymake is non-nil. - sweeprolog-colourise-buffer,
sweeprolog-colourise-some-terms: report diagnostics when
sweeprolog-enable-flymake is non-nil. - sweeprolog-show-diagnostics:
new command in sweeprolog-mode buffers. - sweeprolog-mode-map:
bind it. - sweeprolog-diagnostic-function: new function. -
sweeprolog-mode: use it when sweeprolog-enable-flymake is non-nil. *
README.org: Examining diagnostics: new section. * NEWS.org: announce
flymake integration.
- sweeprologâdiagnostics: new buffer-local variable. -
-
DOC: add descriptions to all manual sections
-
FIXED: quote file paths passed to shell-command-to-string *
sweeprolog.el: sweeprologâensure-module: quote paths and use packaged
sweep.pl * README.org: fix typo -
ADDED: new command and user option for updating whitespace *
sweeprolog.el: - sweeprolog-align-spaces: new command, updates
whitespace around point according to SWI-Prolog conventions. -
sweeprolog-enable-cycle-spacing: new user option, when non-nil
sweeprolog-align-spaces is added to cycle-spacing-actions. -
sweeprolog-mode: use it. - README.org: document it. - NEWS.org:
announce it. -
FIXED: detecting end of clause with inline comments ending with â.â
-
DOC: added short documentation for sweep as a SWI-Prolog package
-
PORT: donât use defvar-keymap, introduced only in Emacs 29
-
TEST: add unit test for nested Elisp->Prolog->Elisp call chains
-
ENHANCED: allow for Elisp->Prolog->Elisp->⌠call chains