Ann: SWI-Prolog 7.1.11

Jan Wielemaker <[email protected]>
Newsgroups gmane.comp.ai.prolog.swi
Message-ID <[email protected]>
Hi,

I've uploaded SWI-Prolog 7.1.11. The bad news is that there is little
new. The good news is that appearently you all did a good deal of
hacking and reported many issues with or without fix :-)  Highlights:

   * print/1 has been modified as discussed, i.e., the default is
     now quoted write and there is a prolog flag to control print/1.
     The flags toplevel_print_options and debugger_print_options have
     been renamed to get more consistent naming.

   * Fixed several possible crashes and memory leaks (mostly Keri
     Harris).

   * Two fixes to the RDF store that can cause crashes.  Also updated
     ntriples parser for RDF 1.1.

   * Various fixes to the development environment, notable to the
     handling of name() and DCGs.

And a lot of small stuff. See below. Also cherry-picked many of these
patches to the stable git version. If nothing bad shows up with any of
these the next week, I'll release stable 6.6.5.

	Enjoy --- Jan


=========================================
SWI-Prolog Changelog since version 7.1.10
=========================================

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

  * ENHANCED: Avoid tracing into arithmetic expansion

  * MODIFIED: print/1 now used quoted output by default.  Its behaviour
    is now defined by the new Prolog flag =print_write_options=.

  * MODIFIED: Renamed flag =toplevel_print_options= into
    =answer_write_options=

  * MODIFIED: flag =debugger_print_options= is renamed into
    =debugger_write_options= for consistency with =print_write_options=.

  * CLEANUP: Use foreign_t rather than word for write predicate
    implementations.

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

  * FIXED: Development tools for handling name() at various places.

  * DOC: Added det, nondet, semidet and choice point to the glossary.

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

  * FIXED: check_installation/0 for library(pce).

  * 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: use of uninitialized memory in peek_string/3

  * FIXED: thread_create_in_pool/4: generate exception if new pool creation
    hook fails.

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

  * ADDED: hook thread_pool:create_pool/1 to allow for lazy creation of
thread pools.

  * FIXED: Illegal casts in C++ between pointers.  This patch complements
a patch to the cpp package.

  * ADDED: parse_time/3: support numeric RFC 1123 timezones RFC 1123
    section 5.2.14 says, "There is a strong trend towards the use of
    numeric timezone indicators, and implementations SHOULD use numeric
    timezones instead of timezone names."  Since the RFC recommends
    numeric timezone support, parse_time/3 ought to support them.

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

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

  * ENHANCED: safe_goal/1: Do not try to specify for a more specific goal
    if the generic goal is the same as the specific one.

  * 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 archive
===============

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

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

  * 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 cpp
===========

  * FIXED: Illegal cast of C++ pointers Hello SWI-Prolog developers,

    and thank you for your work!

    Here is a patch proposal about the CPP package that involves also
    modifications in src/SWI-Prolog.h (in a separate mail).

    8<--------------------------------------------------------------

    ISO-C++ forbids casting pointers-to-functions to pointers-to-objects.
    This patch fixes some casts that issue a warning in GCC.

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

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

  * DOC: Make library linkable.

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

  * FIXED: Conditionally load code that depends on is_dict/1

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

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

  * FIXED: possible crash when reading large strings from database


================
Package pengines
================

  * ENHANCED: Use lazy thread-pool creation provided by latest SWI-Prolog.

  * DELETED: pengine_assert/1 and friends

  * ADDED: plans

  * ADDED: list of remaining bugs

  * ADDED: pengine_assert/1 and friends

  * MODIFIED: current_pengine/4 -> current_pengine/5

  * CLEANUP: Some layout, white space errors and missing declarations
    for new arguments.


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

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

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

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

  * FIXED: rdf_load/2: Actually return the loaded graph when using
    graph(Var)

  * FIXED: rdf_load/2 must synchronize concurrent loads on the source
    rather than the graph to facilitate loading quad/trig files.

  * 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 ssl
===========

  * FIXED: memory leak when ssl_open/3 fails

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

  * BUILD: Avoid including packs in the app.

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

  * 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 :-(
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.