Ann: SWI-Prolog 6.6.0 (stable)

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

I have uploaded SWI-Prolog 6.6.0 in the stable branch. This is mainly a
maintenance release to avoid that the development and stable releases
diverge too far. It creates an anchor point just before larger changes
that will be introduced in version 7 and provides some forward
compatibility features that will make it easier to write code for
version 7 that must also run on version 6.

Version 6.6.0 contains an unusual number of incompatible changes. Search
the changes for "MODIFIED:" to find them all. The most important ones are:

   - Banner instrastructure has been made compatible with some other
     systems.  Added version/0 and version/1, deleted '$welcome'.
   - memberchk/2 throws a type error if it finds something that is
     not a list cons cell, not an empty list and not a variable.
   - Definition of eos//0.
   - .plrc (pl.ini in Windows) is no longer searched for in the current
     directory (for security reasons).
   - How #! (binding a file to an interpreter in Unix) is handled is left
     to the OS.  In practice, this means you can specify at most one option
     if portability is desired.
   - The Prolog flag =argv= gives only the arguments that are not 
interpreted
     by Prolog.  This is compatible with most systems that implement this
     flag.  =os_argv= provides all arguments.
   - at_halt/1 and foreign frieds have changed.
   - Some directives that are normally file-scoped are no longer when 
loading
     the initialization file (~/.plrc): style_check/1 and expects_dialect/1.
   - PL_atom_wchars() now also returns a wchar_t array for ISO
     latin 1 atoms.

Of course, there are lots of bug fixes and various goodies. Below are a
few enhancement to the development environment. Search for ADDED: to
find more.

   - The compiler reports variables that appear multiple times in the 
clause,
     but such a way that they do not convey any binding.  The typical case
     is a variable that appears once in multiple branches of a disjunction.

   - There is list_trivial_fails/0 in library(check) that checks for goals
     that resolve to a Prolog predicate but does not match any clauses given
     the partial instantiation provided to the call.  E.g., calling 
hello(x),
     while hello/1 has clauses for hello(y) and hello(z).  Contributed by
     Edison Mera.

   - The debugger break infrastructure is extended and now allows wrapping
     the goal on which you break.  This can be used to print progress such
     as variable bindings without recompiling the sources.  This is 
particularly
     useful for monitoring multi-threaded applications.  There is no user
     interface yet.


	Enjoy --- Jan

P.s.	The HTML version of the manual included in the binary releases is
	broken.  Considering that the impact is rather small and 6.6.1
	is typically not far away, I decided to leave that.


========================================
SWI-Prolog Changelog since version 6.4.1
========================================

  * ADDED: Forward compatibility using ATOM_nil and ATOM_dot

  * ENHANCED: Avoid that debug/3 messages from multiple threads get
    mixed up.

  * DOC: Updated HTML readme for MacOS application

  * FIXED: Now really fixed qsave_program/2.  Jos de Roo.

  * FIXED: library(pack): answered_default/1 was undefined.  Nicos
    Angelopoulos.

  * FIXED: qsave_program('/tmp/img'). ERROR: Undefined procedure: 0/0.
    Jos de Roo.

  * FIXED: Syntax error in library(dialect/sicstus).

  * MODIFIED: Removed style_check/1 =string= style.  See the Prolog
    flag =double_quotes=.  This change also enhances runtime check of
    the argument to style_check/1.

  * PPA: Prepare making a PPA for Saucy Salamander (13.10)

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

    As a consequence, =|swipl -f file.pl|= no longer works.  New code
    should use the -s flag or the new construct =swipl file.pl=.

  * 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

  * ADDED: Recent file (sub)menu.  Carlo Capelli.

  * ENHANCED: Make list_undefined/0 call predicate_name/2 to allow for
hookable messages.  Paulo Moura.

  * PORT: pack_install adds -L<PrologLibDir> to LDSOFLAGS if the system
is thought not to be ELF based (e.g., MacOS).  Samer Abdallah.

  * PORT: Deal wit Mac OS X deployment target for wcsdup()

  * DELETED: X64 and X86 submodules.  These have no role since MinGW

  * DOC: Document more details of commandline processing

  * ADDED: Register .prolog as additional extension for Prolog files.

  * MODIFIED: Remove Prolog flag =associate= (used in the Windows version)

  * FIXED: Syntax error in __WINDOWS__ section

  * MODIFIED: No longer try to be smart about arguments in #!

  * MODIFIED: Several aspects of command line processing

  * CLEANUP: Handling of -p PathSpec and --pldoc[=port] options

  * FIXED: Updated code for new argv meaning.

  * MODIFIED: The =argv= Prolog flag now only contains _unprocessed_
    commandline arguments.  This change is primarily for improving
    compatibility with other systems (e.g., YAP, SICStus).  A new flag,
    called =os_argv= provides the original complete list of arguments.

    Unfortunately, some code must be updated to deal with this change. A
    hack to restore compatibility is to call the following before anything
    else in the application:

      ==
      :- current_prolog_flag(os_argv, Argv), set_prolog_flag(argv, Argv).
      ==

  * ENHANCED: CLP(FD): Give all involved constraints a propagation
       opportunity when a new constraint is posted and propagation
       is always terminating. Efficiently possible thanks to
       term_attvars/2. James Hogan.  Example: Before:

          ?- X #> abs(X), X #> 2.
          %@ X in 3..sup,
          %@ X#>=_G6092,
          %@ _G6100#=abs(X),
          %@ _G6092 in 2..sup,
          %@ _G6100+1#=_G6092,
          %@ _G6100 in 3..sup.

       Now:

          ?- X #> abs(X), X #> 2.
          %@ X in 4..sup,
          %@ X#>=_G1033,
          %@ _G1041#=abs(X),
          %@ _G1033 in 4..sup,
          %@ _G1041+1#=_G1033,
          %@ _G1041 in 3..sup.

  * ADDED: packages/swipl-win submodule

  * ADDED: edit/1: allow for line-position handling.

  * ADDED: Readme file for the App.

  * FIXED: Create new thread in no-debug mode.  Jan Burse.

  * ADDED: PL_thread_attach_engine(): flag PL_THREAD_NO_DEBUG to force
starting the thread in nodebug mode.

  * ADDED: about -> win_message_box, select_ANSI_term_colors

  * FIXED: make logic to decide on the =tty_control= flag platform
independent

  * PORT: Add some MacOS finder integration

  * ADDED: Prolog flag =apple= to detect we are running on a Mac

  * ADDED: PL_exit_hook() to register hooks that are called just before
exit().

  * DOC: Fixed and extended docs for PL_on_halt()

  * FIXED: Do not reset the stdio functions if they are set before init
by the embedding system.

  * DOC: Document the flag =color_term=.

  * DOC: library(gensym): updated and created @see links for better
alternatives

  * INSTALL: Only copy the DLLs that we need

  * PORT: Windows: avoid warnings from mkinstaller.pl

  * FIXED: Locking issue in stream redirection for format/3,
with_output_to/2. Abramo Bagnara.

  * DOC: Updated issues with library(ansi_term).

  * DOC: ancestral cuts.  Richard O'Keefe

  * DOC: LaTeX typo

  * DOC: keysort/2

  * ENHANCED: CLP(FD): isolate global_cardinality/2 from user attributes.
    Before:

       %?- put_attr(A, edges, [a]), global_cardinality([A,B,C], [0-_,1-_]).
       %@ false.

    Now:

       %?- put_attr(A, edges, [a]), global_cardinality([A,B,C], [0-_,1-_]).
       %@ put_attr(A, edges, [a]),
       %@ A in 0..1,
       %@ global_cardinality([A, B, C], [0-_G4383, 1-_G4389]),
       %@ B in 0..1,
       %@ _G4383 in 0..3,
       %@ C in 0..1,
       %@ _G4389 in 0..3.

  * FIXED: Dummy empty warning if no compiler warning refers to a variable.

  * ENHANCED: CLP(FD): Better isolation from user-defined variable
    attributes.  Example:

       :- use_module(library(clpfd)).

       distinct(Vars) :- Vars = [A,B,C,D], all_distinct(Vars), [A,B,C]
               ins 0..2.

    Before:

       %?- put_attr(X, edges, [x]), Vars = [X|_], distinct(Vars).
       %@ false.

    Now:

       %?- put_attr(X, edges, [x]), Vars = [X|_], distinct(Vars).
       %@ Vars = [X, _G1856, _G1859, _G1862],
       %@ put_attr(X, edges, [x]),
       %@ X in 0..2,
       %@ all_distinct([X, _G1856, _G1859, _G1862]),
       %@ _G1856 in 0..2,
       %@ _G1859 in 0..2.

    That is, users can freely use the "edges" attribute themselves.

  * ENHANCED: CLP(FD): Remove branch singletons.

  * FIXED: Inlined unification must revert to normal unification if occurs
               check is active.

  * TEST: compensate for optimization

  * FIXED: Mixup in truth of == and \== predictable warnings.  Keri Harris.

  * ADDED: Move multiton detection into the compiler, so this compiles
      clean: == t :- (v(_A);v(_A)).  ==

  * FIXED: Detection of `multitons' (broken after singleton detection
      extension for dealing with quasi quotations).

  * FIXED: myplus/4 in bounds.pl.  Note that bounds is deprecated in
      favour or library(clpfd).  Markus Triska.

  * ENHANCED: :- at_halt/1 is now term-expanded, such that reloading the
      file does not re-register the hook.

  * FIXED: Apply changes that where missed due to a git conflict

  * UPDATED: Handle new PL_on_halt() interface

  * MODIFIED: Program termination: - at_halt/1 handlers can veto
        termination of halt/0 by calling
          cancel_halt/1.  - PL_at_halt() handlers now have a declared
        return type.  In
          the future, they will be able to cancel termination by
          returning a non-zero status.  Now a warning is printed.  -
        halt/1 and PL_halt() can be called from any thread.

  * FIXED: set_stream/2 issues with recent patch

  * ENHANCED: safe_goal/1, various enhancements: - Distinguish undefined
      predicates - Deal with library meta-predicates (security fix) -
      Module aware call/N support - Print context of encountered problem

  * ADDED: library(sandbox): added a lot of safe primitives.

  * FIXED: safe_goal/1: Catch instantiation_error when trying to proof
      safety of a general goal.

  * CLEANUP: Use DCG // notation for declarations

  * ENHANCED: safe_goal/1, various enhancements: - Distinguish undefined
      predicates - Deal with library meta-predicates (security fix) -
      Module aware call/N support - Print context of encountered problem

  * CLEANUP: Use DCG // notation for declarations

  * FIXED: license/1: list known licenses (found by singleton analysis)

  * ENHANCED: read_term/3: singleton detection with quasi
      quotations. Variables appearing only ones are searched in the quasi
      quotation results.  If found there, they are no real singletons.

  * FIXED: license/1: list known licenses (found by singleton analysis)

  * ENHANCED: read_term/3: singleton detection with quasi
      quotations. Variables appearing only ones are searched in the quasi
      quotation results.  If found there, they are no real singletons.

  * ADDED: library(sandbox): added a lot of safe primitives.

  * FIXED: safe_goal/1: Catch instantiation_error when trying to proof
      safety of a general goal.

  * MODIFIED: Make set_stream/2 behave sensibly on stream pairs. Daniël
      de Kok.

  * CLEANUP: Implementation of set_stream/2.

  * ADDED: Singleton checking inside \+

  * DOC: var_branches style check

  * CLEANUP: Removed two useless assignments

  * FIXED: nb rbtrees (singleton)

  * MODIFIED: Setting style_check/1 and expects_dialect/1 in ~/.plrc
      changes the default for the session.  The settings used to be
      scoped to the file.  This scoping is now controlled by a new option
      =scope_settings= to load_files/2.

  * ADDED: style_check/1: ?- style_check(?(Style)). to return active
      style checks on backtracking.

  * DOC: term_expansion/4, etc.

  * DOC: Document extended singleton warnings

  * DOC: style_check/1 new =no_effect= option

  * DOC: user term_expansion is followed by DCG!

  * CLEANUP: Avoid new warnings in test cases.  Test cases sometimes use
      ugly code by design ...

  * ADDED: compiler warnings for BIPS that have no effect and singleton
      variables in branches (semantic singletons).

  * FIXED: Default handling in setting (spotted by variable balance
      checking)

  * ADDED: Support for warning messages from the compiler

  * ADDED: Provide prolog_load_context/2 =variable_names= and implemented
      goal/term expansion with 4 arguments to process layout information.

  * CLEANUP: some documentation glitches

  * ADDED: New style-check options.  We will include these into the stable
      branch to avoid warnings on code calling style_check/1.

  * TEST: Fixed test code for timeout handling.

  * CLEANUP: Removed bogus test

  * FIXED: Remove meta_predicate/1 declaration for '|'/2.  This is since
      long not a predicate anymore.

  * CLEANUP: Use '$type_error'/2.

  * FIXED: Colourise [:|+] meta-declaration.

  * CLEANUP: Rename $-predicates in DCG expander. This is not needed since
      this code is in a module. Also removed a lot of outdated comments
      and added some new ones.

  * FIXED: base32//1: Singleton I3

  * CLEANUP: library(clpp/bounds): singletons.  Not sure whether this
      was intended.

  * CLEANUP: Branch singletons

  * CLEANUP: Unification against unused variable

  * CLEANUP: In DCG, \+ \+ {...} leads to useless unifications.  We now
      use { \+ \+ G }.  That remains silent.  Eventually, this can (and
      should) be improved in the DCG compiler.

  * FIXED: Emulated shell commands for non-atom arguments.

  * FIXED: library(prolog_pack): parsing of versions with * in them.

  * FIXED: Pass thread-reference in all branches

  * FIXED: library(prolog_colour) to colour "..." terminals properly

  * PORT: Cygwin: install package shared objects in the right
      location. Corinna Vinschen.

  * PORT: Updated Cygwin port by Corinna Vinschen

  * FIXED: make/0: avoid loading files twice.  Paulo Moura.

  * FIXED: PL_thread_engine_attach() did not initialise the thread
      locale. Carlo Capelli.

  * FIXED: Make sure the config var SO_PATH is set to PATH in Windows,
      and not WINEPATH.

  * CLEANUP: Avoid using SO_PATH for two different purposes

  * FIXED: DCG argument of phrase_from_stream/2 is not identified as such
      (meta_predicate/1).

  * FIXED: Exception term if a breakpoint cannot be set.

  * DOC: Provisional documentation for prolog:break_hook/6

  * ADDED: Call prolog:break_hook/6 from D_BREAK

  * MAINT: Use function rather than macro to make setting breakpoints
      easier.

  * MAINT: Debug topic msg_vmi to print virtual machine execution

  * MAINT: Small cleanup in shift messages

  * CLEANUP: Introduce CA1_FVAR for virtual machine instruction arguments
      that access variables as `firstvar', i.e. assume that the pointed-to
      location is not initialised.  Can be used to generalise a bit more
      in GC.  For now, we need it for D_BREAK GC issues.

  * FIXED: Use fetchop() rather than decode() to avoid D_BREAK

  * FIXED: Bug#113: Write `Prolog' numbers under locals that have a
      decimal point other than ".".

  * FIXED: library(prolog_colour): handling of :- meta_predicate
      Module:Head.

  * FIXED: Typo in warning from trace interception hook

  * FIXED: Line offset of breakpoint messages.

  * FIXED: Bug#113: format using ~:f using a locale where the decimal
      point is not ".".  Eugeniy Meshcheryakov.

  * FIXED: clearUninitialisedVarsFrame() if it encounters a D_BREAK

  * ADDED: library(console_input), providing completion support for the
      qpConsole window.

  * FIXED: New Thread in pqConsole.

  * ADDED: PL_wchars_to_term(): wide-character string --> term conversion

  * ADDED: PL_put_atom_nchars(): allow for passing len as -1.

  * MODIFIED: PL_atom_wchars() now also returns a wchar_t array for ISO
      latin 1 atoms.

  * ADDED: PL_new_atom_nchars() and PL_new_atom_wchars() now accept
      (size_t)-1 as length.

  * ADDED: Support file menus for the pqConsole.

  * FIXED: Thread destruction if another threads waits for my input queue.

  * BUILD: Avoid missing documentation to remove the old docs


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

  * FIXED: Mixup of Ruo/Ro variables in r_lines/6

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

  * FIXED: Incorrect handling of [] at various places

===============
Package archive
===============

  * PORT: Deal Win64 off_t handling

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

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

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

  * ADDED: style_check(-no_effect) to compensate for some unifications
    that have no effect.  Suggests that is some room for optimization.

  * CLEANUP: Avoid (extended) singleton warnings.

  * FIXED: delete_first_ht/3: Not only compute load, but also update it.

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

  * UPDATED: Handle new PL_on_halt() interface

  * PORT: Cygwin updates by Corinna Vinschen

===========
Package cpp
===========

  * DOC: Document PREDICATE0() and NAMED_PREDICATE()

  * ADDED: PREDICATE0(name) as alternative to PREDICATE(name, 0) that
    avoids unused parameter warnings.

  * MODIFIED: NAMED_PREDICATE() takes a string as name.

  * FIXED: PREDICATE() macro issues

  * ADDED: Macros NAMED_PREDICATE() and NAMED_PREDICATE_NONDET() to
    allow defining predicates that have a name that cannot be expressed
    as a C identifier.  This patch also casts unused variables to (void)
    to avoid warnings.  With help from Carlo Capelli.

  * MODIFIED: Accessing PREDICATE() arguments using the macros A1..A10:
      - These macros are now defined as PL_av[n] instead of _av[n] to
        reduce the risc for name clashes.  - These macros are now also
      availabl as PL_A1..PL_A10 - If the macro PL_SAFE_ARG_MACROS is
      defined, A1..A10 will *NOT*
        be defined.  This can be used to avoid conflicts with other
        frameworks, such as Qt5, which also uses A1...

  * ADDED: Support wchar_t* almost everywhere where char* is allowed.

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

  * FIXED: Race condition if two threads try to create a new thread
    pool lazily.

  * FIXED: Updated for new prolog flag argv

  * MODIFIED: Send JSON as application/json; charset=UTF-8

  * CLEANUP: More elegant implementation for computing byte-length
    in encoding

  * CLEANUP: Branch singletons

  * CLEANUP: Another branch singleton.

  * FIXED: Singleton in interactive_httpd->authorise causes poor error
    message.

  * CLEANUP: Removed detection of unused OpenID NS

  * INSTALL: Avoid double installation of shared objects. Corinna Vinschen.

  * DOC: Improved documentation of cookie handling


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

  * PORT: Use win_add_dll_directory/1 and generalise the search a bit

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

  * DQUOTES: Support strings.

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

  * FIXED: Updated for new prolog flag argv

===========
Package nlp
===========

  * PORT: Deal wit Mac OS X deployment target for wcsdup()

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

  * FIXED: Updated for new prolog flag argv

  * ADDED: Allow for a variable type in a mode declaration.  Samer
    Abdallah.

  * CLEANUP: Avoid semantic singleton message

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

  * FIXED: Only share variables between options and body to maintain
    first-var and singleton properties.

  * CLEANUP: Singletons

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

  * PORT: Deal wit Mac OS X deployment target for wcsdup()

  * FIXED: rdf(_,_, literal(prefix(_), _)).  Jacco van Ossenbruggen.

  * ADDED: Extend rdf_graph_property/2 with persistent(Boolean).
    Jacco van Ossenbruggen.

  * FIXED: Avoid unlocking the RDF store directory twice.

  * FIXED: rdfe_undo (bug found by balanced var check)

  * FIXED: Loading Turtle from a stream did not reset the stream encoding.

  * FIXED: Detecting subjects for turtle writer.

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

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

  * DQUOTES: Various fixes

  * ADDED: role attribute

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

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

  * FIXED: sem_time_candidate

  * FIXED: owl_time_xsd_candidate/3 error spotted by singleton detection.

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

  * CLEANUP: Use standard naming for test files.

  * DQUOTES: Do not rely on flag

===============
Package windows
===============

  * FIXED: Updated for new prolog flag argv

  * CLEANUP: Do not ignore return values and delete dead code.

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

  * FIXED: swipl-win.rc to deal with new argv

  * FIXED: Updated for new prolog flag argv

  * ADDED: Allow for emacs(File:Line:LinePos)

  * FIXED: Locking issue that causes long delays on halt if xpce is
    running in separate thread.

  * FIXED: Two new singleton warnings (one was a bug).

  * FIXED: Priority issue in GUI term pretty printer

  * UPDATED: Handle new PL_on_halt() interface

  * ENHANCED: Allow cancelling halt

  * CLEANUP: Variable style issues.

  * PORT: Rename installation helper xpce-install into xpce-copy to prevent
    Windows from trying to run this program as admin.  Corinna Vinshen.

  * FIXED: Start xpce from a background thread.

  * PORT: update of the Cygwin port by Corinna Vinschen

  * CLEANUP: Avoid more semantic singletons

  * FIXED: Semantic singletons.  One fixes a bug in the class
    prolog_predicate.

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