Dear SWI-Prolog user
SWI-Prolog 9.3.29 is ready for download. Most of the changes are
enhancements to the new xpce and the xpce based swipl-win
. Some
other highlights:
-
Fixed bug in resolving procedures to modules when loading
.qlf files or saved states. This bug was introduced when
moving the libraries to .qlf format. It broke SWISH. -
Exploit larger fast integer range in term_hash/2. This
can reduce non-determinsm. -
Properly inherit the
max_integer_size
Prolog flag. This
could break large integer support in threads. -
WASM: Avoid leaking strings in
Prolog.get_chars()
Enjoy — Jan
SWI-Prolog Changelog since version 9.3.28
-
FIXED: prolog:translate_bindings/5 looped As
CA1_LPROC
arguments
were resolved against the head module rather than the body context,
this predicate called itself rather than the local defininion in
toplevel.pl
.This predicate is used by Pengines and SWISH.
-
TEST: term_hash/2 for LibBF on little endian machines.
-
TEST: Update term_hash/2 tests for big endian results.
-
MODIFIED: Removed
'$open_xterm'/5
This predicate allowed for using
thexterm
application to provide a console for a background thread.
This is now covered by Epilog. Also,xterm
is no longer widely
supported. -
TEST: term_hash/2: hash depends on GMP vs LibBF. Handle and document.
-
THEME:
dark
: darker colour for unused import background -
FIXED: WASM: Avoid leaking strings in
Prolog.get_chars()
-
WASM: Added
Prolog.__with_strack_strings()
This interface allows
for cleanup of temporary strings. It provides a WASM version of
PL_STRINGS_MARK() ... PL_STRINGS_RELEASE()
-
FIXED: edit/1 to merge all locations considered identical.
-
TEST: Fixed test for simplified ansi_format/3.
-
FIXED: Inherit the Prolog flag
max_integer_size
in new threads. -
MODIFIED: term_hash/2: extended range As tagged integers now have
the same range on all platforms, the range for term_hash/2 has been
extended to the max tagged integer.You can get the old hash by masking the lower 24 bits.
-
BUG: The test values for big endian are not updated as I do not
have access to big endian hardware right now. Please submit the
corrected values. Seetests/core/test_hash.pl
. -
ADDED: set_thread/2 Generic interface for modifying thread properties.
Currently controls the debug status of a thread. Will absorb most
other properties. -
DOC: thread_property/2 did not document the debug property.
Package xpce
-
FIXED: Gracefully handle failures to inspect changes to the attached
displays. -
ADDED: Cursor home/end key support on all editable text.
-
FIXED:
frame->label
: Allow using from any thread. -
ENHANCED: Make a subwindow only get the input focus if
->_wants_keyboard_focus succeeds. This notably prevents loosing
PceEmacs focus after a click in the menu. -
FIXED: Use a method rather than a function call if a window looses
focus. This allows the Prologtabbed_window
class to forward
this event. -
ADDED: PceEmacs: Shift-left-click extends the selection.
-
ADDED: Class
terminal_image
event handling to extend the selection
on SHIFT-click -
FIXED: Make sure modifier buttons are set for mouse up/down events.
-
FIXED: PceEmacs: make shift/control-cursor-keys work again.
E.g.Ctrl-<cursor_right>
moves by word and cursor movement with
SHIFT
enabled extends the selection. -
CLEANUP: Remove various tools from the manpce/0 window.
-
CLEANUP: PceEmacs: Remove Pce popup from Prolog mode
-
ADDED: epilog_insert_menu/2 and epilog_insert_menu_item/4. Compatible
with old win_insert_menu/2 and win_insert_menu_item/4. These predicates
let an application control the menus. -
ADDED:
menu_bar->append
:before
argument. -
ADDED: Implement app config hook to set the window title. This sets
the title when runningswipl-win file.pl ...
-
ADDED: Epilog: Allow loading a file from the window popup.
-
ADDED:
terminal_image<-url
to get the link url from a location. -
FIXED: Use PceEmacs
*Documentation*
for help. -
FIXED: PceEmacs popup for Documentation Run in Epilog window.
Actually, we should use xpce to display the HTML. -
FIXED: Class list_browser binding for backspace.
-
FIXED: Keyboard focus handling for completer windows. If there is
a grabbing window, redirect all keyboard input to the grabbing window. -
FIXED: class list_browser to handle arrow keys.
-
FIXED: Avoid destroying the completion browser. This is now a
transient frame -
FIXED: When running as epilog, disable debugging the
main
thread.