Did you know ... Search Documentation:
Title for pldoc(default)
Branch: stable (switch to development),
version to version

SWI-Prolog Changelog from version 8.0.3 to 8.2.0

[May 27 2020]

  • FIXED: Download snap source for stable from the correct repo

[May 25 2020]

  • PORT: Handle Windows NetBIOS file names.
  • DOC: Fix typos in manual
  • DOC: Use hyphen as word-separator for long options * For ease of reference, the options names are consistent across the reference manual, man page, and --help message.
    • For better readability, the options names stand out from their corresponding Prolog flags. e.g. --stack-limit vs stack_limit
  • DOC: Fix missing hyphens in command line options
  • DOC: Remove invalid short options
  • DOC: Sort prolog flags
  • PORT: Windows: Recognise //wfs$/ as a share name. Eric Tauber.

[May 24 2020]

  • ENHANCED: Issue#218: portray_clause/2,3 to handle variable_names(Bindings) option (Markus Triska) and move documentation from the core to PlDoc docs from library(listing).

[May 22 2020]

  • DOC: Fix typos in manual

[May 24 2020]

  • MODIFIED: When term-expanding a directive, see whether the goal can be autoloaded and if so, do this. This deals with the common case where a directive is also defined as a predicate. Failing to autoload does not generate an error and thus allows expansion to continue as normal.

[May 21 2020]

  • FIXED: Do not save tmp_dir Prolog flag. Matt Lilley.

[May 20 2020]

  • FIXED: rounding mode when promoting negative rationals to floats
  • CLEANUP: Silence gcc-10 warnings (benign)
  • FIXED: Ensure separation of S_DYNAMIC and S_STATIC VMI (decompilation)

[May 19 2020]

  • FIXED: rational tripwire for negative rational numbers. Rick Workman.
  • PORT: Using _BitScanReverse/_BitScanReverse64 as according to Microsoft documentation
  • FIXED: Build for Win32: separate VMI for T_TRY_MPZ. Relates to 2d6fa8902f8ae4f00dfddde5b6d3198ba19fd099
  • ENHANCED: save_settings/0: raise error if there is no default file known to save the settings.

[May 18 2020]

  • CLEANUP: Remove old code for separating VMI addresses.
  • FIXED: try to ensure that compilers don't merge identical looking VMI functions. Check the WAM table does not contain duplicate entries when Prolog is initialized.

[May 17 2020]

  • FIXED: Isue#592: Help/submit bug report link. Alvin Seville.

[May 15 2020]

  • MODIFIED: argv_options/3: map - in option names to _, compatible with SWI-Prolog's option handling in recent versions.
  • MODIFIED: PL_unify_float() and PL_put_float() to turn any NaN into the Prolog canonical NaN (1.5NaN).

[May 14 2020]

  • FIXED: Re-allow DCGs in sandboxed mode. Daan van Berkel.
  • PORT: Updated Large File Support in minizip to use existing CMake detection logic
  • DOC: Improved intro text for library(yall) intro I have added more explanations regarding the concept of "closure" as used in Prolog and extended the description of the rest. It feels better and is hopefully clearer to a newcomer, but in the end it's matter of taste. I was unable to justify the text to 73 columns though, I just kept to this as close as possible,

[May 13 2020]

  • FIXED: XSB emulation of parsort/4. Ed Schwartz.
  • BUILD: Don't use single quotes around arguments to -g options, to remain compatible with building on Windows
  • BUILD: Also define SWIPL_CMAKE_NAMESPACE and SWIPL_INSTALL_CMAKE_CONFIG_DIR when building for Windows
  • ADDED: var_property/2: singleton property
  • VERSION: Merged devel version from commit 8dbdb7709e39c1fb7ce08f3bec27f6d133128370
  • FIXED: PL_assert(): uninitialized var. Joost Geurts
  • BUILD: Fixed dependency problem, often showing up as below, but depending on the timing other errors are possible. ERROR: source_sink `library(swi_hooks)' does not exist

[May 12 2020]

  • ADDED: PL_assert(). Suggested by Barry Evans.
  • CLEANUP: Put exports of pl-comp.c in new pl-comp.h

[May 10 2020]

  • ADDED: CMake export config to SWIPL install. This adds files in lib/cmake/swipl which can be used by CMake in an external project to automatically find the swipl program or library as needed, including dependencies such as include paths.

[May 12 2020]

  • FIXED: Atom garbage collection marking issue using copy_term/2 and friends together with stack freezing. This notably happens with nb_setarg/3 and exception handling. Diagnosed and fixed by Keri Harris.
  • PORT: deal with mmap without MAP_ANONYMOUS or MAP_ANON. This assumes such systems do an anonymous map if fd is -1.

[May 7 2020]

  • FIXED: `swipl -c file.pl` without relying on autoloading.
  • PORT: MacOS (clang 11): disable support for gcc threaded bytecode extension (VMCODE_IS_ADDRESS) as this slows down SWI-Prolog by about 30% instead of improving the performance with about 3% (gcc-9).
  • MODIFIED: Move the tables library from library(dialect/xsb/tables) to the main library as the primary interface to reason about created tables.
  • MODIFIED: Memory management for temporary strings used internally and through the foreign language interface functions such as PL_get_nchars(). Such strings used to be managed (by default) in a ring of 16 strings, reusing old buffers. Recent versions used memory mapping for long strings and unmapped these. This exposed a problem that input strings could be incorrectly reused early. Together with Keri Harris we designed and implemented a new stack based management for such strings. Temporary strings are now reclaimed on exit (or failure) of a foreign predicate that created them. In addition, there is this C block ({...}) that may be used to scope strings:
    PL_STRINGS_MARK();
    <code>
    PL_STRINGS_RELEASE();

    A new flag string_stack_tripwire can be set to get a disagnostic message printed if the string stack reaches some depth limit. This may hint at using the above macros to reduce resource usage.

    In addition a number of PL_* functions that used to step the string ring now use the above macros to reduce resource usage.

[May 5 2020]

  • INSTALL: Fixed installation of INDEX.pl files
  • TEST: Fixed for non_terminal property.
  • ENHANCED: set non_terminal property on any predicate that has at least one clause written as Head --> Body.
  • ADDED: library(prolog_deps) to also look at non-autoload libraries. Allows for e.g. get http_open/3 into the imports using PceEmacs C-cC-d.
  • ADDED: INDEX.pl files to all directories that are useful for automatic dependency generation.

[May 3 2020]

  • MODIFIED: Emptied and deprecated library_directory/1. The definitions have been moved to file_search_path/2. Modified the definition of the autoload alias to explicitly specify - app_config(lib)).
    • pce(prolog/lib)). - swi(library)).

    This prepares for indexing all Prolog library directories. This will be used to simplify managing what is autoloaded and for the IDE to add dependecies automatically.

[May 4 2020]

  • ENHANCED: Try to reduce the probability of getting into a deadlock while reporting a crash.
  • DOC: Foreign debugging.
  • ADDED: PL_prolog_debug()/PL_prolog_nodebug() foreign functions

[May 1 2020]

  • ADDED: Prolog flag abi_version
  • ADDED: API to access dicts from C.
  • MODIFIED: Allow for both _ and - as word separators for commandline arguments.

[Apr 30 2020]

  • FIXED: help/1 to produce valid html (missing <dl> around generated discriptions).
  • ADDED: Interfaces and documentation to access and understand binary compatibility of the various interfaces between SWI-Prolog versions.

[Apr 29 2020]

  • ADDED: library(prolog_deps) to compute dependency directives for a file and optionally edit the file in-place to add the directives.
  • FIXED: portray_clause/1 layout for lists in wrapped terms.
  • DOC: maplist/1-4.
  • XSB: Activated test_negcycle.P test. Prevent tests from interacting.
  • TEST: Disabled tnot/1 floundering test.
  • TEST: Use .. as subgoal_abstract(N) instead of flag as we cannot change to abstract tabling at runtime.

[Apr 28 2020]

  • FIXED: abolish_table_subgoals/1: check for goal to be acyclic and raise an error if it is cyclic (XSB compatibility).
  • FIXED: subgoal_size restraint for single threaded case.

[Apr 27 2020]

  • XSB: Started set_prolog_flag/2 mapping. Mapping unify_with_occurs_check
  • XSB: Added close_open_tables/1 (dummy)
  • XSB: test_large_tabled_terms test: use bounded_rationality. Var limit tests succeeds for SWI as we do not have such a limit.

[Apr 26 2020]

  • XSB: compiler emulation to deal with the flags max_table_subgoal_size and max_table_subgoal_size_action.
  • CLEANUP: xsb/source.pl compiler emulator to use a DCG and allow maintaining state.
  • TEST: Modified XSB test to be conform XSB docs rather than the implementation. Final behaviour needs to be decided upon.
  • ENHANCED: get_residual/2 returns system undefined goals without qualification.
  • FIXED: autoloading from term_expansion/2 leads ton autoload loop.

[Apr 27 2020]

  • PORT: Allow SIGABRT not to be defined.

[Apr 26 2020]

  • FIXED: saveWakeup() could crash because PL_open_foreign_frame() can shift the stacks.
  • FIXED: Possible assertion failure in deleteCanonicalDir(). Lev Lamberov.

[Apr 25 2020]

  • BUILD: Drop TIPC if threads are not enabled.
  • DOC: Issue#574: order_by/2 variable handling
  • ENHANCED: Performance of bagof and setof for variables in the existential variables. Reported by Jan Burse.

[Apr 24 2020]

  • FIXED: split_string/4 on long strings (Jos de Roo).
  • ADDED: BUF_NORING to avoid text from being buffered in the text ring and thus possibly be overwritten.

[Apr 23 2020]

  • FIXED: Non-deterministic foreign predicates returning FALSE still had their PL_PRUNED handler called, possibly leading to double free. Keri Harris.

[Apr 22 2020]

  • ADDED: subgoal_abstract radial constraint. Currently only implements the tripwire actions. The action abstract is the next target

[Apr 23 2020]

  • FIXED: Properly copy tabling restraints from parent when creating a new thread. Jacco van Ossenbruggen.

[Apr 22 2020]

  • SANDBOX: Allow for size_abstract_term/3.
  • SANDBOX: Allow setting the tabling tripwire flags.
  • SNAP: Added tcmalloc
  • ADDED: CHK_ATOM_GARBAGE_COLLECTED Prolog debug topic. The sanity-checks provided by this topic used to be provided by CHK_SECURE.

[Apr 21 2020]

[Apr 20 2020]

  • DOC: make sure archive package is built before prolog_pack documentation.
  • DOC: Wrong ssl dependency (gives Prolog error messages during build, otherwise harmless).

[Apr 17 2020]

  • FIXED: GC may miss threads if thread_highest_id is decremented below a newly instantiated thread

[Apr 19 2020]

  • MACOS: Added distribution build using gcc 9

[Apr 18 2020]

  • PORT: Use CMake to find out whether the 64 bit file functions are supported for minizip.

[Apr 15 2020]

  • ENHANCED: zipper_open_current/3: Use full buffering.
  • FIXED: current_table/2 to consider emptied shared tables as non-existent. Jacco van Ossenbruggen.
  • FIXED: Inconsistent index for call subsumption may cause answers to be lost.
  • MODIFIED: Change the default for exchanging arity from int to size_t. The use of int was deprecated for a long time. The old behaviour can be regained using #define PL_ARITY_AS_SIZE 0 before loading SWI-Prolog.h.
  • PORT: Deal with missing MAP_ANONYMOUS if MAP_ANON exists.

[Apr 14 2020]

  • FIXED: Avoid code walker to walk over wrappers.
  • FIXED: trie_gen_compiled/2,3 to fail on clause/2,3 and retract/1, claiming to have no clauses. Fixes a crash when trying to index the clauses. These are two rather weird predicates ...

[Apr 10 2020]

  • DOC: aggregate_all/3: document constant memory usage of special cases. Boris Vassilev.
  • DOC: Update number/1 for rationals. David Tonhofer.
  • PORT: Check for AF_UNIX socket support.

[Apr 9 2020]

  • FIXED: library(sandbox): we need to load our dependencies explicitly as the sandbox library requires its dependencies while being loaded.
  • FIXED: message_to_string/2 to handle ansi(Class, Fmt, Args) as Fmt-Args rather than ignoring it.
  • CMAKE: Config error for Windows.

[Apr 7 2020]

  • FIXED: Possible race condition in reference counting for predicates.
  • FIXED: findall/3 memory pool allocation for new tmp_malloc(). With help from Edison Mera.
  • FIXED: Possible data corruption, in most recent versions crash, when writing a long string using a Prolog-defined stream (see open_prolog_stream/4).

[Apr 6 2020]

[Apr 4 2020]

  • FIXED: Possible wrong NaN from the nexttoward/1 function.
  • PORT: 1.0**NaN is not always 1.0 in all C versions.

[Apr 3 2020]

  • MODIFIED: float_fractional_part/1 and float_integer_part/1 functions to return standard NaN (fix) or raise an exception if float_undefined is set to error.
  • INSTALL: When installing tests, add them to the optional component "Tests"
  • TEST: Fixed test thread/thr_local_1.pl.
  • FIXED: Ensure we have a universal NaN that is 1.5NaN. This test failed on mipsel.
  • TEST: Fixed test_clause_gc.pl test as this can run out of stack since we combine the stacks.
  • TEST: Provide test_tmp_dir search path when running installed tests such that they can run without writing in the test directory.
  • TEST: remove protocol(x) from thread_agc test.
  • DOC: Provide pldoc_to_tex flag when generating LaTeX, so code can decide to avoid loading dependencies that may not be present.

[Apr 2 2020]

  • PORT: Replace GCC __sync_* functions by more recent __atomic_* primitives to improve portability.
  • DOC: PL_initialise() referred to old libpl.dll. Gerhard Groehner.
  • ENHANCED: Use temporary allocation for buffers and discard large buffers when making them empty.
  • ENHANCED: Use new tmp_malloc() for segstacks (used as temporary store for many operations that iterate over complex terms).

[Mar 31 2020]

  • CLEANUP: No longer allocate array for built-in atoms. This array is no longer used (saves 85Kbytes memory).
  • INSTALL: Added CMake option SWIPL_INSTALL_IN_SHARE=ON to install architecture indepedent files in <prefix>/share/swipl/. Currently only used for the documentation and examples. Future versions may also place the library here. Lev Lamberov, Debian maintainer.

[Mar 30 2020]

[Mar 29 2020]

[Mar 27 2020]

  • FIXED: Stack alloc statistics
  • ENHANCED: Use new mmap() based allocation more generally for large temporary allocations. Currently used by findall/3 and friends. There are more candidates where this can help, such as buffers and stacks for cycle detection, enumerating large terms, etc.
  • BUILD: Install the manual index as part of the documentation installation. Lev Lamberov.
  • ENHANCED: Use mmap() based allocation for the stacks such that we can release these to the OS if we use an allocator that is not well suited for huge temporary stack allocations.

[Mar 26 2020]

[Mar 25 2020]

  • ADDED: check_installation/0: check for tcmalloc.
  • PORT: Make tcmalloc setup work on MacOS. Signalled by Paulo Moura.
  • PORT: Use our internal PL_dlsym() and work without tcmalloc
  • ADDED: thread_idle/2 and, when linked to tcmalloc, malloc_property/1 and set_malloc/1.
  • ADDED: Detect tcmalloc() and link swipl using this if provided.
  • PORT: Added CMake script to find tcmalloc

[Mar 23 2020]

  • CMAKE: Correctly set policies
  • FIXED: mpq_to_double() rounding for 32-bit platforms.
  • FIXED: Spurious messages "Could not reenable *-stack" after a stack overflow.
  • FIXED: Negative unbounded numbers on 32-bit hardware caused a crash.
  • BUILD: Use new option --no-packs to avoid builds failing due to broken or conflicting user packs.
  • ADDED: Option `--no-packs` to prevent attaching packs.

[Mar 22 2020]

  • ADDED: float_parts/4: float_parts(+Float, -Mantissa, -Base, -Exponent)
  • FIXED: saved state handling for --foreign=save.

[Mar 21 2020]

  • PORT: avoid multiple definitions of global variables as they will be rejected with GCC 10

[Mar 20 2020]

  • TEST: Do not include source directories for dependent packages in the test library search path: these libraries are installed.
  • BUILD: Better handling of dependencies for building the docs.
  • FIXED: Make compile without GMP and fix detection of {-1,0,1}**X for overflow.
  • CLEANUP: Remove already defined predicates.
  • FIXED: silence autoload/2 if the predicate was already autoloaded from the same location.
  • FIXED: check/0: incorrect redefined messages for '$exported_op'/3 and '$autoload'/3. Paulo Moura.

[Mar 19 2020]

  • ENHANCED: more work on integrating IEEE754 floats. Notably resolve division by zero issues.

[Mar 18 2020]

  • FIXED: ./3: (Dict.Func): allow built-in dict functions get/1, put/1 and put/2 to work on association lists.
  • FIXED: Memory leak in hash assessment keys allocated during assess_scan_clauses.
  • MODIFIED: module_property/2: if module exports no operators, succeed with an empty list. Paulo Moura.

[Mar 11 2020]

  • TEST: Omit equivalence rounding check on Rz.
  • FIXED: pow/2 function: integer corner cases Some integer special cases weren't consistent with C11 pow() semantics - fixed. Includes 0**nan => nan.
  • FIXED: dealing with floats in compiled tries.

[Mar 10 2020]

  • FIXED: Do not set encoding when including from a stream. This is needed for SWISH to include a Unicode document from an ISO Latin 1 document.
  • FIXED: writef/2 handling of justification using e.g., %Nl resulted in a format error.

[Mar 9 2020]

  • ENHANCED: Cover more pow/2 cases and add tests.
  • TEST: Avoid failure when IEEE 754 rounding test for to_negative is the same as to_positive. Should (probably) not happen, but does on some platforms.
  • FIXED: Possible crash on deeply nested terms in tries.

[Mar 8 2020]

[Mar 7 2020]

  • DOC: Deprecate epsilon/0 in favour of nexttoward/2.
  • FIXED: Raise a float underflow exception when converting a subnormal float to an MPQ number. This patch moves C header info from several .h files into a new pl-arith.h header.
  • ENHANCED: More subtle tracking of generations that access a (dynamic) predicate. This avoids old open choice points on dynamic predicates blocking effective clause GC. In some scenarios this can drastically reduce memory usage.

[Mar 1 2020]

[Mar 5 2020]

[Mar 4 2020]

  • PORT: environ detection for older MacOS versions (missing declarations for config.h.cmake).
  • BUILD: Build Win64 version against OpenJDK 13 instead of the latest (Java 7) version that installs under Wine.
  • FIXED: Get foreign search setup better to reduce search on Windows and search the directory holding swipl.exe in the build environment.
  • FIXED: handling rational numbers in records could result in wrong value or a crash. Records are used (for example) in recorda/2, findall/3, thread_send_message/2.

[Mar 3 2020]

[Feb 29 2020]

  • DOC: Updated instructions for cross-compiling SWI-Prolog for Windows using Linux.

[Feb 27 2020]

  • TEST: Additional fixes and test for rational and IEEE 754 tests.
    1. Rounding tests fixed to test mode. Requires imprecise test, e.g., not cos(-π), with results within 1ULP. 2. Added tests for generating exceptions (not on all functions). 3. Fixed ** tests for current operator priorities.
  • PORT: lgamma fix for sign of inf on some platforms.

[Feb 28 2020]

  • ADDED: '$portray_text_enabled'/1 to allow the GUI tracer to inspect text portray mode without cross-module calls.

[Feb 27 2020]

  • FIXED: prolog_program_clause/2: allow filtering on a specific module as the docs says is possible.
  • TEST: Added roundtrip tests for rational/1 and rationalize/1 functions.
  • PORT: Replace deprecated finite() with isfinite(). Paulo Moura.
  • PORT: Added test for HAVE_IP_MREQN to Sockets.cmake
  • FIXED: Copied new rationalize/1 implementation from ECLiPSe by Joachim Schimpf. Thanks!

[Feb 25 2020]

[Feb 24 2020]

  • FIXED: Garbage collection handling for walking remaining clauses for the *+MPQ instructions. Reported by Jos de Roo and Peter Ludemann.

[Feb 23 2020]

  • ADDED: function lcm/2. This patch also FIXES gcd(X,0) to evaluate to X rather than to 0.

[Feb 21 2020]

[Feb 23 2020]

  • FIXED: rationalize/1 for handling subnormal floats.
  • FIXED: MPQ to double conversion near the end of the float range.

[Feb 22 2020]

  • FIXED: round/1, ceil/1, floor/1, truncate/1 functions on special floats. Some of these could crash (SIGFPE).
  • FIXED: Avoid FPE on rational(inf). Jan Burse.

[Feb 21 2020]

  • TEST: UTF-8 library.
  • FIXED: print_term/2: could output '$VAR'(N) terms instead of the variable.
  • PORT: Better handling of memory barriers. After discussion with Röbke Geenen.

[Feb 20 2020]

  • FIXED: MemoryBarrier under MSVC for 32-bit targets is an inline function instead of a #define

[Feb 21 2020]

  • ENHANCED: Allow for nested print_message/2, only preventing real unbounded recursion.

[Feb 20 2020]

  • ADDED: Prolog flags float_min and float_max and float_max_integer.
  • ENHANCED: Use ECLiPSe MPQ functions for rationalize/1 and converting a rational number into a float. This implementation has much better properties than our old implementation.
  • DOC: roundtoward/2 function.

[Feb 19 2020]

  • ADDED: Compiler/VM support for roundtoward/2. This patch also reverses the order in which function arguments are evakuated from left-to-right to right-to-left. This order was already used for non-optimized arithmetic. This should have no consequences except for the raised exceptions if a function has multiple invalid arguments. For example, in A is 1/0 + 2/0 the exception now originates from 2/0.
  • ADDED: roundtoward/2 function.

[Feb 20 2020]

  • FIXED: Memory leak on exception during GMP arithmetic in optimized mode.
  • ENHANCED: Further implementation of IEEE 754 support by Rick Workman. The MODIFIED the float rounding mode nearest into to_nearest. The name nearest was an oversight. SWI-Prolog now has only a single NaN value, which implies NaN is equal in term comparison. The patches mostly fix returning NaN, Inf and -0.0 where appropriate from many of the built-in functions.

[Feb 19 2020]

  • FIXED: Debug statement in pl-tabling.c which depended on multi-threading being enabled without checking if multi-threading is enabled.
  • FIXED: Use the lock/unlock code for streams also in the single threaded version as this ensures current write to wchar_t encoded streams. Issue#551, Röbke Geenen
  • FIXED: swipl-win.exe (Windows): padding to TCHAR. Röbke Geenen.

[Feb 18 2020]

  • FIXED: SWIPL_SHARED_LIB=OFF, MULTI_THREADED=OFF: C_CFLAGS being undefined when empty
  • MSVC: Fixed LNK1114 error when building libswipl statically

[Feb 19 2020]

  • FIXED: Missing PL_register_atom() when compiling module:X. Can lead to the atom module to be garbage collected or its reference count dropping below zero.

[Feb 17 2020]

  • PORT: Windows: Do not include manifest when building with MSVC, since it causes a duplicate resource error. Also uses a textual manifest for the MinGW compilation rather than a binary blob.

[Feb 18 2020]

  • FIXED: Load `library(dialect/swi/syspred_options))` explicitly to have PceEmacs colour (in)valid predicate options. Loading was lost with the migration to autoloading.
  • FIXED: print_term/2: add a spaces in X + -1.
  • FIXED: print_term/2: avoid quoting solo operators such as ','.
  • FIXED: Respect float_round flag when converting from GMP numbers to floats for to_positive and to_negative modes.
  • TEST: IEEE 754 float handling by Rick Workman

[Feb 17 2020]

  • FIXED: atom_number/2 in mode (-,+)
  • FIXED: Getting the local build home directory if not installed in a subdir of the source.
  • FIXED: Missing () around record can cause syntax errors if library(record) is loaded first.
  • FIXED: print_term/2: handle spacing for postfix operators.

[Feb 16 2020]

  • FIXED: 1.5NaN is before all numbers in the standard order of terms, also before the integers.
  • FIXED: Arithmetic comparison to NaN should always fail.
  • ADDED: float_class/2 to classify the various non-normal IEEE 754 float values.

[Feb 15 2020]

  • ADDED: library(sandbox): allow access to various new flags.
  • DOC: float_rounding flag was undocumented.
  • TEST: Split the core test dir to support concurrent testing better
  • ADDED: Proper exponentiation (** and ^) for X^rat. Implemented by Rick Workman.
  • DOC: Make library(simplex) documentation depend on GMP.

[Feb 14 2020]

  • BUILD: Fixed compilation without GMP
  • ENHANCED: simplify Rat is Expr if Rat is instantiated to a rational number.
  • MODIFIED: is/2 to unify the first argument instead of using arithmetic equality if the left argument is instantiated.
  • FIXED: retractall/1: if decompiling a clause head raises a stack overflow the clause is not retracted and retractall/1 succeeded. Now retractall raises a resource error exception. Note that it may have completed part of its job.
  • ADDED: connect_ugraph/3. Also added docs or complement/2 and reachable/3.

[Feb 13 2020]

  • ENHANCED: Trapping recursive autoloading, debug/3 and print_message/2. Not really ideal yet, but at least a plain system error is avoided and some context is provided.
  • FIXED: tty control on not really terminals for Unix-like systems. Breaks single stroke interaction in e.g., swipl-win. Jan Burse.

[Feb 12 2020]

  • AUTOLOAD: Support HTML to text conversion (lynx subdir of library).
  • MODIFIED: Make use_foreign_library/1,2 available as built-in directives.
  • ADDED: Handle require/1 in library(prolog_xref).
  • ENHANCED: Make require/1 cooperate properly with autoloading. Non-built-in predicates that are requested using require/1 are mapped to autoload/2 calls. As a result, require/1 cooperates with all modes of the autoload flags and prevents local (re-)definition of required predicates.

[Feb 11 2020]

[Feb 10 2020]

  • ADDED: Autoload flag values user and user_or_explicit.
  • FIXED: Avoid the toplevel from counting on module inheritance.
  • CLEANUP: Avoid excessive library dependencies in library(shlib).
  • CLEANUP: Enable autoloading for many of the libraries that are almost always loading. Reducing the number of file s loaded at startup from 33 to 12.
  • DEVEL: Avoid library(pure_input) and library(lists) dependency in startup file used to run from the build directory. Reduces startup time and avoids unnecessary dependencies.

[Feb 2 2020]

  • ADDED: autoload/1,2, providing a controlled way to perform autoloading of both libraries and application files. Controlled by the flag autoload, which provides an additional value explicit, disabling uncontrolled autoloading while keeping controlled autoloading. Some re-organization of the autoload code.

[Feb 4 2020]

[Feb 6 2020]

  • CLEANUP: Removed isDefinedProcedureSource() hack. No longer needed since Keri Harris supported reloading as a proper transaction.

[Feb 5 2020]

  • ENHANCED: print_term/2: integrate parts with Pengines term//2 to convert a term into HTML. Used to avoid unnecessary spacing around operators.

[Feb 7 2020]

  • BUILD: Renamed CMake target prolog_products to core as this is a too common step in the development cycle.
  • FIXED: Properly initialise the rational tripwire in a new thread.
  • ADDED: nexttoward/2 function.
  • ADDED: ECLiPSe compatible IEEE 754 floating point arithmetic. This commits provides four flags to make floating point arithmetic return special values (Inf, NaN, -0.0) rather than raising an exception and supports setting the float rounding mode. Not all arithmetic has been updated to fully suppor these flags.

[Feb 6 2020]

  • ADDED: Extend (tabling) tripwire system to deal with very large rational numbers.

[Feb 5 2020]

[Feb 4 2020]

  • MODIFIED: Sync rational syntax with ECLiPSe, always accepting 1r3 and 1/3 if rational_syntax is set to natural.
  • FIXED: PL_term_type() return PL_RATIONAL. This renumbers the PL_* types in SWI-Prolog.h! We accept this as a lot of the header has changed anyway for supporting rational numbers. Rick Workman.
  • FIXED: MPQ handling for in skipArgs().

[Feb 2 2020]

  • DOC: Updated docs for the (/)/2 (division) function.
  • DOC: PL_is_rational().
  • CONFIG: Add rational settings to customize/init.pl
  • FIXED: in_temporary_module/3: avoid possible races.
  • FIXED: Avoid race if two threads try to create a temporary module with the same name.
  • ENHANCED: Reduce the risk that the random/1 function start at the same value in multiple threads if we do not use the GMP random functions.
  • MODIFIED: Changed rational defaults to be conservative, i.e., set prefer_rationals to false and rational_syntax to compatibility. Documentation invites people to evaluate the defaults we would like to see in the future, prefer_rationals = true and rational_syntax = natural.
  • FIXED: Pushing rational arguments when using optimized arithmetic.
  • DOC: statistics/2, thread_cputime

[Feb 1 2020]

  • FIXED: Q/P with MPZ numbers still yielded a float if prefer_rationals is true.
  • ADDED: PL_get_float() to succeed on MPZ and MPQ numbers (already did integers).
  • FIXED: is/2 on instantiated rational, e.g. 1/3 is 1/3.
  • FIXED: Saving rationals to QLF files (thus also saved states)
  • FIXED: Compilation of MPZ/MPQ integers in the head
  • ADDED: Support rationals in library(prolog_colour).
  • ADDED: Prolog flag rational_syntax with values natural, compatibility and none
  • ADDED: rational_syntax flag as module-sensitive flag with values natural, compatibility and none.
  • MODIFIED: Renamed rational flag to prefer_rationals.

[Jan 31 2020]

  • PORT: Allow building the system without GMP.
  • FIXED: Make rational branch compile without gmp
  • DOC: Rational number support.
  • ADDED: list_rationals/0,1
  • DOC: The Prolog flag rational
  • ADDED: ECLiPSe compatible functions numerator/1 and denominator/1.
  • MODIFIED: <int> ^ <neg int> now does rational arithmetic.

[Jan 30 2020]

  • TEST: Generalize tests to deal with rational numbers.
  • ADDED: Prolog flag rational.
  • MODIFIED: PL_get_nchars() and PL_get_wchars() to support rationals. This changes the flag values for the these functions (CVT_* and BUF_*), making binary extensions incompatible. Source code remains compatible.
  • MODIFIED: Added rational numbers as first class atomic citizens rather than a term numerator/denominator. Reserve a bit to distinguish mpz and mpq on the stack

[Jan 31 2020]

  • FIXED: Use-after-free error when dealing with updated answers for answer subsumptive tabling.
  • FIXED: Unification from trie nodes. Could leave the argument stack in a modified state.
  • FIXED: Memory leak when unifying a trie term fails due to an exception.

[Jan 29 2020]

  • FIXED: Possible crash in tabling after an exception during tabling.
  • ADDED: Declare not_exists/1 from tabling as safe.

[Jan 28 2020]

  • ADDED: Tabling meta predicates to xref.
  • XSB: Pass on tabling restraint options in the compatibility library.
  • DOC: More work on the documentation for restraints.

[Jan 27 2020]

[Jan 24 2020]

  • ADDED: Partial support for tabling restraints. Currrently deals with max_answers(Count) and provides the tabling options and Prolog flags to deal with radial restraints.

[Jan 25 2020]

[Jan 23 2020]

  • FIXED: Compilation of single threaded version
  • ENHANCED: Tabling with answer subsumption. This elaborate patch is a fundamental rewrite on how answer subsumption stores the aggregated answers and how it relates to the default tabling. It realises the following: - Support well founded semantics under answer subsumption
    • Support tabling SCCs (Strongly Connected Components) holding both normally tabled goals and goals subject to answer subsumption.
    • Add XSB compatible not_exist/1. - Simplify notably the Prolog code for tabling completion for better performance.

[Jan 22 2020]

  • FIXED: build without O_PLMT.

[Jan 19 2020]

  • FIXED: crash in '$tbl_worklist_data'/2 (for table debugging).

[Jan 18 2020]

  • FIXED: Issue#537: stream_pair/3 crashed if the first argument is not a blob (atom or stream pair). Reported by Peter Ludemann.

[Jan 17 2020]

[Jan 14 2020]

  • PORT: Add -with-zlib to the MinGW build instructions for library archive. Matt Lilley.
  • FIXED: Docs says that prompting only depends on the tty property of user_input. Implementation also demanded user_output to be a tty. Now according to docs, which is compatible with e.g., bash.

[Jan 12 2020]

  • DOC: Updated docs for prompt/2.
  • MODIFIED: Do not prompt if user_input is not connected to a terminal, i.e., stream_property(user_input, tty(true)) is false. After forum messages by Peter Ludemann and Boris Vassilev.

[Jan 11 2020]

  • DOC: deprecate old meta predicates and explain \+/1 vs. not/1.

[Jan 10 2020]

  • FIXED: XSB get_residual/2: also deal with answer subsumption.
  • FIXED: table/1: answer subsumption (mode) specifications with only indexed arguments.
  • ENHANCED: tabling with answer subsumption: as normal tabling, only add the unbound answer skeleton to the answer table.
  • XSB: properly implement not_exists/1.
  • XSB: abort/1 is an XSB built-in rather than defined in error_handler.
  • FIXED: Avoid predicate_property(_:Head, visible) with instantiated Head creating empty predicates in all existing modules. This is not a semantic problem, but it wastes resources.

[Jan 9 2020]

  • ADDED: Collect statistics on shared tabling: deadlocks and events where a thread has to wait for a table to be completed by another thread.
  • FIXED: mutex_statistics/0: keeping trackof known mutexes was broken.
  • FIXED: Create the shared_table_space Prolog flag.
  • MODIFIED: resource_error(table_space) is now one of resource_error(private_table_space) or resource_error(shared_table_space).

[Jan 8 2020]

  • XSB: :- table/1: accept `as private`.
  • MODIFIED: format/1-3: raise an exception if there are more argument than are consumed by the format. Issue raised by Boris Vassilev on the forum. Note that this may result in good programs now being aborted with an exception. I have little clue as to how many problems this may raise. Introducing a flag to choose between silent operation, warning or error seems an overkill as well though.
  • XSB: Added coninc/1,2 to the gensym module.
  • XSB: Added thread module.
  • XSB: provide thread_shared/1.

[Jan 7 2020]

  • FIXED: Possibly use-after-free while inserting a node in a trie. This patch also fixes the trie/tabling memory usage admin.
  • ENHANCED: read_term/2,3 should not create a new module if the option module(Module) is given but the target module does not exist. Now uses user as this is the default module from which new modules inherit. Made this behaviour explicit in the documentation.

[Jan 6 2020]

[Jan 5 2020]

[Jan 3 2020]

  • BUILD: Use -DJAVA_COMPATIBILITY=ON for building Windows and MacOS binaries
  • FIXED: clause_info/5 for x==X. @since d65c713cb2507a62b64d860a30246e05279bc522

[Jan 2 2020]

[Dec 25 2019]

[Dec 23 2019]

  • DOC: Correct a few typos, supply leading zeroes in ISO 8601-style dates
  • FIXED: clause GC may mark indexes as dirty even though they do not include clauses being deleted
  • MODIFIED: The debug utility mutex_statistics/0 now prints its output to current_output such that it can be redirected and ends up in the new SSH consoles.
  • ADDED: thread_alias/1 to give a thread an alias name after creation.

[Dec 22 2019]

  • FIXED: PL_thread_attach_engine() if this call fails, do not leave the thread-local variable pointing at the destroyed local data.
  • FIXED: Handle 'e' in the debugger from a thread. Now safely terminates the thread using abort/0.
  • ENHANCED: Properly handle console mode management if we are communicating with multiple TTY devices. This is needed to support the new libssh package.
  • FIXED: on_signal/3 not to fail if the signal is bound to a handler in a different module.

[Dec 21 2019]

  • DOC: Updated and clarified documentation for on_signal/3.
  • MODIFIED: on_signal/2 now interprets debug as reserved handler name, triggering the default ^C handler.

[Dec 20 2019]

  • ENHANCED: library(prolog_colour): qualified tabling declarations and avoid type error warnings on partially instantiated predicate indicators in declarations. The latter is a bit dubious as it will indicate variables in e.g. :- dynamic p/N just as singleton. It does however avoid a screaming warning when using dynamic in runtime calls from a computed arity.
  • ENHANCED: CMake based packs to run ctest if the project defines tests.

[Dec 19 2019]

  • ADDED: Support configuration and building of foreign packs using CMake. This is triggered if the pack root directory contains CMakeLists.txt.

[Dec 18 2019]

  • MODIFIED: shell/1,2: if the user_input, user_output and user_error streams are connected to a file descriptors, dup() these to the process' standard streams. This allows running shell commands and get the output in the expected place using the upcoming embedded SSH server.

[Dec 17 2019]

  • FIXED: set_prolog_IO/3: make sure the file_no(N) stream property is relayed properly.

[Dec 15 2019]

  • FIXED: Mutex initialization for the new L_OSDIR mutex
  • PORT: Disabled PGO compilation for the Windows binary because it is not supported in recent Ubuntu versions.
  • PORT: Updated MacOS dependencies to their latest version

[Dec 14 2019]

  • ENHANCED: Hash canonical directory lookup.
  • FIXED: Avoid a race condition in directory canonicalization.
  • FIXED: retractall/1 could fail if a clause was already retracted somehow. This bug was introduced with the introduction of the event interface on dynamic database changes required for incremental tabling.

[Dec 11 2019]

  • PORT: Add -DO_DEBUG to Debug build type on MacOS

[Dec 12 2019]

  • FIXED: Thread-safety of cached notion of the working directory. Should not be a big issue as multi-threaded applications are not supposed to change working directory after initialization.
  • MODIFIED: make_libary_index/1, called by make/0 no longer changes to the target library directory if this directory contains a file MKINDEX.pl. This ensures that make/0 is safe in a multi-threaded environment. Existing MKINDEX.pl should use the folowing pattern:
    :- prolog_load_context(directory, Dir), make_library_index(Dir, ...).
  • FIXED: library(dcg/high_order): determinism handling and final element handling for sequences. Also clarified the documentation. Raised by Boris Vassilev on the forum.

[Dec 10 2019]

  • FIXED: get_time/1 for 32-bit Windows. This is a work-around for a broken clock_gettime() in MinGW32. Comes with a test case to ensure get_time/1 is not subject to 32/64 bit issues.

[Dec 6 2019]

  • ENHANCED: Tabling with call subsumption: add a quick test to decide whether new answers apply to subsumed consumers. This still results in quadradic behaviour of some goals, but this now only shows at much larger number of consumers, staying practically linear as long as the fraction of applicable consumers is more than 1 in 1,000.

[Dec 5 2019]

  • PORT: Bumped most Windows dependencies to their latest release
  • ENHANCED: SICStus time_out/3 emulation: documentation and allow for nested calls.

[Nov 29 2019]

  • FIXED: Issue#526: possible crash in trie_gen/2,3. Farbrizio Riguzzi.

[Nov 27 2019]

  • MODIFIED: catch_with_backtrace/3 now captures the backtrace without direct references to clauses such that the backtrace can be printed reliably in a different context.

[Nov 22 2019]

  • DEBUG: Dump Prolog stack on fatal errors (in safe mode, i.e., without arguments but with PC and clause info).

[Nov 21 2019]

  • ADDED: thread_get_message/1-3: allow more selective matching of terms using constraints.
  • FIXED: reset_profiler/0. Needs to clear prof_node in the environments. Lacking to do so can cause crashes as well as wrong results.
  • FIXED: Crash in thread cleanup if the OS thread could not be created (typically due to a resource limit)

[Nov 20 2019]

[Nov 19 2019]

  • XSB: Provide consult/1 from library(consult) and slash/1 from library(machine).
  • TEST: Added XSB subsumptive tabling tests
  • ADDED: Prolog flag `table_subsumptive' to select (default) subsumptive tabling.

[Nov 18 2019]

  • ADDED: Simple implementation for subsumptive tabling. Handles reuse of incomplete tables, but often resulting in quadratic complexity.
  • FIXED: is_most_general_term/1: failed to clear marks, causing invalid data.
  • FIXED: Calling incremental tabling for subsumptive tabling.
  • DOC: Fixed limit/2 doc for Count argument.

[Nov 15 2019]

  • FIXED: Wrapping meta-predicates. Abramo Bagnara.
  • FIXED: db_sync(gc(always) to really always write the persistent db.

[Nov 13 2019]

  • FIXED: Single threaded compilation

[Nov 12 2019]

  • FIXED: When removing predicates from a temporary module we can destroy the indexes early. This saves time and memory and avoids a write-after-free bug.
  • FIXED: Avoid writing to a freed allocation pool.

[Nov 11 2019]

  • DOC: Issue#401: duplicate docs for guitracer/0. Also updated docs for trace/2.
  • ENHANCED: Removed sinh and cosh functions from ifprolog emulation as these are built in.
  • DOC: Issue#379: absolute_file_name/3 on directories.
  • FIXED: Issue#516: library(progman) string compatibility. Paulo Moura. Also reenables installing this library on Windows.

[Nov 10 2019]

  • FIXED: Issue#92: [] was ordered between ISO-latin-1 and wide atoms, which could lead to inconsistent ordering. Now, the ordering is blobs @< reserved symbols @< text atoms

[Oct 9 2019]

[Oct 8 2019]

  • CONFIG: check_installation/0: check for config files. Added update_config_files/0 to move config files to their new location.
  • ENHANCED: Avoid creating config files and directories below directories not owned by the process
  • ADDED: '$my_file'/1 to check that the user running the current process owns a given file.
  • MODIFIED: Stop handling lib below the current directory as a library directory. Loading from local files should be considered a security risk. You can keep using this by adding user:file_search_path(library, lib).

    to your project or (if you insist) your personal init file

  • BUILD: Use `-f none` for manual build steps to avoid dependencies on the personal init file.
  • PPA: Added eoan to list of distributions

[Oct 7 2019]

  • MODIFIED: Introduced user_app_{config,data} and common_app{config,data} and make app_{config,data} and alias for the user and common versions (in that order).
  • ADDED: win_folder/2: keys common_appdata and local_appdata.

[Oct 4 2019]

  • SNAP: Add snap package

[Oct 6 2019]

  • DOC: Updated customization files and install them.
  • MODIFIED: Place the personal init file in a common place on all operating systems. This directory is located in one of the directories below and names swi-prolog - Windows: CSIDL directory APPDATA (see win_folder/2) - Otherwise
    • $XDG_CONFIG_HOME
    • $HOME/.config

    In this directory we find:

    • init.pl (previously .swiplrc or swipl.ini (Windows) Personal initialization file
    • lib (previously ~/lib/prolog) Personal library
    • xpce (previously ~/.xpce) Directory holding xpce application data

    If you use multiple versions we suggest to create the new hierarchy and make symbolic links from the old locations. Windows users will have to live with copies.

[Oct 5 2019]

[Oct 4 2019]

  • PORT: Use _NSGetEnviron() instead of environ on MacOS when available.

[Sep 30 2019]

  • ADDED: PL_put_uint64(). Suggested by Mathijs van Otterdijk.

[Oct 1 2019]

  • FIXED: lock queue table when performing AGC as another thread may be destroying a message queue
  • DOC: XSB dialect issues.
  • XSB: Added library(dialect/xsb/gpp) to use the XSB preprocessor.
  • XSB: Exploit peek_string/3 to realise the required two phase processing of XSB files if the input cannot be repositioned.
  • ENHANCED: peek_string/3 now allows peeking the remainder of long inputs using a huge value for the peek length while allocating the minimum of the peek length and the input length rather than always allocating the peek length.
  • ADDED: prolog:open_source_hook/3 to allow hooking the final open for the compiler.

[Sep 29 2019]

  • FIXED: statistics/2 for table_space_used multiplied the value incorrectly with sizeof(trie_node). New stats also include the trie itself and the call trie. It ignores node indexes though.

[Sep 27 2019]

  • XSB: Added emulation of Term Writing to Designated I/O Streams, module standard.

[Sep 29 2019]

  • ENHANCED: If a significant part of the clauses that are candidate for CGC have an (atom) clause reference, first call AGC.
  • ENHANCED: GC: remove links to unreachable volatile atoms. This improves the efficiency of atom garbage collection.

[Sep 27 2019]

  • FIXED: profile/2 using cumulative(true) without GUI. Abramo Bagnara.
  • ENHANCED: trie_gen/2,3 for when matching an instantiated value against a trie choice node that contains variables. Test by Edward Schwartz.

[Sep 26 2019]

[Sep 25 2019]

  • MODIFIED: low-level profiler access predicates to communicate about predicates using predicate indicators rather than heads. This simplifies the code and makes most data structures ground. Note that the hook prolog_predicate_name/2 is now called with a predicate indicator rather than a head.
  • FIXED: profile_data/1. Broken after adding profile_procedure_data/2.

[Sep 24 2019]

[Sep 23 2019]

  • FIXED: tmp_file_stream/3 for unicode temp directory. Surely fixed on non-Windows. I do not have the right setup to test on Windows.

[Sep 20 2019]

  • PORT: Android minizip to use consistent file api
  • ENHANCED: profile_data/1: find predicates from the stored call graph rather than enumerating all known predicates. Provides a big speedup.
  • FIXED: profiler: avoid falsely reported self-recursion on auto-loaded predicates, as well as other double checks in this event.
  • FIXED: profiler: bump redo access on parents.

[Sep 19 2019]

  • ADDED: Make number of passes through the exit port available from the profiler data
  • ADDED: profile_data/1 to library(statistics) and use dicts for dealing with the profile data structures.

[Sep 18 2019]

  • XSB: Silently ignore debug_ctl/2 calls that are not supported. Added xsb(compat) debug/1 topic to report possible compatibility issues.

[Sep 17 2019]

  • FIXED: clauses and codes statistics for compiled tables.

[Sep 10 2019]

  • XSB: Added timed_call/2 emulation.
  • FIXED: single-threaded build. Abramo Bagnara.

[Sep 8 2019]

  • STATS: removed trie statistics gen_exit_count and gen_fail_count. Added invalidated and reevaluated to track incremental tabling.

[Sep 6 2019]

  • ENHANCED: Instead of using the wrap_predicate/4 interface to trap calls to dynamic incremental predicates use a dedicated supervisor instruction in the VM.
  • ENHANCED: Speedup \=/2 using a shortcut for the simple cases.
  • FIXED: trie_gen/2,3: deal with last-argument optimization. Reported by Hakan Kjellerstrand, also issue#490.

[Sep 5 2019]

[Sep 4 2019]

[Sep 3 2019]

  • ADDED: library(prolog_code), providing several commonly used predicates to reason about Prolog programs.
  • ENHANCED: error checking and reports from '$pi_head'/2, propagating into better messages from several built-in predicates.
  • FIXED: library(prolog_codewalk): limit initialization goals to target module.

[Sep 2 2019]

  • ADDED: Code of Conduct page
  • ADDED: Prolog flags table_shared and table_incremental to set defaults for tabling options.
  • FIXED: library(prolog_xref): avoid looping on a module declaration with a variable export list.

[Aug 29 2019]

  • FIXED: Use an atomic decision between re-evaluation and using the valid compiled clause.

[Aug 30 2019]

  • TEST: Test shared IDG falsecount propagation.
  • ENHANCED: Allow waiting for a table from another thread to be aborted by a thread signal (including call_with_time_limit/2).
  • FIXED: if a no change is propagated to a shared table, release it.
  • CLEANUP: library(prolog_colour) dealing with highlighting declarations.
  • DOC: read/1: fixed and explain its role more clearly as this is a likely entry point for new users to read from a file or the user.

[Aug 29 2019]

  • ADDED: Deal with as(_,_) for declarations in cross referencer and highlighting
  • ADDED: Support the XSB syntax :- dynamic p/1 as incremental.. The incompatibility makes writing code that runs on both too complicated.
  • CLEANUP: better structure for setting predicate properties.
  • ADDED: predicate_property/2: tabled option without flags to enumerate all tabled predicates without duplicates.

[Aug 28 2019]

  • FIXED: Resolved abolishing tables with incremental tabling. This removes the notion of a nested tabling environment for re-evaluation.q
  • FIXED: Issue#499: free_component() (freeing a table component) to avoid C-recursion and thus a possible crash if the component stack is deeply nested.
  • DOC: with_output_to/2 encoding issues.
  • MODIFIED: Do not allow switching encoding to an Sopenmem() stream.
  • ADDED: predicate_property/2: provide access to table options through the tabled(Flag) property. Currently supports shared and incremental in addition to the mode (variant or subsumptive).

[Aug 27 2019]

  • FIXED: An SCC can contain a mixture of re-evaluated and normal answer tries. Remove the check for such hybrid SCCs and document why they can occur.

[Aug 26 2019]

  • FIXED: initialization of local and shared table space limit
  • FIXED: Do not discard merged tables.
  • TEST: Disabled shared tests if threads are disabled.
  • TEST: verify deadlock handling while re-evaluating a shared table.
  • FIXED: node/value count properties on tries if the trie is reset rather than destroyed.
  • FIXED: '$tbl_table_status'/4 if return skeleton is instantiated.
  • ENHANCED: Allow goal_colours/2 to overrule builtin definitions.
  • ADDED: prolog_colourise_stream/4, providing an operators(+Ops) option.

[Aug 25 2019]

[Aug 24 2019]

  • ADDED: trie_property/2, compiled_size(Bytes).
  • FIXED: wrap_predicate/4 for foreign predicate could cause data corruption if GC is triggered while executing the wrapper clause. This prevented table/1 for foreign predicates.

[Aug 23 2019]

  • FIXED: Issue#498: crash in term_singletons/2 if second argument is instantiated.
  • FIXED: Delayed events on clauses could crash because the clause could be subject to clause garbage collection.

[Aug 22 2019]

  • FIXED: Remove tabling if directive is removed from the source file.
  • ADDED: Partial support to include table directives in listing/0,1,2. Renamed wrapper to reuse normal hiding conventions for code.
  • ADDED: detect removal of table/1 directives during reconsult and call untable/1 to remove the tabling for these predicates. Not yet working.
  • MODIFIED: Do not use reconsult delay for predicate attributes set for predicates that are defined in another module. This fixes a problem where a file that contains a cross-module directive wipes the clauses of the referenced predicate on a reconsult. Not really sure about this. Possibly we need to keep track of locations of declarations such that we can manage changes to declarations more robustly.

[Aug 21 2019]

  • FIXED: update for multiple incremental tables depending on the same dynamic predicate.
  • FIXED: re-evaluation of mutually dependent incremental dynamic goals.
  • FIXED: trie_gen/2,3 if a variable in the trie is matched against a compound term may miss answers.
  • FIXED: A #! script should pass all arguments to the application. Chris Mungall.

[Aug 20 2019]

  • TEST: Windows: portable testing for end-of-stream handling.
  • TEST: Tests for exceptions during re-evaluating incremental tables.
  • ADDED: define exception handling while re-evaluating invalid incremental tables.
  • FIXED: Queue timeout handling for Windows. Now passes all (queue) tests.
  • ENHANCED: freePrologThread() may be called from a different thread than the terminating one, notably for thread_exit/1. We now set LD to the local data of the thread being destroyed such that cleanup handlers act on the right data. This is like engines operating on a different OS thread. This fixes a problem in the Windows port where thread cleanup is not done right.

[Aug 19 2019]

  • DOC: thread_exit/1 bug in Windows port.
  • FIXED: Wrong assertion for Windows causing a possible crash in thread_join/2.
  • DEBUG: Avoid warnings when compiling the Windows version for debugging.
  • FIXED: asynchronous destruction of shared tables.
  • FIXED: Leave reclaiming call trie in case of a race to atom-GC.

[Aug 18 2019]

  • PORT: VS2019 puts the .exe in src/{Debug,Release}, so we must add add a swipl.home in src as well.
  • PORT: VS2019: handling of _snwprintf() and ssize_t for swipl-ld.c
  • PORT: Various changes to make the core compile with VS2019. Now compiles and links with several warnings in single threaded mode without GMP.
  • MSVC: disable some warnings, support popcount and ssize_t.

[Aug 17 2019]

  • PORT: Avoid installing Windows requirements we did not configure.
  • PORT: Perform alignment config for standard C compilers.

[Aug 16 2019]

  • FIXED: condition variable deadline handling for Windows. With help from Keri Harris.
  • PORT: Set _WIN32_WINNT once globally (currently 0x600, Vista).
  • ENHANCED: Re-introduce making cv_timedwait() only return on timeout, thread signal or the CV being signalled. The loop was a bogus after 44b66326, but most likely unintentionally.
  • PORT: use Win32 condition variables instead of Win32 events. This avoids race conditions that can lead to Prolog hanging
  • PORT: save_program/2: fixed finding Windows shared objects for the current architecture.

[Aug 12 2019]

  • ADDED: When a I_ENTER instruction is encountered via D_BREAK and the hook replaces the goal with a new one (i.e. via the call/1 option) then skip the original body of the goal

[Aug 8 2019]

[Aug 7 2019]

  • FIXED: predicate options declaration for dynamic/2
  • ADDED: Prevent generating dependency of a shared table on a private table or private (thread_local) predicate.
  • FIXED: dynamic/2: option thread(local/shared) was ignored.

[Aug 6 2019]

  • PORT: deselect swipl-win when compiling for single threading.
  • PORT: Make compile for single threading.
  • ADDED: controlling the shared table space limit using `--shared_table_space=Size` and the Prolog flag shared_table_space.
  • TEST: Abolish of an active table.
  • TEST: Elementary test for shared tabling
  • DOC: shared tabling. Use ?- help('tabling-shared').
  • FIXED: Asynchronous abolishing of tables.
  • CLEANUP: re-structured start_tabling/4, fixing deadlock recovery.

[Aug 5 2019]

  • ENHANCED: still produce results with a table is abolished while being completed.
  • MODIFIED: abolish_all_tables/0 abolishes both shared and local tables. Possibly incomplete tables are left alone.
  • CLEANUP: Move completed status from worklist to a trie flag. Simplifies code and makes the check thread-safe for shared tables.
  • ENHANCED: Directly return the compiled trie for completed (shared) tables. Moved '$idg_add_edge'/1 into the '$get_variant_table'/5 and variations, both for improved performance and to avoid the fact that we do not always return a trie.

[Aug 4 2019]

  • CLEANUP: Merge supervisors for trie_gen_compiled/2,3
  • CLEANUP: reuse ClauseRef in blob clause references. This simplifies running clauses directly as used for continuations and compiled tries.

[Jul 26 2019]

  • ENHANCED: provide access to closure referencing the wrapped predicate. This will be used to speedup some aspects of tabling.

[Jul 28 2019]

  • BUILD: Avoid * in Windows daily builds.

[Aug 5 2019]

  • ENHANCED: thread_join/1: better error message. Also, the error term got an extra argument providing the thread that failed.
  • FIXED: listing/1 if variables have been bound. Abramo Bagnara.

[Aug 4 2019]

  • FIXED: Single threaded build. Patch by Abramo Bagnara.

[Aug 1 2019]

[Jul 25 2019]

  • INSTALL: Windows: install registry keys HKLM Software\SWI\Prolog for the home and file extension. Paulo Moura.

[Jul 26 2019]

  • XSB: More compatibility
  • XSB: added xsb_error_get_message/2 to the emulation.
  • FIXED: Re-evaluation of tabled subgoals that only depend on completed tables. Could get into a loop.

[Jul 25 2019]

  • INSTALL: Windows: install registry keys HKLM Software\SWI\Prolog for the home and file extension. Paulo Moura.
  • FIXED: Possible execution path that does not perform a stack shift while this is still possible, running out of stack while this is not needed.
  • FIXED: Propagate stack overflow from unify_trie_term()
  • XSB: Started emulation for curr_sym module.
  • FIXED: Split '$tbl_implementation'/2 using a variant that only verifies the argument is tabled for tnot/1. Fixes introspection predicates from raising errors.
  • FIXED: Planning for re-evaluating invalid tables. It is possible that there are paths that end in a complete table rather than a dynamic table.

[Jul 24 2019]

  • FIXED: Reevaluation for incremental tabling with multiple paths to the changed dynamic predicate.
  • MODIFIED: allow predicate update hook to veto the assert/retract.
  • ENHANCED: Avoid call/1 for calling cleanup handler of call_cleanup/2 and friends.
  • CLEANUP: generalise internal '$hide'/1 and document these internal directives.
  • FIXED: ansi_get_color/2: Need to switch mode before sending output as otherwise the reply may be echoed in the console.
  • ENHANCED: Some further generalizations of theme handling

[Jul 23 2019]

  • TEST: Fixed broken xsb test.
  • PORT: Do not try to get the background color of Apple Terminal as it does not support this
  • ADDED: prevent modifications to incomplete incremental dynamic predicates. The error is signalled, but recovery is incomplete.
  • TEST: added three new XSB test files.
  • TEST: Enable XSB nonmt test dir.
  • TEST: Do not load personal init file (`-f none`) to avoid interference with tests.
  • TEST: Start migrating nonmt_tests from XSB.
  • DOC: Theme support.
  • THEME: Provide automatic theme selection

[Jul 22 2019]

  • ADDED: ansi_get_color/2 to library(ansi_term) to find the current fore and background colors. Intended to select an appropriate theme.
  • ADDED: with_tty_raw/1: run code with terminal in raw mode (if possible).
  • THEME: Added styling the core GUI compoments: PceEmacs and the graphical tracer.
  • THEME: Allow hooking online manual styles. Added colors for manual pages to dark theme.
  • THEME: Windows: set console colors.
  • FIXED: win_window_color/2: set selection colors.

[Jul 21 2019]

  • BUILD: Added the Windows daily build script for reference purposes.
  • ADDED: library(theme/dark) as a first example for defining themes.
  • ADDED: ansi_format/3: support 8-bit and true color escape sequences.
  • ADDED: Allow hooking console coloring.

[Jul 20 2019]

  • ADDED: Windows (swipl-win.exe) win_window_color/2 to change the colors of the console window.
  • FIXED: win_folder/2: avoid messages did not clear exception.

[Jul 19 2019]

  • ENHANCED: Get rid of '$wfs_call' in default backtrace.
  • DOC: Introduction updates
  • DOC: Updated the abstract
  • MODIFIED: raise errors on undefined command line arguments. Also, the first non-option argument is considered a source file, regardless of the extension or content.
  • FIXED: Do not try to recompile out-of-date installed QLF files.

[Jul 18 2019]

  • ADDED: shared table declarations

[Jul 17 2019]

  • DOC: New trie primitives
  • ADDED: trie_gen_compiled/2, dealing with tries that only represent a set.

[Jul 16 2019]

  • ENHANCED: compiled tries to speedup answer generation from tabling and provide logical update view semantics for incremental tabling. The current implementation is rather rough and will be refined in the near future to reduce memory usage and improve performance.
  • FIXED: avoid discontiguous warnings for tabling with answer subsumption.

[Jul 15 2019]

  • FIXED: table/1: avoid discontiguous warnings. Edison Mera.

[Jul 14 2019]

[Jul 12 2019]

  • FIXED: Avoid deep indexes on arguments that have variables. Creating was already blocked in 21ea5db738debce45d7ff544f088b3cfe631a252, but adding new clauses could still lead to this situation. This change also deletes the argument old assessment together with the index, so we re-assess how to index an argument after adding a variable to a list or resizing outside the bounds. Finally, it fixes several issues in cleaning nested indexes.

[Jul 11 2019]

  • FIXED: swipl-ld: possible buffer overrun. As this is just a helper program for building foreign extensions for Prolog this is not a serious security risk.
  • CLEANUP: silence gcc 9 (benign)

[Jul 4 2019]

  • FIXED: do not include resources defined using resource/2 in runtime saved states
  • DOC: Included reference to XSB incremental tabling paper.

[Jul 3 2019]

  • XSB: Started emulation of the module error_handler.
  • ENHANCED: Simplify early if an unconditional answer arrives.
  • TEST: Added incremental WFS test
  • ADDED: WFS updates for incremental tabling.
  • DOC: more complete description of incremental tabling.
  • FIXED: Allow module qualification in specification of table/1.

[Jul 2 2019]

[Jul 1 2019]

  • XSB: pass incremental for :- table.
  • XSB: Support incremental tabling predicate emulaton.
  • FIXED: library(prolog_colour): table (...) as ....

[Jun 28 2019]

  • DEBUG: Allow runtime disabling of early completion when compiled for debugging.

[Jun 27 2019]

  • ADDED: abstract(0) property and partial implementation to get dynamic predicates into the IDG.
  • ADDED: dynamic/2 to set additional properties on dynamic predicates.
  • MODIFIED: Deleted the possibility of :- dynamic(p/1, q/1). This was once added due to misinterpretation of the ISO standard.
  • ADDED: predicate property incremental for tabled predicates (no-op).
  • XSB: Fixed PLDoc comments

[Jun 25 2019]

[Jun 24 2019]

  • FIXED: Breakpoint handling using new hook interface.

[Jun 23 2019]

  • TEST: Added new event handling tests
  • ADDED: prolog_listen/2,3 and prolog_unlisten/2 to register hooks into the Prolog engine that allow trapping certain events. This replaces and generalises the undocumented prolog_event_hook/1 hook used by the debugger. A notable new feature is to track changes to (dynamic) predicates.

[Jun 21 2019]

  • CLEANUP: Move event interface into new files pl-event.[ch], preparing for further generalisation.

[Jun 20 2019]

  • XSB: Allow get_call/3 and get_calls/3 to work for answer subsumption.
  • ADDED: table/1: allow for answer subsumption using lattice(name(_,_,_)) for compatibility with XSB.
  • TEST: Added several XSB tests from the table_tests test set.
  • XSB: Include library(tables) by default.
  • TEST: Fixed results for pred_abolish_dag.P
  • TEST: Correct pred_abolish_cycle.P test
  • TEST: Completed import of XSB table_tests/abolish* tests
  • XSB: abolish_table_pred/1 must remove all tables, also if the head is partially instantiated.
  • FIXED: table/1: Allow specifying arity-0 predicates with just their name (as it is interpreted as a special case for answer subsumption).
  • TEST: Partial copy of the XSB table_tests test set.
  • ENHANCED: allow for abolishing answer tries that are active (on a choice point) and/or have mutual dependencies due to undefined answers.
  • MAINTENANCE: Provide ninja/make etags target

[Jun 19 2019]

[Jun 18 2019]

  • XSB: Ignore index/3 as a directive (what does this do?)
  • XSB: Started emulation of library(consult).

[Jun 20 2019]

  • TEST: Added tests for recent memory errors.
  • FIXED: Reset the argument stack on failure during trie unification. Lead to a crash in GC on a stack overflow during unification.
  • FIXED: Stack allocation for pushing the table return template.

[Jun 18 2019]

  • FIXED: Skip over a deleted node while backtracking over a trie.
  • DOC: halt(abort)
  • MODIFIED: halt/1 accepts 'abort' arg to terminate Prolog via abort(). Fatal+system errors now terminate Prolog using abort() instead of exit().
  • DOC: call_residual_program/2 LaTeX error.

[Jun 17 2019]

  • ENHANCED: Better representation for answer term return terms. By using the variable labeling of the node for the answer trie in the variant trie we do not need to store the return term explicitly and we can avoid several general unifications.

[Jun 16 2019]

  • FIXED: sandbox declaration to allow tabling.
  • ADDED: PceEmacs: extend library(prolog_colour) to deal with all tabling declarations.
  • DOC: subsumptive tabling.

[Jun 14 2019]

  • XSB: Pass on `as subsumptive`.
  • ADDED: subsumptive tabling.
  • ADDED: Support tabling options using :- table PI as Option, ...

[Jun 15 2019]

  • TEST: Started library(wfs) tests.
  • FIXED: tnot/1: correctly handle imported predicates and raise an error if the called predicate is not tabled.
  • ADDED: tabled to predicate flags
  • FIXED: Module qualification for residual programs.
  • FIXED: call_delays/2.

[Jun 14 2019]

  • ENHANCED: Avoid repetitive merge of clusters.
  • ENHANCED: Speedup merging small SCCs into a large one.
  • FIXED: Use https to contact the pack server.

[Jun 13 2019]

  • FIXED: do not delete lingering clauses indexes unless they are known to have been lingering at the time clause GC started
  • ADDED: extended statistics for tries.

[Jun 12 2019]

  • ENHANCED: Use POPN sequences for reduce memory usage and speedup of right-recursive terms in tries.
  • ENHANCED: Avoid POP for outermost trie element.

[Jun 11 2019]

  • ENHANCED: limit search for trie_gen/3. Starts creating choice points from the first <var> in the trie or target term.

[Jun 12 2019]

  • FIXED: WFS: produce proper residual program for positive delay elements.
  • FIXED: combination of deep indexing and clauses with a variable at the location of the deep index may loose answers.

[Jun 7 2019]

  • FIXED: Undefined and simplification admin to make lazy AC really work.
  • FIXED: Lazy version should also avoid recursive AC
  • ENHANCED: Allow switching between eager and lazy AC. Default is eager as lazy still seems to suffer from bugs.

[Jun 5 2019]

  • ENHANCED: Remove answer clusters from worklists when completing

[Jun 7 2019]

  • ENHANCED: Working on #ifdef O_AC_EAGER to switch between eager and lazy answer completion.
  • ENHANCED: More aggressive marking of tables as answer completed.

[Jun 6 2019]

  • FIXED: Issue#478: is_lambda/1 failed on valid yall lambda expressions. Fix by Paulo Moura.
  • ENHANCED: Avoid quadratic behaviour on deep tnot/1 negation chains.
  • FIXED: Memory leaks in tabling: reclaim variant skeletons and answer delay info
  • ENHANCED: Avoid popping worklists with no work.

[Jun 5 2019]

  • FIXED: Trie statistics, notably on the tabling the variant trie
  • FIXED: Enumerating tries that have NULL values (deleted nodes that have not been pruned).

[Jun 4 2019]

[Jun 3 2019]

  • MODIFIED: Tabling unknown/0 has been renamed to undefined/0 after discussion with Terri Swift and David Warren.
  • FIXED: We need the answer return template to avoid early completion of answer_completion/1 (now /2).

[Jun 1 2019]

[May 31 2019]

[May 30 2019]

  • FIXED: Propogation of last false answer if the worklist is not explicitly negative.
  • ADDED: declare numbervars/4 as sandbox-safe.
  • ENHANCED: No need for answer completion if there was no simplification. David Warren.

[May 27 2019]

  • FIXED: Various issues with non-ground positive delay elements and answer completion. Serious cleanup.

[May 28 2019]

[May 27 2019]

  • ENHANCED: Do not explicitly join the global and local delay lists when adding an answer, but instead have update_delay_list() joining the two list while creating the conditional answer.
  • FIXED: Updating positive delay elements from non-ground answers from incomplete tables. This breaks delay_tests/gfp.P, which seems sensitive to our suspect handling of this case.

[May 26 2019]

  • ENHANCED: inline delim/4, improving tabling performance with about 20%.

[May 25 2019]

  • ENHANCED: merge answer and suspension clusters to reduce memory and malloc().

[May 24 2019]

  • ENHANCED: Simplify the work in updating the delay list for the next completion step.
  • ENHANCED: Merge getting a conditional answer and updating the delay list into one foreign predicate '$tbl_answer_update_dl'/3.
  • CLEANUP: Simpler and more efficient tnot/1

[May 21 2019]

  • FIXED: Add sandbox declaration to make the new wrapper based tabling work again with Pengines.

[May 22 2019]

  • ENHANCED: improve performance of asserta/1 when there are lots of erased clauses
  • ADDED: message_queue_set/2 to modify properties of an existing queue.

[May 21 2019]

  • FIXED: heap-use-after-free error (fairly benign; may lead to wrong code size statistics).
  • ENHANCED: do not consider dynamic predicates as dirty until clauses have been retracted
  • FIXED: Offload unregistration of dirty foreign/thread-local predicates to the thread performing clause GC. This ensures that access to DirtyDefInfo structures is no longer racy
  • FIXED: Predicates do not need to be activated when setting a frame's generation as the frame generation is guaranteed to be greater than the current CGC starting generation

[May 20 2019]

  • FIXED: Use call(<Closure>(Args)) for calling wrappers to avoid the arity >8 limitation for call/N under reset/shift. This is anyway a step towards inlining the wrapped goal.
  • ENHANCED: Use new wrap_predicate for tabling. This allows for transparent reasoning over tabled predicates and making a predicate tabled after it has been defined. Currently implies a small slowdown, but eventually this will provide a speedup.
  • FIXED: Issue#475: xinteger//1: missing cut and inconsistent handling of negative integers over the two modes.
  • ENHANCED: do not consider dynamic predicates as dirty until clauses have been retracted

[May 16 2019]

  • ENHANCED: incrementally track dirty clause count to avoid O(N) cost when considering clause GC

[May 20 2019]

  • FIXED: wrap predicates with 0-arity.
  • ADDED: library(prolog_wrap), providing wrap_predicate/4 and some friends to manage dynamically wrapping and unwrapping Prolog predicates using an arbitrary body term. With input from Paulo Moura, Eric Toucher and Peter Ludemann on the forum. This is experimental The interface and details may change in the coming weeks.

[May 19 2019]

  • FIXED: Issue#474 (Windows) several issues due to sizeof(wint_t) == 2

[May 17 2019]

  • DOC: Typo, layout.

[May 16 2019]

  • CLEANUP: Avoid warning about ununsed IS_REC_DELAY(). Paulo Moura.

[May 11 2019]

  • ADDED: Integrate WFS with the toplevel.
  • TEST: Added XSB PTQ tests
  • TEST: Added (unmodified) XSB delay tests
  • TEST: Include XSB WFS tests

[Apr 5 2019]

  • ADDED: Tabling to support Well Founded Semantics. Work suppored by Kyndi, with lots of help from Theresa Swift and David S Warren.

[May 11 2019]

[May 9 2019]

[May 3 2019]

  • MODIFIED: _PL_get_arg() from void to int return value. Makes it easier to use in sequences of &&. Should not harm compatibility.

[May 7 2019]

  • INSTALL: Clarified CMake versions
  • DOC: Fix incorrect argument name Flag -DNATIVE_FRIEND is not used by the cmake build, there is only -DSWIPL_NATIVE_FRIEND.

[Apr 28 2019]

  • TEST: Make test_installation work when swipl is started from a relative path.
  • FIXED: possible unneeded fatal stack overflow after an earlier caught overflow.
  • TEST: Broken test after fix to assert to a static predicate.

[Apr 26 2019]

  • PORT: Use `--enable-fat` for building gmp for the Mac Bundle as suggested by Torbjörn Granlund.
  • PORT: Use the self-compiled MacOS dependencies for creating the MacOS bundle.
  • PORT: Added scripts/macos-deps.sh to build the MacOS dependencies from source.

[Apr 25 2019]

  • PORT: Allow MACOSX_DEPENDENCIES_FROM to specify a directory with the dependencies

[Apr 23 2019]

  • PORT: Provide correct LDSOFLAGS for compiling extensions from the MacOS bundle.

[Apr 22 2019]

  • PORT: Set MacOS deployment target to 10.12.

[Apr 21 2019]

  • DOC: updated the calc foreign example.
  • PORT: MacOS: When running as bundle, report the Frameworks directory of the bundle as the location for the dylibs.

[Apr 20 2019]

  • PORT: On MacOS use cc and `c++` as compilers in swipl-ld. The CMake compiler is a specific version from XCode while we should rely on the general Xcode cli tools.
  • FIXED: Component merging for answer subsumption. Fabrizio Riguzzi.
  • TEST: Tabling answer subsumption test by Fabrizio Riguzzi.

[Apr 19 2019]

[Apr 8 2019]

  • FIX: fixes a suplus dot in a test
  • PORT: fixes 91f03daf6, FreeBSD headers Contrary to my claim in 91f03daf6, pthread.h doesn't pull in the files necessary to consume sys/cpuset.h, but sys/param.h does.

[Apr 7 2019]

  • DOC: Updated README.md
  • DOC: Locale initialization

[Apr 6 2019]

  • PORT: adds checks and ifdefs for FreeBSD headers and cpuset_t The cmake checks the system for sys/cpuset.h headers and the typedef from commit ec92f5cbe via check_c_source_compiles, because the sys/cpuset.h can't be used on it's own (it needs sys/cdefs.h and sys/types.h, which are both included by pthread.h anyways, so that's what's used in the checks).

    Symbols defined: HAVE_SYS_CPUSET_H : sys/cpuset.h exists and defines CPU_ZERO HAVE_CPUSET_T : type cpuset_t exists HAVE_PTHREAD_NP_H : pthread_np.h exists

[Apr 4 2019]

  • DOC: PL_chars_to_term() after request on forum.

[Mar 31 2019]

[Mar 30 2019]

  • FIXED: clause_info/2: possible too native unification can lead to incorrect results. Alan Baljeu.

[Mar 28 2019]

  • BUILD: Clarified some issues in CMAKE.md.
  • FIXED: Cleanup of thread-local procedures in temporary modules failed if the localization was only effectuated in a high thread id. This patch refines 81b1c29e0b98c05fd0ca6db6dffbe246e8546408.
  • MAINTENANCE: Make -DMAKE_BUILD_TYPE=Sanitize work on Fedora.

[Mar 27 2019]

  • ADDED: xref_callers/5 which includes caller's line number
  • ENHANCED: Avoid deep mutual recursion in trie node deallocation and fixed a memory leak in trie destruction.
  • SECURITY: utf8_strlen() on non-null terminated input may read beyond the buffer.
  • FIXED: Using a thread_local predicate inside a temporary module could crash the system.
  • ENHANCED: Do not setup colors if $TERM == dumb. Also, when library(ansi_term) is loaded, it will setup its default according to the same rules as the toplevel uses to load this library: I/O must be associated with a tty and $TERM may not be dumb. Peter Ludemann.

[Mar 26 2019]

[Mar 25 2019]

  • FIXED: library(ansi_term): loading should not set the color_term flag to true if it is already defined.

[Mar 24 2019]

[Mar 22 2019]

  • FIXED: Drop the program from the Prolog flag argv for a saved state. Peter Ludemann.

[Mar 20 2019]

  • MODIFIED: Delay determining the associated files on the command line til after loading the user `~/.swiplrc` as well as the explicit script files. This allows for defining alternative extensions to be loaded as Prolog files from the commandline. See e.g., library/dialect/xsb/source.pl

[Mar 18 2019]

  • XSB: Fixed module context for :- table/1 when loading .P modules.
  • TEST: Actually make CTest fail on failing XSB tests.

[Mar 17 2019]

  • TEST: Added XSB negation tests
  • DOC: tnot/1 and new table scheduling.

[Mar 16 2019]

  • ADDED: tnot/1: tabled negation.

[Mar 15 2019]

  • ADDED: C support for negative tabled nodes: marking is negative, resume negations after completion with failure.

[Mar 16 2019]

[Mar 15 2019]

  • MAINTENANCE: Improve debugging support for tabling.
  • ENHANCED: Colour :- table/1 declaration.
  • PORT: PGO optimization using Clang to be flexible on the profile file name. Paulo Moura.

[Mar 14 2019]

  • ADDED: issue#447: tmp_file_stream/3 sets the file_name property of the created file. Peter Ludemann.
  • FIXED: re-enable file consult messages when a file is consulted from the Windows menu.
  • PORT: Support profile guided optimization for clang.

[Mar 13 2019]

  • MAINTENANCE: Provide support for using AddressSanitizer (-fsanitize=address) See CMAKE.md

[Mar 12 2019]

  • DEBUG: Avoid c99 dependency for(int i=0; ... in DEBUG statement.
  • INSTALL: Added declaration for JNIDIR (requires updating jpl module)

[Mar 11 2019]

  • PORT: Android minizip USE_FILE32API
  • TEST: Added XSB ai_tests set to our test suite.
  • FIXED: '$tbl_table_discard_all'/1 deleted worklists twice.
  • XSB: Fixed handling a redefined XSB module if the redefined SWI-Prolog module was already loaded.
  • TEST: Added xsbtests/basic_tests test suite from XSB Prolog to our tests. Added a Prolog driver to fit these tests into the SWI-Prolog/CTest framework. Also avoided some singleton in branch message and use include/1 to get the data set available from multiple modules.
  • FIXED: :- table/1: undefined predicate check should ignore implicitly imported predicates.
  • FIXED: reloading a file with tabled predicates sometimes failed to rename the implementation.
  • XSB: Added dummy implementations for set_pil_on/0 and set_pil_off/0.
  • PORT: Conditionally deal with `-fprofile-dir= and -Wno-maybe-uninitialized` as these are not supported in the default MacOS toolchain. Paulo Moura.

[Mar 10 2019]

  • FIXED: Reenable actually freeing worklists.

[Mar 9 2019]

[Mar 8 2019]

  • CLEANUP: Use new unification style extraction for trie terms for also for trie_term/2 and its internal usage in tabling.
  • TEST: Adjust test parameters for changed GC policies.
  • ENHANCED: Make gc scheduling dependent on the sizes of all stacks.

[Mar 6 2019]

  • ADDED: Collect statistics over most recent garbage collections, including the time spent on GC relative to useful CPU time.

[Mar 8 2019]

  • TEST: Moved trie tests from core to tabling for better balance.
  • FIXED: trie_gen/3: Variable database resizing.
  • FIXED: tries for complex nested terms. Bug introduced with new trie_gen/3 implementation.

[Mar 6 2019]

  • PORT: swipl-ld.exe to configure for native MinGW tools.
  • FIXED: `swipl.exe --dump-runtime-variables` to provide the right value for PLLIBDIR on Windows. Abramo Bagnara.

[Mar 5 2019]

  • FIXED: Avoid excessive GC because the system incorrectly believes it is nearly reaching the stack limit. This is only part of the solution to avoid excessive GC.
  • TEST: Test trie_gen/3 variable sharing.
  • DOC: expand_goal/2 discussing fixed-point computation for generating wrappers.
  • ENHANCED: goal_expansion/2: when wrapping a goal, do allow the same expansion to work on arguments.
  • ENHANCED: Allow goal_expansion/2,4 to wrap a goal.

[Mar 4 2019]

  • COMPATIBILITY: Allow basic saved states to work with --traditional.

[Mar 3 2019]

  • ENHANCED: Windows: Updated swipl.ico for higher resolutions, so we no longer have to simplify it.
  • INSTALL: Windows: properly install shortcuts.
  • FIXED: trie_gen/3: memory leak

[Mar 2 2019]

  • ENHANCED: Use a buffer rather than a linked list for trie enumeration choice points. Reduces memory and provides a small speedup.
  • ENHANCED: Avoid GET_LD for internal _PL_unify_atomic()

[Mar 1 2019]

  • ADDED: Implement early completion for tabling SCCs if the associated goal is ground.

[Feb 28 2019]

  • ENHANCED: Tabling to determine the variable skeleton for a tabled subgoal. This reduces the sizes of tables and improves the performance for extracting many answers.

[Feb 26 2019]

  • FIXED: Tabling to use call_setup_catcher_cleanup/4 rather than catch/3 to cleanup tables after an exception. Provides marginally better performance, makes cleanup work with abort and preserve SWIs notion of uncaught exceptions, improving debugging.

[Feb 19 2019]

  • ENHANCED: Tabling: realise dynamic creation of minimal SCCs. This generally improves performance, reduces memory usage and allows many more Prolog constructs to be compatible with tabling. After discussions with Teri Swift, David Warren and Fabrizio Riguzzi.
  • WIP: First steps dealing with dynamic local SCCs. Compiles and runs.

[Mar 1 2019]

  • SECURITY: possible buffer overrun when dealing with very large strings

[Feb 26 2019]

  • BUILD: Update CMAKE.md and enhanced cmake/CheckEnv.cmake, checking the environment for things that may break the build.
  • FIXED: convert 'annotated' stack_limit command line option to an integer when qcompiling a toplevel
  • ENHANCED: allow plain integer values to be passed to --stack_limit command line option

[Feb 25 2019]

[Feb 20 2019]

[Feb 19 2019]

  • PORT: Make alignment detection work for Emscripten.

[Feb 13 2019]

  • DEBUG: Adding conditional debug statements to boot/tabling.pl
  • DEBUG: Added Prolog flag prolog_debug if the system is compiled in Debug configuration.
  • TEST: Move tabling tests into their own subdir so we can run only those using `ctest -R tabling`.
  • FIXED: library(prolog_colour): Avoid an exception on :- meta_predicate p().
  • FIXED: pack_remove/1 if the pack exists but was not attached due to a lacking foreign library. If the pack is really missing it now just prints a message instead of raising an exception. Paulo Moura.

[Feb 12 2019]

  • XSB: More emulation

[Feb 11 2019]

  • XSB: Get directives to the head. Order doesn't matter for XSB, which uses a two phase compiler, but it does for SWI.

[Feb 12 2019]

  • PORT: Avoid dependency on C99 for alignment check.

[Feb 5 2019]

  • FIXED: return exit code if swipl -c fails

[Feb 11 2019]

  • FIXED: PL_thread_attach_engine(NULL) crashed. Stisko.
  • XSB: Work in progress.
  • XSB: Added various predicates to the emulation libraries.

[Feb 10 2019]

[Feb 8 2019]

  • MODIFIED: display/1,2 now write lists using the internal SWI-Prolog '[|]' functor. Adds an option no_lists(bool) to write_term/3.
  • XSB: Ignore :- ti/1, allow for cyclic module dependencies and start emulating the string library.

[Feb 7 2019]

  • BUILD: Allow scripts/pgo-compile.sh to run from any build dir, also if this is not an immediate subdir of the source. Paulo Moura.

[Jan 16 2019]

  • PORT: Allow building in Haiku

[Feb 4 2019]

  • XSB: Started intern library emulation.
  • PORT: Force compiling and linking against XQuartz on MacOS when creating a bundle.

[Feb 3 2019]

  • ENHANCED: delete lingering clause indexes older than the oldest active predicate access

[Feb 1 2019]

  • ENHANCED: Do not request a garbage collection after an exception unless we ran out of stack on a stack that is subject to GC.
  • ENHANCED: No longer perform forced GC before calling the user exception hook. GC is allowed inside the hook, so there is no reason to do so.
  • MODIFIED: No longer use print_message/2 for trace_gc. If GC happens in some parts inside the VM we cannot handle calls to Prolog safely.
  • FIXED: Only check that an async signal handler created an exception.
  • XSB: Added dummy abolish_table_info/0.
  • FIXED: SWI-Prolog refuses to export ISO predicates, so we cannot import them either. This isn't needed anyway.

[Jan 31 2019]

  • FIXED: Make sure closing a zipper twice does not open the stream twice.

[Jan 30 2019]

  • XSB: completed basics.pl emulation
  • TEST: Avoid name clash in tabling tests.
  • ENHANCED: Verify a predicate has no clauses when :- table is declared.
  • XSB: Partially emulate compiler options.
  • CLEANUP: Avoid truncating in abs(ssize_t) (benign).
  • FIXED: Issue#82: Throw a floating point exception when NaN/Inf floats need to be converted to an integer.

[Jan 29 2019]

  • XSB: Support modified libraries with the same name.
  • XSB: Improve :- import ... from ... emulation.
  • FIXED: Pretend begin_of_file is expanded from line 0 instead of make source_location/2 fail.

[Jan 28 2019]

  • XSB: Deal with .H files.
  • XSB: Support operators mode and export. Make import look for modules relative to the current dir.
  • FIXED: Moved setting the SIGINT handler from resetTracer() to initTracer() so it won't reinstall the default SIGINT handler on abort if the user changed the binding.
  • FIXED: on_signal/3 handling of throw. Peter Ludemann.

[Jan 25 2019]

  • PORT: Prolog flags for android

[Jan 24 2019]

[Jan 23 2019]

  • PORT: set proper android arch

[Jan 22 2019]

  • ADDED: Multi and cross-architecture shlib support for saved states

[Jan 24 2019]

  • FIXED: qsave_program/2: deal with prolog and default toplevels. Keri Harris.

[Jan 23 2019]

  • FIXED: add -rdynamic to cflags to export symbols (fix #420) Only do this if we do not put the Prolog core in a shared object. * After cmake 3.4 -rdynamic is not added when building a target. This breaks the android termux build. This patch solves the problem.
  • TEST: Fixed test that broke due to assert to a static procedure unrelated to the test.
  • FIXED: Issue#81: assert/1 and friends must produce a permission error if the predicate is not dynamic and defined.
  • XSB: Added load_dyn/1,2 and load_dync/1,2.
  • FIXED: in_temporary_module/3: destroy the load context for files loaded into this module.
  • XSB: Partial compile/2 emulation.
  • HACK: Use (index)/1 instead of index/1 to avoid a conflict with XSB index operator. It is unclear how to guarantee that the first term of a source file is always read as intended.
  • FIXED: Allow qcompile/1 on files with a different implicit Prolog extension.

[Jan 22 2019]

  • PORTABILITY: Started XSB dialect specification.

[Jan 23 2019]

  • FIXED: prolog_load_context/2 to provide the correct file, source and directory before the first term.
  • ADDED: term_expansion/2,4: add pseudo term begin_of_file to the expansion stream.

[Jan 22 2019]

  • FIXED: load_files/2: Added predicate option declaration for dialect(+Dialect)
  • CLEANUP: Move saved state generation to library(qsave) to simplify init.pl
  • ENHANCED: Removed conditional code from the boot file. This ensures we have the same boot file regardless of the machine, simplifying cross compilation.
  • CLEANUP: Name the boot file simply boot.prc as it no longer depends on the word-size.

[Jan 21 2019]

  • ADDED: Prolog flag portable_vmi.
  • CLEANUP: Proper range test (LONG_MAX -> INPTR_T_MAX)

[Jan 18 2019]

[Jan 17 2019]

  • FIXED: possible crash when loading saved states that contain procedures with NULL modules
  • PORT: Generate i386 binaries on x86_64 Debian based Linux systems.
  • BUILD: Updated minimum CMake version required to 3.5

[Jan 15 2019]

[Jan 14 2019]

  • DIST: added packages/windows directory to source archive. Keri Harris
  • PORT: Get WSAPoll() for Windows.
  • DOC: LaTeX error
  • DOC: thread_at_exit/1: goal is run without signal processing.

[Jan 13 2019]

  • MODIFIED: run thread exit mode while signal handling for the dying thread is disabled. This guarantees that if an already dying thread is aborted using a signal it still executes its cleanup.
  • FIXED: Various issues concerning stream error propagation.

Package bench

[May 12 2020]

  • BUILD: Make benchmarks work without autoloading.

Package debian

[Mar 12 2019]

  • INSTALL: Use -DJNIDIR=$(JNIDIR), leaving installation of libjpl.so to CMake.

Package RDF

[Mar 9 2020]

Package archive

[Apr 3 2020]

  • BUILD: Doc build depends on package itself.

[Feb 12 2020]

  • AUTOLOAD: Add explicit autoload/2 statements to all libraries provided by this package.

Package bdb

[Apr 3 2020]

  • TEST: use test_tmp_dir to find a writeable place for the test output.
  • FIXED: If a database cannot be opened it is still around as a current database and closing it (explicitly or at the end of the process) crashes.

Package chr

[May 7 2020]

  • CLEANUP: Add missing dependencies to build without autoloading.

[Mar 23 2020]

  • BUILD: Use --no-packs to avoid dependencies on user packs

Package clib

[May 23 2020]

  • ENHANCED: Handle EISCONN under non-windows systems too. This happens when we retry to connect due to interrupt/signal but we actually already have established an connection and can safely return here.

[May 6 2020]

  • FIXED: Avoid freeing non-malloced buffer.
  • ENHANCED: Scoped temporary strings.

[Apr 23 2020]

[Apr 10 2020]

  • ADDED: Server support for AF_UNIX sockets and a test

[Apr 8 2020]

[Mar 28 2020]

  • PORT: Another use of `extern environ` that blocks MacOS 10.6.

[Mar 23 2020]

  • PORT: Include crt_externss.h for MacOS.

[Mar 22 2020]

  • PORT: process.c for MacOS <= 10.6 to use _NSGetEnviron()

[Feb 27 2020]

  • PORT: UDP multicasting detection of HAVE_IP_MREQN instead of hard coded test.

[Feb 12 2020]

  • AUTOLOAD: Add explicit autoload/2 statements to all libraries provided by this package.

[Feb 11 2020]

[Dec 28 2019]

  • FIXED: process_create/3: stderr was sent to stdout. Reported by Jos Deroo. @since 9ea716e2c90fc359f03b1a838d9b764ca683608f

[Dec 23 2019]

  • MODIFIED: process_create/3: std I/O now uses the file handles underlying user_input, user_output and user_error rather than the hard coded 0,1,2. This allows using process_create/3 with standard handles in secondary consoles.

[Dec 2 2019]

  • FIXED: Request for HAVE_SIGPROCMASK to be added to clib packge's config.h

[Nov 30 2019]

  • FIXED: Avoid live lock in fork() due to profile signals that prevent fork() to complete. Edward Schwartz.

[Sep 18 2019]

  • DOC: call_with_time_limit. Nicos Angelopoulos.

[Jul 19 2019]

[Jul 12 2019]

  • TEST: Make process stream test immune to white space output from wc. Also removes the shell as intermediate from this test. Joost Geurts.

[Jul 5 2019]

  • ADDED: process_create/3: stream(+Stream) value for the inputs and outputs, adding ability to pass a handle to an open filed to a process.

Package clpqr

[Feb 12 2020]

  • ENHANCED: Minimal changes to support disabled autoloading. This package requires some serious reconsiderations of the relations between modules. As is, it refers to many undefined predicates that are not actually called and performs a lot of cross-module calls.

[Jan 31 2020]

Package cpp

[May 26 2020]

  • DEMO: Illustrate malloc/tmalloc issues.

[May 13 2020]

  • CLEANUP: MSVC no longer thinks throw doesn't return

[Apr 10 2020]

  • CLEANUP: Removed old files, updated README.

Package cql

[Jan 31 2020]

  • PORT: Allow compiling without rational number support.

[Jan 25 2020]

  • FIXED: Missing argument in format/2 call.

[Sep 5 2019]

  • CLEANUP: Logtalk linter warnings.

Package http

[Apr 22 2020]

  • SNAP: Try to get the location for jquery correct.

[Apr 21 2020]

[Apr 20 2020]

  • DOC: Wrong ssl dependency (gives Prolog error messages during build, otherwise harmless).

[Apr 6 2020]

  • INSTALL: Removed demo_body from INSTALL_TESTS. Seems unused.

[Apr 3 2020]

  • DOC: Avoid building docs to load SSL

[Mar 29 2020]

[Mar 20 2020]

  • TEST: Omit HTTPS tests of library(ssl) is not provided.
  • BUILD: No longer need SSL for building the docs

[Mar 5 2020]

  • ENHANCED: json_read/2,3 and json_read_dict/2,3: if the input stream is binary switch it to use UTF-8 encoding for reading the dict.
  • ENHANCED: http_open/3 to autoload library(gzip) if the content encoding is gzip.

[Mar 3 2020]

  • ADDED: json_write/2,3 and variations: emit rational numbers as floating point numbers. Applications can redefine this behaviour using json_write_hook/4.

[Mar 2 2020]

  • ENHANCED: atom_json_dict/3: use open_string/2 instead of memory files for better performance, more flexible input handling and error generation.

[Mar 1 2020]

[Feb 26 2020]

  • AUTOLOAD: Support new autoloading for the client libraries and some of the server parts.
  • CLEANUP: Make dict code no longer conditional.

[Feb 7 2020]

  • FIXED: append argument order in auth_expansion authentication did not expand the request because the appnd in auth_expansion failed (wrong argument order)

[Feb 5 2020]

  • FIXED: library(http_open): Include the path/1 in the parsed URL so that http_cookie can correctly use it to identify cookies with specific paths to be included in requests. Failure to include path/1 means that http_cookie will default to / which is not correct

[Feb 4 2020]

  • FIXED: Communicated HTTP status code if this was set using the CGI Status: code command.

[Jan 30 2020]

  • TEST: Make test robust against rationals.

[Jan 25 2020]

  • FIXED: Excess argument in debug/3 call.

[Jan 20 2020]

  • FIXED: Missing cut

[Jan 6 2020]

  • MODIFIED: http_open/3: map cacerts_file(File) to cacerts options.

[Dec 20 2019]

  • ENHANCED: Do not print errors to the console for sending files where the client aborts the connection before completion.

[Dec 17 2019]

  • FIXED: Avoid goal_failed(http_process/4 messages, possible if sending the main message results in a broken pipe error.

[Nov 9 2019]

[Sep 5 2019]

  • CLEANUP: Duplicate directive. Logtalk linter.

[Apr 18 2019]

[Apr 8 2018]

  • DOC: Fixed a minor typo.

[Mar 29 2019]

  • FIXED: Issue#91: mime_pack/3: lacking cut causes bad behaviour on backtracking.

[Mar 25 2019]

[Feb 13 2019]

  • ADDED: library(http/thread_httpd): load http_ssl_plugin if the option list indicates we want SSL. After remark by Fernando Sáenz-Pérez.

[Feb 10 2019]

  • DOC: Use new [[library(http/json)]] notation to get proper paths for the source files included by json.md. Also updated the documentation intro for JSON a bit.

[Jan 25 2019]

  • DOC: library(http/http_client), option json_object(dict). Joost Geurts.
  • MODIFIED: Issue#422: json_read/3 and friends no longer read the character that follows the JSON document, allowing for concatenated JSON.
  • FIXED: json_read_dict/2,3: allow options to define arbitrary terms for true, false, null and end_of_file.
  • ADDED: json_read/3 and friends, option end_of_file(+Action), where Action is either the atom error, throwing a syntax error or any other term, returning this term if the end of the input is encountered after skipping white space but before any data.

[Jan 24 2019]

[Jan 18 2019]

  • EXAMPLES: Updated demo daemon script and systemd service example.

Package jpl

[May 25 2020]

  • BUILD: Silence messages about JNI_INCLUDE_DIRS/JNI_LIBRARIES

[May 10 2020]

  • ENHANCED: documentation on developing JPL

[May 2 2020]

  • MODIFED: Updated JPL JavaDocs to reflect JPL 7.6.0
  • ADDED: .hascode() to every entity having .equals()
  • FIXED: hasCode() for Atom and Compound

[May 1 2020]

  • FIXED: Added missing @Deprecated.

[Apr 28 2020]

  • MODIFIED: refactored term methods from Util to Term
  • MODIFIED: JPL version from 7.5.0 to 7.6.0

[Apr 24 2020]

  • ADDED: Documentation on lists in JPL
  • ADDED: textual toString() for list terms

[Apr 20 2020]

  • ENHANCED: Avoid dependency on clib package.

[Apr 14 2020]

  • TEST: Migrate to JUnit 4 - addresses #40

[Mar 23 2020]

  • TEST: Reduce long lists checks as they run out of stack on 32 bit platforms.
  • BUILD: Use --no-signals instead of the deprecated --nosignals and add --no-packs.

[Mar 4 2020]

  • PORT: Resolved JPL loading on Windows. This implies (1) using (again) foreign(jpl) to find the library (2), get the proper Java location from the Windows registry, (3) clarify win_add_dll_directory/2 issues and (4) properly setup the foreign search path in the Windows build environment.

[Mar 3 2020]

  • PORT: Updated Windows Java registry locations for recent versions of Java (still also looks at the old places).
  • PORT: Make loading library(jpl) work again on Windows.

[Feb 12 2020]

  • AUTOLOAD: Add explicit autoload/2 statements to all libraries provided by this package.

[Feb 4 2020]

  • COMPAT: Updated PL_* and CVT_* constants due to renumbering to include rationals.

[Mar 12 2019]

  • INSTALL: Allow installing libjpl.so in $JNIDIR to support Debian install. After discusion with Lev Lamberov.

[Feb 11 2019]

  • FIXED: Install env.sh into the Java examples and update it to deal with both the installed version and version from the build environment.

[Jan 22 2019]

  • COMPAT: Boot file is always boot.prc (used for testing).

Package libedit

[Feb 10 2020]

  • CLEANUP: Make libedit use the new autoloader to reduce its footprint, notably if it is not used.

[Dec 22 2019]

[Dec 21 2019]

  • FIXED: el_unwrap/1: avoid ignoring a possible exception.

[Nov 17 2019]

  • ADDED: Implement C-r: incremental search in the history. This also exposes more of the libedit low level functionality to Prolog, notably reading raw input and pushing characters into the input buffer.

[Sep 11 2019]

Package ltx2htm

[May 7 2020]

  • CLEANUP: Replaced deprecated predicates

[Apr 10 2020]

  • CLEANUP: Use autoload/1,2 and replace most deprecated predicate calls.

[Jan 27 2020]

  • ENHANCED: handle LaTeX word'' and `word'.

[Jan 23 2020]

  • ENHANCED: Map some more mathematical symbols to HTML entities.

[Jul 11 2019]

  • FIXED: clean names for sequences of special characters.

Package odbc

[Apr 16 2020]

  • DOC: odbc_close_statement/1 missing arity.
  • DOC: Predicate description outside LaTeX description disturbs the layout and documentation index generation for the ODBC package.

[Feb 26 2020]

  • AUTOLOAD: Support autoloading.

[Aug 6 2019]

  • PORT: Make compile in single-threaded mode.

[Jul 10 2019]

  • FIXED: Deal with empty result set.
  • TEST: Make test_odbc.pl work with the sqlite3 ODBC driver.
  • FIXED: Avoid failure on SQL_NO_DATA_FOUND replies for update queries.
  • ADDED: odbc_next_result_set/1 to ODBC to fetch data from subsequent result sets. MODIFIED: Statements prepared using odbc_prepare/5 with the option fetch(fetch) must now be explicitly closed or freed.

Package paxos

[Apr 10 2020]

[Jan 25 2020]

  • FIXED: Fixed format template in debug/3 message

Package pcre

[May 6 2020]

  • ENHANCED: Scoped temporary strings.

[May 4 2020]

  • FIXED: Possible ring buffer overrun

[Apr 15 2020]

  • FIXED: Issue#571: pcre allocation of the output vector could be too short. David Sitsky.

[Mar 26 2020]

[Feb 26 2020]

  • AUTOLOAD: Support new autoloading.

Package pengines

[Apr 22 2020]

  • ENHANCED: When printing the WFS residual program leave out undefined/0 and friends.

[Apr 13 2020]

[Apr 10 2020]

[Mar 20 2020]

  • FIXED: Pengine ID generation if UUIDs nor GMP numbers are provided.

[Mar 11 2020]

  • ENHANCED: Term -> HTML rendering to take care of SWISH preferences.

[Feb 18 2020]

  • FIXED: term//2 (term --> HTML) to add a spaces in X + -1.

[Feb 15 2020]

  • FIXED: term//1 (term to HTML): respect rational_syntax flag of the module.

[Jan 30 2020]

  • ADDED: Support rational numbers in term --> HTML conversion.

[Jan 29 2020]

[Dec 15 2019]

  • FIXED: Avoid a race condition between a terminating Pengine and using its module for reading the next event arriving through HTTP. Access to the temporary module being destroyed is illegal.

[Sep 5 2019]

  • CLEANUP: Avoid duplicate declaration. Logtalk linter.

[May 22 2019]

  • MODIFIED: Pengines handling of /abort through HTTP. The abort handler (still) sends a signal to the Pengine. The Pengine will reply through the handler that is waiting for it (create, ask, next, pull_respons) with an abort message. This waiting request is no longer aborted in JavaScript, which didn't work anyway. The /abort handler itself answers a 404 if the Pengine doesn't exist or a JSON true if the signal was sent, without waiting for its reply.

[May 16 2019]

  • ADDED: /pengine/detach method that allows for detaching from a connected Pengine, keeping it running in the background. This is backed up by changes to SWISH that can be activated to allow long running jobs.

[May 15 2019]

  • ADDED: Support for WFS residual programs

Package pldoc

[May 24 2020]

  • DOC: Index documented multifile hooks from modules.

[May 20 2020]

  • ADDED: > blockquote support.

[May 7 2020]

  • CLEANUP: Add missing dependencies, removed deprecated predicate calls.

[Mar 20 2020]

  • FIXED: Property read the manual index regardless of the double_quotes flag in module user.

[Mar 18 2020]

  • FIXED: link Alias(File) also when rendering a single object and not only a complete file. Peter Ludemann and Nicos Angelopoulos.

[Mar 10 2020]

  • FIXED: ?- help(format).: pass options further down, add an option server(false) and thus avoid trying to rewrite HTML href fields for the command line manual. This is work in progress. Still far too much of the HTTP infrastructure is involved for showing the HTML manual pages.

[Feb 26 2020]

  • FIXED: Avoid dependency on old manual index.

[Feb 2 2020]

  • FIXED: Help index generation for division functions (/ and //).

[Jan 27 2020]

  • ADDED: Determinism mode undefined to deal with the well founded semantics status.

[Jan 23 2020]

  • FIXED: PlDoc rendering for source code: too many arguments for format/3.

[Nov 20 2019]

  • ADDED: Allow for [Title](#label) to reference a local anchor.

[Nov 11 2019]

  • FIXED: issue#470: get source links for unqualified predicates from the system's main sources. Falco Nogatz.

Package plunit

[May 4 2020]

[Apr 15 2020]

  • FIXED: Missing import

[Apr 10 2020]

[Feb 15 2020]

[Jan 16 2020]

  • DOC: Fix documentation link. Also removes some old files from pre-cmake eras.

Package protobufs

[Feb 12 2020]

  • AUTOLOAD: Add explicit autoload/2 statements to all libraries provided by this package

Package semweb

[May 3 2020]

  • TEST: Added test for rdf(X,_,X).

[May 2 2020]

  • FIXED: Some instantiations of rdf/3 give incorrect results #78

[Apr 24 2020]

  • DOC: rdf_update/4 cannot change a graph. Jacco van Ossenbruggen.

[Apr 10 2020]

  • FIXED: Allow rdf_meta/1 to act on a module-qualified head to support multifile predicates. Joost Geurts.

[Apr 3 2020]

  • TEST: Avoid creating g1.rec for a normal test run.

[Apr 2 2020]

  • PORT: Use GCC __atomic instructions.

[Mar 20 2020]

  • FIXED: library(semweb/rdf11) handling of time related data structures. Reported and diagnosed by Joost Geurts.
  • TEST: Disable tests that require SSL if this is not present

[Mar 5 2020]

  • ADDED: Turtle writer to understand RDF11 literal notation.

[Feb 26 2020]

  • AUTOLOAD: Support new autloading for the semweb (RDF) library.

[Jan 25 2020]

  • MODIFIED: Turtle parser: if input is a text stream assume that the encoding is correct. This avoids a permission error if the stream (for example) originates from open_stream/2.

[Jan 11 2020]

[Dec 3 2019]

  • FIXED: incorrect detection of empty RDF list

[Aug 29 2019]

  • FIXED: incorrect temporary stream encoding in rdf_save/2

[Aug 28 2019]

[Aug 20 2019]

  • TEST: block Unicode tests use characters outside the UCS-2 range.

[Jul 11 2019]

  • FIXED: RDF predicate cloud merging

[Jul 5 2019]

  • ADDED: rdf_load/2: option multifile(+Boolean) to indicate that multiple sources may be loaded into the same graph.

Package sgml

[May 6 2020]

  • ENHANCED: Scoped temporary strings

[Apr 23 2020]

  • FIXED: Possible buffer overrun in format_location(). Matt Lilley.
  • SECURITY: Potential buffer overflow when raising gripes involving files with very long filenames (such as files loaded via a URL with a long search parameter). It turns out that swprintf does not always append a NULL if the buffer is too short - it does on macOS but not on minGW or Ubuntu

[Apr 9 2020]

  • TEST: Added test cases from w3c for c14n.

[Apr 6 2020]

  • FIXED: Preserve prefix name in xmlns declaration if ns/2 is in use

[Mar 6 2020]

  • FIXED: When sorting namespaces in the element attributes, the critical thing is that the prefix is sorted, not the URI
  • ENHANCED: Handle ns/2 in xml_ns/3. Also properly handle the case where two different prefixes refer to the same URL now that we have the prefix available. This fixes canonicalization of attributes if there are two namespaces that expand to the same URI

[Mar 5 2020]

  • MODIFIED: Respect keep_prefix option for attributes, as well. Required to compute XML signatures

[Feb 12 2020]

  • AUTOLOAD: Add explicit autoload/2 statements to all libraries provided by this package.

[Feb 4 2020]

  • FIXED: library(c14n2): Preserve namespaces belonging to attributes in the element when canonicalizing.

[Mar 27 2019]

  • FIXED: SGML/HTML/XML parser: possible memory leak and reading an out-of-scope automatic variable.

[Mar 3 2019]

  • MODIFIED: Change data handling from XSD 1.0 to XSD 1.1. In XSD 1.2, the value 0 is allowed for xsd:gYear. Note that all negative (before BC) are interpreted differently. Updated the tests accordingly.

    The old behaviour can be activated by defining the C preprocessor flag XSD_VERSION_1_0.

Package ssl

[May 23 2020]

  • BUILD: Missing dependency for building tests

[May 11 2020]

  • CLEANUP: Avoid two "return makes pointer from integer" warnings. Harmless.

[Apr 9 2020]

  • ENHANCED: Share certificates between all SSL contexts that only use the system root certificates.
  • ADDED: ssl_property/2. Used to maintain compatibility wrt the close_parent property of the HTTP SSL hooks.
  • ENHANCED: Share the certificate stack between SSL contexts, making cloning these stacks a lot cheaper.

[Apr 8 2020]

  • ENHANCED: Avoid general SSL context initialization just to replace it.
  • FIXED: Missing prefix on SignedInfo means that the hash is not correctly computed, which means that signatures are not correctly verified
  • ENHANCED: HTTP SSL plugin: moved setting close_parent(true) to creating the SSL context so we can share the same context for each accepted connection instead of duplicating the context.

[Apr 6 2020]

  • INSTALL: Add component to installation of demo etc and tests.

[Apr 1 2020]

  • TEST: Recreate the test certificates with 2048 bit keys since later versions of Debian (at least) will no longer accept 1024-bit keys
  • FIXED: Timeout handling with OpenSSL 1.1.1e and later. Resolved by Matt Lilley.

[Mar 28 2020]

  • TEST: Document failing server test when using OpenSSL 1.1.1e

[Mar 27 2020]

  • FIXED: ssl_context/3: declare new cacerts option
  • ENHANCED: avoid blocking if the SSL server tests fails.
  • TEST: Cleanup test module (unneeded path handling, redundant newlines in debug/3 messages).

[Mar 23 2020]

  • BUILD: Add --no-packs to avoid dependency on user packs.

[Feb 28 2020]

[Feb 12 2020]

  • AUTOLOAD: Add explicit autoload/2 statements to all libraries provided by this package.

[Feb 4 2020]

  • FIXED: Update library(saml) to use new crypto API
  • FIXED: library(xmldsig) updated to use the new certificate API and use the nominated canonicalization method
  • FIXED: library(saml) needs to be updated to use the new certificate API - in particular, two certificates cannot be compared using unification anymore

[Jan 6 2020]

  • MODIFIED: ssl_context/3 option processing. The option cacert_file(File) has been deprecated in favor of cacerts(List) to ensure unambiguous merging of options. This notably affects the hook http:open_options/2 when both cacert_file and cacerts options are provided. New rules:
    • Only use cacerts(List) - If there are multiple answers, http:open_options/2 earlier values for cacerts(List) overrule later. For each solution of this hook, cacert_file(File) is mapped to cacerts([file(File)]) before options are merged. - An explicit cacerts(List) in the option list overrules defaults.

    If a cacert_file(File) term is mapped the system prints a deprecated message.

[Dec 10 2019]

[Dec 2 2019]

  • MODIFIED: SSL certificates are no longer represented as Prolog terms but as blobs a predicate certificate_field/2 to query fields of the certificate. Any old code which obtains fields from the certificate using memberchk/2 should be modified to use certificate_field/2 instead. Typical SSL applications rarely examine certificates directly and therefore we expect the implications on user code to be minor.

Package swipl-win

[Apr 22 2020]

  • MODIFIED: Change Qt settings basename from SWI-Prolog to swi-prolog, which merges the Qt config files with the other swi-prolog config files. Also changes setting up the default font to use Monospace and set hinting such that we really want a monospaced font.

[Apr 18 2020]

  • FIX: add ESC sequence for 8 bit and true color

Package table

[Jan 12 2020]

  • PORT: Fix for MacOS by Abramo Bagnara.

Package tipc

[Apr 10 2020]

[Sep 12 2019]

  • BUILD: Issue#506: TIPC does not depend on libedit.

Package xpce

[May 5 2020]

  • ADDED: PceEmacs C-cC-e bound to M-x export to export the predicate below the caret.
  • ADDED: PceEmacs: \C-c\C-o, bound to new M-x make_module that adds a module header if the file does not have one already.

[May 1 2020]

  • ENHANCED: Use application->icon_image to group the frame.
  • ADDED: application<->icon_image to try and group all frames of an application under the same icon. Works for PceEmacs using the Ubuntu Dock.
  • MODIFIED: @pce_image is now an 48x48 SWI-Prolog owl instead of a 16x16 owl without background. This image is used as the default icon for XPCE windows.
  • FIXED: X11: Use _NET_WM_ICON property to make the frame icon available. This fixes icons for docks on modern window managers.

[Apr 30 2020]

  • ENHANCED: X11: Set _NET_WM_PID Window property to facilitate window grouping in the Ubuntu desktop.
  • ENHANCED: PceEmacs: make Documentation menu on predicates dump the documentation in an Emacs buffer named *Documentaion*.
  • FIXED: Handle oblique to request a slanted font (X11).

[Apr 29 2020]

  • ADDED: PceEmacs Prolog mode: ->check_dependencies and ->update_dependencies

[Apr 17 2020]

  • FIXED: Avoid infinite recursion if neither a specific font nor the default font exists.

[Apr 9 2020]

  • FIXED: PceEmacs compiler warning intercept to handle newer message elements such as ansi(Class, Fmt, Args). Matthias.

[Apr 6 2020]

  • CLEANUP: Make internal cross-module calls declared.

[Mar 22 2020]

  • FIXED: XPCE failed to build due to wrong detection of FontConfig.

[Mar 20 2020]

  • BUILD: do not build xpce if Xpm, FreeType or Fontconfig are missing.
  • PORT: Build if X11/extensions/Xinerama.h is not present. Cory Cohen.

[Mar 4 2020]

  • FIXED: Windows: avoid a 15 seconds wait for opening the GUI debugger if the editor was not used before.

[Feb 26 2020]

  • ADDED: PceEmacs ->insert_line_comment: process numerical argument to set the comment column. Default: use nearby, 4: use setting, else use value.

[Feb 23 2020]

  • ENHANCED: PceEmacs: ->insert_line_comment to find the column from a nearby line comment and align with that if possible.

[Feb 13 2020]

  • FIXED: Browsing in right panel of profiler.

[Feb 12 2020]

  • AUTOLOAD: Get basics of PceEmacs and graphical debugger working with disabled autoloading.
  • AUTOLOAD: Working on autoload-safe operation for xpce and PceEmacs.

[Feb 8 2020]

  • FIXED: Graphical debugger: avoid duplicate option key expose (crashes new print_term/2).

[Feb 7 2020]

  • FIXED: force float arithmetic as xpce cannot handle rationals (yet).

[Feb 1 2020]

  • ADDED: PceEmacs to support rationals

[Dec 12 2019]

  • COMPAT: Avoid MKINDEX.pl from depending on the working directory.

[Dec 6 2019]

  • FIXED: PceEmacs: save bookmarks

[Oct 8 2019]

  • ENHANCED: Prevent creating a config dir below a directory not owned by the process.

[Oct 7 2019]

  • MODIFIED: Load PceEmacs extensions from app_config('xpce/emacs') instead of ~/lib/xpce/emacs

[Oct 6 2019]

  • ENHANCED: Allow edit script and PceEmacs mode to pass the column to edit.
  • MODIFIED: Place PceEmacs socket in xpce's data directory
  • MODIFIED: Inherit new SWI-Prolog search for storing application data.

[Oct 1 2019]

  • FIXED: Details menu and single click in pce profiler view.

[Sep 25 2019]

  • COMPAT: Sync with new profile data format and reuse more code from the core Prolog system.

[Sep 20 2019]

  • CLEANUP: Make the profiler run on library(statistics) instead of replicating the code.
  • FIXED: profiler table header for clusters

[Sep 19 2019]

  • ADDED: Graphical profiler: show exit and fail counts.
  • PORT: Use new '$prof_procedure_data'/10 (extra Exit arg)

[Aug 26 2019]

  • XSB: initial XSB colour mode.
  • ADDED: Deal with dedicated operators on Prolog sub-modes
  • ADDED: xsb mode for editing files in XSB syntax, triggered by the .P extension.

[Aug 16 2019]

  • CLEANUP: _WIN32_WINNT is set globally.

[Aug 6 2019]

  • THEME: PceEmacs: changed style for matching variables to use the same color as alternative matches during search (pale_turquoise).
  • PORT: Make xpce compile without threads. Doesn't yet work though.

[Jul 22 2019]

  • ADDED: interfaces to hook styling the debugger.
  • ADDED: multifile hook on_load/0

[Jul 19 2019]

  • MODIFIED: interaction with command line arguments to allow Prolog to raise errors on undefined command line arguments.

[Jul 14 2019]

  • FIXED: graphical tracer binding window: avoid scrolling when selecting a binding in scrolled state.
  • FIXED: completion in class prolog_predicate_item (ERROR: Type error: `atom' expected, found `C'dict'' (a reserved_symbol_reference)
  • FIXED: Deal with new trace/1,2 implementation.

[Jul 11 2019]

  • PORT: Avoid conflict between X11 String and XPCE's String type. Used to have a hacky work-around, but that no longer stopped gcc 9 from raising warnings. Now renamed to PceString.

[Jul 5 2019]

  • FIXED: Prolog navigator: avoid '$qlf_info'/8 and use more robust '$qlf_sources'/2.

[Jul 4 2019]

  • FIXED: GUI tracer: do not interpret key bindings for the debugger if the editor is in a sub-mode (e.g., searching).

[Jun 27 2019]

  • FIXED: translation of [] into an empty vector/chain.

[Jun 22 2019]

Package yaml

[Feb 12 2020]

  • AUTOLOAD: Add explicit autoload/2 statements to all libraries provided by this package.

Package zlib

[Apr 3 2020]

  • TEST: Search for a writable directory for test_tmp_dirthe test files based on the (new) test_tmp_dir path alias.

[Feb 12 2020]

  • AUTOLOAD: Add explicit autoload/2 statements to all libraries provided by this package.