| Did you know ... | Search Documentation: |
| Title for pldoc(default) |
[Dec 3 2025]
[Dec 2 2025]
__auto_type[Nov 30 2025]
objcopy, add the state as an
ELF section. This makes the system a valid ELF executable on which
all ELF tools work normally.zip(true) to create a clean .zip file.[Nov 24 2025]
max_text to exclude ellipsis.
As we already exclude the quotes and escape sequences, excluding the
ellipsis is more consistent. After remarks by Joachim Schimpf.[Nov 23 2025]
swipl-win[Nov 21 2025]
max_depth(+Depth) to use Unicode ā¦
If the encoding of the output supports Unicode. Otherwise the ASCII
sequence ... is emitted.max_text(+Length) for quoted output.[Nov 20 2025]
max_text(+Length) Actually
called text_max in the proposal. Considering all other options
and flags are named `max_*`, I think this should change.
This commit only implements this option for unquoted atoms and strings.
truncated(-Bool). Bool
is unified to true if the term has been truncated due to the
max_depth option.portable(Bool)On Windows, stream timeout only works for sockets. [Nov 19 2025]
--home=dir, set SWI_HOME_DIR.
This ensures that sub processes can access Prolog's home and, when
calling Prolog, execute the same Prolog system.prolog(Tool) option of
process_create/3.swipl -o exe -c input.pl to pass --home=dir
option.[Nov 18 2025]
install() option RUNTIME_DEPENDENCY_SET[Nov 17 2025]
swipl-win.exe under MSVC Now compiles cleanly.
swipl.exe runs fine, including line editing. The GUI is unresponsive
though.[Nov 14 2025]
[] are now threaded as
(invalid) argument list.[Code] if list holds no
single code.[Nov 11 2025]
swipl.bat for testing saved states on Windows. 1. allows
for "external" swipl.bat under Windows (see swipl.sh in l. 133)
[Nov 13 2025]
should_output~N to ignore the argument.
Most implementations ignore the argument. Others interpret it
inconsistently. New code should use ~N~2n as replacement for
~3N.~t Used to
distribute these spaces from the middle. Now distributes them from
the right, compliant with SICStus and ECLiPSe.F. This is like f,
but using uppercase letters for non-normal floats.~a to only accept atoms and compact strings.*~a to only accept atoms and compact strings.*[Nov 12 2025]
[Nov 11 2025]
[Nov 7 2025]
!<num> history handling if command contains a . in the
middle.[Nov 5 2025]
[Nov 3 2025]
bool types for profiling API Should have low impact.
Used by xpce.main, main is signalled to terminate
the process. If the main thread does not do so within the time
specified by the Prolog flag halt_grace_time (default 1 second),
the process is forcefully terminated.[Nov 2 2025]
history to 0 or false disables the
history. An integer value sets the depth.[Oct 27 2025]
protect_static_code
is set.'$clause_from_source'/4, used for setting break-points.[Oct 26 2025]
[Oct 24 2025]
[Oct 23 2025]
[Oct 21 2025]
[Oct 20 2025]
[Oct 14 2025]
[Oct 12 2025]
[Oct 7 2025]
var_tag is set to attvar. This allows reading terms
with attributes. It also supports labeled subterms that allows to
read terms that are directed graphs rather than trees. This includes
cyclic terms. For this we reserve the attributed =. For example
?- A = X{= : f(X)}.
Binds A to a cyclic term equivalent to executing X = f(X). This is
part of ongoing discussions in the PIP working group. It is currently
implemented by ECLiPSe and SWI-Prolog.
[Oct 6 2025]
Dict.put(Path, Value): create new dicts as #{...}.# tag The # tag matches any tag
at the other end and the dict holding the remainder has the # tag.[Oct 3 2025]
attributes(write) This now writes
Var{Att1: Value1, Att2: Value2, ...}, which is valid syntax for
read_term/2 if the Prolog flag var_tag is attvar.[Oct 2 2025]
var_tag flag.var_tag Defines how Var{...} terms are
interpreted. This commit only implements setting and getting the flag.[Oct 1 2025]
# tag The tag # matches any
tag on the other side without instantiating the tag.[Oct 8 2025]
[Oct 2 2025]
'$tmp_file_stream'/4[Oct 1 2025]
[Sep 30 2025]
setjmp()/longjmp out
of the way we get about 15% improvement.[Sep 29 2025]
setjmp() out of the VM main function Using setjmp()
harms register allocation, which slows down the VM. Some data points:
Clang: 6% (Clang-17 on Apple M1 as well as Clang-20 on AMD3950X),
GCC: 13% (GCC-15 on AMD3950X), WASM: 35% (Emscripten 4.0.15 on Node.js
22.19 on AMD3950X). MinGW-14: 18% (Windows binary running on AMD3950X
under Wine).rational_syntax set to natural.[Sep 28 2025]
longjmp() in PL_next_solutions() This
improves performance by about 12%. It does make a couple of scenarios
for stack overflow handling impossible though. This patch merely
introduces O_THROW as C macro to enable/disable this.[Sep 26 2025]
-O2 This produces a smaller binary with
slightly better performance.-O1 in
Debug mode Otherwise local variables with non-overlapping scope are
not merge, causing an Emscripten compiler errorswipl-win Also cleanup handling platform-dependent
cmake options[Sep 25 2025]
[Sep 24 2025]
Possibly we should add a flag to control this behaviour, i.e. whether or not halt/0 inside prolog/0 terminates the process or merely the REPL loop.
[Sep 22 2025]
swipl-win and related functionalityvoid* C11 and
later do not allow for foreign_t (*function)().[Sep 21 2025]
git is the sane thing on MacOS.
With help from @ridgeworksdark theme: avoid navy_blue color for global predicates.[Sep 20 2025]
set_stream(S, alias(user_input)) without locking S.[Sep 16 2025]
tty_control flag between Windows
and Unix. Needs further cleanup, notably a separate definition of
the indexes for the boolean flags.[Sep 15 2025]
--foreign=copy[Sep 13 2025]
Parse -<base>'<digits> Reported by Joachim Schimpf. Thanks.[Sep 10 2025]
[Sep 3 2025]
[Sep 2 2025]
[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.[Mar 11 2025]
call() running in engine.catch(SytemPred, _, _). Such calls are very unlikely interesting
to the debugger.[Mar 10 2025]
p1 :- catch(char_code(_,_), error(_,_), fail).
skip(Frame)
to the possible replies from prolog_trace_interception/4 and deletes
prolog_skip_frame/1.[Mar 7 2025]
[Mar 6 2025]
call(): allow passing the goal using Prolog.Compound()[Mar 4 2025]
[Mar 3 2025]
exit(skip).
The GUI tracer can be simplified as process_trace_action() is dealing
with more details of handling the user continuation.
tracePort() This is dealt
with in the VM backtracing code and (thus) never reached.[Mar 2 2025]
consult() in strict mode[Mar 1 2025]
[Feb 28 2025]
[Feb 27 2025]
PL_ATOM.[Feb 26 2025]
consult() This allows for
Prolog.consult(file1, file2, ..., {module:"project"})?- [user].[Feb 25 2025]
[Feb 24 2025]
[Feb 23 2025]
call() provides nodebug option. Also add Prolog.Term()
class that allows for creating terms from term handles or strings.[Feb 24 2025]
[Feb 23 2025]
[Feb 21 2025]
[Feb 22 2025]
user_error
was flushed on a newline.[Feb 21 2025]
write()int to int64_t Otherwise,
PL_new_solution() is limited to 2G solutions.[Feb 20 2025]
library(block) (SICStus emulation) warns about append/3.
Reported by Peter Ludemann.[Feb 7 2025]
The interaction is similar to prolog_trace_interception/4, used to drive the GUI debugger using callbacks. Given this, it becomes possible to write a debugger for the WASM version for using in the browser. This can either be a traditional console debugger or a graphical debugger similar to the native debugger.
This patch reorganises notably the backtracking and exception handling code in the VM, splitting these large pieces of code into many VM helper functions. It also reorganises several parts of the builtin debugger to facilitate code reuse between the callback and yield based debuggers.
This is a squash commit of the trace-yield-state branch.
[Feb 17 2025]
show_files(+How) option[Feb 18 2025]
[Feb 14 2025]
[Feb 6 2025]
query() and Prolog.forEach()
to control running in a dedicated engine.[Feb 5 2025]
[Feb 4 2025]
[Jan 31 2025]
In due time we should probably consider atom sizes when considering AGC.
[Jan 30 2025]
engines to indicate the system has engine support.SWIPL_HOME macro from swipl-ld[Jan 29 2025]
git grep in the
src directory for C code without false hits from the Prolog tests.[Jan 27 2025]
scripts/configure--pre-js as the
--post-js is loaded
after the module is initialized and thus we cannot initialize
Prolog
there. - Bug in Query constructor, passing an integer rather
than a string.[Jan 24 2025]
[Jan 23 2025]
static_assert() without message<windows.h if
SWIPL_WINDOWS_NATIVE_ACCESS is defined This provides the types and
prototypes for the Swin* functions that provide access to underlying
HANDLE and SOCKET objects.[Jan 22 2025]
^Y bound to paste_quoted.[Jan 20 2025]
[Jan 15 2025]
[Jan 13 2025]
indexed(-Indexes) property Now returns
the indexes as a list of dicts. This supports new features and is
easier to extend as indexing is further refined.[Jan 8 2025]
[Jan 22 2025]
[Jan 20 2025]
indexableCompound() This function is used to see whether
a deep index is possible. It could generate wrong results, both
missing indexes and making useless indexes.[Jan 17 2025]
[Jan 15 2025]
bool.[Jan 14 2025]
addClauseToListIndexes() could skip indexes[Jan 13 2025]
[Jan 15 2025]
clear_frame_vars() when compiled for debugging[Jan 14 2025]
[Jan 13 2025]
mode(-Head)[Jan 12 2025]
[] and [_|_] clause
regardless of the argument.[Jan 13 2025]
skipArgs()
In this case we need to keep context for dealing with H_VOID_N,
skipping N void arguments.[Jan 12 2025]
op(Priority,Associativity,Name) Consistent
with use_module/2 as (now explicitly) claimed. Reported by Rick
Workmann.[Jan 8 2025]
alloc_assessment(): check for malloc() failure[Jan 6 2025]
[Jan 3 2025]
[Jan 5 2025]
Dict.field
Field was flagged as an error (no_function).[Jan 4 2025]
field[1]struct clausestruct functor
Structs may use type name[] as last field for a dynamic array.[Jan 3 2025]
splfr to use new argv_options/4 ability to pass
unknown options.unknown_option(pass) This passes
unknown options to the positional argument list without warning.
This is intended for processing some options while some downstream
component processes the remaining options.[Jan 2 2025]
splfr script into a SWI-Prolog app Allows
for swipl splfr [option..] input ...
Patch also fixes typing in sicstus.h, check the return of
PL_put_term() and adds SP_cons_functor().
[Jan 1 2025]
bool type, avoid goto, add more comments, etc. This is a
preparation before improvements.[Dec 30 2024]
[Dec 29 2024]
[Dec 23 2024]
[Dec 21 2024]
swipl pack rebuild [--dir=dir] [pack ...]swipl pack list --dir=DIR option to list packs installed
in DIR.[Dec 19 2024]
type_error(_,_) So one
does not need to remember the number of arguments.[Dec 18 2024]
incremental property when creating a saved state.[Dec 13 2024]
[Dec 12 2024]
globallimit, locallimit and
traillimit. Reported by Jelmer Jellema.[Dec 10 2024]
operators(Ops) Needs to be kept
consistent with write_options([... ignore_ops(IgnOps)]). Implemented
consistency and deprecated the option. Reported by Mike Elston.[Dec 9 2024]
merge_options(+Dict, +List, Merged) Resulted in no matching
rule exception.[Dec 8 2024]
[Dec 4 2024]
autoload(true) If present, the pack
is installed as autoload pack regardless of autoload option in the
meta-data. If the option is not present, the system asks the user to
install as autoload library if the meta-data contains autoload(true).
If autoloading is not enabled, the INDEX.pl file that may appear
in the pack is removed.
This patch also adds swipl pack install --autoload ...
[Dec 3 2024]
[Dec 2 2024]
Head ==> Body rules.non_terminal property for clauses for Head ==> Body[Nov 29 2024]
[Nov 28 2024]
[Nov 27 2024]
[Nov 25 2024]
[Nov 24 2024]
[Nov 22 2024]
unknown_option with values {ignore,warning,error}.
As a result of PIP-105. May change, but unlikely as their was clear
agreement.
This flag disables the iso flag from reporting errors on unknown
options
because this breaks large parts of SWI-Prolog's libraries. The user
can
now explicitly enable this as well as make the system pring warnings to
investigate possible issues.
[Nov 21 2024]
iso is set to true.next() to set done to true on last answer.
This must be false when used as iterator.library to thread test dir.
This test should not run in the single threaded version.[Nov 20 2024]
query(...)) lost last answer[Nov 18 2024]
bool to correctly distinguish functions returning
true/false/*_OVERFLOW from those raising exceptions and only returning
true/false.[Nov 17 2024]
bool).[Nov 16 2024]
~:D The colon modifier for D forces
the use of Prolog digit grouping using _.[Nov 15 2024]
format_float(+Format) and
format_integer(+Format) Using a format seems a more sensible way to
control writing numbers from write_term/2. This patch removes the
previously introduced radix(+Radix) option. If we want this back we
will implement it on top of format_integer(+Format).
This patch also contains a lot of small code cleanup and some optimization to low-level I/O.
radix(Radix). Experimental. Under
discussion as PIP-105. The current implementation writes, unlike XSB,
the radix prefix. We either need more options or we should consider
another alternative such as integer_format(+Format)
As this patch cleans up a lot of the code regarding numeric output and most will be needed anyway, it is merged despite the fact that the radix option may vanish eventually.
[Nov 14 2024]
~h This provides compatibility to
SICStus. It also makes write/1 output for floats compatible to SICStus
for deciding between fixed point and exponential notation.[Nov 13 2024]
[Nov 8 2024]
[Nov 6 2024]
[Nov 5 2024]
Head[, Guard] ==> DCGBody.libary(prolog_pack): detection of valid download URLs.[Nov 4 2024]
[Nov 3 2024]
plunit requires clib package.[Nov 1 2024]
[Oct 31 2024]
[Oct 29 2024]
[Oct 24 2024]
DISPLAY when running xpce steps
(one more)[Oct 23 2024]
DISPLAY when running xpce steps While
the build works without a DISPLAY variable, an invalid variable causes
the build to fail.wcsxfrm() returns garbage.[Oct 22 2024]
setjmp()/longjmp() Clang demands using
a volatile variable for protecting the throw environment's parent.
This is probably correct, although it seems weird to place this
variable in a register.[Oct 19 2024]
theme/dark.pl[Oct 18 2024]
[f(1), f(2)]..
Reported by Uwe Neumerkel.[Oct 17 2024]
[Oct 15 2024]
[Oct 11 2024]
[Oct 10 2024]
[Oct 9 2024]
sem_timedwait()[Oct 8 2024]
halt_grace_time: graceful timeout limitarg(C,T,F) I.e., arg/3 calls with a known
argument and the 3th index being a first var. These map to the
B_ARG_CF VM instruction.[Oct 7 2024]
BUF_MALLOC These functions could "stack" intermediate results,
overflowing the string stack when used excessively inside a single
foreign predicate or outside calls from Prolog (i.e., using "main"
in foreign code).[Oct 6 2024]
[Oct 5 2024]
[Oct 4 2024]
[Oct 3 2024]
BUF_MALLOC.-g goals.
Reported by Jos de Roounwind(halt(Status)) Older versions used
'$aborted'PL_HALT_WITH_EXCEPTION is used, PL_halt() tries to raise an
exception and returns false. If the halt was cancelled, the return
is now true (was false). Otherwise, the function does not return.[Oct 2 2024]
unwind(halt(Status)) if possible.'$aborted'unwind(...) exceptions.unwind(thread_exit(Term)).unwind(halt(Status)) to halt from an exception.unwind(Term) exceptions.[Sep 30 2024]
time_t is 64 bits, it doesn't seem to localtime()
seems broken handling large time offsets.[Sep 29 2024]
YYYY-MM, which used to be a day too early.[Sep 30 2024]
[Sep 27 2024]
prefer_rationals flag.[Sep 26 2024]
[Sep 25 2024]
[Sep 24 2024]
swipl pack publish --server=URL ... Allows publishing at
an alternative server.swipl pack publish . Broken detection of
git directory and failure do deal with
requires(prolog:flag(_Value)).
to test for existence of a Prolog flag.
[Sep 23 2024]
get_trig(). Fixed using C11
atomics.[Sep 22 2024]
[Sep 21 2024]
insecure(true) or swipl pack install -k <pack> is given,
possible HTTP links are automatically rewritten to HTTPS.[Sep 20 2024]
[Sep 19 2024]
--opt=value Before, the
option was considered boolean if it was the last argument or the next
argument started with a -.[Sep 18 2024]
boolean|Type on last option[Sep 17 2024]
gettid() detection[Sep 16 2024]
[Sep 11 2024]
[Sep 8 2024]
[Sep 5 2024]
$CODESIGN_ID is set to the certificate id to be used
with codesign -s. Unfortunately, this is not the whole story.
As a result, we can no longer load shared object that are not part
of the disk image, which means we cannot use Xquartz, Python or Java.[Sep 4 2024]
swipl.home by using compiled-in relative
path to find the home.bundle to make the system aware it is using the
bundle hierarchy.foreign path definitions from init.pl to the
library(shlib), where we now use conditional compilation to get
the paths right for the target platform.[Sep 3 2024]
bool This
should have very few consequences to applications, even preserving
binary compatibility. The change adopts the upcoming C23 standard
and makes it easier to understand the API.[Sep 2 2024]
true and false throughout the core C code.bool
and its values true and false as defined in <stdbool.h> while
these will be promoted to C keywords in the upcoming C23 standard.[Aug 31 2024]
[Aug 30 2024]
[Aug 29 2024]
dir_sep Complements path_sep and path_max
to get properties on the file naming conventions and limits.[Aug 28 2024]
[Aug 27 2024]
[Aug 26 2024]
swipl-win.exe: Run/New thread menu[Aug 24 2024]
[Aug 23 2024]
source_search_working_directory can be set to
false to disable searching the working directory.[Aug 17 2024]
'$bags':cleanup_bag/2. The early GC can happen if a signal arrives
when these predicates are being called and the signal handler calls GC.[Aug 15 2024]
use_module(M, [Pred as Alias]) for meta-predicates[Aug 14 2024]
[Aug 6 2024]
[Aug 1 2024]
[Jul 25 2024]
[Jul 24 2024]
c_cc and c_cxx flags. Distributions should
normally set these to the common C and C++ compiler of the platform.
Local builds typically leave them default, setting these flags to
the same as used to build SWI-Prolog.[Jul 23 2024]
[Jul 22 2024]
LANG=C[Jul 19 2024]
qlf app to not import the compiled library into user.
This leads to conflicts.[Jul 18 2024]
library(checkselect) and library(checklast). These
modules help debugging reordered arguments for select/3 and last/2
from old non-(de-facto)-standard to common practice long ago.[Jul 12 2024]
swipl pack install . to install using a symlink.[Jul 11 2024]
wcsxfrm() nor immediately returning required size[Jul 10 2024]
[Jul 9 2024]
[Jul 5 2024]
[Jul 8 2024]
trimStacks().[Jul 1 2024]
[Jun 14 2024]
[Jun 8 2024]
[Jun 7 2024]
[Jun 4 2024]
unify() Split into a function that deals with
everything except compounds and one that does the whole thing.
This makes the function a lot easier to understand. This rewrite
has no measurable performance implication and should make it a bit
easier to optimize it further.[Jun 3 2024]
[Jun 1 2024]
Normally, after a fatal crash report and if the system is connected to a terminal, it waits for user input such that the user can attach a debugger to analyse the state. We now wait at max 30 seconds to avoid indefinite waiting if there is no human in the loop after all.
[May 31 2024]
environment_frame in foreign predicate redo.
The incorrect setting causes problems in the new consistency checks
for term_t as well as confusing backtraces.SWIPL() initialization changed in Emscripten Where
SWIPL(Module) used to return a Promise that would complete
returning the same Module, it now returns a new module object
that is independent from the agument passed.[May 30 2024]
[May 29 2024]
These tests may be disabled using cmake -DVALIDATE_API=OFF. The
validation has very little impact on the raw Prolog performance as
most internal use of the C api bypass the public API function. It
may have measurable impact on packages that use the C interface in
a very time critical way.
[May 30 2024]
[May 28 2024]
'$open_xterm'/5.
open_xterm/5 was not documented. This patch removes the implementation
completely if the OS lacks the required POSIX pty support and renames
the predicate to '$open_xterm'/5 if xterm consoles can be supported.
In addition, this patch adds conditional compilation to console support
in library(threadutil) if neither the Windows support nor the xterm
support can be provided.[May 27 2024]
utf8proc package[May 24 2024]
[May 25 2024]
[May 24 2024]
c_stack option. While the
size was documented to be in K-bytes, it actually is in bytes.
Updated the docs for that. Allow for c_stack(0) to use the mininum.[May 22 2024]
signals(BoolOrTime) option.toplevel_print_anon.
This flag is now by default false, hiding toplevel variables that
start with an underscore.[May 20 2024]
[May 16 2024]
-DCMAKE_BUILD_TYPE=Sanitize Defaults to
-fsanitize=address.[May 15 2024]
[May 14 2024]
SWIPL_DEBUG_GC_STACK is set. to swipl --help`.[May 13 2024]
[May 12 2024]
[May 5 2024]
[May 4 2024]
[May 3 2024]
else-branch of if ( !e4 || (is_vmh && !e5) ) <=> e4 && !(is_vmh && !e5) <=> e4 && (!is_vmh || e5)
Consequence is e4-- (which is fine) and e5 -= is_vmh which is either a noop* for is_vmh == 0 or fine for is_vmh != 0 && e5 != NULL.
The noop case raises the error if e5 == NULL. * CLEANUP: Use
unsigned int for variable table bitmap.
This avoids an officially undefined shift in C.
[May 2 2024]
z_crc_t used by minizip zlib This
works around a type conflict over get_crc_table(). Some headers define
this as returning `z_crc_t*` without defining this type while others
(Fedora 40) defines the function as `uint32_t*` and defines z_crc_t.
This patch makes CMake check for the z_crc_t type and, if defined,
use this definition.[May 1 2024]
--foreign=copy to copy DLLs for Windows.[Apr 30 2024]
portrayed(true) and p to add it.'$VAR'(N)sysError(), assertion failure and fatal signal) call new function
printCrashContext() that prints more extensive information about
the crashrepresentation_error(size_t)
exception This exception is raised if the trace skip level =
SKIP_REDO_IN_SKIP.[Apr 28 2024]
[Apr 27 2024]
end_of_file. Now they raise the exception
syntax_error(end_of_string).[Apr 26 2024]
towupper(0xff)
returns 0x9f on Windows.scripts/configure to include termux[Apr 25 2024]
[Apr 23 2024]
[Apr 10 2024]
Now all prolog data is 64 bits, also on 32-bit systems and hence we can access all memory using a tagged pointer.
[Apr 24 2024]
android-execinfo library.[Apr 17 2024]
[Apr 16 2024]
trace flag on
a predicate. This was due to a conflict over the predicate flags.
As the flags field was widened, we can avoid these problems.[Apr 12 2024]
static_assert() after label[Apr 10 2024]
max_integer_size Clang cannot handle
setjmp()/longjmp in PL_next_solution(), but it can in the simple
evalExpression() function. This does not have measurable impact on
performance, so we enabled this as default. This fixes limiting the
integer size for WASM and Clang builds on Linux. This problem did
not surface on the MacOS version.[Apr 9 2024]
[Apr 8 2024]
-Wconversion With 64 bit word it is easy
to get conversion errors. Compiling with -Wconversion helps
tracking these.scripts/gdbinit Share gdb script with useful debugging
commands. [no ci][Apr 5 2024]
[Apr 3 2024]
forAtomsInClause() handling of B_*_?C instructions These called
PL_unregister_atom() on the atom, rather than the argument function.[Mar 28 2024]
[Mar 27 2024]
$CFLAGS and $CXXFLAGS in a CMake build types[Mar 18 2024]
[Feb 1 2024]
This patch also involves small cleanups and fixes encountered while
reading the code and use FOR_TABLE() everywhere, removing the old
for_table() macro.
[Mar 29 2024]
get_string_text()markAtomsOnGlobalStack() safe This could crash on all
platforms. It is notably dangerous using the experimental O_M64
model.[Apr 5 2024]
max_integer_size test for emscripten Doesn't handle
longjmp() correctly in release mode. Works in debug mode, but that
is not useful.[Mar 31 2024]
[Apr 3 2024]
forAtomsInClause() handling of B_*_?C instructions These called
PL_unregister_atom() on the atom, rather than the argument function.[Mar 29 2024]
[Mar 28 2024]
[Mar 27 2024]
[Mar 26 2024]
[Mar 25 2024]
pthread_setname_np()
test This used to use -Werror to ensure a compiler failure if the
number of arguments do not match the prototype, but this is already
enforced in todays compilers.[Mar 24 2024]
Dict.get(key,Default)swipl-win.exe Was broken since
recent changes keeping track of fileno. Reported by Jan Burse.[Mar 23 2024]
max_integer_size This flag limits the allocations
on behalve of bignum and rational number processing, DoS attacks
by exhausting memory using huge numbers as well as poor interrupt
handling due to lack of signal handling inside the bignum libraries.[Mar 21 2024]
[Mar 18 2024]
[Mar 15 2024]
tellString()/toldString() could fail to reclaim the temporary stream
object.[Mar 14 2024]
help(Name/Arity): handle user predicates.[Mar 13 2024]
inherit_from(Thread) option or using
PL_thread_attach_engine() (which inherits from main), we may copy
current_input or current_output from a temporary redirect.
The reference counting when copying the streams was broken, possibly
causing memory corruption. This is improved, but not 100% safe.
However,
we now set the current_input and current_output to user_input and
user_output, which typically never change.
[Mar 12 2024]
[Mar 11 2024]
trace(Head, Port(Condition))[Mar 12 2024]
fileno field to the IOSTREAM struct.[Mar 11 2024]
[Mar 10 2024]
prolog:Feature requirements.[Mar 7 2024]
stream_property(S, file_no(N)) safe. This used to be
subject to race conditions between the enumerating thread and threads
that close the underlying stream. We now copy the file handle as it
was found when creating the stream to the main stream structure.[Mar 6 2024]
FALSE and document
this is valid. After comment by Peter Ludemann.[Mar 5 2024]
release() on GC or cleanup after
PL_free_blob()[Mar 4 2024]
[Mar 3 2024]
[Mar 2 2024]
[Mar 1 2024]
[Jan 18 2025]
[Nov 12 2025]
[Jul 22 2025]
[Sep 7 2024]
[Aug 29 2024]
swi-prolog-win This package provides
the Qt console.[Aug 7 2023]
[Aug 2 2023]
[May 24 2021]
[Mar 12 2019]
[Sep 30 2025]
gcc -O3[Nov 12 2025]
LIBBDB_ROOT_DIR cmake variable[Sep 30 2025]
gcc -O3[Oct 27 2025]
[Jan 22 2025]
[Nov 19 2025]
prolog(Tool) This allows
Prolog running one of its tools, with the guarantee that we use the
tools from the same version. This provides a hook prolog:prolog_tool/4
that allows embedded systems to redefine how the Prolog tools should
be executed.[Nov 6 2025]
[Oct 20 2025]
lirary(uri).[Oct 10 2025]
[Oct 9 2025]
urn-schema URIs can have a query and fragment field.[Oct 8 2025]
[Jun 9 2023]
file_type(regular) option This
allows 'directory_member/3' to generate regular (non-directory)
files with option 'file_type(regular)', in accordance with how
'absolute_file_name/3' treats this option.[Sep 30 2025]
gcc -O3[Jun 19 2025]
[May 23 2025]
[Jan 23 2025]
SWIPL_WINDOWS_NATIVE_ACCESS for 9.3.19[Jan 13 2025]
[Dec 28 2024]
[Oct 2 2024]
[Nov 24 2025]
[Jun 22 2025]
[Jun 19 2025]
[Apr 11 2025]
[Apr 3 2025]
[Nov 23 2025]
# as anonymous tag.[Oct 27 2025]
[Oct 24 2025]
json[Oct 17 2025]
HttpOnly and Secure cookie properties
in http_session.pl http_set_session_options/1 now supports the
http_only(true) and secure(true) options, adding these properties to
the session cookie. Both default to false for compatibility reasons.
Suggested by Mohammed Almutawah to mitigate XSS scripting in SWISH.
[Sep 30 2025]
[Sep 28 2025]
?- X = 10, D = {|json(X)||{"x": X}|}
D = _{x:10}.
[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]
[Jan 26 2025]
[Jan 17 2025]
[Jan 3 2025]
[Nov 17 2025]
[Nov 16 2025]
cmake -DSYSTEM_LIBEDIT=ON.
This should simplify building[Nov 12 2025]
el_wset()
using EL_WORDCHARS that is provided in some recent copies of
libedit. When available, it is used to set the word chars to only
"_" (in addition to iswalnum()).[Nov 11 2025]
[Nov 3 2025]
dup() on the file handles to avoid closing
them. We now add this fact to the context, initiated before the dup().[Nov 2 2025]
[Nov 1 2025]
[Oct 31 2025]
swipl-win.exe history data in current version.[Oct 29 2025]
[Oct 28 2025]
getsize(-Size) support.[Oct 23 2025]
[Oct 17 2025]
[Sep 30 2025]
gcc -O3[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]
[Jan 22 2025]
[Oct 6 2024]
[Jan 14 2025]
\keyitem{Key}{Value} for describing keys of a dict[Sep 27 2025]
python, which is
Python3.
There isn't any support for python2 anymore, since 2020, and the windows installer does not install a python3.exe.
[Sep 30 2025]
gcc -O3 Also replaces local
error functions with calls to PL_*_error()[Jan 23 2025]
windows.h, needed for SWI-Prolog 9.3.19 and up This
is required as SWI-Stream.h no longer includes the windows header.[Jan 15 2025]
pengine. This allows for modifying the
location on a pengine server.[Oct 2 2024]
[Nov 19 2025]
% in tables.[Nov 3 2025]
[Oct 27 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]
[Jan 22 2025]
:- use_module(...).
Also improve _(can be autoloaded)_ message.[Oct 27 2025]
[Sep 30 2025]
gcc -O3[Feb 13 2025]
endpoint(URL) This raised an
exception in select_option/3 due to an insufficiently instantiated
argument.[Jan 4 2025]
[Jan 2 2025]
[Sep 30 2025]
gcc -O3[Sep 30 2025]
gcc -O3[Feb 2 2025]
[Jan 11 2025]
pytest of the Python module.janus_swi explicitly as janus This is needed when
Prolog is embedded into Python.[Sep 30 2025]
gcc -O3[Sep 30 2025]
gcc -O3[Oct 2 2024]
[Nov 14 2025]
[Dec 2 2025]
syntax_table->keywords to register known keywords for
a syntax[Dec 1 2025]
text_buffer->for_all_comments Replaced by
text_buffer->for_all_syntax, which qualifies additional syntax
types. Currently only quoted material.syntax_table->prolog: bool replaced by
syntax_table->languagelsp_offset(line,character) --> offset Translate
position in LSP notation to an offset.text_buffer<-lsp_column Produces the character field
of an LSP range start/end. This is the position inside the line in
UTF-16 code points.[Nov 29 2025]
editor->align_line to avoid modifications if alignment
is already satisfied.[Nov 28 2025]
[Nov 24 2025]
text_buffer to allow forwarding changes incrementally
This implements methods to generate LSP (Language Server Protocol)
compatible incremental change events. The basic method is
text_buffer<-lsp_changes, which returns a chain of text_change
objects that provide the changed range and replacement text.[Nov 17 2025]
atomic_compare_exchange_strong()[Nov 14 2025]
[Nov 12 2025]
SIGWINCH[Nov 11 2025]
swipl-win to handle interrupt in the console that started
swipl-win. What should we do if there is no terminal, i.e., if
swipl-win is started as app directly from the GUI? It should not
get interrupt signals in that case, but what if it gets one anyway?pthread_kill() to update client thread of window
size change. This fixes resizing Epilog windows cooperation with
libedit. To work correctly, the libedit package must be updated
as well.[Nov 9 2025]
library(pce).[Nov 7 2025]
graphical->pdf for generating PDF. This functionality is still
rather minimal. It will be extended in the future.int_item up/down arrows. And some code
cleanup.[Nov 6 2025]
font_item to reflect current possibilities better.[Nov 5 2025]
Makefile,
updates the Prolog helpers and minimal updates to reflect some aspects
of XPCE version 7 in the documentation.
Eventually the build process must be migrated to CMake, most images should be regenerated and the text reviewed and updated where needed.
graphical->pdf to write PDF to a file[Nov 4 2025]
library(man/v_visual). This allows
showing the GUI inspector stand-alone.[Nov 3 2025]
[Nov 2 2025]
[Oct 31 2025]
[Oct 30 2025]
frame<-open_file and frame<-save_file: use OS dialog
to prompt for a file. These new methods use SDL3's interface to file
dialog windows to ask for a file for reading or writing. Tested to
work on MacOS, Windows and Fedora using Gnome.[Oct 28 2025]
display<-theme if a theme was
already loaded.frame<-confirm Also allows this method to
run from any thread.[Oct 27 2025]
[Oct 26 2025]
[Oct 24 2025]
graphical->unlink destroys its
`<-layout_interface`, i.e., the table_cell. Using a code reference
delays the actual deallocation.[Oct 23 2025]
libedit package.[Oct 22 2025]
frame->wait to be called from any thread.[Oct 21 2025]
frame<-confirm and friends.[Oct 20 2025]
Debug menu.swipl-win: make sure all
messages printed to the main thread end up in an Epilog window.[Oct 16 2025]
[Oct 12 2025]
\e[@. This escape sequence is
used for inserting into the commandline. Its default should be 1 rather
than 0. This fixes inserting into the commandline, notably on Windows.file.[Oct 7 2025]
[Oct 1 2025]
[Sep 30 2025]
gcc -O3[Sep 26 2025]
[Sep 24 2025]
[Sep 23 2025]
[Sep 22 2025]
[Sep 21 2025]
[Sep 9 2025]
[Sep 3 2025]
\e[3~. This provides
forward delete on Linux, but not on Windows. Probably the libedit
port needs additional patching.[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]
[Mar 10 2025]
skip(Frame) reply.[Feb 12 2025]
[Jan 22 2025]
display<-selection.[Jan 4 2025]
-Wstringop-truncation warning.[Jan 3 2025]