Ann: SWI-Prolog 9.3.29

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
    the xterm 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. See tests/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 Prolog tabbed_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 running swipl-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.

3 Likes
joseph@mx:/usr/local/swipl-devel$ swipl --version
SWI-Prolog version 9.3.29 for x86_64-linux