Ann: SWI-Prolog 6.6.5

Jan Wielemaker <[email protected]> Fri, 25 Apr 2014 17:01:16 +0200
Newsgroups gmane.comp.ai.prolog.swi
Message-ID <[email protected]>
Hi,

I have uploaded SWI-Prolog 6.6.5.  A lot of work is going on wrt.
stability and portability.  Thanks for the bug reports and patches.

There are a number of additional patches on the development branch
that address references to freed stream objects and enhancements to
graceful handling of (notably) global stack overflows.  I consider
these not well enough tested to include them in this version.

	Enjoy --- Jan


========================================
SWI-Prolog Changelog since version 6.6.4
========================================

  * FIXED: Prepare to update git submodules

  * GIT: Avoid directory names in git submodules to facilitate github

  * FIXED: Reading one byte after static array (innocent).

  * FIXED: possible signed overflow when creating stand-alone resource
    archives. Very unlikely to occur in practice

  * PORT: Avoid dependency on 8-byte atomic operations on 32-bit
    platforms. Allows compiling on ARMv6 (e.g., the Raspberry Pi)

  * FIXED: Use atomic instructions for managing the thread signal
    mask. Using a mutex (as it was) can lead to a deadlock if raiseSignal()
    is interrupted by a signal.

  * ADDED: thread_create/3: option inherit_from(+Thread) to define the
    thread from which all settings are copied.

  * FIXED: url_iri/2 in mode (-,+).  Wouter Beek.

  * FIXED: print_message/2: do not worry if =user_outout= does not exist
    (is flushed before writing to =user_error= to ensure proper ordering
    of buffered output).

  * ADDED: create_prolog_flag/3: option keep(true) to keep the flag at
    its current setting if it is already defined.

  * ENHANCED: Do not generate an error if the commandline history cannot
    be written.

  * FIXED: source location of syntax errors

  * FIXED: previous patch left is_resource_error() undefined

  * FIXED: Implement outOfStack() using more low level primitives, avoiding
    term references.  This saves stack space (which may be scarce) and
    avoids overwriting body terms written by ARGP, which may crash GC.

  * FIXED: library(prolog_colour): Deal with incomplete position
    information

  * SECURITY: Windows: update OpenSSL dependency to 1.0.1g.

  * PORT: Avoid looking for clock_gettime() on MinGW because we have our
    replacement and it clock_gettime(CLOCK_REALTIME) returns bogus on
    MinGW4.8 on Win32.

  * MINGW: Fixed detection of pthread_getw32threadhandle_np() vs
    pthread_gethandle()

  * CLEANUP: Avoid some benign type conversion warnings

  * PORT: Updated README.mingw to document compilation on Ubuntu
    14.04/MinGW 4.8

  * PORT: PL_atom_generator(): fixed thread-specific data handling (0 is
    a valid key).

  * MINGW: Make NSIS script deal with different thread models.

  * MINGW: Pass detected pthread library to Makefile and NSIS

  * MINGW: Deal with versions that needed pthread-win32 and recent versions
    that have that bundled.

  * MINGW: Do not install SSL documentation as the .pod file do not
    process in Ubuntu 14.04 and we do not need these for building.

  * PORT: Install proper support libraries

  * PORT: Allow using MinGW 4.8 default pthread emulation

  * PORT: Avoid undefined timespec_to_double()

  * PORT: Be prepared that dtoa and strtod are macros

  * PORT: Avoid dependency on ms_snprintf() in pl-stream.c

  * FIXED: library(prolog_stack): avoid error if source location is
    incomplete.

  * FIXED: library(prolog_colour) to color quasi quotations that produce
    a goal term.

  * FIXED: possible crash when reading very large multibyte characters

  * FIXED: possible crash when using excessively large character codes
    with atoms

  * ENHANCED: Make PL_chars_to_term() process a plain number by bypassing
    the while Prolog machinery.	This allows for (relatively) fast parsing
    of e.g. large integers.

  * FIXED: off-by-one error in signal handlers

  * ENHANCED: Avoid tracing into arithmetic expansion

  * FIXED: Possible non-termination in code walker due to incomplete
    source information.

  * FIXED: Feedback output of commandline tracer in Windows swipl-win.exe
    was broken.	Grishma Jena.

  * FIXED: prolog_trace_interception/4 on unify caused attribute wakeups
    not to be called.  Edison Mera.

  * FIXED: '$find_predicates/2' should not return system: for things
    imported from the library.

  * FIXED: Some enhancements to listing/1.  Notably make listing(module:_)
    list all predicates in module.  Jan Burse.

  * FIXED: Possible memory leak in sub_atom/5 and sub_string/5.
    Keri Harris.

  * FIXED: Also need to check we have a thread in the libunwind version.
    Keri Harris.

  * FIXED: Missing break; in ar_pow, leading to an assertion error.
    Markus Triska.

  * ENHANCED: CLP(FD): Stronger exponentiation.	Previously:

       %?- A^2 #= C, C in 253..257, A #> 0.
       %@ A in 15..16,
       %@ A^2#=C,
       %@ C in 253..256.

    Now:

       %?- A^2 #= C, C in 253..257, A #> 0.
       %@ A = 16,
       %@ C = 256.

  * FIXED: save_backtrace() if threads are not yet initialized.
Keri Harris.

  * FIXED: Integer size issues with creating saved states.  Roberto
Bagnara.

  * FIXED: Max stack-size warning for 64-bit platforms

  * FIXED: Possibly listing of predicates multiple times due to changed
semantics of list_to_set/2.

  * FIXED: Handling of {G} in //-annotated arguments.  Samer Abdallah



==============
Package debian
==============

  * FIXED: Debian/Ubuntu packages: install static library also in
    /usr/lib. With help from jon judge and Eugeniy Meshcheryakov.


===============
Package archive
===============

  * FIXED: Release archive stream when closing archive

  * FIXED: Avoid access to archive after closing

  * FIXED: archive_next_header/2: Raise a permission error if the
    previously opened entry has not been closed.

  * PORT: Omit filter property for older libarchive versions.
    Carlo Cappelli.

============
Package clib
============

  * FIXED: Bug#174: uri_encoded/3 should encode IRIs and %.  Raivo
    Laanemets.

  * FIXED: cgi_get_form/1 to use Prolog's parser for numbers.  This avoids
    locale issues and supports unbounded integers.

  * FIXED: possible off-by-one error when processing URIs

  * FIXED: possible hang when processing invalid query string

  * FIXED: Allow for tcp_bind(localhost:Port), i.e., bind to an interface,
    but leave the port to the system.

  * DOC: Updated tcp_bind/2 docs


============
Package http
============

  * ENHANCED: library(http/http_unix_daemon) to disable the IDE for
    messages.

  * MODIFIED: library(http/http_unix_daemon): By default, suppress all
    debug messages

  * FIXED: library(http/http_daemon): try to avoid starting the xpce
    event handling thread before forking.

  * ADDED: library(http/http_unix_daemon): options --help and --interactive

  * FIXED: library(http/http_header): bug where a second round of
    authentication fails.

  * TEST: Added test to verify that the server closes the connection if
    requested to by the client.

  * FIXED: Make sure http_server(http_dispatch, localhost:Port) is
    documented and works.

  * FIXED: Bug#172: connection(close) is ignored for requests that are
    handled through exceptions.  This results in waiting for the server
    keep-alive timeout for clients that assume that the server will close
    the connection.  Raivo Laanemets.

  * FIXED: Bug#170: http_open/3 with empty server response causes confusing
    error message.  Raivo Laanemets

  * FIXED: Bug#168: json_read/2 can fail on illegal input.  Should be
    det and throw an exception.  Raivo Laanemets.


===========
Package nlp
===========

  * FIXED: tokenize_atom/2 now uses PL_chars_to_term() to translate
      recognised numbers into Prolog integers.  This implies: - Numeric
      tokens are not locale sensitive - Integer tokens profit from
      unbounded arithmetic


============
Package odbc
============

  * FIXED: possible memory leak when reading large strings from database

  * FIXED: possible crash when reading large strings from database


==============
Package plunit
==============

  * ENHANCED: Avoid trapping the tracer on the test internals.

==============
Package semweb
==============

  * FIXED: Make erase_triple() thread-safe.  This is called concurrently
    when asserted triples are erased for discarding a transaction.

  * ENHANCED: Better message if the Turtle empty prefix is not defined.

  * FIXED: library(semweb/rdf_library) to find input that has a .gz
    (or other registered _storage extension_).  Chris Dijkshoorn, Jacco
    van Ossenbruggen.

  * FIXED: MD5 computation of qualified literals may crash.

  * FIXED: Attach to a read-only database is supposed to raise only
    a warning

  * FIXED: Include <stdio.h> to get swprintf().

  * FIXED: Use defferred finalization to get rid of predicate clouds.
    Fixes an early free when closing a query.

  * TEST: Start random tests from printed seed, so we can replay them.

  * TEST: Fixed replaying of failed rdfs:subPropertyOf sequences

  * FIXED: Literal reference count was 24 bits and not checked for
    overflow.  Now 32-bit with assert-based overflow checking.

  * FIXED: We must always lock queries.write.lock when removing a triple
    in GC, both to update the hash chains and to ensure consistent update
    of triple->linked.

  * FIXED: Use atomic inc/dec to make sure the count for the number of
    triples per graph is accurate.

  * ADDED: Media types for ntriples and nquads

  * OOPS: Revert "CLEANUP: library(rdf_ntriples): synchronise iriref
    reading" This reverts commit c58c0d2ff233e41e478dfbfe11365507ec221d9a.
    I mistakingly though that the iriref was synchronised between Turtle
    and ntriples.  This does not seem to be the case.

  * CLEANUP: library(rdf_ntriples): synchronise iriref reading

  * MODIFIED: library(rdf_ntriples): synced character classification
    with Turtle.  Effectively makes detection of language tags and blank
    nodes compatible with the RDF 1.1 spec.

============
Package sgml
============

  * ADDED: Warning when trying to use SYSTEM entities if this is not
    allowed.

  * FIXED: possible crash while reporting markup syntax errors

  * SECURITY: provide a max_memory/1 option to load_structure/3 to stop
    entity-expansion blowup

  * SECURITY: disable SYSTEM entity expansion by default

===========
Package ssl
===========

  * FIXED: Avoid reading past end-of-string for time conversion.

  * FIXED: Convert subject/issuer fields to UTF-8, so the appear as proper
    Unicode names in Prolog.

  * FIXED: memory leak when ssl_open/3 fails

=================
Package swipl-win
=================

  * BUILD: Avoid including packs in the app.

============
Package xpce
============

  * FIXED: X11: possible curruption of window administration.

  * FIXED: Wrong detection of changed device.  Performs read access to
    xpce Int array one past end of local array (this is innocent).

  * ENHANCED: Only set the message_ide flag if it was not set before.

  * ENHANCED: Be silent about errors saving PceEmacs bookmarks

  * FIXED: Handling of type 1.2..2.4 in locales that do not use . for
    decimal point.

  * ENHANCED: Avoid a non-terminating loop of errors if (some component
    of) xpce cannot be found.  It is very hard to recover cleanly from
    this condition, so we just terminate the process :-(