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

SWI-Prolog Changelog from version 7.6.4 to 8.0.1

[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.
  • FIXED: in_temporary_module/3: destroy the load context for files loaded into this module.

[Jan 22 2019]

  • FIXED: load_files/2: Added predicate option declaration for dialect(+Dialect)

[Jan 21 2019]

  • 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.

[Jan 10 2019]

  • STABLE: Initial merge from development version

[Jan 9 2019]

  • MODIFIED: close(StreamPair) now closes its output before the input.
  • FIXED: Windows version: make wait_for_input/3 available again. With help from Keri Harris.

[Jan 8 2019]

  • ADDED: PL_get_stream(): allow for SIO_NOERROR flag to suppress errors.

[Jan 7 2019]

  • DEBUG: Print C-stack when falling back to C-defined printMessage() because the Prolog one is not available.

[Jan 4 2019]

  • FIXED: Issue#403: clause_info/5: binds DGC tail when decompiling a DCG rule if the first statement is a terminal.

[Jan 2 2019]

[Jan 1 2019]

  • FIXED: library(prolog_colour): exception when zero-argument compounds are passed to a meta-argument with integer > 0.

[Dec 30 2018]

  • ENHANCED: goal expansion for library(yall). Patch by Paulo Moura,

[Dec 24 2018]

  • ENHANCED: Remove unused QSORT_R_WITH_NESTED_FUNCTIONS sort_r() implementation. After the migration to cmake QSORT_R_WITH_NESTED_FUNCTIONS was no longer defined. Apart that, nested functions are not standard and previously in operating systems where PaX MPROTECT, W^X or similar security features are supported SWI-Prolog built successfully but then fail at run time due that.

    While here also update comment describing the current versions.

  • CLEANUP: Remove unused getwd() definition
  • PORT: Define {fopen,ftello,fseeko}64 functions for NetBSD
  • PORT: pthread_setname_np() in NetBSD has three arguments, the 2nd is

a printf(3) format and the third the arguments passed to it.

[Dec 26 2018]

  • FIXED: Issue#392: use install target at final fallback for SWI-Prolog's home.

[Dec 17 2018]

  • ADDED: command line option --no-threads to avoid starting threads at startup.
  • ADDED: foreach//2 to the high order DCG library.
  • ADDED: Sandbox declarations for DCG high order predicates.

[Dec 16 2018]

  • ENHANCED: html_text/2: support cell alignment and horizontal rules in table bodies using the Prolog style definitions (class=hline).
  • ENHANCED: html_text/2: better distribution of column widths.
  • ADDED: html_text/2: handle colspan.

[Dec 15 2018]

[Dec 14 2018]

[Dec 13 2018]

  • FIXED: Track exceptions from hooks called at thread termination. Currently prints them en clears them.
  • MODIFIED: Consider an exception from an asynchronous signal handler a fatal error. It is not allowed to call Prolog from such a handler anyway, so there cannot be an exception. XPCE used to call such a handler on SIGPIPE.
  • DEBUG: Also test wheher an exception is pending at the start of a foreign function. Should improve debugging incorrect exception handling in foreign code.

[Nov 27 2018]

  • DEBUG: If supported, print location where an ignored exception was triggered.

[Dec 13 2018]

  • FIXED: thread_send_message/2,3: possibly double unlock of the message queue when receiving a signal while waiting.

[Dec 12 2018]

  • BUILD: Add nlp package dependency for building pldoc2tex.
  • ENHANCED: Declare library(solution_sequences) predicates transparent for the profiler.
  • BUILD: Document -DSWIPL_INSTALL_IN_LIB

[Dec 11 2018]

  • ADDED: identifier_parts/2: deal with Prolog singleton identifiers.
  • ENHANCED: identifier_parts/2: support Prolog symbol identifiers.
  • MODIFIED: The Prolog flag posix_shell is no longer initialised from SHELL to avoid getting a non-posix shell such as tcsh. Nicos Angelopoulos and erlanger.
  • BUILD: Make sure documentation generation (pldoc2tex) using UTF-8 encoding, regardless of the environment. Lev Lamberov.

[Dec 10 2018]

  • TEST: Use '-f none' for testing saved states. Nicos Angelopoulos.

[Dec 8 2018]

  • DOC: LaTeX error

[Dec 6 2018]

  • ADDED: library(atom), providing operations on atoms that are now duplicated over various places in the libraries and extensions.
  • DOC: Broken example.

[Dec 5 2018]

  • PORT: calculate alignment at compile time
  • DOC: Added library(ansi_term) to main manual.
  • ENHANCED: Handle, notable portray, errors while printing a message more elegantly. After discussion on the list with Peter Ludemann.

[Dec 4 2018]

  • TEST: Avoid loading plunit from different locations. Keri Harris.
  • DOC: document PL_current_prolog_flag

[Dec 3 2018]

  • FIXED: load_files/2: save/restore xref flag. Also combine setup and cleanup in new predicates, preparing for safe aborts of ongoing compilations.
  • MODIFIED: Only handle error(_,_) exceptions inside load_files/2, allowing for abort, time limits, etc. This is the first step. As is, cleanup after exceptions is poorly implemented in the compiler frontend.
  • FIXED: Failure to close Windows WIN32_FIND_DATA handle if file name length is exceeded.
  • FIXED: Memory leak in read_term/3 and derived friends (all parsing predicates) when raw reading produces a syntax error. This notably harms atom_to_term/2 on syntactical incorrect input.
  • PORT: Make profiling guided optimization work for Windows.
  • DOC: Missing Prolog flag documentation for windows and wine_version.

[Dec 2 2018]

  • DOC: CMAKE.md for new cross-compilation support.

[Dec 1 2018]

  • TEST: Cleanup and streamlining both the normal test and test on the installed system.

[Nov 21 2018]

  • ENHANCED: allow installation of tests with -DINSTALL_TESTS

[Nov 29 2018]

[Nov 28 2018]

  • DOC: Building did not always update the manual because PlDoc comments were already embedded into the man/pldoc2tex state.
  • FIXED: PL_cut_query() and PL_close_query() may encounter a Prolog exception if pending choice points call Prolog due to setup_call_cleanup/3 and friends. These functions now return an int which is FALSE if an exception occurred.

[Nov 27 2018]

[Nov 26 2018]

  • DOC: Quintus compatibility math predicates.

[Nov 23 2018]

  • INSTALL: Android: create tmp_dir if it does not exist

[Nov 26 2018]

  • PORT: Added endianness tests

[Nov 23 2018]

  • TEST: accept different representations for NaN, needed esp. for Android
  • FIXED: Issue#371: duplicate run of initialization goals that appear in the system init file ($PLBASE/swipl.rc). Jan Burse.

[Nov 22 2018]

  • ADDED: Prolog flag tmp_dir reflecting the directory for temporary files. This flag is initialised from the environment and may be changed.
  • INSTALL: Allow installing libswipl in the public library directory instead of the Prolog tree.
  • PORT: Link to liblog.so needed to write to android syslog equivalent
  • PORT: Set proper android arch

[Nov 23 2018]

  • PORT: support older versions of cmake for cross-compiling to Windows

[Nov 22 2018]

  • ADDED: Prolog flag posix_shell. Used by shell/2 and qsave_program/2.
  • PORT: shell/2 (called by shell/0 and shell/1) now used execve() for better support on Android termux.
  • PORT: Link packages to libswipl.so and libm.so on Android
  • FIXED: staged generation of autoload index files did not close the file.

[Nov 21 2018]

  • PORT: support zlib that does not export internal macros
  • DOC: Module handling for operators.
  • MODIFIED: op/3 and current_op/3 now default to the typein module module rather that the hard coded user module.
  • ADDED: meta-predicate declaration for op/3 and current_op/3.
  • CLEANUP: Use staging interface for library index files rather than a local solution.
  • FIXED: Use file staging for .qlf files to avoid concurrent processes to stumble on incomplete files.
  • ADDED: '$stage_file'/2 and '$install_staged_file'/4 to stage file creating, avoiding incomplete intermediate products.
  • FIXED: Do not try to add .qlf files to a library index.

[Nov 20 2018]

  • FIXED: Remove hint to removed -v cli option. Falco Nogatz.
  • DOC: improve SWIPL_NATIVE_FRIEND explanation
  • BUILD: Allow qlf compiling using friend compiler
  • ENHANCED: Allow compile time specification of unix shell
  • BUILD: Build and install the manual index doc/manindex.db
  • DOC: Replace -tty with --no-tty. Peter Ludemann.

[Nov 19 2018]

  • PORT: use the `friend Prolog system for boot compilation`
  • ADDED: `swipl --dump-runtime-variables emits PLBITS=NN` to indicate the VM word size.
  • PORT: Introduce CMake variable ${SWIPL_NATIVE_FRIEND} to specify a native Prolog for doing the build steps that require Prolog.
  • TEST: Added cmake option BUILD_TESTING to disable testing using -DBUILD_TESTING=OFF

[Nov 18 2018]

  • PORT: Use host compiler to build mkvmi and defatom
  • CLEANUP: Remove jasmine and space submodules
  • DIST: Update scripts/make-src-tape to omit documentation and generated files.
  • CLEANUP: Remove autoconf/make build infra structure
  • ADDED: thread_create/3: option queue_max_size. Also cleans up internal typing, extend attributes for PL_thread_attach_engine() and some doc fixes.
  • PORT: Android minizip USE_FILE32API only in 32 bit targets

[Nov 17 2018]

[Nov 15 2018]

  • ADDED: catch_with_backtrace/3 and print backtraces for -g and initialization goals. After discussion with Peter Ludemann.
  • MODIFIED: Print stack frames for uncaught exceptions using ~p (print) instead of ~q (quoted write). Peter Ludemann.
  • FIXED: WASM: Use BINARYEN_TRAP_MODE=clamp to avoid traps when converting large floats to integers.

[Nov 9 2018]

  • PORT: Support building the SWI WebAssembly (WASM) version using cmake. Contributed by Raivo Laanemets.

[Nov 13 2018]

  • ADDED: csv_read_stream/3. Suggested by Nicos Angelopoulos.
  • ADDED: csv_read_file/3: option skip_header(+Start) to skip all lines starting with Start. Suggested by Nicos Angelopoulos.
  • CLEANUP: Consistent types for llvm_dummy()
  • BUILD: Provide an option -DUSE_SIGNALS=OFF to disable all handling of signals by SWI-Prolog. Intended for embedded minimal configurations and environments such as emscripten that do not provide signal handling.

[Nov 12 2018]

  • PORT: Find executable for WASM

[Nov 13 2018]

  • MODIFIED: pack_install/1, etc. Find a C compile by trying to find one of the following on $PATH: gcc, clang or cc. Fixed to first try the environment variable CC and finally use the old default, the c_cc Prolog flag indicating the compiler used to build Prolog. After discussion with Fabrizio Riguzzi and Paulo Moura about compiler selection on MacOS.
  • FIXED: Ensure that destruction of a temporary module resets the current procedure of associated source files if this is a predicate from the temporary module. Can cause a crash.
  • FIXED: cross-referencer: undefined predicate in reexport handling.
  • FIXED: Possible crash compiling aux predicates.

[Nov 11 2018]

  • CMAKE: Finding cmake binary directory for built system for systems that do not manage binaries using a permission flag.

[Nov 8 2018]

  • FIXED: call_residue_vars/2: possible crash during GC. Jan Burse.
  • FIXED: Recent patch for C_LIBPLSO could leave this undefined.
  • PORT: MacOSX: Fixed passing proper -Ldir to pack build process
  • CMAKE: Get c_libplso prolog flag initialized properly on non-ELF systems.

[Nov 5 2018]

  • TEST: Add travis-ci configuration.

[Nov 6 2018]

[Nov 5 2018]

  • FIXED: Saved state reloading could crash with a segv while initializing path translation options.
  • PORT: Several aspects for swipl-ld, notably dealing with relocatable executables and rpaths.
  • ENHANCED: Access to the runtime configuration, notably required for foreign extensions and embedding. The work for --dump-runtime-variable has been moved from C to Prolog.

[Nov 3 2018]

  • FIXED: Avoid MSB(0). Mostly harmless. Abramo Bagnara.

[Nov 2 2018]

  • BUILD: More flexible search for the source directory when running from a cmake build environment. Notably allows building in the source dir.
  • FIXED: possible (benign) overlapping string copy using strcpy() that may trap a C runtime library exception.

[Oct 31 2018]

  • DOC: Fixed several documenation errors detected by new TeX preprocessor.
  • DOC: Replaced Perl TeX preprocessing with a Prolog based translator

[Nov 1 2018]

  • FIXED: Emit colour call for empty export list. Required for SWISH.
  • FIXED: Paths in swipl.pc (pkg-config). Carlo Chapelli.

[Oct 31 2018]

[Oct 30 2018]

[Oct 17 2018]

  • ENHANCED: A slightly more efficient version of the select/3. Deterministic on last element.

[Oct 30 2018]

  • ADDED: Make help/1 output hookable.
  • FIXED: library(prolog_colour): handle body terms of the form [X,Y|Z]. Note that normally this indicates an error but if Z is unbound this is not strictly the case.
  • FIXED: xref_public_list/3: thread-safety and cache results.
  • FIXED: Cross_referencer: consider a possible :- encoding(Enc) when looking for the module header.
  • FIXED: git_shortlog/3: report committer_date_unix field as an (integer) time stamp instead of an atom.

[Oct 29 2018]

  • FIXED: Create the resource file as read-only file and delete it before writing to ensure already running Prolog processes will not see an invalid resource file.
  • FIXED: read_term/3: subterm_positions option when reading from an atom or string. This fixes coloring queries with leading comment in SWISH.
  • FIXED: Install package documentation from the binary dir

[Oct 28 2018]

  • DOC: Fixed typos in documention of round/1.

[Oct 27 2018]

[Oct 26 2018]

  • FIXED: closeStream(): consistent unlocking. Analysed by Keri Harris.
  • CMAKE: Support PGO compilation
  • CLEANUP: Fix some benign compiler warnings.

[Oct 24 2018]

  • PORT: Create a MacOS bundle installer.

[Oct 23 2018]

[Oct 22 2018]

  • FIXED: Path computation in shadow home dependencies.

[Oct 21 2018]

  • BUILD: Added ltx2htm to default packages as this is needed by current builds
  • TEST: fixed calling modified test.pl

[Oct 17 2018]

[Oct 15 2018]

  • SCIENCE: New journal paper reference about Boolean constraints. A preprint of this publication is available from:
    https://www.metalevel.at/boolean.pdf

    To the best of my knowledge, this is the first portable CLP(B) system. A new and much faster SICStus port is also available. Please see the paper and https://www.metalavel.at/clpb/ for more information.

  • CMAKE: Directory targets depend on generator :(
  • MODIFIED: qsave_program/2 does not add `.exe` on windows if the

stand_alone option is set to false.

  • FIXED: `swipl -c ...` to honour e.g., `--no-autoload` negated options.

[Oct 14 2018]

  • BUILD: check for environment variables that may upset the build.

[Oct 13 2018]

  • CMAKE: Work on partial installations.

[Oct 12 2018]

  • CMAKE: Deal with package dependencies
  • FIXED: table/2: do not confuse the cross reverencer.
  • CMAKE: Support -DSWIPL_SHARED_LIB=OFF to get a statically linked core.
  • PORT: MacOSX: both look for the module extension (so) and the shared object extension (dylib).
  • PORT: Be explicit about using @rpath on MacOS to avoid cmake policy warnings.

[Oct 10 2018]

  • DOC: Make documentation generation work again with autoconf/make.

[Oct 9 2018]

[Oct 8 2018]

  • FIXED: Install library index files (INDEX.pl) atomically such that concurrent Prolog processes will not be faced with an incomplete index.

[Oct 7 2018]

  • CMAKE: Generate documentation using a pldoc as saved state.

[Oct 8 2018]

  • MODIFIED: `swipl -c file.pl` now loads the system init file (-F) and attached packages.

[Oct 7 2018]

  • CLEANUP: Use pldoc2tex.pl instead of txttotex.pl for converting package Markdown files to TeX.
  • CLEANUP: Merged man/libtotex.pl and packages/pltotex.pl into man/pldoc2tex.pl
  • CMAKE: swipl_plugin(): Allow specification of C include dirs and multiple Prolog target directories. This allows for specifying most plugins in a single call and keeps most reorganization in a single place.

[Oct 6 2018]

  • CMAKE: Fix creating directories in home on Ninja and Makefiles.
  • CMAKE: Fixed for Unix Makefile generator. Paulo Moura.
  • CMAKE: Avoid wrong dependency on swipl.prc
  • CMAKE: Make documentation generation work in the build tree and reduce dependencies
  • DOC: LaTeX typo
  • MAINTAIN: Be more careful printing messages during the boot compilation so we are more likely to see the real reason for a failure.
  • CMAKE: Support setting flag system_thread_id on Linux.
  • ADDED: help/1: Prolog flag help_pager to control pager handling. Also added more documentation to this library.
  • CMAKE: Make documentation available for local version.

[Oct 5 2018]

  • ENHANCED: help/1, do not use the pager when running under emacs. Wel, this relies on the emacs_inferior_process which seems unreliable.
  • CMAKE: Build Prolog target files in CMAKE_BINARY_DIR, so we build the indexes and run the system

[Oct 4 2018]

  • CMAKE: create version file in build dir.
  • CMAKE: Run package test in build directory.

[Oct 3 2018]

  • CMAKE: Indirect installation of sources over our own function
  • CMAKE: Use silent installation
  • ADDED: Build-tree system initialization file that allows running the system as if it was installed from the source tree.
  • MODIFIED: Load the system init `-F file` as first step of the initialization, such that it can impact the toplevel initialization.
  • CMAKE: Basic selection of optional components
  • CMAKE: Support single threaded building

[Oct 2 2018]

  • MODIFIED: replace plain text manual with HTML driven manual.

[Sep 29 2018]

  • DOC: Make generating of .pdf from PostScript silent.
  • CMAKE: Copy manual figures.
  • DOC: Several small fixes

[Sep 28 2018]

  • ENHANCED: print_message/2: ansi(Style,Format,Args) switches back to the original settings.

[Sep 26 2018]

  • FIXED: explain/1: Avoid dependency on library(helpidx) that is going to be discontinued.

[Sep 24 2018]

  • CLEANUP: Avoid unused variable and possibly uninitialized variable warnings if NDEBUG is set.

[Sep 23 2018]

  • FIXED: Issue#336: Meta calling @(_,_) loops. Markus Triska.
  • CMAKE: Allow setting the build type and have a default anyway.

[Sep 22 2018]

  • BUILD: better organisation of platform specific cmake files.
  • BUILD: Deal with modified generated programs in old Makefiles
  • MODIFIED: Always look for swipl.prc as last resort for the startup file.
  • BUILD: Removed various obsolete configure tests
  • ADDED: PL_w32_running_under_wine() and a Prolog flag wine_version. Also fixed swipl.exe console for raw wine I/O (without wineconsole).
  • TEST: Allow running from other directory
  • BUILD: Allow helpers to dump generated file in binary directory and only update if the file has changed.
  • TEST: Avoid error if memfiles are not supported
  • DOC: importing wrong docs
  • BUILD: Support cmake

[Sep 14 2018]

  • FIXED: Erasing a rule from a dynamic predicate failed to update the number_of_rules predicate property.
  • FIXED: Issue#77: when reconsulting a file holding a dynamic predicate with clauses coming from the file, all dynamically asserted clauses were wiped.

[Sep 13 2018]

[Sep 11 2018]

  • FIXED: Meta predicate declararion of reset/3. Paulo Moura.

[Sep 2 2018]

  • PORT: avoid duplicate z_crc_t definition
  • PORT: minizip z_crc_t types based on NOCRYPT/NOUNCRYPT zlib config
  • PORT: autoconf 2.63 for still-supported LTS OS/distros

[Aug 29 2018]

  • TEST: Fixed singleton tests (failed after changing message format)

[Aug 28 2018]

  • MODIFIED: Message term for singleton and multiton messages changed from one to arguments, passing the whole term. This can be used to provide more detailed analysis, give more precise messages or suppress the message depending on the context.
  • ADDED: must_be/2: type type

[Aug 27 2018]

  • DOC: Avoid LaTeX duplicate label for sec:dicts (library and builtin)

[Aug 24 2018]

  • DOC: Issue#320: debugger overview.

[Aug 12 2018]

  • PORT: Replace linux/unistd.h with syscall.h for MUSL compatibility MUSL libc doesn't have 'linux/unistd.h' but instead has 'syscall.h' which pulls in the required syscall definitions.

    'syscall.h' also exists on Linux systems - on my Ubuntu install at least - and it pulls in the same definitions as 'linux/unitstd.h'.

  • DOC: Fixed ungrammatical sentence in threads documentation.

[Jul 27 2018]

  • DOC: Added dicts.pl to main library documentation. Peter Ludemann.

[Jul 26 2018]

  • ADDED: git_shortlog/3: option revisions(+Revisions) to allow generating changelogs between revisions.

[Jul 21 2018]

  • FIXED: Ensure declared operators are defined in the target module when QLF compiling a module with exported operators.
  • ADDED: Script to upload packs to github
  • FIXED: select_option/4: only delete an option if found

[Jul 19 2018]

  • DOC: Added link to stack_limit flag.

[Jul 12 2018]

  • DOC: PL_put_term_from_chars() foreign API.

[Jul 10 2018]

  • PORT: Avoid undefined behavior and implementation defined behavior in shift.
  • PORT: Avoid some undefined C behavior.
  • CLEANUP: Avoid GCC compiler warning due to strict aliasing. Spotted by Andrew Pinski.

[Jul 9 2018]

  • FIXED: Meta-predicate declaration for mode-directed tabling helper resulted in false undefined predicate warnings.

[Jul 8 2018]

  • DOC: Fixed typo.

[Jul 6 2018]

  • FIXED: Avoid crash in mode-directed tabling if a mode-directed call has an incompleted variant in a parent environment. Unclear whether the current results are `sufficiently correct' (whatever that means ...)

[Jul 3 2018]

  • MODIFIED: debug_message_context/1 has been replaced by the generic message context mechanism. The predicate is deprecated, but provides a fair enulation for the common cases.

[Jul 2 2018]

  • FIXED: listing/0,1,2: Item#313: when reusing source variables we must be careful not to collide with generated variable names.
  • FIXED: Declare mode-directed tabling sandbox-safe
  • FIXED: Issue#312: explain malfunctioning: crashed on atoms and failed to report predicates from name/arity notation.
  • FIXED: BOM checking should not set the end-of-file condition, avoiding a paste-end-of-file error on the first read.
  • FIXED: fill_buffer/1 should not retry if the buffer is at the end of the file.
  • FIXED: past-end-of-file detection and reporting.

[Jun 27 2018]

  • FIXED: open/4: Leaking file handles if incorrect options cause the open to fail. Cleanup.
  • MODIFIED: Clear error flag on streams after raising an exception due to e.g., I/O errors. After discussion with Jose Morales, Per Mildner and Joachim Schimpf.

[Jun 21 2018]

  • ADDED: Allow hooks to extend the message prefix with additional information.

[Jun 15 2018]

  • ADDED: paxos package to standard build
  • ADDED: Package paxos

[Jun 27 2018]

  • FIXED: read_term/2,3: singletons(Vars) option did not include normal variables after recently changed semantics. Added test set.

[Jun 26 2018]

  • FIXED: Mode-directed tabling. This is an elaborate rewrite of the Prolog driver for tabled predicates. It relies on the component support introduced in the C layer. It splits most of the code between the plain and mode directed tabling because, as the number of required conditions was growing, two separate implementations are both faster and easier to read.
  • ADDED: allow creating sub components for tabling. This is needed for mode directed tabling.
  • TEST: Tabling: add tests that require sub components. Fabrizio Riguzzi.
  • ENHANCED: swipl-bt script to pass SIGUSR2 to Prolog.

[Jun 25 2018]

  • FIXED: Prolog flag unknown handling. Tomoki Aburatani.
  • MODIFIED: read_term/2,3: option singletons(-Vars) to return all singleton variables rather than those we think we should warn about as demanded by ISO. Paulo Moura.

[Jun 21 2018]

  • ADDED: load_files/2: option optimise. Paulo Moura.
  • DOC: swipl.1. Paulo Moura,

[Jun 20 2018]

  • FIXED: Close file handle twice. Benign.

[Jun 18 2018]

  • FIXED: Cross-referencer: avoid adding a parsed structured comment multiple times if the comment precedes a term that is term_expanded into multiple terms. This results in multiplying comments for e.g., git_shortlog/3 after showing the highlighted sources. Jacco van Ossenbruggen.

[Jun 15 2018]

  • FIXED: Stand-alone configure called Prolog with -dump-runtime-variables. Must be `--dump-runtime-variables`.
  • FIXED: Issue#73: number//2 non-terminating when called in mode +,// and the argument is not a number.

[Jun 12 2018]

  • PORT: Cross-compilation of defatom tool.

[Jun 11 2018]

[Jun 12 2018]

  • MODIFIED: Removed undocumented Prolog flag thread_message_prefix and added message_context, which provides a list of context info to add to warning and error messages. Notable intended for server log files.
  • FIXED: CSV writer to write an empty row.
  • ENHANCED: Sandbox limitation message if safety could not be proved due to an instantiation error.

[Jun 11 2018]

  • FIXED: NLP -> PCRE copy/paste error

[Jun 5 2018]

  • FIXED: Issue#305: compute result size for ^/2 was off by a factor 8. Results in a signalled stack overflow while there is plenty of space.
  • ENHANCED: csv_write_file/3 and csv_write_stream/3 to run phrase per row and thus avoid creating a giant string in memory. Suggested by Nicos Angelopoulos.
  • FIXED: If the encoding is explicitly stated we should not check for a BOM marker. Arthur Wang.
  • CLEANUP: abstract the interface to the data storage.

[Jun 4 2018]

  • MODIFIED: Turn paxos as a mapping of arbitrary ground keys to ground values. This changes the message format. It also changes paxos_get/2 and paxos_set/2. Otherwise the term view where the key is the name+arity is maintained using keys '$c'(Name,Arity).
  • PORT: Zip based resource manager for libz < 1.2.7 and OpenBSD I/O functions. Patch by Alexander Shendi.

[Jun 3 2018]

  • PORT: Support a program to run the cross-compiled executable such as wine, node, etc.
  • PORT: When EMMAKEN_JUST_CONFIGURE is set, configure as target wasm-emscripten
  • PORT: Better detection of requirements for getting tgetent().
  • FIXED: Detection of -c -o compiler flag handling for compilers that know main() is special.
  • BUILD: Use host compiler for compiling defatom

[Jun 1 2018]

  • WINDOWS: Binaries: updated OpenSSL to 1.1.0h and zlib to 1.2.11.
  • MODIFIED: Issue#290: statistics(memory, X) now returns 0 if we cannot get a reliable value for the RSS from the OS.

[May 31 2018]

  • PORT: Make zip based archives handling work on systems that lack memory mapped files.
  • FIXED: Attribute management for reloading sources in single threaded mode.
  • FIXED: Validate existence of streams in single threaded mode. Without this patch some operations could work on a closed stream, either leading to incorrect results or a crash.
  • TEST: Add condition on test that require threads.
  • PORT: Make system compile again using `--disable-mt`.

[May 30 2018]

  • ADDED: wait_for_input/3 can now wait for raw OS handles specified as integers.

[May 29 2018]

[May 28 2018]

  • FIXED: Hiding built-in predicates in listing/0.1. Paulo Moura.
  • ENHANCED: Avoid deleted breakpoint messages from clause garbage collection.
  • ENHANCED: Position management for breakpoints.
  • FIXED: various issues for setting breakpoints. Avoid double admin, run callback atomically and handle setting a breakpoint on a location that already has one properly. Together with a series of related changes this makes breakpoint handling signal-safe.
  • FIXED: '$break_at'/3: proper clause reference in exception term when removing a non-existing break.
  • FIXED: with_mutex/2: do not consider exceptions uncaught when they are caught outside the with_mutex/2.
  • FIXED: read_term_at_line/6: do not silently catch non-error signals.
  • FIXED: read_source_term_at_location/2: use setup_call_cleanup/3 to avoid permanently suppressing messages in the event of a unexpected exception.
  • DEBUG: Add Prolog predicates to examine saved C exceptions.
  • CLEANUP: Safer error handling in callEventHook(). Probably benigh.
  • FIXED: Ensure consistent state for calling GC after an uncaught exception.

[May 26 2018]

[May 25 2018]

  • FIXED: Allow current_op/3 to work safely on temporary modules that may destroy themselves while current_op/3 is in progress in another thread. This fixes a crash in SWISH.
  • FIXED: Make stack overflow message self-contained, so we can print it from another thread.
  • ENHANCED: Also avoid GC while unwinding to a watched frame in debug mode.
  • FIXED: Propagate raised stack overflow from garbageCollect()
  • FIXED: Maintain global/trail ratio when distributing remaining stack space after the desired sizes exceed the limit. Avoids programs doing only garbage collection.
  • FIXED: It is no longer needed to run GC while unwinding to watched stack frames as the frameFinished() handler can run GC when needed. With very deep stacks holding many watched frames (call_cleanup/2), this may lead to very slow exception handling.

[May 21 2018]

[May 18 2018]

  • FIXED: Garbage collection while unwinding exceptions.

[May 16 2018]

  • ADDED: listing/2: option source(true) to list collected snippets from the source files. Practical for multifile predicates! Suggested by Paul Tarau, Kyndi.
  • MODIFIED: listing/0,1,2, portray_clause: default settings generate the preferred layout (indent 4, spaces, ! on a line).
  • ADDED: listing/2 to provide options. Currently supports variable_names option. Preparing for more options.

[May 15 2018]

  • DOC: Fixed docs for PL_thread_attach_engine() changes for 7.7.14.
  • ENHANCED: listing/0,1: try to restore the original variable names using clause_info/5. Suggested by Paul Tarau, Kyndi.
  • FIXED: Avoid nested acquire_def(). Benign, but triggers an assertion failure when compiled for maintenance debugging.
  • FIXED: Possible GC crash related to exception unwinding where the topmost goal is a meta-called control structure.
  • DOC: Fixed errornous -S and --M options.

[May 14 2018]

[May 13 2018]

  • ENHANCED: In gen_assoc/3, automatically use get_assoc/3 if Key is ground. This can significantly improve efficiency in cases users use gen_assoc/3 instead of get_assoc/3. Importantly, this also improves determinism and retains full generality. A motivating example was recently provided by Boris Vassilev when implementing a DFA that can both parse and generate lists. The transition table can be modeled via nested association lists, associating states to further associations that map characters from the alphabet to subsequent states. With this patch, using gen_assoc/3 for the latter ensures determinsm if possible and still lets you generate all solutions for more general queries.

[May 14 2018]

  • FIXED: Issue#71: format('~f', [1e100]) on Windows truncated to 27 characters due to pre-C99 version is snprintf(). Note that recent versions of Windows should be C99 compliant according to the MS docs. New code should work with both versions.
  • MODIFIED: Load stack and table space limitations from register keys stackLimit and tableSpace. The latter is new. The stacks were handled individually.
  • FIXED: Reclaiming stack space while unwinding an overflow exception did not GC when the overflow was caused by the local stack while the global stack is tight.
  • FIXED: read_term/3: Possible crash when running out of stack and subterm positions are requested.

[May 9 2018]

  • FIXED: Make spare space on local stack large enough to call debugmode().

[May 7 2018]

  • TEST: Accept modified overflow context
  • FIXED: Processed commandline arguments must not go to argv.

[May 6 2018]

  • MODIFIED: Dumped the long options with a single -. This was deprecated for a long time. Improved option processing consistency and --help output. Use --stack_limit=size and --table_space=size rather than the old C-Prolog derived -Lsize, etc.
  • TEST: Speedup test_code_type.pl test

[May 5 2018]

  • ADDED: Prolog flag stack_limit.
  • MODIFIED: Replaced separate local, global and trail stack limits with a single stack limit.
  • MODIFIED: Enforce trail limit to be 1/6h of the global limit. About to delete altogether.
  • FIXED: On resource errors we need to enable the spare room of all stacks.

[May 4 2018]

  • FIXED: Pass through the stack that cannot be grown to avoid messages about stack overflow for the wrong stack.

[May 7 2018]

  • FIXED: tabling: collision of variant term between predicates with the same name but different tabling modes. Wouter Beek.

[May 3 2018]

  • FIXED: Avoid trying URIs as file names.

[May 2 2018]

  • ENHANCED: Handle broken QLF files that are write protected
  • ENHANCED: Automatically recompile .QLF files when they are incompatible.
  • CLEANUP: QLF error handling, recover from QLF errors.
  • ENHANCED: QLF error handling.
  • MODIFIED: '$qlf_info'/7 moved from 5 to 7 arguments. New version is should reliably raise an exception if the file is not a valid QLF file.
  • ENHANCED: Avoid unrecoverable error if we find an illegal string on a QLF file.
  • ENHANCED: Reduce memory usage and remove 96M constant limit from saved states.

[May 1 2018]

  • DEBUG: uninstantiated var
  • ENHANCED: Save/load unsigned integers for various properties.
  • ENHANCED: Use unsigned integers for XR references in QLF files.
  • ENHANCED: Store opcodes as unsigned integers. Makes states more compact and faster.
  • MODIFIED: QLF file integer encoding to be both more space and time efficient. Based on zigzag encoding.
  • DOC: Move tabling documentation to core
  • MODIFIED: Moved library(tabling) to the preloaded core so we do no longer need to load the library. This notably improves compatibility with other Prolog implementations that provide tabling.
  • ENHANCED: Output arguments in mode-directed tabled predicates must be unbound. Now throws an uninstantiaton_error(NonVar). Discussed on mailinglist.
  • MODIFIED: current_prolog_flag(argv, Argv) now includes options (-*) that are not processed by Prolog. The documentation already suggested this, but in practice such options were silently ignored.
  • MODIFIED: More consistent commandline argument processing. In particular, drop +tty and -tty, replaced by --tty[=bool]. In general all boolean options may now be specified as --name=bool, --name, --no-name or --noname. Updated manpage (including updated license statement).
  • FIXED: loading qlf files does not decrement the reference count of atoms loaded from the qlf file. This is typically no problem as such atoms are generally static anyway, but does prevent our obfuscation check to work. Paulo Moura.

[Apr 30 2018]

  • DISTRO: Drop Ubuntu zesty and add bionic.
  • DOC: final review
  • DOC: New options for saving programs.
  • MODIFIED: saved states now by default use halt as toplevel if at least one goal is specified.
  • DOC: Document additional mode directed tabling modes for YAP. Paulo Moura.
  • DOC: Typo in mode-directed tabling options.

[Apr 29 2018]

  • FIXED: qsave_program/2 entry point handling for imported entry points. Nicos Angelopoulos.
  • FIXED: Premature free of deep index. Must be left to lingering. Searched this for some time. Reports and comments from Johan Romme, Edison Mera and Keri Harris.
  • MODIFIED: initialize color terminal after loading ~/.swiplrc but before loading other source files. Used to be just before entering the interactive toplevel only. Based on pull request #295 by TymonSerock.
  • FIXED: New BaseName() may yield incorrect results.
  • DEBUG: we should not check the stats of incomplete indexes as they are concurrently updated. Unlikely to be broken anyway.
  • DEBUG: we must sync checking the predicate for retractall/1
  • FIXED: pack_install/1 from a file:// uri. Nicos Angelopoulos

[Apr 27 2018]

  • PORT: Make new runtime support compile on Windows
  • MODIFIED: zipper_goto/2 fails instead of raising an exception.

[Apr 26 2018]

  • ENHANCED: predicate_property/2: avoid that predicate_property(iso, +Head) autoloads the predicate. This can lead to non-terminating autoloading and generally creates unnecessary predicate imports.

[Apr 23 2018]

  • DOC: New runtime facilities
  • ADDED: Prolog flag res_keep_foreign to stop deleting temporary shared objects for debugging purposes.

[Apr 21 2018]

  • ADDED: --enable-one-file option to create a single-file executable for ELF systems

[Apr 20 2018]

  • MODIFIED: Deleted save class kernal. This didn't do anything any more, but was still allowed and documented.

[Apr 19 2018]

  • ADDED: control method and compression level for adding files.
  • FIXED: Interactive redefinition of modules.
  • ADDED: Allow cloning a zipper so we can provide concurent access. This change switches for file-based handling of zip files to memory mapping.
  • MINIZIP: Added unzClone() to clone a context for concurrent access.

[Apr 17 2018]

  • ADDED: Hook the core file predicates when they encounter an IRI.

[Apr 24 2018]

  • TEST: Several new file handling tests
  • SECURITY: Various possible buffer overruns in file name operations.
  • DOC: Document modified file_directory_name/2 and file_base_name/2.
  • MODIFIED: Make file_base_name/2 POSIX compliant.
  • CLEANUP: Changed calling convention for BaseName() as this will not always be the tail of the input and thus requires a buffer like DirName().
  • MODIFIED: Make file_directory_name/2 compliant with POSIX dirname. This notably implies that `/a/b/` is translated to `/a` rather than `/a/b`. Volker Wysk.

[Apr 20 2018]

  • FIXED: read_link/3 respecting the file system character encoding. Volker Wysk.

[Apr 17 2018]

  • CLEANUP: Additional documentation and cleanup of the naming.
  • FIXED: Close underlying stream on zip_close/1.
  • ADDED: Allow closing zipper while an entry is open for reading.

[Apr 16 2018]

  • DOC: Document code obfuscation
  • MODIFIED: autoload/1: using undefined(error) it throws an exception existence_error(procedures, List), where list holds the undefined procedures and the places these are called from.
  • CLEANUP: Make parts of list_undefined/0 reusable.
  • CLEANUP: Merge saved state option handling and checking to use one declaration.
  • FIXED: save state handling of multifile predicates where the saved clauses use explicit context: new clauses should do so too.
  • ENHANCED: Do not keep track of source files and source lines when code obfuscation is enabled.

[Apr 12 2018]

  • ADDED: $map_id/2 to map identifiers (atoms and functor) while saving a state.

[Apr 10 2018]

  • FIXED: '$size_stream'/2: raise exception if this value is not known.

[Apr 6 2018]

  • TMPO: Avoid exytra field
  • CLEANUP: Misleading indentation

[Apr 9 2018]

  • BUILD: Restore old --server= behavior to only specify the host.

[Apr 8 2018]

  • FIXED: get_single_char/1 to clear timeout error from stream after it is mapped to an exception. Reported by Jamie Moschella.

[Apr 6 2018]

  • DEBUG: Lock predicate while running checkDefinition()

[Apr 5 2018]

  • FIXED: Possible crash of markPredicatesInEnvironments() locking LD->clauses.local_shift_mutex while the thread dies and this mutex is being deleted. Removed the lock as the race it protects is already handled by LD->thread.scan_lock.

[Apr 4 2018]

  • ADDED: tmp_file_stream/3 has a new mode -File,-Stream,+Options and takes the options encoding and extension.

[Apr 3 2018]

[Mar 31 2018]

  • DOC: Updated "Is SWPL right for me?"

[Mar 30 2018]

  • TEST: Make static code protection tests conditional so we can run code analysis.
  • DOC: Typos

[Mar 15 2018]

  • FIXED: liubrary(prolog_colour): avoid exception if module is not valid and colour invalid modules as an error.

[Feb 24 2018]

  • ENHANCED: Do cheap tests in growStacks before doing anything.

[Mar 23 2018]

  • DOC: Fixed several typo's.

[Mar 22 2018]

  • CLEANUP: Remove conditional autoconf stuff and other MSVC targeted parts of the prepare script. They are out of date anyway.

[Feb 18 2018]

  • BUILD: "prepare" script rewritten prepare script rewritten for legibility and to reorganize really bizarre (and suspiciously problematic) stuff that looks like an accumulation of historical "quick fixes". Especially the download of documentation was overly complex and frankly inscrutable. Used bash-isms instead of pure "sh" mold. The code has been checked with https://www.shellcheck.net/ Works on Linux. Unfortunately I have no access to a mingw installation, so it needs to be run there too.

[Mar 15 2018]

  • FIXED: liubrary(prolog_colour): avoid exception if module is not valid and colour invalid modules as an error.

[Mar 9 2018]

  • TEST: Fixed shared dynamic predicate test.

[Mar 7 2018]

  • TEST:L Modify test_shared_dynamic testcase to support multiple producers+consumers so that clause/index accesses are put under increased concurrency pressure
  • FIXED: wait for incomplete indexes to complete before retracting clauses

[Feb 24 2018]

[Feb 19 2018]

  • FIXED: failure to clear LD->outofstack if unify_finished() raises a stack overflow. Results in fatal error: failed to recover from global-overflow.

[Feb 16 2018]

  • PORT: Make our portability layer for accessing shared objects available from libswipl to simplify the portability of library(ffi).
  • PORT: Added libffi to the MinGW prerequisites, preparing future Windows builds.

[Feb 17 2018]

  • DOC: CLP(B): Add usage example for cardinality constraint.

[Feb 24 2018]

  • ENHANCED: Wait for indexes to complete rather than creating them opportunistically.
  • CLEANUP: Consistently use iarg_t for indexed argument positions.
  • ENHANCED: Do cheap tests in growStacks before doing anything.
  • FIXED: concurrent/2 and concurrent_maplist/2-4: if no threads are used still commit to the first solution of the called goals.

[Feb 19 2018]

  • FIXED: failure to clear LD->outofstack if unify_finished() raises a stack overflow. Results in fatal error: failed to recover from global-overflow.

[Feb 16 2018]

  • PORT: Make our portability layer for accessing shared objects available from libswipl to simplify the portability of library(ffi).
  • PORT: Added libffi to the MinGW prerequisites, preparing future Windows builds.

[Feb 17 2018]

  • DOC: CLP(B): Add usage example for cardinality constraint.

[Feb 16 2018]

  • FIXED: Lazy restart of "gc" thread. This notably causes the test_gc_thread_startup.pl test suite to fail. As stopping this thread is not commonplace this only causes problems in extreme use cases.

[Feb 13 2018]

  • FIXED: indexing of dynamic predicates used during compilation.
  • FIXED: predicate_property/2: last_modified_generation property for thread-local predicates. Also fixes (rather theoretical) integer overflow for counted clauses.

[Feb 8 2018]

  • DOC: DCG basics processes upper- and lowercase hexadecimal digits.

[Feb 7 2018]

  • DOC: Improve description of the new mitigate_spectre flag. In particular, note that the ability to run subsets of Prolog code, let alone arbitrary Prolog code, is not a necessary condition for Spectre attacks. It suffices that sensitive data is speculatively accessed, and that this data can be leaked. Also trusted code may be vulnerable to this if it contains branches that are dependent on untrusted data.

    Decreasing the resolution of timers does not reliably prevent Spectre attacks. Full mitigation may require compiler support to disable speculative access to sensitive data.

    See https://github.com/SWI-Prolog/roadmap/issues/54 .

  • SECURITY: allow reduced timer resolution to mitigate Spectre, notably

in Pengine (SWISH) server.

  • FIXED: PL_get_nchars() to raise an error of CVT_EXCEPTION and

REP_ISO_LATIN_1 are give and the input contains characters > 255.

[Feb 6 2018]

  • DOC: CLP(B): Shorten pigeons example.
  • FIXED: stream_property/2 to return the correct value for buffer_size before the buffer is allocated.
  • DOC: Clarified handling cut in *->/2. Paulo Moura.

[Feb 5 2018]

  • FIXED: issue#285: library(apply_macros): maplist/N expansion if the closure is expanded to a qualified qoal. Markus Triska.

[Jan 26 2018]

[Jan 23 2018]

[Jan 22 2018]

  • DEBUG: Add thread id to Foreign predicate %s did not clear exception warning.

[Jan 17 2018]

  • FIXED: Use Prolog character classification routines to determine whether or not we need a space. Kilian Evang.
  • FIXED: '$btree_find_node'/5 if key is not in tree. Boris Vassilev.

[Jan 16 2018]

  • ENHANCED: get_assoc/3: use '$btree_find_node'/5
  • MODFIED: '$btree_find_node'/4 has become '$btree_find_node'/5, using a more flexible and intuitive interface.
  • FIXED: compilation of pl-hash.c for WORDSBIGENDIAN machines. Richard Jackson.
  • PORT: Move defining _POSIX_PTHREAD_SEMANTICS to configure to also fix Solaris issues in other files.

[Jan 15 2018]

  • FIXED: library(prolog_xref): operator handling. This fixes notably locally defined operators for library(prolog_colour).
  • FIXED: library(prolog_colour): handle :- op(Pri, Type, []). that should define the list as an operator.
  • PORT: Find proper grep for float_words_bigendian test. Richard Jackson.
  • PORT: Avoid shell syntax error on empty IFPROLOG. Richard Jackson.

[Jan 14 2018]

  • PORT: get POSIX sigwait() on Solaris. Richard Jackson.
  • PORT: do not use flags for compiling mkvmi.c. Richard Jackson.
  • PORT: write special floats for machines with fpclass() (Solaris). Richard Jackson.

[Feb 16 2018]

  • FIXED: Lazy restart of "gc" thread. This notably causes the test_gc_thread_startup.pl test suite to fail. As stopping this thread is not commonplace this only causes problems in extreme use cases.

[Feb 13 2018]

  • FIXED: indexing of dynamic predicates used during compilation.
  • FIXED: predicate_property/2: last_modified_generation property for thread-local predicates. Also fixes (rather theoretical) integer overflow for counted clauses.

[Feb 8 2018]

  • DOC: DCG basics processes upper- and lowercase hexadecimal digits.

[Feb 7 2018]

  • DOC: Improve description of the new mitigate_spectre flag. In particular, note that the ability to run subsets of Prolog code, let alone arbitrary Prolog code, is not a necessary condition for Spectre attacks. It suffices that sensitive data is speculatively accessed, and that this data can be leaked. Also trusted code may be vulnerable to this if it contains branches that are dependent on untrusted data.

    Decreasing the resolution of timers does not reliably prevent Spectre attacks. Full mitigation may require compiler support to disable speculative access to sensitive data.

    See https://github.com/SWI-Prolog/roadmap/issues/54 .

  • SECURITY: allow reduced timer resolution to mitigate Spectre, notably

in Pengine (SWISH) server.

  • FIXED: PL_get_nchars() to raise an error of CVT_EXCEPTION and

REP_ISO_LATIN_1 are give and the input contains characters > 255.

[Feb 6 2018]

  • DOC: CLP(B): Shorten pigeons example.
  • FIXED: stream_property/2 to return the correct value for buffer_size before the buffer is allocated.
  • DOC: Clarified handling cut in *->/2. Paulo Moura.

[Feb 5 2018]

  • FIXED: issue#285: library(apply_macros): maplist/N expansion if the closure is expanded to a qualified qoal. Markus Triska.

[Jan 26 2018]

[Jan 23 2018]

[Jan 22 2018]

  • DEBUG: Add thread id to Foreign predicate %s did not clear exception warning.

[Jan 17 2018]

  • FIXED: Use Prolog character classification routines to determine whether or not we need a space. Kilian Evang.
  • FIXED: '$btree_find_node'/5 if key is not in tree. Boris Vassilev.

[Jan 16 2018]

  • ENHANCED: get_assoc/3: use '$btree_find_node'/5
  • MODFIED: '$btree_find_node'/4 has become '$btree_find_node'/5, using a more flexible and intuitive interface.
  • FIXED: compilation of pl-hash.c for WORDSBIGENDIAN machines. Richard Jackson.
  • PORT: Move defining _POSIX_PTHREAD_SEMANTICS to configure to also fix Solaris issues in other files.

[Jan 15 2018]

  • FIXED: library(prolog_xref): operator handling. This fixes notably locally defined operators for library(prolog_colour).
  • FIXED: library(prolog_colour): handle :- op(Pri, Type, []). that should define the list as an operator.
  • PORT: Find proper grep for float_words_bigendian test. Richard Jackson.
  • PORT: Avoid shell syntax error on empty IFPROLOG. Richard Jackson.

[Jan 14 2018]

  • PORT: get POSIX sigwait() on Solaris. Richard Jackson.
  • PORT: do not use flags for compiling mkvmi.c. Richard Jackson.
  • PORT: write special floats for machines with fpclass() (Solaris). Richard Jackson.

[Jan 12 2018]

  • CLEANUP: Avoid strict-aliasing issues in some of the Windows code.
  • FIXED: Port to 32-bit platforms. Fixes 73e5eb44f40ae3e96e25bff39d7c50c2e016f6d9.
  • FIXED: Possibility of GC thread missing signals, notably to abort when the system is idle.

[Jan 10 2018]

  • FIXED: Avoid message that [] threads did not terminate. This MODIFIES the return type for the PL_thread_attr_t.cancel function from int to an enum rc_cancel. Old code is binary compatible but leads to a C compiler warning.

[Jan 9 2018]

  • PORT: do not bump predicate generations twice on 32 bit Windows when calling setGenerationFrameVal()

[Jan 8 2018]

  • ENHANCED: self-kill after receiving a fatal signal
  • ADDED: set_prolog_gc_thread/1 to control the gc flag using a supported API.
  • ADDED: prolog_alert_signal/2 to query/set the signal used for alerts dynamically.
  • ENHANCED: Avoid using signals to talk to the gc thread. This reduces signal dependency.
  • FIXED: Compilation error for single-threaded version. Roberto Bagnara.
  • FIXED: debug message on signal processing

[Jan 5 2018]

[Jan 2 2018]

[Dec 29 2017]

  • FIXED: Resolve a race condition if two threads join the same thread. This happens in particular when calling halt/0 while a thread is being waited for. The second thread now raises an existence error. Wouter Beek.

[Dec 22 2017]

  • ENHANCED: sigCrashHandler() to self-kill the specific thread

[Dec 21 2017]

  • TEST: Relax agc-2 test as it may legally fail on heavily loaded and/or slow machines. Keri Harris.

[Dec 20 2017]

  • FIXED: format/3: Slock()/Sunlock() balancing.
  • FIXED: Errornous calls to new setGenerationFrame().
  • PORT: install TeX fonts for generating plaintext manual.
  • ENHANCED: library(nb_set): avoid cyclic term error when compiled with occurs check set to error.

[Dec 19 2017]

  • DEBUG: Fixed consistency check in nextClause__LD().
  • MODIFIED: current_atom/1 no longer returns the reserved atom '<garbage_collected>'. This atom blocks internal consistency checks.
  • DEBUG: make -d chk_secure work again.
  • TEST: findnsols/4 AGC interaction.
  • FIXED: findnsols/4: prevent early release of findall bag, causing a crash in AGC. Found by Wouter Beek.
  • TEST: Make save state tests run on Windows.
  • TEST: Avoid loading library(limit) if the shared object does not exist.
  • CLEANUP: format/3 and friends: avoid start/endCritical to allow for signal processing and move Slock() to the wrapper to make its use obviously correct.
  • FIXED: Avoid critical regions to stop processing fatal signals such as SEGV. Synchronous handling of such signals in Prolog leads to a signal handling loop.

[Dec 18 2017]

  • TEST: Allow save-program tests to run concurrently by avoiding fixed file names.
  • CLEANUP: variant/2: Avoid copying inunstantiated data. Although benign, the old implementation leads to messages from debugging tools and performs unnecessary work.
  • FIXED: markAccessedPredicates() did not use atomic management of the last access generation.
  • FIXED: mistakes in previous commit
  • FIXED: Race conditions establishing the generation at which a predicate is about to be accessed for retract/1, retractall/1, clause/2 and nth_clause/3. May lead to accessing freed clauses, typically causing a crash.
  • CLEANUP: retract/1: remove start/endCritical() calls. They are no longer needed and were not properly balanced.
  • CLEANUP: gcClauseRefs() can be static in pl-proc.c
  • FIXED: race condition when adding a fresh atom to a bucket while rehashing is in progress that may cause the bucket to become corrupted

[Dec 16 2017]

  • FIXED: Use UTF-8 encoding for CLP(FD) source code, closing #281. Without this directive, you may get warnings when CLP(FD) is used in non-UTF8 environments.

    For example, with LANG=C, I previously got:

    Warning: clpfd.pl:5463: 'clpfd.pl':5463:26: Illegal multibyte
            Sequence
    Warning: clpfd.pl:6101: 'clpfd.pl':6119:21: Illegal multibyte
            Sequence

    Now, library(clpfd) is loaded without warnings also with LANG=C.

  • PORT: Provide fallback for sigCrashHandler()
  • PORT: Win32: pthread_setname_np() is a stub in some versions of the winpthread library. Avoid it.
  • CLEANUP: Avoid compiler warnings
  • PORT: Updated build instructions for Ubuntu 17.10
  • TEST: Added test case used for tracking AGC issue
  • CLEANUP: marking atoms
  • FIXED: Possibility that atoms are not marked for GC. With Keri Harris.

[Dec 15 2017]

  • DEBUG: More atom debugging stuff
  • DEBUG: Make -DO_DEBUG_ATOMGC work again.
  • ENHANCED: Avoid looping when catching a fatal signal in foreign extensions. Now tries: get back to Prolog using a longjmp(). Note that this may leak resources. If that fails, try to print a stack trace and exit. Abramo Bagnara.

[Dec 13 2017]

  • FIXED: mutex_statistics/0 printing wrong value for lock count if the mutex is locked (this predicate only supports analysis of performance issues in multi-threaded applications).
  • MODIFIED: Exit with status 4 when using 'e' from the debugger. Indicate exit status on the terminal with exitting from the debugger and system errors.
  • DOC: wrong arity for thread_join/1, so it doesn't show up in the manual completion.

[Dec 12 2017]

  • TEST: Make test thread_agc_findall.pl both test different and equal prefixes, stressing AGC better.
  • TEST: Do not considet queue_gc tests failing to reclaim the queues a fatal test failure. This just can happen.
  • FIXED: retract/1: terminate with error if decompilation raises an error. Without, it is possible that retract/1 should logically succeed on a clause but skips the clause due to e.g., a resource exception.

[Dec 11 2017]

  • FIXED: Race condition updating the frame generation and the notion of the global generation. Solution suggested by Keri Harris.
  • CLEANUP: Move global_generation() to pl-inline.h for all platforms for better readability.
  • TEST: Remove more concrete file names to allow tests to run concurrently.
  • TEST: Avoid hard-coded file names such that we can run the test from the same directory concurrently.
  • FIXED: Lowering the oldest_generation must be thread-safe. Spotted by Keri Harris.
  • FIXED: Dirty predicates activated while CGC is running must have their active generation updated.
  • FIXED: race condition for cleaning lingering data on predicates.

[Dec 10 2017]

  • FIXED: If we push an accessible predicate while clause GC is active, we must update the generation if it is dirty.
  • DEBUG: Protect against recursive use of acquire_def()
  • FIXED: acquire_def() cannot be used recursively. Doing so in hashDefinition may lead to early release of indexes and clause references.

[Dec 9 2017]

  • FIXED: Possible race extending referenced predicate dynamic array.
  • FIXED: Test for kill(), such that core dumps work after fatal signals are trapped.

[Dec 8 2017]

  • FIXED: Could not build due to syntax error. Wouter Beek.

[Dec 7 2017]

  • ADDED: PL_cvt_i_uint(), PL_cvt_i_ulong(), PL_cvt_i_uint64()
  • MODIFIED: PL_get_integer() no longer silently converts a float that happens to be integer into an integer if O_GMP is used. This is a remain from the days that floats were used as a poor mens replacement for large integers.
  • ENHANCED: On 64 bit machines we do not have to check bignums as these never fit an int.
  • ADDED: PL_cvt_i_uchar() and PL_cvt_i_ushort()

[Dec 6 2017]

  • ADDED: PL_cvt_i_char() to accept one-character atoms, strings and lists

[Dec 5 2017]

  • FIXED: open_string/2: double free if stream argument is instantiated.

[Dec 4 2017]

  • FIXED: debug/1, nodebug/1: possible duplication of clauses when called at the same time from multiple threads. Wolfram Diestel.

[Dec 1 2017]

  • FIXED: perform DCG and goal expansion if the result of term-expansion is a list.
  • FIXED: Find clauses if depth limit for deep indexing is exceeded. Jos de Roo.

[Nov 29 2017]

  • ADDED: PL_cvt_i_char(), PL_cvt_i_short() and PL_cvt_i_int64(), extending Quintus/SICStus style native C conversions

[Nov 28 2017]

  • FIXED: Avoid triggering GC in fast if-then-else condition. If we do so we have to make sure to mark the `then' branch in GC, but the simplest seems to avoid GC in the first place. Also added an assertion that we are not in this position. Reported by Alan Baljeu.

[Nov 27 2017]

  • DEBUG: Fix print_val() for summarised atoms
  • DOC: Document new indexing

[Nov 25 2017]

  • FIXED: Reported location of indexes
  • ADDED: statistics/2 indexes_{created,destroyed} keys

[Nov 24 2017]

  • ENHANCED: Small speedup of critical linkVal() function

[Nov 23 2017]

  • ADDED: Report size of index tables. Updated documentation.

[Nov 22 2017]

  • TEST: Update for new index representation
  • MODIFIED: predicate_property(P, indexed(Indexes)).
  • CLEANUP: Remove unneeded argument to clauseNo()

[Nov 21 2017]

  • REFACTOR: Move argument info into clause-list, such that it can be reused in sub-indexes
  • HACK: Use `lists' for all indexes to debug this

[Nov 27 2017]

  • FIXED: cherry-pick of 4ffba6cc6648e1ef18165d0faf4995327965b25e needed more edit.

[Nov 26 2017]

  • FIXED: exception/3 handling for undefined predicates if the predicate is locally defined rather than imported and thus the predicate id does not change. Breaks lazy loading of wordnet driver.

[Nov 20 2017]

  • FIXED: Possibly crash in AGC when another thread is doing findall. Keri Harris.
  • ENHANCED: library(prolog_colour): handling of cross-module calls.
  • FIXED: Avoid instantiation errors when colouring insufficiently instantiated goals.
  • ENHANCED: Colour library: classify m:Var and m:noncallable as errors.
  • FIXED: predicate_property(m:P, autoload(File)) raised an instantiation error instead of enumerating the autoloadable predicates.
  • PORT: Global generation handling on machines without atomic 64-bit operations. James Cowgill. This is a temporary workaround. On the long run we should use libatomic to guarantee properly ordered operations that are fully portable. This should be a temporary fix for 32-bit platforms (mips, mipsel, powerpc, powerpcspe)

[Nov 7 2017]

  • ADDED: Multiline CSV rows where newlines are embedded in quoted fields.

[Nov 11 2017]

  • FIXED: atom_is_named_var(): incorrect classification of wide-character atoms leading to false multiton messages. Arthur Wang.
  • FIXED: _<non-upper> is not subject to multiton check

[Nov 8 2017]

  • FIXED: atom-garbage collection when compiled for single threading. Abramo Bagnara.

[Nov 6 2017]

[Nov 3 2017]

  • FIXED: maplist/N expansion for qualified goals. Samer Abdallah.
  • FIXED: Engine symbol's are not referenced to allow reclaiming engines in atom-gc. Thus, we should also not unregister them on completion.
  • DEBUG: Fix printing -1 reference issues
  • CLEANUP: Duplicate test in atom-completion

[Nov 2 2017]

  • CLEANUP: PL_unregister_atom(): style and properly check for references dropping below zero.
  • FIXED: veto atom-destruction in the type->release and GD->atoms.gc_hook.

[Nov 1 2017]

  • DOC: asserta/1,2, assertz/1,2, assert/1,2: join, add example.
  • DOC: LaTeX syntax
  • FIXED: Possible write reordering when creating the predicate supervisor code.
  • PORT: Enable shared objects for aarch* architecture on Linux.
  • FIXED: possible race when rehashing functors

[Oct 31 2017]

  • ADDED: load_files/2: option check_script(+Boolean) to prevent checking for a #! script line.
  • FIXED: Race conditions around GD->functors.highest.

[Oct 30 2017]

  • TEST: More stressful test that found several issues in atom handling.
  • FIXED: Avoid reordering of memory access impact lookupFunctor().
  • FIXED: possible race condition when calculating the highest atom index
  • CLEANUP: Move true(type, PL_BLOB_UNIQUE) to inside the loop.
  • FIXED: Allow for safe vetoing of atom destruction from the release hook.
  • FIXED: Avoid overflow of atom reference counts.
  • FIXED: race condition(s) when creating new atoms
  • FIXED: race condition when iterating over atom table

[Oct 27 2017]

  • ENHANCED: Avoid creating modules for '$def_modules'/2 (part of expansion)
  • ENHANCED: Avoid creating modules for qualified goals to non-existing modules.

[Oct 29 2017]

  • FIXED: Issue#275: mv/2 not to demand the target to exist when moving a single file.
  • DOC: number_chars/2 and name/2: clarified.
  • DOC: Clarify the set predicates from library(lists). Still incomplete and their definition is highly dubious.
  • DOC: Removed style_check(+atom) from the docs and references to it. Wouter Beek.

[Oct 28 2017]

  • DOC: Document that number_codes/2 supports number signs.
  • DOC: Document the difference between put_dict/4 and `.'-notation.
  • DOC: Fixed documentation of get_dict/5.
  • DOC: Typo in website name Wikipedi[A]; also HTTPS.
  • DOC: Document the Reference (handle) argument of assertz/2.
  • DOC: GET is an HTTP method, not a protocol.
  • DOC: Document the support for Wildcard expansion in mv/2.
  • DOC: Document important limitations of union/3.
  • DOC: Explain the difference between get_dict/3 and `.`-notation.
  • DOC: Document the default value of option eof_action/1 to open/4. Also fixes some small typos.
  • DOC: Documented the full range of control characters.
  • DOC: Fixed examples that are given for char_type/2.
  • DOC: Completed the table of supported types for must_be/2.
  • DOC: Fixed typo in example for predicate_options.

[Oct 27 2017]

  • FIXED: Race condition in reserveAtom().

[Oct 26 2017]

  • FIXED: Way simpler handling for starting AGC/CGC on a separate thread lazily.
  • PORT: Compilation on systems that do not have pthread_attr_setaffinity_np() and SCHED_SETAFFINITY. Paulo Moura.
  • FIXED: more issues around the creation of the gc thread. Note that these problems only affect programs in the startup phase.

[Oct 25 2017]

  • FIXED: Continue if we cannot create the gc thread
  • TEST: Test race conditions around gc thread startup.
  • FIXED: Added thread_create/2 to xref meta-declarations.
  • FIXED: Possible deadlock starting the gc threads. With help from Keri Harris.
  • ADDED: thread_affinity/3 to query and control the thread affinity mask
  • FIXED: Crash on ARM cpus due to memory access reordering. With lots of help from Keri Harris. This patch introduces some additional state in free atoms to make similar issues easier to debug.
  • ADDED: thread_create/3: option affinity(CpuSet)

[Oct 22 2017]

  • MODIFIED: current_key/1 used to succeed on empty record lists. This seems inconsistent with the rest of the recorded database.
  • FIXED: Cleanup recorded database after finishing enumeration. Can have a very big performance impact and memory reduction on programs that use recorded/2,3. Fabrizio Riguzzi.
  • FIXED: recorded database race condition.

[Oct 21 2017]

[Oct 20 2017]

  • MODIFIED: Mapping from errno to Prolog exceptions. The following errors used to be mapped to existence errors and are now mapped to more meaningful errors: - EPERM, EROFS and ENOTEMPTY are now mapped to permission_error - ELOOP is now mapped to representation_error

[Oct 19 2017]

  • FIXED: get_procedure() using GP_FINDHERE should not create the target module.

[Oct 18 2017]

  • ENHANCED: current_op/3: avoid creating a module if the name is qualified with the name of an non-existing module.
  • ENHANCED: time_file/2: support sub-second resolution on systems where the time field of `struct stat` is a timespec instead of time_t (e.g., Linux).

[Oct 17 2017]

  • ENHANCED: get_procedure(): avoid creating modules and undefined procedures.

[Oct 16 2017]

  • ENHANCED: source_file/2: avoid creating predicate to find files from its autoloaded definition.
  • ENHANCED: Avoid '$c_current_predicate'/2 from creating the target module on qualified calls.
  • ENHANCED: write_term/2,3: if a module(M) argument is provided, but the requested module does not exist use user. This avoids recreating the pengine module if a delayed pull_response query arrives after the pengine destroy.

[Oct 14 2017]

[Oct 13 2017]

  • FIXED: 65581363122939a884ea0583277b98f8e9d59a6e completed to actually read \r line-terminated CSV files.

[Oct 11 2017]

  • DOC: pack_property/2: make clear this concerns local packs. Nicos Angelopoulos.
  • ENHANCED: Issue#274: better determinism of stream_property(-,+). Douglas Miles.

[Oct 10 2017]

  • FIXED: pack installation: detect we need to build foreign resources if configure.ac is present.

[Oct 6 2017]

[Oct 5 2017]

  • ADDED: csv//2: allow for \r separated records.
  • DOC: link to clib package
  • DOC: Removed outdated argv handling example.

[Oct 4 2017]

  • FIXED: PceEmacs colour support on the system modules. Requires keeping track of calls to built-in predicates.

[Oct 3 2017]

  • FIXED: fast_term_serialized/2: possible crash in mode (-,+) due to gc while preparing room for the output term.
  • TEST: error handling in fast_write/2.
  • FIXED: External record handling crash instead of raising a permission error when saving blobs. Wouter Beek.
  • FIXED: In mode-directed tabling, an answer should be added to the worklist for further processing if the output arguments have been updated. This patch causes update/3 to fail if the output arguments have not changed.

[Sep 29 2017]

  • INSTALL: db package was renamed (long ago) to bdb
  • FIXED: consider leap seconds when performing date&time calculations using libtai

[Sep 28 2017]

  • FIXED: Missed trailing when qualifying a meta-argument that is passed a variable. jedixb king.
  • FIXED: prolog_frame_attribute/3: properly trail goal arguments. Shouldn't affect normal programs.
  • FIXED: printing pointers in checkData() (internal consistency checking)

[Sep 24 2017]

  • ADDED: interactor(?Title), complementing attach_console(?Title)

[Sep 20 2017]

[Sep 23 2017]

[Sep 22 2017]

  • ADDED: goal_colours/3 hook to allow for context awareness.
  • ENHANCED: More efficient handling of ord_intersection(S1, S2, []).
  • ENHANCED: Further optimization of partial evaluation inside disjunctions by finding shared variables with the remainder of the body.

[Sep 21 2017]

  • ENHANCED: Issue#62: library(prolog_xref): avoid exponential explosion if the branches are not involved in partial evaluation. Paul Singleton.

[Sep 20 2017]

  • ADDED: Support colouring of {_} if it is a goal.

[Sep 19 2017]

  • FIXED: atom reference count handling for both keys and values. Only affects multi-threaded applications.
  • PORT: More Windows SSL library name issues.
  • ENHANCED: library(prolog_code_walk): avoid implicit dependency on gtrace.
  • PORT: Deal with OpenSSL 1.1 DLL names for Win32.

[Sep 18 2017]

  • FIXED: deal with parentheses_term_position/3 term when adding meta-arguments. Samer Abdallah.
  • PORT: Updated SSL DLL files in Windows distribution to 1.1

Package debian

[Jan 10 2019]

  • STABLE: Updated from devel branch

[Nov 19 2018]

  • FIXED: Do not call autoreconf

[Oct 29 2018]

  • PORT: Avoid env -C for Ubuntu < 18.04

[Oct 21 2018]

  • CMAKE: Change rules to use cmake

[Mar 22 2018]

  • ADDED: YAML package

[Feb 24 2018]

  • PPA: Install package index file
  • PPA: Install package index file

[Apr 23 2017]

  • ADDED: package pcre

Package PDT

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 21 2018]

  • BUILD: Support cmake

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package RDF

[Nov 27 2018]

  • TEST: Support -DINSTALL_TESTS=ON

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 10 2018]

  • MODIFIED: Deleted long deprecated library(rdf_ntriples). This file is now a local test support file. Use the semweb libraries for reading ntriples/Turtle and TriG files.

[Sep 22 2018]

  • BUILD: Support cmake

Package archive

[Jan 13 2019]

  • ADDED: archive_extract/3 add include option and support a list for the remove_prefix option.

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 31 2018]

  • CMAKE: Allow setting LibArchive_ROOT as cmake variable

[Oct 29 2018]

  • DOC: Added documention for cmake build

[Sep 21 2018]

  • BUILD: Support cmake

[Jul 9 2018]

  • MODIFIED: format(all) now excludes mtree as this format often results in false detection.

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package bdb

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 26 2018]

  • PORT: Search for Macports lib and include locations

[Sep 21 2018]

  • BUILD: Support cmake

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package chr

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 10 2018]

  • BUILT: Make generation and testing work with autoconf
  • CMAKE: add tests
  • CMAKE: Working CHR build and install

[May 14 2018]

[Oct 30 2017]

  • CLEANUP: internally renamed line_number into source_location to reflect the change of the data structure.
  • FIXED: line number patch: part of the code expected an integer
  • ENHANCED: Print file name along with line numbers for CHR errors and warnings. Wouter Beek.

Package clib

[Jan 12 2019]

  • FIXED: Make sure EPLEXCEPTION is set when raising a socket error.

[Jan 10 2019]

  • FIXED: Windows sockets: call WSACloseEvent() to discard associated events.

[Jan 9 2019]

  • CLEANUP: Removed dummy functions, DLL exports, duplicate types, etc.

[Jan 8 2019]

  • MODIFIED: tcp_select/3, a replacement for wait_for_input/3 that allowed for Windows event processing and timeouts has been removed because this does not fit with the current implementation of Windows sockets. Cleanup and document related material.
  • MODIFIED: use blob for socket handles. These used to be terms of the shape '$socket'(Integer). Blobs provide safety.
  • ENHANCED: Get rid of integer socket wrapper representation, preparing for blob-handles.

[Jan 9 2019]

  • FIXED: Clean shutdown for sockets, notably on Windows.

[Jan 8 2019]

  • FIXED: add_stream_to_pool/2 meta predicate arguments (: -> 0).
  • FIXED: library(streampool). Use tcp_select/3 on Windows as the library only works for sockets on Windows. Also updated the comments to be PlDoc compliant. Note that this library is rarely used since we have multiple threads.

[Jan 7 2019]

  • MODIFIED: library(socket) now throws exceptions of the form socket_error(Code, Message), which used to be Message. Code is the lowercase version of the C macro, e.g. epipe. Code handling socket_error(Message) must be adjusted. Code that must be backward compatible must check for both errors.
  • ENHANCED: socket error reporting for POSIX systems.

[Dec 18 2018]

[Nov 27 2018]

  • TEST: Support -DINSTALL_TESTS=ON

[Nov 22 2018]

  • PORT: Always use execve() for better portability with Android termux.
  • ADDED: process_create/3: option environment(+List) compatible with SICStus 4.1. Unlike the old env(+List), the environment is inherited.

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Nov 17 2018]

[Oct 27 2018]

  • DOC: Fixed a small typo.

[Oct 26 2018]

  • CMAKE: Avoid new GREATER_EQUAL

[Oct 23 2018]

  • PORT: Allow runtime selection of posix_spawn(), fork() or vfork() to create processes.
  • PORT: Provide process_create/3 based on posix_spawn() for better portability.

[Oct 9 2018]

  • ADDED: directory_member/3 to find members of a directory. Offers various filters and recursive search that is safe against cycles.

[Oct 4 2018]

  • PORT: Work around bug un Ubuntu 18.04 uuid-config that claims the wrong directory for -lossp-uuid. As the name (rather than -luuid on some platforms) is explicit we retry searching default locations.
  • PORT: Stricter checking for OSSP-UUID
  • CMAKE: More robust discovery of ossp-uuid library

[Sep 21 2018]

  • BUILD: Support cmake

[Jul 20 2018]

  • DOC: Document UDP broadcast terms envelope

[Jul 19 2018]

[Jun 27 2018]

  • DOC: process_wait/3: document that Status is timeout if the time limit is exceeded.

[Jun 12 2018]

  • PORT: Windows handling of IP multicast options.

[Jun 11 2018]

[Jun 10 2018]

  • ADDED: support multicast network for udp_broadcast
  • ADDED: Support multicast sockets.
  • ADDED: Add a hook to implement invited joining to a unicast network.

[Jun 6 2018]

  • ADDED: Unicast UDP broadcast handling.
  • MODIFIED: Allow specifying the UDP message serialization per scope.
  • REDESIGN: Use poll() to handle multiple sockets. Preparing for multiple broadcasting scopes and UDP broadcast/multicast/unicast.
  • MODIFIED: Removed host_to_address/2 and udp_broadcast_service(Scope,Service) event. Both can easily be implemented outside the core of this library.

[May 30 2018]

  • ENHANCED: UDP broadcasting: implement collecting replies using wait_for_input/3. This is more robust and cheaper.
  • ADDED: tcp_getopt/2 to get info from a socket.
  • ADDED: udp_broadcast_initialize/2 now processes an option list.
  • MODIFIED: Add a magic string in front of our service such that we can more easily ignore false messages that are not intended for us.

[May 29 2018]

  • ADDED: Hookable UDP serialization
  • CLEANUP: library(udb_broadcast): layout, comments, reduce atom usage.

[Mar 17 2018]

[Mar 12 2018]

  • ADDED: uri_encoded/3: segment encoding that also encodes "/" for REST requests that include "/".

[Feb 5 2018]

[Jan 8 2018]

  • COMPAT: fork/1: Stop gc thread using new supported API

[Dec 20 2017]

[Dec 19 2017]

  • CLEANUP: remove unused winsock code
  • PORT: winsock rewrite to bring Windows socket code in line with POSIX socket code
  • PORT: use correct winsock error codes
  • ENHANCED: support blocking UDP sockets
  • FIXED: enable signals to be handled when send() blocks on a partially-full TCP buffer

Package clpqr

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 21 2018]

  • BUILD: Support cmake

[Jul 3 2018]

  • FIXED: clpq was not working with expressions containing floats, since nf_number/1 was failing for numbers.

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package cpp

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 21 2018]

  • BUILD: Support cmake

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package cql

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 21 2018]

  • BUILD: Support cmake

[May 22 2018]

  • FIXED: Operator priority clash due to table operator.

Package http

[Jan 25 2019]

[Jan 10 2019]

  • ENHANCED: library(http/hub), the websocket hub library to silence epipe exceptions as these are a normal part of the communication.

[Jan 7 2019]

  • MODIFIED: prevent printing epipe socket errors to the console.

[Jan 4 2019]

  • FIXED: Issue#402: more traces of httpserver images.
  • FIXED: Issue#402: httpserver.png was will in CMake spec. Dennis Mitschell.

[Jan 3 2019]

[Jan 2 2019]

  • DOC: status_page_hook/3 documentation improved.
  • DOC: Deleted outdated examples and added examples for REST routing and request rewriting for login management.
  • DOC: http_handler/3 and http_dispatch/1.

[Jan 1 2019]

[Dec 31 2018]

  • ADDED: Allow extracting values from the HTTP request in the handler declaration.
  • ADDED: Provide path matching to accommodate REST interfaces easier.

[Dec 17 2018]

  • ADDED: html//1: Highlighting support for the Format-Args construct.

[Dec 8 2018]

  • DOC: Install images. Anne Ogborn.

[Dec 6 2018]

[Dec 5 2018]

  • FIXED: Make chunked_stream scan for a file handle safe against concurrent closing of the stream. Could cause crashes when stream_property/2 was used asynchronously on the chunked stream.

[Nov 27 2018]

  • TEST: Support -DINSTALL_TESTS=ON

[Nov 29 2018]

[Nov 23 2018]

  • MODIFIED: http_open/3: accept status codes 201 thru 299 as successful.

[Nov 26 2018]

  • ADDED: http_server/2: option entry_page(URI) to provide more adequate feedback if a server does not provide / as landing page.

[Nov 20 2018]

  • ENHANCED: Avoid dependency of html_write.pl on the entire HTTP framework.

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Nov 11 2018]

  • FIXED: http_open/3: an exception during input processing leads to a leaked file descriptor if keep_alive is used.
  • FIXED: json_read/2,3: accept exponent with explicit +, as in 3.4e+6.

[Oct 15 2018]

  • PORT: Provide toplevel target, do not depend unconditionally on UUID and only install http_unix_daemon.pl on Unix-like systems.

[Oct 10 2018]

  • FIXED: pwp finding index.pwp and directory handling * The logic to find index.pwp stopped working because absolute_file_name/3 only works with files unless file_type(directory) is specified as an option.
    • This patch fixes the problem and closes SWI-Prolog/swipl-devel#345

[Oct 4 2018]

  • TEST: Allow running from another directory.

[Sep 21 2018]

  • BUILD: Support cmake

[Aug 14 2018]

[Jul 2 2018]

  • ADDED: Setting http:on_log_error to act on failures to log HTTP traffic.

[Jun 27 2018]

  • ENHANCED: library(http_log): do not propagate errors, i.e., prevent service interruption if something is wrong with the log files.

[Jun 26 2018]

  • FIXED: http_handler/3: If there are multiple prefix handlers for the same path, use the one with the highest priority rather than the first.

[Jun 12 2018]

  • ADDED: Use new message_context flag to add a time stamp to error messages.

[Jun 8 2018]

  • ADDED: Query and update session data from explicit sessions. Needed to deal with events from websockets in SWISH.
  • FIXED: WebSocket hub to acknowledge the close package. Fixes clean termination of websocket connections if the close is initiated from the other side.
  • ADDED: supply the queue to the http:schedule_workers/1 hook.
  • FIXED: Detach worker before exitting.

[May 14 2018]

  • ADDED: library(http_unix_daemon): pass timeout and keep_alive_timeout
  • DOC: Instead of local, global and trail there is now the stack_limit option.

[Apr 16 2018]

  • CLEANUP: Avoid singleton-in-branch warning when compiling for optimisation.

[Apr 5 2018]

  • CLEANUP: Updated README, deleted completely outdated TODO.
  • FIXED: file_content_type/2,3: behave correctly if there is no default character set.

[Apr 4 2018]

[Apr 2 2018]

  • FIXED: handling of defaults at end of json_object The following was not properly working: :- json_object point(x:integer, y:integer, z:integer=0). json_to_prolog(json([x=5,y=6]), PrologTerm).

    PrologTerm would not be properly instantiated because default values were not being handled. Defaults worked properly in the middle of the definition in json_object, but not at the end.

    This patch fixes the problem.

[Mar 31 2018]

  • FIXED: Improve and document the ambiguity that results from http_parameters/2,3 processing both request parameters and POST of form data.
  • ENHANCED: If http:convert_parameter/3 throws and error, add an error context that indicates the error is related to a specified parameter.

[Mar 23 2018]

[Mar 16 2018]

  • ENHANCED: Performance improvement parsing HTTP headers.
  • ADDED: Start JSON error messages
  • CLEANUP: Remove conditional dictionary code
  • TEST: Added test cases for all non-200 replies and completed the implementation of some.
  • ADDED: http_server/2: option silent(true) to silence the startup message.
  • CLEANUP: Generalise non-200 reply page generation
  • MODIFIED: Moved json whitespace handling to C. Also removed // comment handling that is no longer part of the JSON standard. Almost doubles the performance.

[Mar 15 2018]

  • ENHANCED: Moved reading JSON numbers to C, providing double performance on a JSON benchmark.
  • ADDED: Redirect all non-200 replies that produce data over status_page_hook/4. This prepares for a non-HTML replies
  • CLEANUP: library(http/http_header): generalise internal interfaces, preparing for better control over non-200 responses.

[Mar 14 2018]

  • CLEANUP: Remove outdated conditional code for thread CPU time.
  • ADDED: json and yaml media types.

[Mar 9 2018]

  • DOC: clarify new hooks as suggested by Markus Triska.
  • CLEANUP: add missing multifile declaration.

[Mar 7 2018]

  • MODIFIED: Use file_content_type/3 to add a charset declaration for text files
  • ADDED: file_content_type/2,3, reasoning about the charset for text documents. Raised as issue by Markus Triska.
  • MODIFIED: `.md` files are served as text/markdown instead of text/x-markdown.
  • ENHANCED: Allow setting the flag default_mimetype before loading library(http/mimetype).

[Feb 23 2018]

  • DOC: JSON dict type tags aren't added by default

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package inclpr

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 17 2018]

  • FIXED: PL_* functions error checking

[Sep 10 2018]

  • CMAKE: Added cmake config

Package jpl

[Dec 13 2018]

  • BUILD: Drop RUNPATH pointing at Java installation if SWIPL_INSTALL_IN_LIB=ON and we are generation a .DEB package.

[Dec 11 2018]

  • DOC: Some PlDoc styling and fixes.
  • FIXED: CLASSPATH handling. Paulo Moura.

[Dec 10 2018]

  • MODIFIED: Search jpl.jar over CLASSPATH before extending the CLASSPATH. Simplifies embedding JPL in saved states. Paulo Moura.
  • MODIFIED: When adding jpl.jar to CLASSPATH, do not add `.` if there is no existing CLASSPATH (SECURITY).

[Nov 25 2018]

  • PORT: find_package(JNI) not needed on Android

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Nov 1 2018]

  • DOC: Point at wiki.

[Oct 31 2018]

  • TEST: java_in_prolog also requires junit.jar

[Oct 22 2018]

  • TEST: Fix prolog-in-java test for changed location of the boot file in the build tree.

[Oct 12 2018]

  • PORT: Try to find junit.jar in Darwin locations.
  • PORT: On MacOSX we seem to need a dylib to be loadable into the JVM.
  • FIXED: Push the path where libjpl.so resides using -Djava.library.path rather than the OS search path.
  • TEST: Clean up and extended standalone JUNIT test cases

[Oct 11 2018]

  • TEST: Fixed Test cases related to Iterator - Aliged to standard JAVA spec

[Oct 9 2018]

  • CLEANUP: Clean up uses of deprecated methods that gave warnings; Fix casting of Double for Java SE 9 - no use of deprecated consturctor; fixed JavaDoc warnings

[Oct 6 2018]

  • MODIFIED: Aligned Iterator API hasNext() and next() to standard Java contract, improved javadoc few places

[Oct 9 2018]

  • CMAKE: Added option JAVA_COMPATIBILITY to do/do not use -target and -source options.
  • CTEST: Make JPL test for Prolog in Java work

[Oct 8 2018]

  • PORT: jpl_config_dylib/0: support libjawt.dylib and do not complain about missing dependencies. Paulo Moura.
  • CMAKE: Make Ctest work for JPL
  • PORT: Try using java_home to find Java's home.

[Oct 6 2018]

  • CMAKE: Install library(jpl_config) on relevant platforms (MacOS). Paulo Moura.

[Sep 13 2018]

  • MODIFIED: Issue#76: Atom.toString() now applies the Prolog quoting rules rather then simply putting the text inside single quotes. After discussion and code by Wouter Pasman and Paul Singleton.

[Sep 10 2018]

  • CMAKE: Build and install jpl.so and jpl.pl

[Jan 16 2018]

  • PORT: Do not fail the installation if junit.jar cannot be found.

Package libedit

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 22 2018]

  • FIXED: Avoid loading both editline and readline.

[Oct 2 2018]

  • BUILD: Support cmake

[Sep 25 2018]

[Jul 2 2018]

  • FIXED: Issue#311: Avoid zero divisor when listing alternatives where the longest is larger than the screen width. Wouter Beek.

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package ltx2htm

[Jan 3 2019]

  • FIXED: Translation of \term{Name}{} to HTML. Avoid spaces around : as infix operator.

[Dec 6 2018]

  • CMAKE: Add dependency on clib package

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 15 2018]

  • PORT: Replace external shell commands with Prolog alternatives.

[Oct 8 2018]

  • ADDED: Support \InputIfFileExists and \IfFileExists commands to deal with conditional parts of the manual.

[Oct 3 2018]

  • CLEANUP: Avoid duplicate files

[Sep 23 2018]

  • BUILD: Sync latex2html installation with cmake one

[Sep 14 2018]

  • ENHANCED: Simplify installation and support --quiet

[Sep 11 2018]

  • CMAKE: First config version

Package nlp

[Jan 24 2019]

  • FIXED: tokenize_atom/2 when the atom contains an illegal number could result in a variable (unbound) extra token in the output.

[Nov 27 2018]

  • FIXED: tokenize_atom/2: handle illegal floats as sequences of alphanumerical characters.

[Nov 26 2018]

  • ADDED: isub/4: allow for codes or chars input. Also reduces use of malloc() to improve the performance.

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 21 2018]

  • BUILD: Support cmake

[Jul 23 2018]

  • FIXED: tokenize_atom/2: properly raise exception on errors converting the input text.

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package odbc

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 6 2018]

  • TEST: Replace SQLite driver by SQLite3. Most tests fail. This is also the case with the autotools version, so we'll investigate later.
  • CMAKE: Cmake configuration added.

Package pcre

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 3 2018]

  • CMAKE: Mark variables as advanced

[Sep 21 2018]

  • BUILD: Support cmake

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package pengines

[Jan 6 2019]

  • FIXED: failed pengine destruction if the pengine is aborted during a timeout.

[Dec 25 2018]

  • FIXED: Issue#103: Make write/1 emulation for Pengines compatible with the normal write/1. Fabrizio Riguzzi.

[Dec 8 2018]

  • DOC: Install images. Anne Ogborn

[Nov 21 2018]

  • FIXED: Set the typein module while executing a query to facilitate predicates such as op/3.

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Nov 1 2018]

[Oct 30 2018]

  • ADDED: Forward help output through pengines.
  • FIXED: pengine print_message/2 hook to handle ansi(Attrs, ...) when Attrs is not a list. Also avoid non-determinism that can cause long delays for printing malformed messages.

[Sep 21 2018]

  • BUILD: Support cmake

[Aug 24 2018]

[Jul 22 2018]

[Jun 20 2018]

  • FIXED: Issue#39: conflict about listing/2. Wouter Beek.

[Jun 4 2018]

  • REVERT: Reverted the changes to move from jQuery to use the new fetch() API for pengines.js. There are two many issues with the new implementation. notably wrt to aborting queries and error handling. The modifications will be kept in a branch jquery-to-fetch-api.

[May 15 2018]

  • DOC: Issue#35: must not Markus Triska.

[Apr 12 2018]

  • FIXED: Support abort on browsers with the AbortController API and restore the error handling.

[Apr 5 2018]

  • COMPAT: Dynamically load fetch and promises if needed.

[Apr 4 2018]

  • TEST: Replace phantomjs by slimerjs

[Sep 7 2016]

[Mar 1 2018]

  • DOC: Clarified relation between terms parent/child and master/slave
  • DOC: Use correct markup
  • DOC: Clarified that we treat parent/child" as synonymous to master/child".

[Feb 28 2018]

[Feb 25 2018]

  • FIXED: Do not send /ping before we got an id. This avoids "bad request" messages.

[Feb 22 2018]

  • FIXED: Relation between projection and $variable_names.

[Feb 21 2018]

  • ENHANCED: Update the answer template if it is default and the user modified the bindings.

[Feb 16 2018]

  • FIXED: Properly return on a syntax error.
  • FIXED: Instantiation error if no template was provided.

[Feb 13 2018]

  • FIXED: Move parsing ask and template options for a remote Pengine create to the pengine. This is needed as we first need to prepare the source to get access to the relevant operator declarations.
  • ENHANCED: improve determinism of pengine_property/2 by swapping arguments.

[Feb 7 2018]

  • SECURITY: Enable the mitigate_spectre flag.

Package pldoc

[Dec 30 2018]

  • ENHANCED: Use cdata(string) to avoid stress on atom garbage collection and possibly reduce fragmentation for the manual server.

[Dec 14 2018]

  • FIXED: Support synopsis generation for non-terminals.

[Dec 13 2018]

  • ENHANCED: Cache the most recent 25 search results to make "Next>" work faster.

[Dec 12 2018]

  • BUILD: Add nlp package dependency
  • ENHANCED: Big speedup computing the source button link. Also prefer system predicates when resolving unqualified predicates.

[Dec 11 2018]

  • ADDED: Support quoted search
  • DOC: Further enhance search. Find numbered variable names as indication of a type and extend the list of related terms.

[Dec 9 2018]

  • ENHANCED: Processing the search field: more selective matching, using a synonym list and stemming to broaden the scope. Better presentation.

[Dec 8 2018]

  • DOC: Issue#25: Extended description of package overview page. Wouter beek

[Dec 3 2018]

  • FIXED: Manual content tree on Windows. Must get canonical filename.
  • ADDED: Support code and avoid non-determinism for code fragments with illegal syntax.
  • FIXED: Make sure doc markdown processing listens to time limit exceptions.

[Nov 29 2018]

  • DOC: Fixed documentation for library(doc_latex). Paulo Moura.
  • FIXED: Issue http#121: images not showing in manual. Reported by Erik Dominikus.

[Nov 28 2018]

  • ADDED: doc_clean/1 to remove collected documentation for a module.

[Nov 26 2018]

  • FIXED: Make manindex.db independent from the location where the manual (and Prolog) is installed. Also makes the file considerable shorter.
  • ENHANCED: doc_server/1: print proper location of documentation server. Nicos Angelopoulos.

[Nov 22 2018]

  • BUILD: Missing dependencies for qcompiling doc_html.pl

[Nov 20 2018]

  • ADDED: save_man_index/0, providing persistent caching for the HTML manual index.

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 29 2018]

  • DOC: Deal with new file search paths for the manual.

[Oct 9 2018]

  • CLEANUP: separate manual indexing from the rest of the code such that we can access predicate summaries without loading the whole documentation system.

[Oct 6 2018]

  • ENHANCED: Use file_search_path/2 to find the HTML manual to be more flexible about its location.

[Oct 1 2018]

  • ENHANCED: Find loading synopsis for libraries without loading them.

[Sep 24 2018]

  • FIXED: source_link option processing. Fixed some documentation issues.

[Sep 21 2018]

  • BUILD: Support cmake

[Aug 24 2018]

  • ENHANCED: Print a message if a <module> comment does not appear inside a module.

[Jul 5 2018]

  • FIXED: source links for predicates that are related to a module should not resolve to a file defining another module.

[Jun 18 2018]

  • FIXED: Illegal <!DOCTYPE> for generated HTML source.

[Apr 29 2018]

  • PORT: Update pldoc.js to support jQuery 3. Simplified a lot.

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package plunit

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 21 2018]

  • BUILD: Support cmake

[Mar 30 2018]

  • ADDED: show_coverage/2 sets the Prolog flag coverage_analysis to true while running to allow conditional code.
  • ENHANCED: show_coverage/2: ignore $pred_option, better message, typo in comments.

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

[Dec 11 2017]

  • MODIFIED: Depth limit when printing failure terms from 10 to 100.

[Nov 22 2017]

  • ADDED: show_coverage/2. Predicate show_coverage/2 receives a list of module names of interest as second argument and it prints detailed information of the uncovered clauses that belong to any of those modules. Statistics have been improved. Clauses originated from system calls such as :-use_module or pldoc comments are no longer taken into account to compute for the total number of clauses in a file.

Package protobufs

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 4 2018]

  • TEST: Allow running from another directory

[Sep 21 2018]

  • BUILD: Support cmake

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package readline

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 31 2018]

  • CMAKE: Allow setting LibArchivReadlinecmake variable

[Oct 29 2018]

  • CMAKE: Use default find_path() logic
  • ENHANCED: Use Readline_ROOT instead of Readline_ROOT_DIR for consistency.
  • PORT: Trying to avoid binding to Apple's readline surrogate.

[Oct 22 2018]

  • FIXED: Avoid loading both readline and editline interfaces

[Oct 2 2018]

  • CMAKE: Fixed checks for readline functions and headers.

[Sep 22 2018]

  • BUILD: Support cmake

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

Package semweb

[Nov 27 2018]

  • TEST: Support -DINSTALL_TESTS=ON

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Nov 16 2018]

  • FIXED: Properly process GRAPH keyword. Wouter Beek.

[Nov 12 2018]

  • FIXED: Issue#85: allow for "GRAPH" keyword in TriG format. Wouter Beek.

[Oct 11 2018]

[Oct 6 2018]

  • DOC: Fixed reference

[Oct 4 2018]

  • TEST: Allow running tests from a different directory

[Sep 24 2018]

  • CLEANUP: Avoid unused variable and possibly uninitialized variable warnings if NDEBUG is set.

[Sep 23 2018]

  • BUILD: Fix building docs after rename of .txt to .md for consistency.

[Sep 22 2018]

  • BUILD: Support cmake

[Sep 13 2018]

[Sep 3 2018]

  • FIXED: correctly calculate end-position when converting strings with decimal commas

[Aug 31 2018]

  • ENHANCED: rdf_load/2, HTTP plugin: try decompressing also if the content type is application/octet-stream and the URL ends in .gz.

[Aug 12 2018]

  • FIXED: Legal N-Triples escape sequence (\') was not yet implemented.

[Jul 7 2018]

  • FIXED: exception on file:// protocol.

[Jul 6 2018]

[Jun 12 2018]

  • FIXED: Declare rdf_where/1 (rdf11:{}/1) to as sandbox-safe. Jacco van Ossenbruggen.

[Jun 6 2018]

  • FIXED: make date in example an xsd:date iso xsd:dateTime

[Feb 22 2018]

  • DOC: Document the `prefixes/1' option of `rdf_load/[1,2]'.
  • DOC: Changed type `TRiG' to `TriG'.

[Feb 20 2018]

[Jan 11 2018]

  • DOC: Avoid Unicode in comment.

[Jan 8 2018]

[Jan 2 2018]

  • FIXED: Turtle parser error recovery on an illegal IRIREF. Wouter Beek.

[Dec 21 2017]

[Dec 20 2017]

[Dec 6 2017]

  • ENHANCED: rdf_save/2: more efficient enumeration of subjects if a small graph from a large database is saved.
  • FIXED: Meta-predicate declaration for rdf_save_canonical_trig/2.

[Nov 22 2017]

  • FIXED: prioritize base URI explicitly set through option.
  • FIXED: File input clause for read_rdfa/3 would not be reached.

[Nov 4 2017]

  • PORT: ntriple parser for platform with unsigned char (arm)

[Nov 3 2017]

  • CLEANUP: Move RDF prefix handling into its own library as this can also be used for XML and other RDF backends.
  • FIXED: rdf_nth1/3, rdf_nth0/3: really raise a type error.

Package sgml

[Dec 30 2018]

[Dec 11 2018]

  • PORT: Link to -lpthread

[Dec 8 2018]

  • FIXED: Race condition due to misconfiguration in new CMake config.

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 27 2018]

  • DOC: Fixed a small typo.

[Oct 11 2018]

  • FIXED: Functions should be called with is/2. [Oct 10 2018]
  • FIXED: Functions should be called with is/2. Before this fix, the following would bind `N' to `round(123.1)'. After this fix, `N' is bound to `123' (as intended).
    xpath(Dom, //some_tag(@some_attribute(integer)), N)

[Oct 4 2018]

  • TEST: Allow running from a different directory.

[Sep 22 2018]

  • BUILD: Support cmake

[Jul 27 2018]

  • FIXED: Enumerating all nodes for element name '*'. Reported by Brian Nolan.

[Feb 28 2018]

  • MODIFIED: Be more robust parsing incorrectly quoted attributes in XML and SGML. Only a " or ' immediately following =\s* is taken to start a quoted value. Quotes in other positions are considered normal characters, but a warning is displayed.
  • TEST: Fixed xsd_time_string/3 test after fixing the code.
  • FIXED: Round trip for negative years. Wouter Beek.
  • FIXED: Decimal seconds with leading zeros. Wouter Beek.

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

[Jan 13 2018]

  • SECURITY: Possible buffer overrun when generating error message

[Oct 29 2017]

  • MODIFIED: Issue#21: Allow for years with more than 4 digits, as allows in XML Schema part 2.

Package ssl

[Jan 7 2019]

  • CLEANUP: Remove remaining dependencies on clib nonblockio.[ch].

[Dec 3 2018]

  • FIXED: Hack to deal with TLSv1.3 possibility of false broken pipe exception. Work in progress.

[Nov 27 2018]

  • TEST: Support -DINSTALL_TESTS=ON
  • BUILD: Make sure we have process_create/3 before building certificates

[Nov 21 2018]

  • FIX: don't use crosscompiling paths to find openssl

[Nov 20 2018]

  • BUILD: Avoid relying on ~/.swiplrc

[Nov 19 2018]

  • BUILD: Respect BUILD_TESTING and move all test setup together

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Nov 16 2018]

  • PORT: Use native openssl when cross compiling.

[Nov 7 2018]

  • FIXED: Dependency issue creating ssl test certificates

[Nov 5 2018]

  • TEST: Migrated shell script to generate test certificates to Prolog and generalised it to allow generating the certificates in a different directory such that we no longer need copy the test configuration to the cmake binary directory.

[Oct 31 2018]

  • CMAKE: Avoid unwanted substitutions in mkcerts.sh script
  • TEST: Use a dynamically allocated ports for the test suite to avoid conflicts from concurrent tests or running services.
  • TEST: Get openssl utility from specified ROOT

[Oct 29 2018]

  • FIXED: Duplicate const declaration in config file.
  • PORT: Handle more X509_get0_signature() scenarios.

[Oct 5 2018]

  • CMAKE: Make cleaning work, avoiding trying to remove the non-empty test certificate directory.

[Oct 4 2018]

  • CMAKE: build ssl tests in the cmake binary directory and allow running ssl_test.pl from the binary directory.

[Sep 29 2018]

  • DOC: avoid complaints about odbc.bib

[Sep 25 2018]

  • PORT: Added @macro@ to all entries of config.h.cmake

[Sep 22 2018]

  • BUILD: Support cmake

[Aug 26 2018]

  • CLEANUP: Avoid warning of alpn is not supported in this version of libssl.

[Aug 24 2018]

  • ADDED: Application-Layer Protocol Negotiation (ALPN) support. ALPN is required for HTTP/2. Provided by James Cash with comments from Markus Triska and Jan Wielemaker.

[May 16 2018]

  • ENHANCED: Always set close_parent(true) in HTTP server hooks. This ensures that HTTP timeouts are properly propagated.

    Example:

    :- use_module(library(http/thread_httpd)).
    :- use_module(library(http/http_dispatch)).
    :- use_module(library(http/http_unix_daemon)).
    
    :- http_handler(/, handle_request, []).
    
    handle_request(_Request) :- format("Content-type: text/plain~n~n"),
        format("Hello!").
    
    http:ssl_server_open_client_hook(_SSL0, SSL, _Options) :-
            ssl_context(server, SSL,
                        [certificate_file('etc/server/server-cert.pem'),
                         key_file('etc/server/server-key.pem'),
                         password(apenoot1)]).

    Put this code in http_server.pl and launch the server with:

    $ p=etc/server; swipl https_server.pl --https \ --interactive
                       --port=4090 --timeout=0.1

    Then connect with:

    $ openssl s_client -connect localhost:4090

    It should terminate almost instantly.

[Apr 19 2018]

  • DOC: Clarify and update description of ssl_secure_ciphers/1.
  • ADDED: Configuration support for TLS 1.3 in min/max_protocol_version. TLS 1.3 is available with OpenSSL 1.1.1 or later.

Package swipl-win

[Oct 22 2018]

  • FIXED: Make Qt Windows set its flags as readonly, so subsequent setting by the user doesn't break the initialization process (notably: doesn't load the commandline editors as that deadlocks the Qt console).

[Oct 19 2018]

  • UPDATE: Avoid dependency on helpidx.pl. Requires more cleanup and a new callback to re-add showing the predicate summary on hoover.
  • CMAKE: Replace qmake with cmake to get uniform packaging and building.
  • PORT: Avoid conflict over CT macro with newer Qt headers.

Package table

[Jan 15 2019]

  • DOC: add table package docs

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 21 2018]

  • CLEANUP: Avoid compiler warning

[Sep 6 2018]

  • ENHANCED: Avoid alloca() for potentially large values.
  • BUILD: Support cmake

Package tipc

[Jan 8 2019]

  • MODIFIED: Use blobs for TIPC sockets, providing safety.
  • UPDATE: Use pointer nbio_sock_t, syncing with clib package changes.

[Jan 7 2019]

  • MODIFIED: As this library uses nbio_error() from the clib package, all exceptions are now of the format socket_error(Code, Message). This patch updates the documentation and message formatting.

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 21 2018]

  • BUILD: Deal with renamed overview file.

[Sep 22 2018]

  • BUILD: Support cmake

[May 29 2018]

Package utf8proc

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Sep 22 2018]

  • BUILD: Support cmake

Package windows

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 21 2018]

  • CMAKE: Added cmake specification for library(registry).

Package xpce

[Dec 18 2018]

[Dec 13 2018]

  • FIXED: No longer process SIGPIPE and call Prolog. Calling Prolog from an synchronous signal handler is not allowed, but there is no point in this handler anyway.

[Dec 6 2018]

  • CLEANUP: Moved atom operations to new library(atom). Reusing them here.

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 27 2018]

  • DOC: Fixed a small typo.

[Oct 23 2018]

  • FIXED: Not-closed :- if

[Oct 9 2018]

  • MODIFIED: Remove hooks that redirect help/1 and apropos/1 to the XPCE GUI. This code was based on the text based manual. As of now help/1 and apropos/1 work in the commandline and graphical help is only provided using the online manual at http://swi-prolog.org, which can be deployed locally.

[Oct 6 2018]

  • ADDED: PceEmacs: very minimal cmake mode

[Sep 19 2018]

  • CLEANUP: Allow strict aliasing

[Sep 10 2018]

  • CMAKE: Fixed font configuration

[Sep 8 2018]

  • CMAKE: Config for core library

[Aug 24 2018]

  • FIXED: Prolog navigator tracking for loading .QLF files.

[Jul 22 2018]

[Jul 21 2018]

  • FIXED: Make pce config load/save work if pce is not imported into the module user. This patch also fixes the encoding of the config file to be UTF-8, avoiding limitations and compatibility issues.

[Jul 2 2018]

  • PORT: Fixed a number of macro and typedef conflicts with the current MinGW project.
  • COMPAT: Sync stream definition with SWI-Prolog headers.

[May 13 2018]

  • ENHANCED: text_buffer<-scan_syntax to handle \ inside quoted strings.

[Apr 24 2018]

  • TEST: Avoid dependency on file_directory_name/2 deleting only trailing /
  • DEPLOY: Put all GUI tracer icons in resources such that the GUI tracer can be included as a program resource.

[Apr 21 2018]

  • CLEANUP: Avoid file search path hack

[Apr 22 2018]

  • TEST: Explicitly import xpce

[Apr 16 2018]

  • MODIFIED: Dropped introducing XPCE operators ?, @ and := at the global level by default. Synchronised the priority of := from 990 to 800 to sync with the dict declaration.

[Mar 23 2018]

  • DOC: Fixed two typo's.

[Mar 22 2018]

  • ADDED: PceEmacs: very simple YAML mode, forcing indentation using spaces as demanded by YAML.

[Mar 15 2018]

  • FIXED: Avoid giant exception terms overflowing X11 text drawing limits.

[Mar 3 2018]

  • ADDED: Map *.plt to Prolog mode and make default_emacs_mode/2 a multifile predicate.

[Jan 15 2018]

  • MODIFIED: If a callback from xpce to Prolog raises an error, this is printed. XPCE has no proper way to deal with such errors and leaving them around either causes them to be reported much later or being ignored and printed as a non-cleared exception.
  • FIXED: PceEmacs: avoid errors if a goal functor is not a proper atom.

Package zlib

[Dec 6 2018]

  • TEST: avoid using gzip/gunzip utilities during zlib test suite. Extend tests.

[Nov 18 2018]

  • CLEANUP: Remove autoconf/make build infra structure

[Oct 4 2018]

  • TEST: Allow test to run from another directory.

[Sep 22 2018]

  • BUILD: Support cmake

[Aug 20 2018]

  • FIXED: memory leak when gzip input consists of multiple parts.

[Feb 24 2018]

  • INSTALL: Fix location of installed HTML for PPA

[Jan 23 2018]

  • ENHANCED: More careful implementation of zcontrol