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