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 HANDLE
PL_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]
[Jun 22 2025]
[Jun 19 2025]
[Apr 25 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 ...
[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.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]
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.[Jul 19 2025]
[Jul 18 2025]
text_colour
for class text_item
Allow for different
colours for the label and text field.toc_image
kind
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]
library(pce_keybinding)
.key_top_<n>
. They are now called more conventionally `f1..f12`.[Jul 14 2025]
[Jul 13 2025]
gui
modifier, supporting Windows key or Apple command key.[Jul 12 2025]
getRootGraphical()
[Jul 10 2025]
[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]
[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]