Ann: SWI-Prolog 6.4.0
Jan Wielemaker <[email protected]>
| Newsgroups | gmane.comp.ai.prolog.swi |
|---|---|
| Message-ID | <[email protected]> |
Hi,
I've uploaded SWI-Prolog 6.4.0. This version synchronizes the stable
version with the development version. There are a total of over 700
commits that were considered important enough to end up in the
ChangeLog. Highlights:
- Updated the RDF library to version 3. Anyone caring about RDF
was probably already using the development version for this
reason. Added fast parsers for ntriples, Turtle and TriG
formats.
- Introduction of quasi quotation. Discussed a lot on this list.
- Upgrade of PlDoc to accept the common markdown constructs.
- Many enhancements to the development tools, HTTP libraries,
clib package. etc. Better support for Unix daemon processes
(syslog, UID/GID management, etc.)
- A start for locale handling (supporting format/3)
- Lots of stability stuff: fixed crashes, portability patches,
build system enhancements, etc.
Thanks to the many people who made so much progress possible in the past
6 months. More is in the pipeline, notably a restyled website (Anne and
Jessica) and a new portable console (Carlo).
Enjoy --- Jan
P.s. Next development release will be 6.5.0
========================================
SWI-Prolog Changelog since version 6.2.6
========================================
* ADDED: '$atom_completions'/2 now handles all Unicode atoms.
* FIXED: Change character classification in PL_atom_generator() and
PL_atom_generator_w() to use the same classifier as read/1.
* CLEANUP: Comment the Prolog atom completion predicates in the C code
* CLEANUP: Use new interface for atom completion predicates
* MODIFIED: Only perform atom completion on referenced atoms. This
excludes temporary atoms that are subject to atom GC from the
completion list. Such atoms often produce many false hits. Atoms that
have references belong to some static datastructure and are thus more
likely sensible candidates for completion.
* ADDED: CVT_WRITEQ to convert terms into a quoted version
* ADDED: Install library(win_menu) on all platforms to support Carlo's
portable swipl-win.
* FIXED: select/4 and selectchk/4. Succeeded without replacing if the
element did not appear in the list.
* FIXED: Avoid executing :- initialization directives twice from .qlf
files. Paulo Moura. This is now avoided by making '$qlf_load'/2
only execute them for embedded files. The compiler toplevel executes
the initialization for the toplevel loaded file. This results in
compatible behaviour between loading .qlf and normal files.
* ENHANCED: library(prolog_colour): avoid duplicate colouring of option
lists and improve the performance.
TBD: The only exception is :- [List]. This is needs some more
fundamental fixes.
* ADDED: More details in colour output to make it easier to synchronise
token streams.
* ADDED: library(prolog_colour) to emit an item for the fullstop.
* DOC: Format/writef updates
* FIXED: Initialization of the argument stack. May cause crashes on
very deeply nested terms. Daniel Diaz.
* CLEANUP: use GCC's __attribute__((warn_unused_result)) for
PL_get_string_chars()
* ADDED: Support for demand loading quasi quotations for
cross-referencing and coloring.
* FIXED: Sandbox handling for quasi quotations (calling wrong module)
* ADDED: predicate_property/2: property quasi_quotation_syntax
* BUILD: Use $(MAKE) -C instead of (cd && $(MAKE) to make sure we
propagate the exit status properly.
* PORT: Also include <fcntl.h> to get the FD_CLOEXEC flag on SunOS.
* CLEANUP: Unused function if O_DEBUG is not active.
* PORT: Avoid wcsdup() on SunOS due to missing prototype
* PORT: Avoid including <math.h> before pl-incl.h because this results in
inconsistent settings for _FILE_OFFSET_BITS on SunOS (and maybe others).
* PORT: Terrible hack to work around SunOS 5.11/gcc signbit issues.
* FIXED: Type error when dumping a debugging stacktrace.
* BUILD: Use $(MAKE) rather than make.
* PORT: Get rid of our own abs() macro in favor of C99 functions.
* BUILD: parse build log for GCC warnings that may indicate runtime
failures
* FIXED: Possibility that the claim "Therefore we keep signalling every
128 new atoms. Sooner or later some actually active thread will pick up
the request and process it." in pl-atom.c is never true. Wouter Beek.
Relaxed a test a bit because the current algorithm only guarantees
an atom GC between margin and margin+128.
* FIXED: possible assertion failure after trail stack shift in
prolog_frame_attribute/3
* PORT: MacOS: Dropped -no-cpp-precomp from compiler flags. Doesn't seem
to be supported for quite some gcc versions now.
* ENHANCED: ^C+abort when reading from the Windows console. Still not
perfect. Requires user to type return before the abort happens.
* FIXED: race condition when defining a predicate through
autoImport(). Keri Harris.
* FIXED: Added mutex L_MUTEX to control registration of mutexes.
This avoids an inconsistent locking order between declareModule()
and unloadFile().
* FIXED: Coloring and menu handling of locally defined meta-calls.
* DOC: Section id
* ENHANCED: enable MININT (-9223372036854775808) to be read as an
integer with bounded arithmetic
* CLEANUP: Make HTML5 compliant
* FIXED: man/libtotex.pl fixed for generating docs for pre-loaded files.
* CLEANUP: Avoid dependency on library(lists).
* FIXED: Force loading of the library to document, so we know we have
the docs.
* DOC: Work in progress to label all sections for providing more static
and friendly URLs
* FIXED: git_is_directory/1 was not semidet.
* FIXED: library(prolog_colour) to colourise into arbitrary {}
terms. Alan Baljeu.
* ENHANCED: Fixed scanning for undefined predicates if code
transformation cause there to be more arguments in compiled version
than in the source version. Keri Harris.
* FIXED: stream_property/2: stream position of files with a BOM must
include the BOM to make seeking work properly. Matt Lilley.
* FIXED: Push a GMP number on the stack that is already on the
stack. If storing the GMP number requires a GC, the original number
is moved. We now simply share the number, saving a bit of space at
the same time. Paul Tarau.
* PORT: Add /opt/X11/include to CPATH on MacOS. This seems to be where
XQuartz is putting its headers now.
* FIXED: in predicate walk_called/4 8-th clause, variable Module is in
fact M.
* FIXED: prolog_cut_to/1: safe check for validity of choicepoint.
Edison Mera.
* FIXED: In prolog_clause:ubody, going into module only if it is
instantiated. Code-walking the following code will cause an infine
loop:
==
:- module(bug1, [p/1]). :- meta_predicate p(:).
p(M:Call) :- (true ->M:Call;q(M:Call)).
:- meta_predicate q(0).
q(_).
==
* DOC: Comment processing (Richard O'Keefe)
* MODIFIED: Deleted preprocessor/2 after discussion on the
mailinglist. Code relying on this (we hope none) can use the hook
user:prolog_load_file/2 to achieve the same result.
* MODIFIED: lirary(sanbox) interface to throw errors rather than
silently fail.
* ADDED: prolog:sandbox_allowed_expansion/1 hook
* ADDED: prolog:sandbox_allowed_directive/1 to allow tools to validate
during loading.
* ADDED: Flag sandboxed_load, providing hooks for safe loading of
Prolog files.
* DOC: Documented quasi_quotations option of read_term/2
* FIXED: Avoid unknown quasi quotation syntax error when asking for
the quotations.
* MODIFIED: Replaced '$apropos_match'/2 with sub_atom_icasechk/3.
* ADDED: library(sandbox), providing safe_code/1. Copied from
SWAPP. Integrated DCG expansion from library(apply_macros).
* FIXED: Reading e.g., 8'19. Matt Lilley.
* DOC: Add include for library(persistency). Boris Vassilev.
* DOC: Document error.
* FIXED: set Windows ANSI stream error message with SIO_LASTERROR
* FIXED: Quasi quotation examples
* FIXED: raw_read has to watch out for [0'||X], which does *not* start
a quasi quotation.
* MODIFIED: Quasi quotations: use double ||
* MODIFIED: Quasi quotation syntax from <![Syntax[Quotation]]> into
{|Syntax|Quotation|}.
* ADDED: xdg-open (see freedesktop.org) for www_browser.pl. This is
needed for lightweight browsers such as links, when used in a non
graphical environment (i.e. gnome-open is not working)
* PPA: Generating ppa from release tags
* DOC: Remove example. We now point to library(http/html_quasiquoting).
* ADDED: thread_has_console/0, avoiding the need to call a private
predicate from the GUI tracer.
* DOC: Type in quasi quotations docs. Markus Triska.
* ENHANCED: nb_current/2 in mode (+,-): faster and semidet.
* MODIFIED: Now raises a type error if the first argument is neither
an atom nor a variable.
* ADDED: lazy_list_character_count//1 to find only the character count
(but a lot quicker)
* FIXED: library(prolog_colour): proper processing of // meta-arguments.
* FIXED: Change built-in declarations of phrase/2,3 to use // annotation.
* MODIFIED: Added type-check to csv_write_stream/3.
* FIXED: Processing of | in DCG bodies for the code walker and
cross-referencer
* ADDED: Processing of // tagged meta-arguments in library(prolog_xref).
* FIXED: library(prolog_colour) to deal with |/2 in grammar rules.
* MODIFIED: By default set the Prolog flag `quasi_quotations` to
`true`. Setting this to false only makes sense for compatibility
checking. In itself this is fine, but switching this flag while
loading the library causes the calling thread to switch, but other
threads remain unaware of this.
* FIXED: initialization's notion of source file. Paulo Moura.
* INSTALL: unset CDPATH in prepare. Cause printing of paths and may
jump to unexpected directories if there are errors in the script.
* ADDED: library(pure_input): lazy_list_location//1 and syntax_error//1.
* CLEANUP: Comments and style
* DOC: Relate block operators with quasi quotations.
* ADDED: Quasi quotations. Based on Haskell, these provide a clean
way to embed external languages using their nativ concrete syntax in
Prolog source. In addition, they provide a mechanism for long atoms.
* ENHANCED: Somewhat simpler implementation of Speekcode()
* ADDED: prolog_var_name//1 to library(dcg/basics).
* ENHANCED: Allow using Sopenmem() in read-mode without keeping the
pointer around.
* ADDED: code_type/2 and char_type/2 support to detect Prolog atoms
and variable names conform the underlying Prolog system.
* SOURCE: Add missing tipc generated files. Eugeniy Meshcheryakov.
* PPA: We need a version that depends on the series for ppa
* FIXED: open(pipe(Command), Mode, Stream) did not enable keeping track
of stream positions.
* PPA: Cannot both build the binary package push the sources
* FIXED: rationalize() function on 32-bit platforms. Keri Harris.
* BUILD: Avoid prepare from entering the debian tmp build dir
* DOC: Documented block operator syntax extension.
* ADDED: Allow empty argument lists if () is defined as a postfix
operator.
* FIXED: scripts/make-src-tape for git version 1.8.
* INSTALL: Added many options to make-src-tape and use this for make-ppa.
* ADDED: scripts/make-ppa to create Debian source package and send it
to the Launchpad build server (untested)
* FIXED: atom_number(+UnicodeAtom, -Number) should fail silently instead
of raising an error. Michael Hendricks.
* TEST: Added test for rationalize(5.1), which should return 51 rdiv
10, but fails on 32-bit Windows, most likely due to a bug in MinGW32
(GCC 4.6.3). The following test program reproduces this:
int
main(int argc, char **argv)
{ double f = 5.1; double e0 = f, p0 = 0.0, q0 = 1.0; double e1 =
-1.0, p1 = 1.0, q1 = 0.0;
do
{ double r = floor(e0/e1); double e00 = e0, p00 = p0, q00 = q0;
e0 = e1;
p0 = p1;
q0 = q1;
e1 = e00 - r*e1;
p1 = p00 - r*p1;
q1 = q00 - r*q1;
// printf("p1/q1=%f/%f, eq=%d\n", p1, q1, p1/q1 == f); } while(p1/q1
!= f);
printf("p1/q1=%f/%f\n", p1, q1);
return 0; }
* FIXED: Make silent(true) option also silent on missing files.
* ADDED: Syntax colouring for DCG `right-hand-context'.
* DOC: write_term/3 =variable_names= option is Name=Var rather than
Var=Name. Ulrich Neumerkel.
* FIXED: Avoid undoing on an invalid choicepoint if a trail
stack-shift/GC happens inside a cleanup handler. Keri Harris.
* CLEANUP: Pass reason explicitly through dbg_discardChoicesAfter()
* FIXED: Avoid exception when print a location message for a closed
stream.
* FIXED: Test for assoc needs to get rid of duplicates.
* FIXED: Bug#89: term factorization can crash due to insuffiently
reserved stack. René Kijewski.
* MODIFIED: strict input validation to list_to_assoc/2 and
ord_list_to_assoc/2: lists with duplicate pairs or list with unordered
pairs (ord_list_to_assoc/2) result in a domain error exception.
The old version silently kept only the latest value associated to a
key. This implementation exploits ord_list_to_assoc/2 after keysort/2
for list_to_assoc/2 providing significantly better performance and
producing less garbage.
Patch by Boris Vassilev.
* FIXED: Do not resolve non-ISO built-ins to their built-in definition
because they may be redefined. Antoniotti Marco.
* FIXED: return exception if a clause reference cannot be decompiled
* FIXED: warn if a nondet foreign predicate returns an exception without
calling PL_clear_exception()
* ADDED: ord_list_to_assoc/2 implementation that takes advantage of
list order
* FIXED: Detect not-callable goals (more precise colouring, avoid
exception) Carlo Capelli.
* ADDED: Deal with @param->@arg renaming
* DOC: Avoid markdown PlDoc issues
* ADDED: git_branches/2 to enumerate branches in a repository.
* ENHANCED: Select download URL and be aware of GIT installations.
* ADDED: is_git_directory/1 to test whether a directory is a git
repository.
* ENHANCED: pack_install/1 using a pack name could fail without
information.
* PACK: Added check to verify that a pack is named [a-zA-Z0-9_]*
* ADDED: Register packs that are installed through a git URL with the
pack server.
* ADDED: git_ls_tree/2 and git_hash/2
* ENHANCED: More informative exceptions from
absolute_file_name/3. Notably raise a permission_error when applicable
and add a comment if the target is of the wrong type (directory/file).
* MODIFIED: The -f <file> is now loaded *after* attaching extension
packs to the library.
* FIXED: Remove =flush= in message_to_string/2.
* ADDED: Allow prolog_read_source_term/4 processing all normal read_term
options.
* FIXED: predicate_options for prolog_walk_code/1.
* FIXED: Avoid overflow in div evaluation.
* REVERT: Revert fix 3510c0a560e48d19adfcc673c4b78ed8633acf40 because
there is a better one.
* FIXED: function div/2: A is -9223372036854775808 div 4294967297.
Roberto Bagnara.
* CLEANUP: confusion between (//)/2 and div/2
* FIXED: git_tags_on_branch/3, interpretation of commits that both have
tags and match branch heads.
* CLEANUP: Use '$type_error'/2.
* ENHANCED: Avoid is_stream/1 to block if the stream is locked by
another thread.
* FIXED: PL_cons_* family of functions failed silently on resource
errors. Now returns FALSE after raising an exception.
* MODIFIED: Make PL_put_nil() return int (always TRUE), so we can use
it in conjunctions.
* ADDED: pushing the hprolog library in front of the native library
* COMPAT: Started hProlog dialect library directory.
* COMPAT: Added time/3 to library(dialect/hprolog).
* FIXED: avoid a (possible) fatal stack overflow exception if read_term()
fails
* ENHANCED: enable/disable dubious data-integrity checks via CHK_
Prolog debug flags
* ADDED: $thread_local_clause_count/3
* ENHANCED: Handle installations if the package source has changed.
* FIXED: plus/3 did not consider attributes variables as a variable.
Michael Hendricks.
* DOC: Edit doc files (notably top level).
* ENHANCED: is/2 is faster than succ/2 these days. Ulrich Neumerkel.
* ENHANCED: pack_list/1 shows relation of local version to installed.
Nicos.
* FIXED: Bug#78: statistics/0 prints to user_error instead of user
output.
* FIXED: memory corruption in '$qlf_info'/5
* FIXED: Push/pop the input context in read_term_from_chars/3.
Michael Hendricks.
* ADDED: Support module/3 for cross-referencing and colouring
* DOC: Use_module/3
* ADDED: Opening a module using module/3
* FIXED: Avoid write to deallocated local data when canceling a
thread. Note that thread cancellation only happens as shutdown of the
program.
* ENHANCED: Handle \\\r\n the same as \\\n to deal with `partial DOS
files': files that are not recognised at open time as using \r\n newline
handling because at the opening they only use \n, but use \r\n in other
parts of the file. Such files are not uncommon when files are migrated
several times between Windows and Unix and edited using tools that do
not support dynamic and adaptive newline handling.
* MANTENANCE: Use hashes rather than dates to get changelog for modules.
* FIXED: PL_write_term() to Serror in swipl-win.exe
* DOC: Corrected some issues in the ** and ^ documentation. Ulrich
Neumerkel.
* FIXED: git_tags_on_branch/3: wrong argument order.
* MAINTENANCE: Added end-version for scripts/mkchangelog
* MAINTENANCE: Added --wiki option to scripts/mkchangelog
* FIXED: Save/restore input contex when running initialization
directives.
* FIXED: Added missing predicate-options passing to read_file_to_terms/3.
* DOC: Document issues around ** and ^ functions
* ENHANCED: Windows: bind message box to the console window if possible.
* ENHANCED: Show exit status before destroying the console window
* ADDED: PL_current_prolog_flag() to query Prolog flags from C
* CLEANUP: Do not put Windows specific code into the boot state on
non-windows systems.
* ENHANCED: ansi_format/3: flush output to avoid mixing with error
messages and typecheck the SGR code.
* FIXED: ansi_format/3 with an empty argument list
* ENHANCED: Yet a faster implementation of list_to_set/2 by Ulrich
Neumerkel.
* ENHANCED: Typecheck option values in absolute_file_name/3.
Nicos Angelopoulos.
* FIXED: Another list_to_set/2 missing !. Ulrich Neumerkel.
* FIXED: Non-determinism in list_to_set/2.
* MAINTENANCE: Additional messages trying to find failed stack
expansions.
* DOC: Document policy wrt arithmetic functions
* ADDED: Functions Gaussian lgamma, erf and erfc. Compatibility with
YAP.
* DOC: Fix LaTeX syntax
* ENHANCED: Implemented prolog_clause:unify_goal/5 to deal with the
source transformation of maplist/2- in library(apply_macros).
* ADDED: New hook prolog_clause:unify_goal/5 to support the source
debugger for complex source mappings.
* ADDED: Maintain and allow inspecting the options that were used for
cross-referencing a specific source, such that we know what information
is in the xref database.
* FIXED: Option comments(How) for xref_source/2. Using =store= was
passed incorrectly and using =collect= was processed incorrectly if the
first comment was not a structured comment.
* MODIFIED: list_to_set/2 now compares elements using ==/2 instead of
=/2. The new implementation has complexity N*log(N) rather then N**2.
* FIXED: Add proper meta-predicate declarations for library(broadcast)
Also rely of automatic goal expansion that results from this.
* BUILD: Allow running build scripts more nicely from both the top-dir
as the one above
* FIXED: DEBUG() in pl-index.c message didn't compile
* DEBUG: Classified debug topics in pl-wic.c
* CLEANUP: Various issues in the Makefile, introducing .PHONY targets.
Done searching why the Windows build often ends with this:
==
rm -f swipl.prc
./swipl.sh -O -o swipl.prc -b ../boot/init.pl
./swipl.sh -x swipl.prc \ -f none -F none \ -g
make_library_index\(\'../library\'\) \ -t halt
[PROLOG SYSTEM ERROR: Thread 1 trapUndefined(): undefined:
system:$find_library/5
PROLOG STACK:
==
But, although this only seems to happen with parallel builds, it
doesn't seem to be a concurrency issue. The first call does create
swipl.prc, but it prints no messages and the state only contains
init.pl, not the other boot files.
* DOC: File name handling.
* ENHANCED: type-check on argument of pack_install/1.
* DOC: predicare --> predicate. Ulrich Neumerkel.
* DOC: establish spelling conformity. Randall Sharp.
* FIXED: Crash in INT64_MIN mod -1 and INT64_MIN rem -1. Roberto
Bagnara.
* FIXED: Handling module-qualified operators in xref and colour handling.
* FIXED: library(prolog_xref): several bugs in handling :- reexport
* DOC: Typo
* FIXED: library(ansi_term): fanktur --> fraktur. Wouter Beek.
* FIXED: Colouring use_module/2 goal was not silent
* ADDED: Improved support for Ciao dialect: - Added some missing
predicates to allow compatibility.
- Added renamings for equivalent SWI-Prolog predicates.
- Updated libraries to deal with the latest version (at this moment,
Ciao-1.14.2-13646).
- Added support for package/1, use_package/1, add_sentence_trans/2
and add_goal_trans/2 declarations, that allows to work Ciao Prolog
programs in SWI that uses syntactic expansions.
- Corrected execution of meta predicates: In Ciao the order of
arguments is different, for example, call(p(a,b),c,d,e) is equivalent
to p(c,a,b,d,e).
- Converted Ciao to SWI Alias Paths, for example, library(a(b(c)))
is translated to library(a/b/c).
* FIXED: undefined reference to collect/3.
* DOC: list_undefined/1 option documentation was incorrect.
* DOC: Remove outdated html files from man/Manual
* DOC: Ensure there are no leftovers from previous manual builds.
Nicos Angelopoulos.
* FIXED: throw resource exception if tight stacks cannot be
increased. Before, the system could be trapped in a tight
non-terminating loop.
* MODIFIED: Make source_file/1 sensitive to the access_level flag,
reporting all files if current_prolog_flag(access_level, system)
is true. Guenter Kniesel.
* ADDED: surface type-check in get_assoc/3 to validate that the 2nd
argument is an assoc. This mistake happened a few times too
often ...
* DOC: Updated documentation of ! (cut). Richard O'keefe pointed at
the outdated state.
* FIXED: return possible resource error to Prolog in term_to_atom(+, -)
* FIXED: read_clause/3 could be using the wrong module.
* ADDED: xref_source/2: option comment(How) to determine how the
cross-referencer deals with comments. Allows to store them with
the predicates, with the cross-referencer or ignore them completely.
* ADDED: Option comments(-Comments) to read_clause/3.
* PORT: Systems lacking wcsdup(). Michael Hendricks.
* ENHANCED: library(ugraphs) transpose/2 is a lot more efficient if we
simply take the vertices and edges, swap the edges and compure a
new ugraph. (N^2) --> N*log(N).
* FIXED: Clear exception in close(S, [force(true)]).
* CLEANUP: Use PL_clear_exception() instead of local assignments.
* DEBUG: Better error if exceptions are still pending
* FIXED: Save printing in PL_clear_foreign_exception()
* DOC: PlDoc comment to transpose/2
* PORT: set foreign file_search_path to bin directory on Windows
* ENHANCED: Add a warning if a foreign predicate returns with success
after an exception without calling PL_clear_exception().
* PORT: Detect localeconv() in configure and provide a work-around if
this function is not provided.
* DOC: Documented locale interface.
* ADDED: locale_destroy/1 and fixed specifying grouping
* ADDED: current_locale/1
* ADDED: set_locale/1
* FIXED: Various implementation details for numeric locale handling
in format/3
* ADDED: open/4: option locale(Locale)
* ADDED: format/3: implement ~:f
* ADDED: format/3: Introduce colon modifiers.
* FIXED: Trap overflow errors in format/3 from mpz_get_str();
* ADDED: Read support for grouped (large) integers.
* FIXED: format/3: formatting -9223372036854775808
* ADDED: format/3: ~I specifier
* ADDED: Definition and basic administration for locale support.
* ENHANCED: Declare goals that are called cross-module from
goal-expansion as public.
* ENHANCED: Fake call to make dependency clear
* FIXED: library(prolog_xref): Various aspects to meta-predicate
handling: - Bug in xref_public_list/3 after introducing options -
Relate imported and local meta-predicate declarations to the context
- First try context-specific meta-predicate declarations - Create
(context-specific) meta-declarations for use_module/2.
Still lots to wish for in this area, notably the interaction with meta
predicate declarations.
* FIXED: Undefined predicate in re-export handling in
library(prolog_xref).
* DOC: Ambiguity.
* FIXED: Save/restore input context with prolog_open_source/2 and
prolog_close_source/1. Fixes error locations and avoids parser errors
in the cross-referencer for the term following a :- use_module/1
directive that exports operators.
* DOC: Comment edges/2 from library(ugraph).
* FIXED: xref_source_file/4 to fail, even if silent is true (error
handling new option).
* DOC: Error in example for csv_write_stream/3. Valentina Maccatrozzo.
* FIXED: add assertion condition for int64 opcodes with multiple
arguments
* FIXED: Error in previous commit. Edison Mera.
* FIXED: Always quote atoms holding ` if backquoted_string flag is
set. Edison Mera.
* FIXED: Further enhancements handling the new silent option in xref.
* FIXED: Possible race when marking active procedures. May lead
to an assertion error when reconsulting files in multi-threaded
context. Note: does not apply to Windows because the reloading
thread does the marking synchronously for all other Prolog threads.
* FIXED: Silence prolog_colour.pl after changing verbosity interface
for xref_source/2. Added xref_public_list/3.
* ADDED: Introduced xref_source/2 to control xref properties using
options.
* FIXED: Use thread_message_hook/3 instead of message_hook/3 for hiding
xref messages.
* ENHANCED: Do not complain when library(prolog_pack) is called without
library(archive) available. Only complain if we try to access
functionality that depends on this library, such as installing
packages from an archive.
* DOC: Documented issues around callable/1
* REVERT: "MODIFIED: callable/1 is now module aware. This implies that
e.g.," This change doesn't seem to hold :-(
This reverts commit 463304cfe60f3935fc59b1028df512b668810dce.
* FIXED: Set inheritance on new streams in windows to false by default
* FIXED: Possible crash after running out-of-stack in sub_atom/5 in
non-det mode.
* FIXED: The flag colon_sets_calling_context was rw instead of ro.
* PORT: Try to work around a bug in Wine that may not create the startup
file the first time.
* ADDED: concurrent_maplist/2-4. This interface is often more convenient
than concurrent/3.
* ADDED: PL_check_data() as a public version of checkData()
* ADDED: Hyperbolic functions. These functions are part of YAP and C99.
* FIXED: The Prolog flag cpu_count must be rw (was ro in non-Windows).
* ENHANCED: serialize messages from multiple threads. This patch
generalises a similar patch to library(debug).
* MAINTENANCE: Verify we are running under valgrind using
valgrind/valgrind.h
* BUILD: Indicate MinGW cross-compiling in prompt after sourcing
README.mingw
* FIXED: Define _REENTrANT if threads are supported
* ENHANCED: Avoid that debug/3 messages from multiple threads get
mixed up.
* MODIFIED: Changed option module_class/1 of prolog_codewalk.pl to use
list of module classes, which is more handy. Changed default option by
[user,library].
* ENHANCED: Disable debugging inside library(error).
* FIXED: Item#661: wrong order of name and variable in new variable_names
option. Ulruich Neumerkel.
* ADDED: Option variable_names([Var=Name, ...]) to write_term/3.
* ISO: length/2. Still raises an error if the first argument is neither
a list, nor a partial list. Fails on length(L,L).
* ADDED: Scurrent_input and Scurrent_output to SWI-Prolog.h
* ADDED: win_add_dll_directory/2 and win_remove_dll_direcotory/1.
* FIXED: Oops, d3c2f4908b6fc280017935988c8a29a9536f1f73 was pretty
broken. Abramo Bagnara.
* FIXED: Crash in term_hash/2 when running out of memory. Should now
nicely return with a Prolog resource exception. Roberto Bagnara.
* FIXED: possible assertion failure when accessing a handle for a stream
being closed
===========
Package PDT
===========
* DOC: Added section ids
=========
Package R
=========
* DOC: Fix some PlDoc comments.
===========
Package RDF
===========
* DOC: Add section identifiers
* FIXED: Reference triple reader: handling of %<non-D><non-D>
* MODIFIED: Read resources without applying %-normalization
* MODIFIED: Write resources without applying %-encoding.
* FIXED: rdf_load/2: Using both =graph= and =base_uri= options causes
the data to end up in a graph named after the =base_uri= option.
Wouter Beek.
* MODIFIED: Module name of library(rdf_ntriples). This version will
be replaced by library(semweb/rdf_ntriples) shortly.
===============
Package archive
===============
* DOC: Provided section identifiers
* ADDED: Support SIO_GETSIZE (allows getting the size of an archive
member through an open stream to a member)
* FIXED: Possible crash if archive entry is opened and there is no
reference to the archive's symbol.
* ADDED: Allow closing an open archive with an open stream to an
entry. The archive will be closed when the entry is closed.
* ADDED: archive_header_property/2: link_target. Also fixed enumerating
properties.
============
Package clib
============
* PORT: MinGW provides working strtoll
* FIXED: Ensure proper inheritance of file descriptors when using
concurrent process_create/3. Jacco van Ossenbruggen.
* CLEANUP: Make sure we catch EINTR when calling close() in
process_create/3
* FIXED: process_create/3 may close wrong stream in case of errors.
* PORT: create_process/3 check relied on non-portable behaviour of tr(1)
* PORT: Include signal.h to get the prototype for kill()
* PORT: wait/2: Avoid type error for pid_t
* PORT: Deal with missing constants in SunOS 5.11.
* DOC: Added section identifiers
* ADDED: behavior to wait/2 to permit waiting on a specific child.
This patch also fixes handling of EINTR
* DOC: size_memory_file/3 was labelled size_memory_file/2
* FIXED: process_create/3: raise process error on close() if a the
processes exitted with an error. Roberto Bagnara. E.g.: == ?-
process_create('/bin/ls', ['qqqaazq'], [stderr(pipe(X))]),
copy_stream_data(X, current_output),
close(X).
/bin/ls: cannot access qqqaazq: No such file or directory
ERROR: Process "/bin/ls": exit status: 2
ERROR: In:
ERROR: [7] close(<stream>(0x16bf870))
==
* FIXED: Proper handling of resource errors in process_create/3.
* FIXED: Proper error message when using an instantiated argument for
Stream in the Std(pipe(Stream)) option of create_process/3. Roberto
Bagnara.
* CLEANUP: Replace local domain_error() with PL_domain_error()
* CLEANUP: Replace local type_error() with PL_type_error()
* FIXED: wrong call to PL_domain_error(). Introduced by Jan Wielemaker
while amending Jeff's patch to add the priority option.
* ADDED: priority option to process_create/3 to allow parent to set
the newly-created processes priority.
* ADDED: iri_normalized/3, similar to uri_normalized/3
* ADDED: iri_normalized/2, bypassing URI %-unescaping
* ENHANCED: There is no problem getting the atom from a memory file if
this file is open for reading.
* DOC: Documented encoding option in sha_hash/3 in PlDoc.
* ENHANCED: Interaction between print_message/2 and library(syslog).
* MODIFIED: fork/1 - Raise a resource_error instead of failing with a
message if the
process cannot be forked. - Raise a permission_error if the process
has other threads. - Added fork_exec/1 to avoid the above test and
make the child
exec() immedately.
* ADDED: tcp_setopt/2: bindtodevice(Device) option to bind a socket to
a device.
* ADDED: Provide integration of library(syslog) with print_message/2
and friends.
* FIXED: openlog() seems to use the passed string rather than a copy.
* FIXED: openlog/3 option processing (copy/paste error)
* FIXED: set_user_and_group/1,2. Failed to set group due to wrong call
and wrong order.
* ADDED: library(syslog), providing access to the Unix syslog facilities
* FIXED: current_prolog_flag(pid, P) after fork/1 in child.
Paul Singleton.
* ADDED: detach_IO/1, allowing to define the destination of debug output.
This patch also moves the documentation of library(unix) from LaTeX
to PlDoc in the source file.
* MODIFIED: Only close streams in detach_IO/0 if they are attached to a
terminal. This allows for e.g. == swipl -s server.pl 2>error.log ==
* FIXED: There is no need to close user_* streams; only the primiary
process streams need to be closed.
* FIXED: some missing breaks found by static code check in eclipse
CDT. All related to error handling, often returning the wrong error.
* ADDED: tcp_open_socket/2 and tcp_connect/3 to exploit stream pairs.
* DOC: Enhanced documentation of tcp_open_socket/3 and server example.
* ADDED: Predicate option declaration for process_create/3.
* ADDED: file_sha1/2 to library(sha).
===========
Package cpp
===========
* MODIFIED: Term --> char * now uses quoted write for non-atomic data.
* ADDED: MSVC hacks to avoid warning. Uwe Lesta.
* FIXED: Memory corruption in PlError:PlError(const char *msg).
Uwe Lesta.
* DOC: Added section identifiers
==========
Package db
==========
* DOC: Added section identifiers
============
Package http
============
* ENHANCED: html_receive//1 and html_post//1: allow mailboxes to post
to each other as long as there is no cyclic dependency.
* CLEANUP: Remove unused dependencies
* ENHANCED: Error checking in html/4 quasi quoter to trap errornous
calls.
* FIXED: html_requires//1: Update case on each file load instead of
only on make/0.
* FIXED: Include Prolog variable replacement for non-CDATA attribute
values.
* FIXED: Disambiguating JSON->Prolog translation.
* MODIFIED: Make json_to_prolog/2 ignore fields in the json that are
not specified in the json_object/1 declaration. If multiple rules
now apply, the one producing the Prolog term with the highest arity
is selected.
* ADDED: library(http/json_convert) - disjunction of types using
(TypeA|TypeB) - null `type' to demand the key is not present -
Handle specified defaults as optional fields in the JSON input.
* FIXED: library(http/json_convert): properly handle types such as
list(atom).
* DOC: Old style quasi quotations
* DOC: Enhanced documentation of aggregate option. Anne Ogborn.
* ADDED: html_resource/2: mime_type(MimeType) option to the resource.
* DOC: Added section id.
* DOC: Section id conflict
* DOC: Provide section identifiers
* MODIFIED: Support HTML5 conventions for generating pages. This is
now the default. In particular, this implies that the default
doctype is <!DOCTYPE html>
* ADDED: html_resource/2 declaration: option ordered(true) to state
that the requirements must be kept in the given order.
* ADDED: Include virtual resources into the ordering.
* ADDED: Message for failure to include an HTML resource due to
invalid type.
* ADDED: library(http_load) as advertised in some places.
* ADDED: HTML quasi quotations
* ADDED: Quasi quotation for JavaScript.
* ADDED: js_script//1 to create a JavaScript script element. Reduces
typing and can be used to validate the script.
* CLEANUP: library(http/js_write)
* TEST: Do not run tests that access the public network if the
environment variable USE_PUBLIC_NETWORK_TESTS is set to false.
* CLEANUP: Comments, layout, move multifile declarations to the head
* FIXED: PceEmacs: Colouring of \List inside html//1.
* ADDED: Allow @(Atom) for arbitrary symbols instead of only for @true,
@false and @null.
* ENHANCED: Preserve order in multiple =Accept= specifications that
have the same =q=.
* ADDED: Handle the CGI-specific headers =Location= and =Status=.
* FIXED: http_open/3: Our value for the =UserAgent= field was
invalid. Jacoo van Ossenbruggen.
* ADDED: library(http/ax) to deal with attribute exchange requests
* ADDED: Interface library(http/http_openid) with library(http/ax).
* FIXED: Provide openid.ns when redirecting
* ADDED: openid_associate/4 that allows specifying association details.
* ADDED: OpenID 2.0 Yadis discovery
* ADDED: Implement check_authentication verification.
* ADDED: library(http/yadis), providing Yadis discovery (mostly to
support OpenID 2.0).
* ADDED: Reply to Yadis "Discovering OpenID Relying Parties" requests.
* CLEANUP: Enhance comments in library(http/http_openid) and use
http_link_to_id/3.
* ADDED: Support that allows hooking persistent logins on top of the
OpenID login system.
* ADDED: http_session_option/1 to get info about the current state
of the session manager and http_session_cookie/1 to expose the
behaviour of generating a random session cookie.
* ADDED: http_peer/2 to compute the (initial) peer from the HTTP data.
* ADDED: Option to stay logged on
* FIXED: http_in_session/1 could succeed with unbound session id.
* ADDED: Allow for per-session modication of the timeout.
* ENHANCED: Add placeholder text for OpenID login
* ENHANCED: Do a final redirect to get rid of the OpenID attributes
* FIXED: More fixes for timeout handling of OpenID authorized sessions.
* FIXED: Re-login using OpenID if the session has timed out
* FIXED: http_in_session/1 loops if session is expired. Bug introduced
in 6824d3c73e2992d32b70ccc4cd72611c28cad546.
* MODIFIED: Lowered priority of OpenID login handler. This makes
redefining the handler more natural and is consistent with
similar cases.
* FIXED: Open a session, such that OpenID authentication also works if
session management is disabled.
* FIXED: http_in_session/1 if the session is opened using
http_open_session/2 and automatic session management is disabled.
* CLEANUP: Better disagnostics in library(http/http_openid).
* ADDED: Support to login with OpenID servers that use https.
* FIXED: Key-exchange in library(http/http_openid). This patch also
fixes a determinism issue.
* ENHANCED: Better handling of file errors in http_log_stream/1. This
predicate now prints an error message and fails. This effectively
stops logging, while the HTTP server keeps functioning.
* ADDED: Extensions to the library(http/http_unix_daemon): - Provide
a hook to start the server some other way - Disable as much as
possible of the debugging environment - Activily call halt(0)
instead of relying on EOF from the
input.
* ENHANCED: More flexible cookie parsing: - Allow for blanks around =
- Allow for quoted string values - Skip illegal cookies, printing
a warning but continue processing
the valid cookies. This reduces the risc for DoS attacks.
* FIXED: cgi_property/2 raised an I/O error if the stream is in an
error state. This is undesirable and causes http_wrapper/5 to leak
a stream if there is an error while writing to a chunked HTTP stream.
* ADDED: Example Debian /etc/init.d file
* ADDED: library(http/http_unix_daemon) to facilitate the creation of
proper Unix daemon processes that switch user, manage a pid file
and send messages to syslog.
* ADDED: http_server/1: allow passing in the socket to use, so this
can be created before dropping rights using setuid/1.
* ADDED: map .md to text/x-markdown
* FIXED: cgi_property/2 could return TRUE while leaving an exception. Now
raises the exception.
* ADDED: Several additional declarations to mimetype database.
* SECURITY: DoS: chunked reader: Return error if underlying stream
returns EOF while reading the chunk header. Old code comes in an
uninterruptable tight loop when encountering an error or EOF while
reading the chunked header.
* DOC: Syntax error in example code. Uwe Hartwig.
* ENHANCED: Deal more gracefully with exceptions from reading the
request.
===========
Package jpl
===========
* TEST: Removed testFetchLongList2a() test because this results in a
stack overflow.
* TEST: Pick up SWI-Prolog boot file if not compiled in src.
* FIXED: Also use -source -target during configure.
===============
Package ltx2htm
===============
* FIXED: Support tabularlp from swipl.sty, fix center of tables while
avoiding the use of the HTML5 deprecated <center>.
* ADDED: Support \libsummary{lib}
* ADDED: Add id=Id attribute to sections for sections that labe a
LaTeX label.
* ADDED: Deal with @param->@arg renaming
* FIXED: Wrong option to absolute_file_name/3. Changed code to use
the new argument order.
* ADDED: \sinh, \cosh and \tanh
===========
Package nlp
===========
* PORT: Cleanup wcsdup() issues.
* DOC: Add identifier to sections
============
Package odbc
============
* ENHANCED: return domain_error on invalid ODBC findall/2 input
* ENHANCED: support widechar+64 bit types in ODBC findall/2
* FIXED: possible crash when freeing compiled findall/2
* FIXED: possible crash when using findall/2 option in odbc_query/4
* DOC: Label manual sections for persistent identifiers
* ADDED: two calls to inspect primary and foreign keys, required by
RDB to RDF direct mapping. odbc_table_primary_key(+Conn, ?Table,
?Column) odbc_table_foreign_key(+Conn, +TablePk, ?ColumnPk, ?TableFk,
?ColumnFk) or odbc_table_foreign_key(+Conn, ?TablePk, ?ColumnPk,
+TableFk, ?ColumnFk)
=============
Package pldoc
=============
* FIXED: Object links to stable section identifiers
* DOC: Added section identifiers
* FIXED: Added lists and pairs to critical PlDoc modules to avoid reload
errors of these libraries.
* MODIFIED: library(pldoc/doc_man): section/3 object replaced by
section/4, which includes a stable section identifier.
* ADDED: Allow for "-" inside {#Label}
* MODIFIED: Make prolog:doc_search_field//1 generate both the input
field and the submit button, so we can do better styling.
* FIXED: Make main reference manual work again.
* CLEANUP: Cleaner URLs from links, add object footer below manpages
* CLEANUP: Added missing multifile declaration.
* DOC: Duplicate sentence. Torbjörn Lager.
* ADDED: library(pldoc/doc_search): matching_object_table//2 to reuse
the result table infrastructure for arbitrary objects lists.
* ADDED: prolog:doc_object_page_footer//2 hook to allow for
user-annotations
* FIXED: Properly display search hit if it is a function.
* FIXED: Serve images for package documentation.
* FIXED: Display images embedded in the main manual
* FIXED: Handling of %! PlDoc comment if mode-line is not followed by
a blank line. Wouter Beek.
* MODIFIED: When using item lists like below, only perform ul->dl
conversion if at least one item description is non-empty. So, the
list below remains an item list. Wouter Beek. * aap * noot * mies
* FIXED: Misinterpretation of fenced code blocks for indented code
blocks.
* FIXED: Reject indented blocks as code blocks if the first line starts
with a |.
* FIXED: Really ignore invalid comment if it uses %% syntax
* FIXED: End block elements on a new header. Also some restructuring
of the code for reuse.
* FIXED: misinterpretation of Markdown rules for underlined section
headers.
* DOC: Many documentation enhancements.
* ADDED: Introduce %! for starting PlDoc comments
* COMMONS: Change @param to @arg (@param is mapped without warning)
* ENHANCED: More flexible handling of =identifier=
* TRIM: Do not make verbatim for the first block based on the indent.
This leads to problem because our indentation is not fixed.
* ADDED: Use variables in the item of description list while processing
the body of the description.
* CLEANUP: Use setup_call_cleanup/3.
* ADDED: markdown image support to the Wiki parser.
* ADDED: [Label](Link) notation for markdown compatibility
* ADDED: Markdown support for rulers
* ADDED: Recognise term(Args) and deal with `Term`
* ADDED: Support for indented code blocks.
* FIXED: Compute indentation of indented paragraph
* ADDED: Support the Doxygen style fences for code blocks.
* ADDED: Doxygen/markdown compatible handling of emphasis.
* FIXED: pldoc.sty: Added shortlist definition. Michael Richter.
* ENHANCED: Use the id=ID attribute to identify section headers.
Matt Lilley.
* ADDED: Support for markdown section headers, e.g., # Section level 1
Section level 1
===============
* ENHANCED: Better search results. - If no string is specified,
present help - Allow for 1-character searches - Handle Name/Arity
and Name//Arity special. - Handle searches for the exact name of
a predicate special.
* ENHANCED: Detection of end-of-url if the URL ends in a block level
construct.
* FIXED: Avoid errors when trying to find file references
* FIXED: Various issues interacting with the cross-referencer
* FIXED: Document multifile, also when working from xref
* FIXED: Make it possible to create a directory index from xref data
* FIXED: ` is not a regular Prolog symbol char.
* FIXED: Avoid type-error when analysing modes for PceEmacs
* ADDED: Allow source_to_html/3 to work with abstract input identifiers
as library(prolog_xref).
* CLEANUP: Removed a lot of redundant imports. Also no longer explicitly
ask for processing comments. Colouring doesn't need them and we
leave dealing with these issues to library(prolog_xref).
* CLEANUP: Use setup_call_cleanup/3
* ADDED: Support to render documentation from cross-reference information
rather than loaded files.
* FIXED: doc_load_library/0: block deprecated library(http/dcg_basics)
* ADDED: parse_comment/3 to do the surface analysis of structured
comments.
* CLEANUP: Generalise processing of structured comments.
* CLEANUP: Better interface to doc_modes.pl, preparing to get
documentation into the cross-referencer without loading.
* FIXED: Multi-word face switches inside tables (| *|bold words|* |
yes |). Wouter Beek.
* MODIFIED: Depend on xref_source/2
==============
Package plunit
==============
* FIXED: Consider tests in which assertions failed as failed tests.
Guenter Kniesel.
=================
Package protobufs
=================
* DOC: Provide section identifiers
* ADDED: support for UTF8 encoding for utf8_codes, atoms, and strings
* ADDED: notes regarding UTF8 encoding features
* FIXED: unit test using the Golden Message in protobufs-2.5.0
* FIXED: Add module header and operator declarations
* DELETED: Replaced with golden_message.2.5.0
* ADD: support for UTF8 encoding for utf8_codes, atoms, and strings.
==============
Package semweb
==============
* FIXED: rdf_save_canonical_turtle/2 used user prefixes.
* FIXED: TriG parser: handle the optional = in <graph> "="? "{"
* FIXED: Possible constant computation overflow (32-bit hardware)
* PORT: Anothe missing prototype
* PORT: Avoid wscdup warnings on SunOS
* FIXED: Turtle parser on Windows: crash when reading blank nodes.
Wouter Beek.
* DOC: Avoid section id conflict
* DOC: Added section identifiers
* ADDED: rdf_save_trig/2 and rdf_save_canonical_trig/2.
* ADDED: Link the TriG support for library(semweb/turtle) into
rdf_load/2.
* ADDED: Support for reading TriG files
* ENHANCED: Error recovery and reporting error location.
* FIXED: Avoid reading ., +. and -. as a number.
* MODIFIED: Added a new library(semweb/turtle) that provides both the
parser and writer infrastructure. The old libraries are maintained
to keep the interfaces consistent.
* PORT: Architectures that do not have wcscasecmp()
* COMPATIBILITY: Updated library(semweb/rdf_ntriples) to comply with
the current RDF-WG ntriples standard. Note that this format is
an intermediate between the old RDF representation of test results
and Turtle.
* PORT: Platforms that do not support wcsdup()
* ADDED: W3C Turtle test suite
* TEST: Spaces are no longer allowed in <URIREF>
* TEST: 1. is no longer a valid Turtle decimal.
* ADDED: Allow for anon_prefix(node(_)) for consistency with turtle
* TEST: Compare languages using lang_equal/2
* FIXED: Allow \u0022 inside a "string"
* FIXED: Allow reading 0-bytes
* ADDED: turtle_write_quoted_string/3 to allow writing Turtle `long'
string syntax ("""this is a not-so-long string""").
* MODIFIED: Merged new Turtle parser into the main source: - Deleted
library(semweb/turtle_base). This file provided foreign
primitives for both the reader and writer. The write support
functions are in the new foreign object =turtle.so/dll=.
* FIXED: String buffer resize for the ntriples parser. Copied the code
back from the new Turtle parser.
* TEST: Fixed test-28.ttl test-case.
* FIXED: Test case test-29.ttl. Replace \t by \u0009, etc. IRIREF does
not allow for ECHAR.
* ADDED: Pure C-base Turtle parser
* CLEANUP: Replace local exception support by SWI-Prolog's
* FIXED: Make the base_uri(+BaseURI) provide the default graph again.
Jochem Liem.
* MODIFIED: Removed rdf_quote_uri/2. This is no longer needed in the
context of RDF. Use uri_iri/2 for translating between IRIs and
URIs. Also modified rdf_save/2 to properly save the IRI.
* FIXED: Single-threaded loading with rdf_load/2.
* DOC: Avoid markdown wiki error.
* FIXED: Create empty repository. Jacco van Ossenbruggen.
* ENHANCED: rdf_attach_db/2 respects the verbose flag if the silent
option is not specified.
* ADDED: access(Access) option to rdf_attach_db/2. This allows for
using RDF databases that cannot be written.
* ENHANCED: Make rdf_attach_db/1 generate an exception of it cannot
find or create the target directory.
* UPDATED: rdfs.rdfs using latest version from
http://www.w3.org/TR/rdf-schema/ Provided by Wouter Beek.
* FIXED: Bug#79: rdf_update/4 crashes if the triple is not modified. See
Wong.
* FIXED: rdfs_individual_of(+, -) only returns rdfs:Resource.
Wouter Beek.
* FIXED: rdfs_subclass_of(+, rdfs:Resource). Wouter Beek.
* FIXED: Do not fail building stem index if porter_stem/2 fails.
* FIXED: Initializing literal index (failure of check_index_workers/1).
* FIXED: Reference to non-existing rdf_save_db_/2 for saving cache
files. Lourens van der Meij.
* FIXED: Possible dead loop. We must register reindexed triples.
Wouter Beek.
* FIXED: Duplicate detection may miss duplicates
* CLEANUP: bucket management, seeking for less intrusive locking
* ADDED: rdf_warm_indexes/0,1 and rdf_update_duplicates/0 to perform
jobs that are normally done lazily explicitly.
* FIXED: Some of the logic in rdf_update_duplicates() and avoid first
resetting if no duplicates have been marked
* FIXED: Deadlock if duplicator thread is aborted prematurily.
* ENHANCED: Scale literal indexing workers dynamically
* ADDED: rdf_snapshot_file/2 for gaining portable access to the
underlying snapshot file in the persistency layer.
* ENHANCED: First try an unlocked lookup in share_literal() to avoid
excessive locking.
* ENHANCED: Modified the proprietary fast save/load format. The idea
is to avoid repetitive lookup of predicates and -notably- literals
by maintaining an array of these as already done for atoms. The new
version reads both the old and new binary format. By default, it
saves the new format. The new flag =rdf_triple_format= controls the
save format. The old one is known as '2'. The new one (default) is
'3'.
* ENHANCED: Added handling of Content-type text/xml, binding to rdf+xml.
* FIXED: Missing lock in reindex_triple(), causing inconsistent
reference count.
* MAINTENANCE: Added rdf_checks_literal_references/1
* FIXED: Detection of full (quintuple) duplicate detection in
rdf_assert/4. Old code resulted in many duplicates if these were
asserted inside transactions.
* FIXED: Concurrent loading of cached RDF files could corrupt the
persistent store. This was reported as missing directories or files.
The new schema, passing the graphs that are modified by loading
a triple file is also much more efficient in the presense of many
named graphs.
* CLEANUP: Keep tmp triple for update out of admin
* FIXED: \u with A-F
* FIXED: Reading ntriples failed in the presence of errors
* MODIFIED: Removed ntriples plugin support from
library(semweb/rdf_turtle) Applications that wish to load ntriples
must load the plugin library(semweb/rdf_ntriples).
* ADDED: library(semweb/rdf_ntriples): an efficient C-based parser
for N-Triples.
* CLEANUP: Use cleaner and more efficient interface to get subjects
for writing Turtle.
* FIXED: Consider graphs with 0 triples as existing graphs. Jacco van
Ossenbruggen.
* DOC: Fixed link.
* FIXED: Turtle parsing of "xyx"^^<type>
* DOC: Fixed mode declaration
* FIXED: Modified property on graphs (various bugs).
* FIXED: rdfe_is_modified/1.
* FIXED: rdf_set_graph/1 (type error). Kilián Imre.
* COMPAT: Make rdf_unload(+Graph) work again (with a deprecated warning).
* FIXED: Crash due to race condition in assert-check when adding
literals.
* PORT: Avoid conflict with Windows headers.
* MODIFIED: Complete duplicates are not added to the database.
* MODIFIED: Literals as "text"^^rdf:XMLLiteral are passed as an XML
DOM for compatibility with the RDF/XML library.
* FIXED: Save rdf:XMLLiteral typed literals if the value is an atom
(hopefully containing valid XML text).
* FIXED: Binding of result variables in rdf_has/3,4. Lourens van
der Meij.
* ENHANCED: Use 32-bit atom identifiers in triples.
* ADDED: Step 1 of COMPACT model: notion of a triple-array
* CLEANUP: Moved almost empty remains of alloc.[ch] into rdf_db.c
* FIXED: Make rdf_load_db_/2 always return a list of loaded graphs.
* FIXED: Avoid race condition in resizing the triple hash that blows
up the hash
* FIXED: Create intermediate directories when creating a snapshot of
a loaded db.
* FIXED: Add alternative hash logic needed for subPropertyOf to
rdf_reachable/3
* FIXED: Combined subPropertyOf and inverseOf handling in rdf_has/3,4
* FIXED: Resizing of the hash-tables based on triple_hash_quality()
can lead to a blowup of the tables. I think we can do well enough
without. The analysis shows that it is likely possible to improve
on the hash statistics,
* RELEASE: Update of semweb package to version 3 Merge branch 'version3'
Conflicts: Makefile.in atom_map.c lock.c lock.h rdf_db.c rdf_db.h
rdf_db.pl rdf_persistency.pl semweb.doc
* PORT: Move definition of inline functions before use
* FIXED: Missing mutex initialization
* PORT: Deal with systems that do not provide random()
* MODIFIED: Renamed rdf_current_ns/2, etc into rdf_current_prefix/2. Old
predicates are retained as deprecated to maintain compatibility.
* ENHANCED: Make rdf_load/1 by default use concurrent loading if multiple
inputs must be loaded.
* FIXED: Get rid of concurrent duplicate updater on rdf_reset_db/0.
* ADDED: Support empty graphs
* ADDED: Allow existence of empty graphs
* ENHANCED: Load snapshots before journals. This is because journals may
delete triples and thus force the database to create its indexes.
We want to delay this as long as possible to reduce reindexing
while loading the persistent database.
* ENHANCED: Create the GC thread lazily.
* ENHANCED: Create hash-tables lazily.
* ADDED: Start duplicate detection lazily.
* ADDED: Allow suspending duplicate administration
* ADDED: Report left-behind reindexing
* ADDED: rdf_set/1 to control to hash tables
* ENHANCED: Resize in bigger steps if many triples are added.
* ENHANCED: Move duplicate detection outside the locked area.
* ENHANCED: Use a separate lock to ensure consistency of the literal
skiplist.
* ENHANCED: Move sharing literals outside the interlocked region
* ENHANCED: Use a hash-table for duplicate answer removal.
* FIXED: Race condition in reading with concurrent deletion.
* FIXED: Unbound triples passed to print message. Jacco van
Ossenbruggen.
* ENHANCED: library(rdf_persistency) to use intermediate directories.
* CLEANUP: Reverse indexed predicates (we have multi-argument indexing)
* ENHANCED: Keep track of graph modified status in the C database as
we have almost everything already there. Conflicts:
rdf_db.c
* FIXED: Resizing atomsets was a dummy.
* ENHANCED: Use resizing atom-set for keeping track of graphs while
reloading. Conflicts:
rdf_db.c
* FIXED: Reset dynamically scaling hash-tables for triples.
* ADDED: Allow rdf_atom_md5/3 to work on Unicode data Conflicts:
rdf_db.c
* FIXED: Handle typed literals and bnodes in SPARQL JSON results.
* FIXED: @true --> true when reading SPARQL JSON results.
* ADDED: Support rdf, rdfs, owl and xsd as default prefixes in the
Turtle parser.
* FIXED: rdfs_member/2 no to rely on rdfs ontology and allow for holes
in the rdf:_N numbering.
* ADDED: sparql_read_json_result/2 to library(semweb/sparql_client)
* FIXED: Turtle reader: wrong type qualification of "..."^^:name
literals.
* FIXED: The Turtle : prefix is not the base URI of the document!
* FIXED: handling atom(Atom) in Turtle reader. Jacco van Ossenbruggen.
* ADDED: Input handling of rdf_read_turtle/3 to accept atom(Atom),
file:// and https:// URLs.
* ISO: Use \c instead of \<newline>
* ADDED: Hacks to tweak the RDF/XML serialization to support OAEI.
Willem van Hage.
* ADDED: rdf_literal_value/2
* PORT: Add
* ENHANCED: Use a failure driven loop for RDF GC to avoid building up
local stack when executed in debug mode.
* MODIFIED: Make literal index messages silent
* MODIFIED: By default, use `brief' loading messages when attaching an
RDF store.
* FIXED: Duplicates may not be returned. This patch also improves the
performance of `retry'.
* FIXED: Generating available graphs
* ENHANCED: Turn rdf_graph/1 into an rdf meta-predicate (type r)
* ADDED: lib:format "turtle" to control the format of external
resources. Various enhancements to loading external resources.
* FIXED: Do not unlock atoms of a literal when unlocking the atoms of
a triple with a shared literal. Also adds lots of checks.
* FIXED: generation logic for subPropertyOf inside a transaction.
* FIXED: PLay the same trick with triple->reindexed as with the normal
hash-next links
* FIXED: Delay unlocking the atoms of a freed literal until the literal
is deleted from the skiplist. Otherwise atom-gc may claim the atom
and make the delete fail.
* FIXED: mark_duplicate() logic: triples are potential duplicate IFF
their lifespan overlaps. The query is irrelevant. This also speeds
up loading documents with many duplicates because the query generation
is typically olde than the store-generation.
* FIXED: Transactions with only updates were considered empty
* ENHANCED: do not use MATCH_SUBPROPERTY if we query a leaf property
using rdf_has/3,4. Suggested by Michiel Hildebrandt.
* FIXED: Removing dead triples from the hash-chains in GC
* FIXED: Keep track of oldest alive generation in snapshots
* ADDED: rdf_delete_snapshot/1
* FIXED: We can only use a smaller matrix if both preds are inside it.
* FIXED: Properly synchronise rdf GC and rdf_reset_db/0
* FIXED: Not all erased triples can be collectable. Avoid looping in GC
* TODO:
- Implement the update
- Implement query over multiple predicate hashes
* TEST: Very simple-minded implementation to deal with subPropertyOf
using multiple queries. Limitations: * Doesn't deal with inverse *
Deesn't combine with literal queries * Doesn't deal with transitive
rdfs:subPropertyOf
* ADDED: Optimize triple index by incremental copying triples to new
larger hash-tables.
* ENHANCED: Use skilist for literals (instead of AVL tree)
* ENHANCED: Replace atom-set implementation from AVL to hash-tables.
* FIXED: rdf(O, P, literal(P)) could succeed if (as usually)
incorrect. Lourens van der Meij.
* FIXED: Include qualifier when comparing non-string literals.
Willem van Hage
* ADDED: hash_quality statistics
* TBD: - Fix broadcasting - Remove partially loaded triples
* TBD: - Actually resize the tables - Cleanup erased triples (realise GC)
============
Package sgml
============
* FIXED: load_structure/3: apply dialect option before the others as
this sets defaults.
* FIXED: dtd/2: unification of DTD document type (wchar issue)
* ADDED: load_structure/3: option case_sensitive_attributes(+Boolean)
This is introduce for the HTML quasi quoter to be able to relate
attribute values to Prolog variables.
* FIXED: Bug#110: xml_write/2 and friends: quote numeric attributes.
* FIXED: Make parser understand html4 as alias for html for the dialect
option. Jacco van Ossenbruggen.
* FIXED: Bug#110: library(sgml_write): printing numeric attribute values.
* DOC: Provide identifiers for all sections
* MODIFIED: Provide elementary support for HTML5
using the following: - Add an informal HTML5 DTD (from
http://www.cs.tut.fi/~jkorpela/html5-dtd.html) - Add default HTML
dialect using a Prolog flag html_dialect.
Default is html5. Other value is html4. - Add acceptence of XML
empty elements (<.../>) and attributes named
"data-*" when running in HTML5 mode.
This is a quick hack to allow using (most of) HTML5 through the html
quasi quotation parser.
* SECURITY: write_html/2 can write unescaped elements when using strings
in the content location of the XML DOM tree. Matt Lilley.
* DOC: Updated added load_html/3, load_xml/3 and load_sgml/3.
Leaving the deprecated old predicates for PlDoc.
* TEST: Some cleanup of the SGML/XML parser test suite (mostly silence)
* MODIFIED: if max_errors == 0, throw an exception on the first error.
* ADDED: load_html/3, load_xml/3 and load_sgml/3. This avoids the ugly
load_structure/3, both providing sensible defaults and additional
options.
* ADDED: load_structure/3: set positions from stream information.
* CLEANUP: load_structure/3: option processing (faster and better
error handling).
* CLEANUP: Use setup_call_cleanup/3
* MODIFIED: xpath/3: Do _not_ evaluate functions at the right hand of
`Left = Right` conditions. Wouter Beek. This allows for conditions
such as `content = content`, expressing that the content of the
element is the atom `content`.
* FIXED: Properly handle UTF-8 encoded data in the local doctype
declaration.
* MODIFIED: Allow for atomic instead of just atom [CDATA] content.
=============
Package space
=============
* FIXED: Typo; didn't compile anymore
* CLEANUP: Avoid warning.
* DOC: Add section identifiers
* UNINSTALL: Remove files from right directory.
* FIXED: make uninstall
===========
Package ssl
===========
* MODIFIED: ssl_context/3: Throw an exception if ssl_config() fails
* DOC: Avoid section id conflict
* DOC: Added section identifiers.
=============
Package table
=============
* DOC: Added section identifiers
============
Package tipc
============
* DOC: Added section identifiers
================
Package utf8proc
================
* DOC: Added section ids
* FIXED: The casefold_mapping info is a uint32_t array ending in -1.
* FIXED: Avoid crashes of unicode_property/2 for undefined
properties. Paulo Moura.
===============
Package windows
===============
* FIXED: include limits.h for INT_MAX/INT_MIN definitions
* ENHANCED: support QWORD registry types
* FIXED: possible access to freed memory
* FIXED: check key values when creating registry keys
* FIXED: handle exception when setting registry keys
* CLEANUP: silence GCC warnings about safe int <-> pointer casts
============
Package xpce
============
* CLEANUP: silence benign GCC warnings
* ADDED: Install swipl-win.rc regardless of the platform to support
Carlo's new portable swipl-win.
* CLEANUP: Use strncmp(). This also fixes a crash when compiling using
GCC 4.8.1 on MacOSX. Looks like a GCC compiler error, but one should
be careful with saying that ...
* FIXED: text_buffer->delete if start position > size.
* FIXED: send CTRL+C to child process using correct PGID
* CLEANUP: use correct WNDPROC type for callback functions
* FIXED: Sync stream.h between xpce and Prolog. Fixed Ssize() in xpce
on big endian machines.
* CLEANUP: Warnings for printing XPCE integers on 32-bit platforms
* CLEANUP: fix aliasing issue
* CLEANUP: Methods cannot be saved anomore anyway. Do not pretend
they can.
* CLEANUP: Lots of Win64 types
* CLEANUP: types and complete change in string structure
* CLEANUP: Handle string header with a union rather than casts
* FIXED: PostScript generation with negative floats. Jochem Liem.
Broken in locale fix (177f0b8c201740ae9499f8bfd790a013d6a28050).
* PORT: Fix testing for -lsocket and -lnsl (SunOS)
* FIXED: gxref/0: undefined predicate detection
* FIXED: Replaced '$apropos match/2 with sub_atom_icasechk/3.
Matt Lilley
* ADDED: PceEmacs: Command-[XZS] processing in `apple' mode.
* MODIFIED: PceEmacs: Renamed mode java_script into javascript
* MODIFIED: JavaScript mode: Alignment of name: function() {
* ADDED: Backskip over function for finding the statement column in
JavaScript
* ADDED: text_buffer<-scan_syntax to find quasi quotations.
* FIXED: Postscript generation should not use locale for emitting
floats. Jochem Liem.
* FIXED: Avoid cross-module call to thread_util:has_console/0.
* FIXED: Indentation of if-then-else. Broken with previous changes
to indentation.
* MODIFIED: PceEmacs indentation rules. The long-functor rules that
provide the argument indentation below has been changed to - allow
for a term instead of just and atom as long_functor - Allign the
closing bracket with the functor if it is on a
new line.
== long_functor(
arg1,
arg2 ==
This works better with the syntax extensions and curly bracket
languages in quasi quotes, while most of this syntax is illegal
in plain Prolog anyway.
* ADDED: PceEmacs commands: - \\C-c\\C-c : change word to CamelCase -
\\C-c\\C-_ : change word to underscore_case
* ADDED: Make <! insert the quasi quote
* INSTALL: Simplify calling xpce for building the class index.
Should avoid problems with Debian
* FIXED: Run the indexer in silent mode
* FIXED: PceEmacs: make goal context menu show `Edit' for
module-qualified goals that are cross-referenced, but not loaded.
* FIXED: `char_array->{prefix,suffix,sub} for both case senstive and case
insensitive when using two char_array with different representations
(wide/ansi). Jochem Liem.
* ADDED: Display message on not-callable goals.
* ADDED: Two styles of break interaction and some informative
feedback. After discussion on the list by Alan Baljeu.
* FIXED: Filling comment if the comment is immediately followed by
a code line. This fix is twofold. This patch fixes the regex
to end of the (comment) paragraph on a non-comment line and
2aa942fc50fcc127d77b5ab68840ecee3e668ba6 fixes filling details in
class editor.
* FIXED: editor->fill: if the (specified) end is at the start of a line,
do not include the final newline of the region into the filling
area. Otherwise, the final newline will become a space.
* FIXED: PceEmacs: make Prolog/Spy action work on grammar rules.
* ENHANCED: Open a new interactor if a prompt is requested from the
debugger.
* ADDED: Save/restore settings for the graphical debugger.
* CLEANUP: Documentation and simplify module handling.
* CLEANUP: Removed code below end_of_file.
* ENHANCED: Tracer: scroll the binding view to the end because this is
where typically the latest bindings appear. Jacco van Ossenbruggen
suggested this long ago.
* MODIFIED: `editor->selection': do not normalize the view if the
selection is cleared (start and end are the same). This fixes an
annoying bug in the Prolog source debugger, where the binding view
scrolls on a click because the selection is cleared to 0,0.
* DOC: Avoid PlDoc syntax error
* DOC: PlDoc syntax error and updated documentation.
* BUILD: Avoid re-generation of src/gnu/getdate.c, causing a dirty GIT
repo. Ulrich Neumerkel.
* BUILD: Properly deal with dependencies for rdf_diagram.pl
* FIXED: Syntax fix for xpce class index tool.
* FIXED: A few syntax errors in (mostly) obsolete files.
* MODIFIED: Depend on xref_source/2
============
Package zlib
============
* DOC: Provide section identifiers
_______________________________________________
SWI-Prolog mailing list
[email protected]
https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog