| Did you know ... | Search Documentation: |
| Title for pldoc(default) |
[Sep 1 2025]
toplevel.pl.
This predicate is used by Pengines and SWISH.
[Aug 25 2025]
'$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.dark: darker colour for unused import background[Aug 24 2025]
Prolog.get_chars()Prolog.__with_strack_strings() This interface allows
for cleanup of temporary strings. It provides a WASM version of
PL_STRINGS_MARK() ... PL_STRINGS_RELEASE()[Aug 22 2025]
[Aug 20 2025]
max_integer_size in new threads.[Aug 7 2025]
You can get the old hash by masking the lower 24 bits.
tests/core/test_hash.pl.[Aug 19 2025]
[Aug 7 2025]
P_TRANSACT, causing a clause for thread_message_hook/3
to remain.[Aug 5 2025]
[Aug 3 2025]
[Aug 2 2025]
graphical.selected_foreground and
graphical.selected_background[Aug 1 2025]
[Jul 31 2025]
cmake --env does not work correctly on all platforms.
This patch adds and uses an -DSDL_VIDEO_DRIVER=dummy commandline
option for the Prolog build steps.[Jul 30 2025]
[] as functor namehalt Halting from the
callback no longer works since halt/1 is implemented as an exception.
This caused "Exit Prolog" from the GUI debugger to be ignored.[Jul 28 2025]
[Jul 25 2025]
Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com>
[Jul 24 2025]
:- encoding(+Enc)[Jul 23 2025]
swipl-win installation for MacOS when not creating a bundle.[Jul 22 2025]
light theme file.[Jul 21 2025]
p(X, Y) :- X = f(Y), Y = a.. Issue occurs if a variable is
accessed (Y) before its unification must be moved to the head.[Jul 20 2025]
[Jul 19 2025]
[Jul 18 2025]
dark theme Only applies with new SDL based xpce[Jul 17 2025]
[Jul 16 2025]
-DEPILOG=ON[Jul 10 2025]
-Dtheme=<theme>[Jul 6 2025]
[Jul 10 2025]
[Jul 9 2025]
[Jul 7 2025]
[Jul 5 2025]
--win-app option in a way that also supports
epilog.[Thread xyz] note on messages in
alternate consoles such as Epilog or SSH shells.toplevel_thread. This flag is true in a thread
that is currently running a REPL loop.is_file_spec(20_625_830)[Jul 4 2025]
-DEPILOG option This option prepares the core
for the upcoming Epilog configuration. It must be used with the
sdl branch of packages/xpce. Effect:
library(readline)swipl that sets the
epilog flag. Depending on the platform some more additions
may be needed.[Jul 3 2025]
[Jul 1 2025]
~q (quoted).rational_syntax is natural, write /(Int,Number) with
spaces. This ensures such a term is not read as a rational number.[Jun 30 2025]
[Jun 28 2025]
[Jun 26 2025]
[Jun 25 2025]
[Jun 23 2025]
[Jun 25 2025]
[Jun 23 2025]
[Jun 22 2025]
[Jun 19 2025]
IOSTREAM* control message to get the Windows HANDLEPL_dispatch() and friends now use IOSTREAM* instead
of int. This is a first step to merge simultaneous handling of
console outout and GUI dispatching for POSIX systems and Windows to
a common design.[Jun 18 2025]
INDEX.pl files work on Windows. Concurrency
may cause sharing violations. This patch retries renaming the index
file several times.[Jun 17 2025]
[Jun 11 2025]
swipl-win. May be started by using the sdl
branch of xpce and run as
swipl -Depilog [arg ...]
[Jun 7 2025]
[May 28 2025]
SDL_VIDEODRIVER=dummy for running Prolog steps This
makes sure the new SDL based xpce does not try to open graphics and
is harmless on other targets.[May 27 2025]
library(win_menu). This
library is loaded as source and thus conditional compilation applies.
library(prolog_history) is compiled to .qlf. Now the code is also
where it belongs.?- length(L,2), f(L) = R, S = [_A]. L = [_A, _B], R = f([_A, _B]), S = [_A].
[May 24 2025]
thread_exit(io_error) on an io_error
during read.L_THREAD mutex locked on error.[May 23 2025]
[May 22 2025]
[May 17 2025]
user.
Before, only write_term/2,3 supported "natural" rational number syntax.[May 16 2025]
[May 2 2025]
sys applinux[May 1 2025]
[Apr 30 2025]
[May 1 2025]
[Apr 30 2025]
For example, suppose we have a business database that records the legal status in one of the columns (arguments). A query with a non-existing lega status should fail quickly. In the old system, the small number of values could easily lead to a hash colission, causing the system to try all clauses with the legal status of the collision.
This issue was reported by Abramo Bagnara
[Apr 29 2025]
[Apr 28 2025]
[Apr 25 2025]
desktop with icons and desktop integration files.
A particular version can be activated as desktop application using
swipl sys desktop [--global] install
The activation canbe removed using
swipl sys desktop [--global] remove
swipl-win.exe: support underlined fonts Support
\e[4m to print underlined text.[Apr 23 2025]
file:// links
are then mapped to edit/1 and other links are opened in the browser.
This patch also fixes several issues and provides cleanup to the swipl-win.exe console code.
?- edit(file('myname.pl')). to create a new file.swipl or swipl-win is started.
Using runtime conditionals is possible, but would lead to many undefined predicate warnings.
[Apr 22 2025]
[Apr 21 2025]
The tests both deal with basic attribute handling and with (simple) tabling that involves attributes.
[Apr 22 2025]
[Apr 21 2025]
[Apr 18 2025]
machine now exports get_attr/3, put_attr/3, del_attr/2 and
install_verify_attribute_handler/4.profile_ports provides the default "mode", now true -
profile_sample_rate provides the default sample rate (200)The latter two fail to build the Janus interface due to too old Python versions.
[Apr 14 2025]
[Apr 17 2025]
[Apr 11 2025]
[Apr 17 2025]
swipl qlf app: report incompatible .qlf files[Apr 15 2025]
swipl qlf app: dependency warnings and clean subcommand[Apr 14 2025]
[Apr 10 2025]
swipl qlf app - info:
-u (--update) to only list out-of-data .qlf filesswipl qlf info to accept multiple files.source_file_property(File, load_context(...)).[Apr 9 2025]
swipl qlf info -s <file.qlf>
[Apr 8 2025]
[Apr 7 2025]
[Apr 5 2025]
[Apr 4 2025]
file to work correctly for .qlf.hyperlink_term is true.[Apr 3 2025]
library(dom) based on html//1library(dom) to the dialect tau. We plan on an
alternative library(dom). As a consequence, we move the Tau emulation
library to the newly added Tau support in SWI-Prolog's dialect support.library(dom) set_attr/3: allow for atoms as values.[Apr 2 2025]
FR_SKIPPED after skip/up in yield-based debugger.Head --> "terminal", ...[Apr 1 2025]
[Mar 31 2025]
library(dom) get_by_id/2: getElementById() returns null
on failurelibrary(dom): Tau-Prolog compatible handling of set_style/3 and
get_style/3 Several DOM style strings are translated to Prolog terms.library(dom): remove_class/2.library(dom) to library(wasm) Also added wait/3.library(wasm) and library(dom) to documentation server.library(wasm)[Mar 30 2025]
promise_event()bind.html demo.[Mar 29 2025]
library(dom).[Mar 30 2025]
#(Value)[Mar 29 2025]
bind(): added options.[Mar 27 2025]
:-
use_module(mymodule, [op(_,_,_)]).The hook was (no longer) used, so this should have limited impact. It is now introduced for library(http/html_write).
[Mar 26 2025]
index(Name, Arity, Module, File)This is now modified to
index(Head, Module, File)
Where Head contains (where known) the mode and/or meta-predicate
indicators. The index files now also contain the op(Pri,Type,Name)
terms from the export list.
This provides faster and simpler access to meta-predicate and operator relations between modules.
edit(file(File)).installed.
[Mar 25 2025]
current_variable(Name)
This causes the marking to mark the named variable with the class
current_variable.consult(): added engine:true option. This allows
loading files to proceed asynchronously.[Mar 24 2025]
stream(In) option This allows processing
arbitrary data.qlf app swipl qlf info -e file.qlf Show exports of the
.qlf file.[Mar 23 2025]
[Mar 22 2025]
[Mar 21 2025]
[Mar 20 2025]
[Mar 21 2025]
opendir(), but these seem resolved.[Mar 20 2025]
query() Documented nodebug and string
options.query(): add option {string:"atom"}qlf app to report .qlf files without sources. Used to
report these as out of data.target:head
:- body, where body is executed in the containing module. This is
achieved using an I_CONTEXT VM instruction. Before, when the predicate
contains one such clause, it set P_MFCONTEXT and inserted a
I_CONTEXT for each subsequent clause. When using .qlf files though,
the files may be loaded in different order than when creating the
.qlf files, leading to clauses without an I_CONTEXT instruction to
follow clauses with this.[Mar 19 2025]
-DINSTALL_PROLOG_SRC=OFF This can be
used together with -DINSTALL_QLF to ship the Prolog libraries as
.qlf files without including the sources.[Mar 18 2025]
[Mar 17 2025]
prolog and
source These used to be synonyms. Now prolog includes .qlf
and source does not.source. This flag can be used to ignore the
.qlf files in the library and load the .pl (source) files instead.[Mar 16 2025]
[Mar 15 2025]
[Mar 13 2025]
main.[Jul 22 2025]
[Jun 19 2025]
[May 23 2025]
[Jun 22 2025]
[Jun 19 2025]
[Apr 11 2025]
[Apr 3 2025]
[Jun 15 2025]
url(URL) for HTTP startup message.[Jun 13 2025]
[May 2 2025]
[Apr 29 2025]
Content-length)
exactly this number of bytes is read from the input before returning
the stream to the Keep-alive mechanism.
This prevents crafted content to generate additional HTTP requests.
error(Formal, Context).fupdatefilepos_getc() on all processed data.
See https://swi-prolog.discourse.group/t/multipart-open-does-not-advance-the-streams-pointer/8965/3
[Apr 7 2025]
[Apr 3 2025]
[Apr 2 2025]
[Mar 29 2025]
[Mar 27 2025]
:- html_meta(+Decls)[Mar 20 2025]
halt(1). That is wrong after halt
is implemented as throw(unwind(halt)).[Mar 17 2025]
[Mar 14 2025]
[Jul 3 2025]
[Jul 2 2025]
[Jun 30 2025]
[Jun 28 2025]
[Jun 22 2025]
[Jun 23 2025]
[Jun 19 2025]
[Jun 17 2025]
fdopen()setsize() was undefined.[May 28 2025]
[May 26 2025]
[Apr 21 2025]
[Mar 31 2025]
file_synopsis(Text) option Allows for
overwriting the default synopsis. Used to document some not-installed
libraries.[Mar 29 2025]
[Aug 27 2025]
[Aug 26 2025]
[Aug 25 2025]
frame->label: Allow using from any thread.tabbed_window class to forward
this event.[Aug 24 2025]
terminal_image event handling to extend the selection
on SHIFT-click[Aug 23 2025]
Ctrl-<cursor_right> moves by word and cursor movement with
SHIFT enabled extends the selection.[Aug 22 2025]
menu_bar->append: before argument.swipl-win file.pl ...terminal_image<-url to get the link url from a location.[Aug 20 2025]
*Documentation* for help.[Aug 19 2025]
main thread.[Aug 7 2025]
terminal_image->copy.name for ASCII strings.[Aug 6 2025]
[Aug 5 2025]
text.path selection when using dark theme.library(pce_unclip). Getting this to work
requires changes due to modern restrictions of event grabbing.[Aug 4 2025]
frame->input_focus if there is a subwindow that has
defined a keyboard_focus.[Aug 3 2025]
Defaults.user with information on how to map fonts.[Aug 2 2025]
bezier that has its
own code.[Aug 1 2025]
display->confirm with non-visual for argument.frame->expose to be called from any thread.class(epilog) as application managing all epilog frames.
The object @epilog can be used to find and act on existing
epilog windows.[Jul 31 2025]
frame->open_centered on systems that respect position hints.library(pce_openframes) Checks still open frames and allow
the user to act on them.[Jul 30 2025]
num. This is the next step in migrating the non-object
type Int to support floating point numbers. As yet, the type may be
used but int and num behave the same except for conversion from
class real and from a string.terminal_image->font to rescale the terminal.font<-rescale Also fixes the generated object reference to
allow for sub-pixel sizes.frame->set when the window is visible. This allows
for progamatic changes to the size and position of already open
windows.halt This fixes
halting from the GUI tracer.[Jul 29 2025]
[Jul 28 2025]
->open: [position], [display], [grab].
We need to pass this display if we want to controll the display on which the window is opened.
[Jul 29 2025]
[Jul 27 2025]
Applications using font aliases (fixed, normal, bold, etc.) should
work as before. Applications that use explicit font/3 or font/4
terms must be updated in most cases. They keep working, but will
often show the default normal font.
normalised argument for ->open. SDL does not
provide the required information and normalises itself.char now accepts the whole unicode range[Jul 26 2025]
font<-avg_char_width
rather than `<-ex` which is a height rather than a width.class(font)->list_fonts[Jul 25 2025]
[Jul 24 2025]
[Jul 22 2025]
display.theme resource.
Add this to the GUI Preferences to force a theme. Use default
to stop loading a theme file.
display.theme: dark
[Jul 21 2025]
pixmap.image->pixel support.[Jul 20 2025]
open_look style a resource.colour<-distance to compute ĪEāā distance.[Jul 19 2025]
[Jul 18 2025]
text_colour for class text_item Allow for different
colours for the label and text field.toc_imagekind bitmap. If such an image is
displayed, its black pixels are translated to the current foreground
and its white pixels to the current background.uint32_t. RGB values
are now communicated as integers in the range 0..255 (was 16 bits).colour_map[Jul 16 2025]
insert key binding set handling of RET, TAB, etc.[Jul 15 2025]
key_binding <-accelerator_label Moved from PceEmacs to
extensions to library(pce_keybinding).key_top_<n>. They are now called more conventionally `f1..f12`.key_binding<-binding to return a chain Old implementation
just returned the first match. Now we return all key events for
some function. This allows for rendering the preferred one, such as
the one bound to an Apple command key.[Jul 14 2025]
[Jul 13 2025]
gui modifier, supporting Windows key or Apple command key.[Jul 12 2025]
getRootGraphical()[Jul 10 2025]
display<-system_theme Get the user theme preference[Jul 9 2025]
TERM when needed.[Jul 8 2025]
[Jul 7 2025]
[Jul 5 2025]
swipl-win open if there are only hidden or
unmapped frames.window->redraw must invalidate rather than draw.[Jul 3 2025]
[Jul 2 2025]
[Jul 1 2025]
[Jun 28 2025]
terminal_image<-pty_name does not work on Windows
and we cannot safely transfer Windows HANDLE or Prolog IOSTREAM*
over the xpce method API, so we need an additional predicate.[Jun 26 2025]
terminal_image->launch, which allows running processes
in the terminal.[Jun 27 2025]
[Jun 19 2025]
[Jun 17 2025]
-DSDL=ON the only option. This version of xpce no
longer supports X11 and Win32[Jun 16 2025]
[Jun 15 2025]
[Jun 14 2025]
[May 24 2025]
library(terminal): provide embedded terminal.[May 23 2025]
[May 22 2025]
pce->open_url to use SDLs primitives for opening a URL.[May 20 2025]
[May 19 2025]
[May 18 2025]
sdl_send() to execute messages on the SDL main thread[May 10 2025]
[May 5 2025]
[May 4 2025]
[May 3 2025]
src/ray). Otherwise it merely
implements a completely empty binding based on stubs generated
by ChatGPT.[Apr 25 2025]
_NET_WM_ICON property to set an
icon for a frame (toplevel window). We can set the icon through a
.desktop file using StartupWMClass where all windows of a
process are bundled under the same icon. But, xpce set WM_CLASS
from the xpce class name.
This patch adds `display<->wm_class` to set the WM_CLASS
for all toplevel windows. The default is SWI-Prolog. By
setting this to @default, the old behavior is restored.
[Apr 23 2025]
?-
edit(file(File)) to create a new file as advertised.[Apr 18 2025]
[Apr 11 2025]
[Apr 10 2025]
[Apr 9 2025]
[Apr 7 2025]
[Mar 27 2025]
[Mar 26 2025]
[Mar 24 2025]
[Mar 22 2025]
[Mar 19 2025]
library(emacs_extend) explicitly in mode files This is
required to ensure that the term expansion is applied when generating
the .qlf files.[Mar 18 2025]
[Mar 17 2025]
[Mar 15 2025]