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 :-(