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_sizeProlog 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_LPROCarguments
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'/5This predicate allowed for using
thextermapplication to provide a console for a background thread.
This is now covered by Epilog. Also,xtermis 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_sizein 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_windowclass to forward
this event. -
ADDED: PceEmacs: Shift-left-click extends the selection.
-
ADDED: Class
terminal_imageevent 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
SHIFTenabled 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:beforeargument. -
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<-urlto 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
mainthread.