Re: Ann: SWI-Prolog 6.5.3

Jos De Roo <[email protected]>
Newsgroups gmane.comp.ai.prolog.swi
Message-ID <OFC611FC61.63895424-ONC1257C2A.0036E1CF-C1257C2A.0036E1D4@agfa.com>
Hi Jan,

Thanks for this new release and all our tests run fine.
There is some minor trouble we have with qsave_program
throwing an ERROR: Undefined procedure: 0/0

$ swipl
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 6.5.3)
Copyright (c) 1990-2013 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

1 ?- qsave_program('/tmp/img').
ERROR: Undefined procedure: 0/0
2 ?- 

After some quick investigation I saw that we can work around with

$ swipl
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 6.5.3)
Copyright (c) 1990-2013 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

1 ?- flag('$banner_goal', _, true), qsave_program('/tmp/img').
% autoloading prolog_codewalk:must_be/2 from /usr/local/lib/swipl-6.5.3/library/error
% autoloading qsave:current_foreign_library/2 from /usr/local/lib/swipl-6.5.3/library/shlib
% autoloading oset:reverse/2 from /usr/local/lib/swipl-6.5.3/library/lists
% autoloading error:assertion/1 from /usr/local/lib/swipl-6.5.3/library/debug
% autoloading record:member/2 from /usr/local/lib/swipl-6.5.3/library/lists
% autoloading prolog_codewalk:portray_clause/1 from /usr/local/lib/swipl-6.5.3/library/listing
% autoloading prolog_codewalk:clause_info/4 from /usr/local/lib/swipl-6.5.3/library/prolog_clause
% autoloading prolog_codewalk:initialization_layout/4 from /usr/local/lib/swipl-6.5.3/library/prolog_clause
% autoloading prolog_debug:backtrace/1 from /usr/local/lib/swipl-6.5.3/library/prolog_stack
% autoloading prolog_codewalk:clause_name/2 from /usr/local/lib/swipl-6.5.3/library/prolog_clause
% Autoloader: iteration 1 resolved 10 predicates and loaded 10 files in 0.059 seconds.  Restarting ...
% Autoloader: loaded 10 files in 2 iterations in 0.089 seconds
true.



Kind regards,

Jos De Roo | Agfa HealthCare
Senior Researcher | HE/Advanced Clinical Applications Research
http://www.agfa.com/w3c/jdroo
http://twitter.com/josderoo

Agfa HealthCare NV, Moutstraat 100, B-9000 Gent, Belgium
http://www.agfa.com/healthcare

[email protected] wrote: -----
To: Prolog mailing list <[email protected]>
From: Jan Wielemaker 
Sent by: [email protected]
Date: 11/19/2013 12:50PM
Subject: [SWIPL] Ann: SWI-Prolog 6.5.3

Hi,

I've uploaded SWI-Prolog 6.5.3.  This is mostly a maintenance release,
fixing various bugs and portability issues.  It also prepares some
interfaces to remain compatible with version 7.  The plan is to
quickly release 6.6.0 based on this code if nothing major comes
up and then move the development branch to version 7.

Compatibility issues:

   - Modified handling of commandline arguments in 6.5.2 needed some
     more fixes.
   - arg/3 now raises a type error on arg(1, atom, X) (ISO).
   - memberchk/2 raises a type error if it encounters a non-list
     cell.
   - SWI-Prolog no longer looks for .plrc (pl.ini) in the current
     directory.  This change in policy is consistent with many
     programs that used this because it is considered a security
     risc.
   - Binary format of PL_record_external() and friends has changed,
     preparing for changes that are required for version 7.
   - Preparations for version 7: make string predicates consistent
     with atom predicates (e.g., string_codes/2 instead of
     string_to_list/2, etc.).  Backward compatibility is provided
     by library(backcomp).

Portability issues:

   - Support profiling threads in MacOS version.  General cleanup of
     profiling code.  Now allows both profiling CPU time and wall time,
     so you can see the time spent in blocking system calls.
   - Lots of small stuff.  Mostly fixing build errors on some
     platform.  Also fixes performance issue with RDF loading on
     MacOS 10.9 (Maverics).  Also deals with changed Java distribution
     on Maverics.  You need Oracle JDK for JPL because Apple Java no
     longer ships with the JNI headers and libraries.
   - Windows version ships with MSVC compatible libswipl.lib file.

For MacOS, I only uploaded the application bundle.  This by default
opens Carlo's Qt based console.  The command line executables are
included and may be used by setting your PATH appropriately or
creating symbolic links from some location in your PATH.  People
who want only the commandline tools can use Macports or HomeBrew
or compile from source.

	Enjoy --- Jan

========================================
SWI-Prolog Changelog since version 6.5.2
========================================

  * TESTS: Fixed date test for type check of memberchk/2

  * PORT: Fixed issues with _stprintf() mapping to swprintf().  This causes
    failure to compile under MinGW under Ubuntu 13.10, where the console
    opens with a title showing only "AMD," and a blank console.

  * CLEANUP: Avoid some bogus messages about uninitialised variables

  * DOC: LaTeX error

  * ENHANCED: print bignums/rationals as floats using ~e without converting
    to GMP mpf_t types

  * BUILD: Make sure all .qlf files are gone from the tree.

  * FIXED: accounting statistics of the profiler

  * DOC: Updated documentation about the profiler.

  * MODIFIED: Several details in interaction with the profiler: -
      profiler/2 takes new values =cputime= and =walltime= - profile/3 is
      replaced by profile/2, which takes an option list.  - show_profile/2
      is deleted.  show_profile/1 now takes an option list.

  * CLEANUP: Move profile header to new pl-prof.h.  Start working on
      different profile modes.

  * MODIFIED: Base time profiling on reported CPU time.

  * CLEANUP: Various issues and code around the execution profiler.

  * FIXED: Handling break points that simply enable trace mode.
      Steffen Lalande.

  * FIXED: Bug#131: Loop printing errors if there is an error from
      initialiazing the history.  Kyle Marple.

  * MODIFIED: Version and banner infrastructure: - Deleted '$welcome'
      predicate - Added version/0 and version/1, which is found in
      several Prolog
        implementations.

  * FIXED: Do not quote $ for shell commands in Windows.

  * FIXED: vm_list/1 and qlf save/load for @/2. Edison Mera.

  * FIXED: throw existence error if stream blob in invalid in set_stream/2

  * BUILD: Ensure ./prepare also updates configure scripts if a file in
      ac/*.m4 has changed.

  * ENHANCED: print bignums/rationals as floats without converting to
      GMP mpf_t types

  * PORT: Try to set JAVAPREFIX on MacOS if Oracle's Java is installed

  * FIXED: clause_info/4: Be more selective in detecting swapped
      arguments. Patch by Matt Lilley.

  * BUILD: Avoid using cpp for selecting the manual files.  Now use a
      Prolog program.

  * FIXED: mutex_statistics/0: wrong value for L_THREAD and L_MUTEX
      because it compensated for the wrong mutex.

  * DOC: Removed docs for set_tty/2.  Predicate has gone long time ago.

  * WINDOWS: Added building libswipl.lib to the cross-builder

  * WINDOWS: Generate a libswipl.def

  * FIXED: Make curent_functor/2 behave consistently for arity = 0 in modes
      (+,+) and (?,?).

  * FIXED: do not include cpu_count Prolog flag in saved state

  * FIXED: Reduce risc of crashing when `hot-swapping' code in
      multi-threaded context.  Keri Harris.

  * FIXED: call/N with N>9 calling a module qualified goal.  Keri Harris.

  * DQUOTES: Avoid dependency of tests on the double_quotes flag.

  * MODIFIED: Renamed string_to_atom/2 into atom_string/2 for
      consistency. Moved string_to_atom/2 into library(backcomp).

  * DQUOTES: Handle string literals in parse/3.

  * DQUOTES: Handle "a" in optimized arithmetic if double_quotes is set to
      "string"

  * FIXED: Proper reporting and error recovery on illegal operator
      declarations in the module export list.

  * ADDED: string_code/3, finding a code at a given offset

  * ADDED: Support string version of "x" in arithmetic expressions.

  * ADDED: library(persistency): generate asserta variation.

  * MODIFIED: memberchk/2 reports a type error if it stumbles on a
    non-list.  Note that it does *not* agressively check the list and thus
    memberchk(a, [a|b]) succeeds.  Notably intended to capture memberchk(C,
    "String").

  * FIXED: Avoid instantiation error when determining locations.

  * ADDED: prolog_program_clause/2 to enumerate `interesting' clauses.

  * FIXED: possible crash when removing atoms from a findall structure
    before it has been scanned

  * FIXED: possible crash when removing atoms from a message queue before
    it has been scanned

  * FIXED: Compensate for arg/3 atom argument in test case

  * FIXED: Avoid arg/3 on an atom (new ISO compliant exception)

  * FIXED: Avoid commandline options in SICStus compatible swipl-lfr.pl

  * ADDED: list_trivial_fails/0.  Based on code from Edison Mera.
    Included this test into check/0.

  * ADDED: prolog_walk_code/1: option clauses(+List) to process only the
    given clauses.

  * FIXED: clause_info/4 term-position representation for body terms of
    the form Var1:Var2.

  * FIXED: library(arithmetic): Avoid type-error for arg/3

  * ISO: Generate a type error on arg(1, atom, X).  Also small performance
    improvement for (non-ISO) mode arg(-,+,?).

  * MODIFIED: eos//0.  I don't think this is satisfactory yet.  There was
    something wrong with the definition, but I cannot recall the precise
    case.

  * FIXED: Always apply canonisePath() after creating an absolute path.

  * CLEANUP: Deleted structuralEqualArg1OfRecord().  No longer used.

  * FIXED: PL_record_external(): saving wide atoms and more efficient
    saving of [], which is also robust against changing the notion of nil.

  * FIXED: Reset suspendTrace in a new thread.  This ensures that threads
    can be debugged, also if they are created from e.g., notrace/1.
    Jacco van Ossenbruggen.

  * MODIFIED: Make -f file work again if the arguments points to an
    existing file.

  * FIXED: Avoid using -f.  Paulo Moura.

  * MODIFIED: Renamed string_to_list/2 into string_codes/2.  Compatibility
    predicate added to library(backcomp).

  * ADDED: eos//0.  Also updated documentation of some predicates.

  * MODIFIED: The file_search_path/2 alias =user_profile= no longer
    includes the current working directory.  Including files from the
    current directory is considered a security issue.  The old behaviour
    can be restored by loading a local .plrc (Windows: pl.ini) from the
    global one.

  * BUILD: Fixed makefile dependencies to avoid concurrent make
errors. Roberto Bagnara.

  * FIXED: `dec10' syntax error handling for reading quasi quotations.

  * FIXED: must_be(cyclic, T) and must_be(acyclic, T) used inverted
error message.

  * FIXED: allow Windows stand-alone applications to be called without
an .exe suffix

  * ENHANCED: CLP(FD): Separate parsing of reified constraints from syntax
checking. This removes the declarative problem that for example both
#\ 2 and #\ #\ 2 failed - it now raises a domain error in both cases,
because 2 is not a Boolean value.

  * ENHANCED: CLP(FD): When clpfd_monotonic is true, ?/1 can now be
omitted if a variable is already constrained to integers.

  * ENHANCED: CLP(FD): Support ?(X) syntax in goal expansion.

  * ENHANCED: CLP(FD): reified tuples_in/2 now works also with
clpfd_monotonic.

  * ENHANCED: CLP(FD): tuples_in/2 is now properly negated in reifications.

  * ENHANCED: CLP(FD): No ?/1 wrapper for integers in residual goals.

  * ADDED: CLP(FD): New flag: clpfd_monotonic. Setting this flag to
true renders CLP(FD) monotonic. ?(X) is used in CLP(FD) expressions and
residual goals to denote that X is a finite domain variable, ruling out
other expressions.

  * FIXED: check PE module path for saved state

  * ENHANCED: CLP(FD): First preparations to support monotonic constraints.
    Ulrich Neumerkel (i3a#313). Support X? notation which constrains X to
    integers in CLP(FD) expressions.  A current declarative shortcoming
    of CLP(FD) is that it commits to interpreting variables that occur
    in a query as finite domain variables (= integers) instead of logical
    variables. For example:

       ?- X #= 3.
       %@ X = 3. (no further solutions)

    But X might as well stand for a different expression, for example:

       ?- X = (Y + Z), X #= 3.
       %@ X = Y+Z,
       %@ Y+Z#=3.

    Note that exchanging the goals yields a different result:

       ?- X #= 3, X = (Y + Z).
       %@ false.

    As another example, we have:

       ?- #\ 2.
       %@ false.

    because the only solution of

       ?- #\ X.

    is currently:

       %@ X = 0.

    whereas declaratively, X = (5 #= 3) is for example also a correct
    answer, and indeed we have:

       ?- X = (5 #= 3), #\ X.
       %@ X = (5#=3).

    To fix this, the (?)/1 syntax is now made available to explicitly
    denote finite domain variables in CLP(FD) expressions. When you add:

       :- op(5, yf, ?).

    to your programs, you can now write:

       ?- X? #= 3.
       %@ X = 3.

    The above example then yields:

       ?- X = (Y + Z), X? #= 3.
       %@ ERROR: Type error: `integer' expected, found `_G759+_G760'

    because "X?" constrains X to integers. This renders your CLP(FD)
    programs monotonic: adding additional goals cannot yield additional
    answers.

    As another example, consider again:

       ?- #\ X? .
       %@ X = 0.

    and contrast it with:

       ?- X = (5 #= 3), #\ X? .
       %@ ERROR: Type error: `integer' expected, found `5#=3'

    The convenient and declaratively problematic syntax

       ?- X #= 3.
       %@ X = 3.

    is currently still available. To enforce a more declarative coding
    style, such a query should throw an instantiation error because too
    little information is known about X to answer correctly. Add (?)/1 to
    constrain it to integers, and exclude other CLP(FD) expressions.

  * ENHANCED: CLP(FD): Stronger exponentiation. Jan Burse.  Example:

       ?- X^2 #= Z, X in -9.. -2.
       %@ X in -9.. -2,
       %@ X^2#=Z,
       %@ Z in 4..81.

  * FIXED: expand '$source_location' clauses

  * FIXED: possible crash when destroying thread message queues

  * FIXED: ensure atom GC locks initialized findall mutexes

  * CLEANUP: Remove unused code left from old atom-GC

  * FIXED: always set argv prolog_flag

  * FIXED: calculate memory alignment of double/int64_t types

  * FIXED: Qsave for quasi_quotation_syntax property.  Mike Elston.

  * ENHANCED: CLP(FD): Stronger multiplication. Jan Burse.  Before:

       %?- X*Y #= Z, X #>= 0, Z #>= 1.
       %@ X in 1..sup,
       %@ X*Y#=Z,
       %@ Y in inf.. -1\/1..sup,
       %@ Z in 1..sup.

    Now:

       %?- X*Y #= Z, X #>= 0, Z #>= 1.
       %@ X in 1..sup,
       %@ X*Y#=Z,
       %@ Y in 1..sup,
       %@ Z in 1..sup.

  * FIXED: leave error reporting of -- long options to Prolog

  * FIXED: -c command-line option (compile) to use os_argv


=========
Package R
=========

  * INSTALL: Avoid redefining LIBDIR which is used to specify the location
    of the Prolog kernel

  * DQUOTES: Avoided two issues, but decided for
    set_prolog_flag(double_quotes, codes). to fix the remainder.

===========
Package RDF
===========

  * FIXED: Incorrect handling of [] at various places

===========
Package chr
===========

  * ENHANCED: silence known benign trivial failures generated by CHR
    compiler

  * FIXED: Replace -f file.pl with -f none -s file.pl

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

  * FIXED: Avoid duplicate free whe passing non-atoms to uri_resolve/3
    and family.

  * FIXED: Disallow non-text atoms for Base in uri_resolve/3, etc.

  * FIXED: Share stdout and stderr on the same pipe.  Patch by Matt Lilley.

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

  * FIXED: Typo (POST --> post)

  * CLEANUP: Prepare http_open/3 for more flexible option processing.

  * ADDED: Bug#132: Make http_read_json/3 also work for PUT requests. Raivo
    Laanemets.

  * FIXED: Non-determism in handling the proxy option in
    http_get/3. Steffen Lalande.

  * INSTALL: Avoid redefining LIBDIR which is used to specify the location
    of the Prolog kernel

  * ADDED: http:status_page to map the third (optional) argument of an
    http_reply exception to a specific page.  Patch by Matt Lilley.

  * FIXED: More HrdExtra typos.

  * FIXED: Errornous option list in test suite

  * DQUOTES: Set double quotes to codes for JS parser

  * DQUOTES: Various fixes

  * DQUOTES: Avoid dependency on double quotes flag

  * COMPAT: Send "Authorization: Basic ..." instead of "Authorization:
    basic ..." to accomodate broken servers.  Matt Lilley.

===========
Package jpl
===========

  * PORT: Be more flexibl for finding the header files from JAVAPREFIX

  * FIXED: Bug#128: Include hidden classes into jpl.jar. With patch from
    Andrew Santosa.

  * DQUOTES: Avoid use of character codes.  Some small cleanup.

===============
Package ltx2htm
===============

  * DQUOTES: Support strings.

  * FIXED: Avoid pldoc.pl confusion due to changing the library search path


=============
Package pldoc
=============

  * FIXED: Avoid memberchk/2 on non-list

  * DQUOTES: Various fixes

  * ENHANCED: doc_server/1: use default HTTP settings.  Note that using
    only a single worker can lead to waiting for keep-alive timeouts.


=================
Package protobufs
=================

  * DQUOTES: Avoid more dependency issues

  * PORT: Avoid dependency on backquoted syntax.


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

  * FIXED: Possibly uninitialised variable

  * ENHANCED: Scheduling of additional literal indexing threads

  * PORT: Avoid dependency of random(), which behaves poorly on MacOS 10.9.

  * INSTALL: Avoid redefining LIBDIR which is used to specify the location
    of the Prolog kernel

  * DQUOTES: Simple fix

  * FIXED: Incorrect handling of base_uri([]).

  * FIXED: rdf_estimate_complexity/4 must create index if estimate is
    defined on the index.  Wouter Beek.

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

  * ADDED: Allow for nested expressions in xpath/3.  Michael Hendricks.

  * DQUOTES: Various fixes


=============
Package space
=============

  * DQUOTES: Avoid relying on double quotes for KML and DbPedia
    parsing. Also fixes dbpedia_candidate/3.

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

  * CLEANUP: Use standard naming for test files.

  * DQUOTES: Do not rely on flag

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

  * FIXED: avoid setting read only

  * ADDED: respect color_term prolog_flag setting

  * ADDED: win_html_write

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

  * ADDED: thread monitor: collect CPU or wall time profile.

  * UPDATED: Deal with old and new profile hook.

  * UPDATED: profile frontend for changed interface.

  * MODIFIED: Deleted pce_welcome/0.  Remove hooking into Prolog's banner
    message since xpce is no longer a dominant part of SWI-Prolog.

  * DQUOTES: Fixed c_mode for string handling

  * DQUOTES: Handle "doc":: regardless of the double_quotes setting and
    various fixes.

  * MODIFIED: Using string(atom) now creates an XPCE string without
    printf translation.  This is no longer necessary since Prolog atoms
    do this part of the translation.  Should affect little because e.g.,
    string('\n') is still a newline.

  * SECURITY: Avoid buffer overrun by using snprintf()

  * PORT: Compatibility with SWI-Prolog V7


============
Package zlib
============

  * DQUOTES: Make tests independent from flag
_______________________________________________
SWI-Prolog mailing list
[email protected]
https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog
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.