pkgsrc changes:
- Rename swi-prolog to swipl to follow upstream nomenclature
- Add all main packages (except X11) to swi-prolog-lite.
After CMake migration in order to generate the documentation and being able
to use it (e.g. via help/2) it is needed to add basic, archive, ssl and term
packages.
All X11 packages are provided by swi-prolog-packages.
- Adjust pkgsrc Makefile-s logic to upstream CMake migration:
o Uncoditionally disable not wanted packages in Makefile.common (to avoid
possible PLIST mismatches; please note that this will probably disable
tipc package on Linux!).
All other installed packages are enabled/disabled via
swi-prolog-{lite,packages,jpl} Makefile.
o Add libarchive, ossp-uuid and openssl build dependency to
swi-prolog-packages. Despite these are provided by swi-prolog-lite
they are needed as part of the build of swi-prolog-packages too.
o Remove no more needed logic to check and eventually start X server to
build documentation. Should address PR pkg/42047.
- Remove an unconditional CHECK_WRKREF_SKIP, this was needed on FreeBSD
but unfortunately it is not clear why. If this is still needed please let
me know in order to try to investigate further and address that.
- Bump API requirements to 8.0.1 in buildlink3.mk to be on the safe side
now that shared libraries are provided on all platforms.
Changes:
8.0.1
-----
Indexing on multiple arguments together, indexing inside compounds,
Mode-directed tabling, saved states using ZIP files, many deployment
enhancements. Moved build environment to CMake and removed most of
the build tool dependencies. Builds documentation along with the
binary.
Please note that this is just a short summary. Unfortunately the
complete changelog is very long, full changelog can be found at:
<http://www.swi-prolog.org/ChangeLog?branch=stable&from=7.6.4&to=8.0.1>
pkgsrc changes:
- Add patches/patch-src_os_pl-files.c to avoid overlapping `src'
and `dst' in srtcpy(3). It is an undefined behaviour and it leads to build
issue in swi-prolog-packages on platforms that uses SSP.
- readline dependency is no longer needed for swi-prolog-lite.
The readline functionality is now provided as a package via
swi-prolog-packages.
- Inject CFLAGS via COFLAGS and pass -fPIC via CMFLAGS so that
swi-prolog-jpl will link
- Add patches/patch-src_pl-rsort.c to use FreeBSD qsort_r(3)
instead of using nested functions. This is probably more portable
and has less problems (e.g. does not need for PaX MPROTECT).
Changes:
7.6.x
-----
Major release. Multi-argument indexing, better multi-threaded
performance, threaded global GC (atoms and clauses), mode-directed
tabling, restored same expand and directive semantics for initial
load and reloading files, cleaner initializatin and command line
handling.
7.4.x
-----
Major release. More robust and better scalable support for multi-core
hardware, tabling, engines. Many enhancements to the RDF, HTTP and
SSL libraries. This is the first release licensed under the Simplified
BSD (BSD-2) license.
7.2.x
-----
Major release, providing native key-value support by means of dicts,
native strings using "hello world" syntax, web-accessible Prolog
engines (Pengines) and a high level SQL library called CQL.
Please note that this is just a summary of the most important changes,
for more information please give a look to:
<http://www.swi-prolog.org/ChangeLog?branch=stable>
are replaced with .include "../../devel/readline/buildlink3.mk", and
USE_GNU_READLINE are removed,
* .include "../../devel/readline/buildlink3.mk" without USE_GNU_READLINE
are replaced with .include "../../mk/readline.buildlink3.mk".
to address issues with NetBSD-6(and earlier)'s fontconfig not being
new enough for pango.
While doing that, also bump freetype2 dependency to current pkgsrc
version.
Suggested by tron in PR 47882
Notable changes in 5.11.18
--------------------------
Experimental extension to run the development tools in a
separate thread, so you can edit away while your program runs.
Notable changes in 5.11.17
--------------------------
Fix error with quoted wide atoms. This causes write/read to fail
for any term that contains an atom that needs quotes and has
Unicode points >= 256.
This also contains the copy_term/2 patch to exploit sharing ...
Notable changes in 5.11.16
--------------------------
Unicode handling is certainly a step forward wrt. character
classification. Unicode symbols have been modified to `glue'
like ==, =<, etc.
Finally, there is per-thread CPU statistics for MacOS
Finally, selection handling in the Windows console is a bit better.
Trail-stack usage is now significantly less.
Notable changes in 5.11.15
--------------------------
Revert the change to write_canonical/1
Notable changes in 5.11.14
--------------------------
There is a lot of mostly small fixes. The most notably are changes
to the ODBC interface, which now supports Unicode (at least for queries,
not for all aspects). It's got a new option to ODBC connections:
the encoding. The default should work fine on Windows and UTF-8 based
Unix databases. Thanks to Matt Lilley and Carlo Capelli.
There is quite some reorganisation in the sources due to work on sharing
most of the OS interface and I/O between YAP and SWI and make the setup
of packages such that the makefiles can be shared between SWI and YAP.
Notable changes in 5.11.13
--------------------------
This version fixes some more issues in =@=/2, various minor issues
and may have big impact on trail-stack usage of your program.
It also fixes the reported socket issue with XPCE on Win64.
Notable changes in 5.11.12
--------------------------
This contains some quite important fixes, avoiding simply wrong
answers as well as some crashes. Besides the usual small stuff,
it has two important rewrites:
- Standard order comparison now avoids recursion using the C-stack.
This is a bit of a trial. Timing shows that processing last-argument
nested terms is about 10% slower and other nesting is about 50% faster
and no longer causes uncrontrolled stack-overflows. This is promising,
but the amount of work is considerable, notably for this case, where
the possibility of comparison to raise an exception is new.
- =@=/2 is completely rewritten. If you are looking for a challenge,
there is one in the current version of =@=/2 (variant/2). The
implementation is in src/pl-prims.c and the test cases in
src/Tests/core/test_term.pl. =@=/2 has gone through some
iterations. If all is right, the current version
- Fails as soon as it finds a difference, without processing
a whole term.
- Handles rational trees (cyclic terms).
- Deals with variables shared between the argument terms.
Notable changes in 5.11.11
--------------------------
Top level now reveals the internal `sharing' of subterms in answer
substitutions. This notably deals with cyclic terms.
Notable changes in 5.11.10
--------------------------
Floats are no longer printed through the C-library printf using %g.
Instead, Prolog write writes a float such that reading it back
recontructs a float that is bitwise equivalent (==) to the input.
This is based on a library by David M. Gay. The output routine uses
the same rules on when to use exponential notation as the GNU C-library's
%g format. It prints as few as possible digits to reach == equivalence,
but this is typically more than it used to print. If you want fewer digits,
use format/3 (e.g., ~6f) or round (A is round(F*10000)/10000, write(A)).
rdf_reachable/2 now, like rdf_has/3, respects defined RDF predicate properties.
In addition, it provides look-ahead which ensures deterministic success on
the last answer. This means that rdf_reachable(A, owl:sameAs, B) (with either
or both A and B instantiated) behaves as expected and much more efficiently.
There are a lot of changes to quoted syntax, notably for 0'<char> and
some for quoted atoms. Except for \e being read as 27 (esc), all sensible
previously valid input is parsed consistently (I wouldn't be surprised if
it is possible to construct cases where you get different output, but I
would be surprised if any real program is affected). See mailinglist for
details.
alternative from mk/jpeg.buildlink3.mk
This allows selection of an alternative jpeg library (namely the x86 MMX,
SSE, SSE2 accelerated libjpeg-turbo) via JPEG_DEFAULT=libjpeg-turbo, and
follows the current standard model for alternatives (fam, motif, fuse etc).
The mechanical edits were applied via the following script:
#!/bin/sh
for d in */*; do
[ -d "$d" ] || continue
for i in "$d/"Makefile* "$d/"*.mk; do
case "$i" in *.orig|*"*"*) continue;; esac
out="$d/x"
sed -e 's;graphics/jpeg/buildlink3\.mk;mk/jpeg.buildlink3.mk;g' \
-e 's;BUILDLINK_PREFIX\.jpeg;JPEGBASE;g' \
< "$i" > "$out"
if cmp -s "$i" "$out"; then
rm -f "$out"
else
echo "Edited $i"
mv -f "$i" "$i.orig" && mv "$out" "$i"
fi
done
done
New in 5.11.9
Lots of changes. Mostly relevant to (semantic) web.
Also some Windows enhancements, such as better errors from sockets
and portability of extended file operations library.
New in 5.11.8
This version is exactly the same as version 5.10.2.
Mostly a bugfixing release.
New 5.11.7
Lots of stuff. The highlight is on environment issues (PlDoc, PceEmacs),
but there is a lot of other stuff as well.
If you use PlDoc, be aware that the previous release has a security issue.
New in 5.11.6
Many bug fixes and big speedup for some RDF applications (notably
those involving many graphs). The rest are mainly minor issues.
New in 5.11.5
This is a bug-fix release. This version also includes some of
the results of the ISO WG17 meeting in Edinburgh.
There is a modification to absolute_file_name/3 with regard to
directory handling.
There is -hopefully- a fix for a weird conflict around Bool when
compiling using Macports.
Changes in 5.11.4:
* ADDED: library coinduction.pl, after discussion with Gopal Gupta.
* CLEANUP: Share more of the Makefiles between Windows and the rest
* FIXED: destruction of a queue if a thread is waiting to write
* FIXED: error by current_blob/2.
* MODIFIED: incorrect handling of (^)/2 in setof/3 and bagof/3.
The new version should now fully comply to ISO. As of now,
- The predicate ^/2 no longer exists
- ^ is only handled by bagof/setof if it appears
directly at the toplevel of the 2nd argument.
E.g., the following is NOT allowed:
setof(X, (foo(X); Y^foo(Y)), L).
Code must be rewritten. At runtime, problems are signalled
by ^/2 being undefined. compile-time analysis can be achieved using
gxref/0 (or check/0 for quick-and-dirty).
* FIXED: GC error when nesting (if->then/*no-else*/) inside \+.
Thanks to test-case by Keri Harris.
* FIXED: retractall(x(X,X)). Roberto Tiella.
Changes in 5.11.3:
* FIXED: Top level now performs expand_goal/2 *after* correcting the
goal.
* MODIFIED: PL_CUTTED -> PL_PRUNED. Kept PL_CUTTED as a #define for
compatibility.
* FIXED: Correctly read RDF/XML that is in UTF-8 on Windows.
* ENHANCED: Faster enumeration of subjects for writing small RDF gaphs
* ENHANCED: Better sizing of the hash-tables.
* CLEANUP: Use size_t in many places for RDF-DB
* ADDED: RDF-DB index on +,+,+. This provides a significant speedup in
loading databases with multiple objects on the same SP.
* ADDED: Syntax closer to ISO with set_prolog_flag(iso,true).
See Prolog flag iso for a detailed description.
* MAINT: Fix compilation under -DO_DEBUG. Andy Valencia.
* FIXED: Syntax: proper bracketing of arguments
* MODIFIED: Simpler syntax within { }.
According to 6.3.6 the term within curly brackets is read with
priority 1201, so no extra parentheses are needed.
Changes in 5.11.2:
* ADDED: lang_equal/2 to RDF library to test language equality. Jacco
van Ossenbruggen
* FIXED: Error from http_absolute_location/3 if an alias is not
defined.
* FIXED: Avoid error in edit/1 hook if an HTTP path-alias is undefined.
* ADDED: Just-in-time creation of thread-pools for the HTTP server
using the new hook
http:create_pool/1. Cleanup of the code for faster spawning of
worker-threads.
* MODIFIED: Threaded server defaults: keep-alive-timeout is now 2
seconds (was 5)
and the worker-count is now 5 (was 2). Worker-count is increased
because many
servers need it as since version 5.9.x there is hardly a price for
more workers.
* ADDED: option hide_children(Bool) to make prefix handlers hide their
children
and allow http_delete_handler to delete a handler-by-id.
* PORT: Realise set_end_of_file in Windows version
* ENHANCED: Implement safe-locking of the RDF persistent database
* ADDED: set_end_of_stream/1.
* PORT: Fix for MS VS2010 compilation. Degski.
* ADDED: lang_matches/2 to library(rdf_db)
* FIXED: url_to_filename/2 in rdf_persistency was broken due to
steadfastness
fix in DCG (commit 1a1a5699). Jacco van Ossenbruggen.
* FIXED: list_settings/0. Li Li.
* FIXED: handling of = and contains in xpath. Carsten van Weelden.
* ADDED: library(semweb/sparql_client) providing a SPARQL client API.
* ENHANCED: Layout for listing where the body resides in another
module.
* ENHANCED: Provide style pldoc(Id) with each PlDoc handler
* ADDED: reply_html_page/3: re-stylable HTML pages
* FIXED: Possible crash in cleanup handlers.
See comment above discardChoicesAfter() for more details.
* ENHANCED: Make it possible to give syntax-warnings with exact
positions.
* ADDED: Warnings for missing quotes for , and |
* MODIFIED: Stricter list syntax. E.g. [a,b|c,d] or [a|b|c] are now
illegal.
In the unlikely case this was intended, the term after the bar (|)
must be
enclosed in brackets. I.e. [a,b|(c,d)] or [a|(b|c)].
* FIXED: Syntax: proper quoting of | and ,
* PORT: Improve behavioral consistency between 32-bit and 64-bit
allocation
* FIXED: Memory leak for threads allocating chunks of 512 bytes. Matt
Lilley.
* ADDED: computing SHA incrementally. Ivan Shmakov
* INSTALL: Item#567: make check of xpce loading user's .plrc
* FIXED: steadfastness in DCG translation. Item#379
* FIXED: Item#559: hanging system in GC. Only affects 32-bit platforms
when doing GC on large stacks that have >8Mb chunks of continuous
garbage. Ulrich Neumerkel.
* DOC: errors for atom_length/2. Ulrich Neumerkel.
* ADDED: Library(http/js_write) to embed JavaScript calls into HTML
pages
* FIXED: Processing of stack-limit options in thread_create/3. Jacco.
* FIXED: Avoid direct access to private predicates of module error.
* ADDED: rdf_reachable/5, providing a distance limit and returning the
distance.
* ADDED: rdf_is_resource/1 and rdf_is_literal/1 for completeness.
* FIXED: Thread-creation if ulimit -s == infinite.
* FIXED: Do not skip character after . in turtle parser. Lourens van
der Meij.
* PORT: Windows snprintf --> _snprintf
* MODIFIED: On systems that provide getrlimit(), the default
C-stack-size of
created threads is the same as that of the main thread. This was
already
the default on Linux, but not on e.g. MacOS.
* ADDED: statistics(c_stack, StackSize) to query the system (C-)stack
limit.
For consistency, thread_create now also accepts c_stack as parameter.
This patch also cleans some type-issues with regard to stack-size
specification and removes 2Gb limit for Win64 due to the use of long.
* ADDED: Skos prefix
* ADDED: http_server_property/2. This patch also does some cleanup to
the meta-predicate declarations for the multi-threaded HTTP server.
* FIXED: Check for integer overflows in numeric-arguments for
format-specifiers
* FIXED: Possible buffer overflow on format('~200f', [1]). Mike
Elston.
* ADDED: library(http/http_openid), supporting OpenID consumers and a
server.
* ADDED: library(http/http_host) to obtain the public hostname of our
HTTP service
* CLEANUP: Stricter type-checking in load_files/2. Discussion on
comp.lang.prolog.
* FIXED: Old naming conventions. Julian Zubek.
* FIXED: Atom-GC for blobs that do not have PL_BLOB_UNIQUE. Samer
Abdallah.
* ADDED: Allow for selective importing of operators in use_module/2.
After discussion with Vitor.
* PORT: Do not use chrpath if the kernel is not a shared object
* PORT: Some type-issues in socket libs (nonblockio.c)
I do not think any of these could have been fatal. They just produce
alarming messages from the compiler.
Changes in 5.11.1:
* PORT: Windows: make fake EWOULDBLOCK error compatible with new def in
VS2010
* PORT: Fix download of Windows prerequisites for Windows 7. Degski.
* ADDED: Support for "406 Not Acceptable" responses in the HTTP server.
* INSTALL: make prepare check all checked-out modules, regardless of
-a.
* FIXED: Cleanup after uncaught stack-overflow exceptions. Paul
Singleton.
* DOC: Fixed code for skeleton client. Mike Elston.
* FIXED: ?= for cases where the arguments do not unify. Marco Montali.
* FIXED: Possible crash on stack-shift in cleanup handler. Jochem
Liem.
* FIXED: Possibly wrong association of $and in frozen/2. Samer
Abdallah.
* FIXED: Handling option register_namespaces(true) in rdf_load/2.
Vangelis Vassiliadis.
* MODIDIED: rdf_assert/4 now discards *complete* duplicates (incl
source).
* PORT: Avoid including termios.h into pl-os.h to localise the
dependencies
and (hopefully) make the system compile on Solaris.
* PORT: Get prototype for posix_openpt(), avoiding warning
* PORT: Move time-dependencies where they are needed; use POSIX
clock_gettime() if it is provided.
* DOC: Enhance comments of rb_insert/4 and rb_insert_new/4.
* MODIFIED: Make rdf_meta/1 module-aware. This means that calls are
only expanded if they resolve to the exact predicate that is declared
using rdf_meta. This might break code relying on the old behaviour
that expansion took place regardless of the module.
It is possible to get a warning on calls that used to be expanded
and are now not using this call before *loading* the program:
?- debug(rdf_meta).
The new code also expands NS:Local appearing literally in the head
of rdf_meta-declared clauses.
Notable changes in SWI-Prolog 5.11.0:
* ODBC now properly handles locale. This means you can
use it with Unicode if you use a UTF-8 based locale.
* Recently reported manifest problems around xpce should be
fixed with help from Degski.
* Message queues can now be destroyed while they have suspended
writers, making pipe-like cooperation between threads much easier.
* Using set_prolog_flag(qcompile, auto), you can ask the system
to automatically maintain quick-load versions of your source-files.
This can greatly improve development comfort for really large
applications.
* Jeff Rosenwald contributed an interface for Google protocol buffers
Notable changes in SWI-Prolog 5.9.10:
* A lot of stuff has been added to enhance the compatibility to SICStus.
This involves some changes to the kernel, some additions to the libraries
and starting and populating a SICStus emulation layer. All this was
initiated by the with to make the Alpino NLP parser suite
(http://www.let.rug.nl/vannoord/alp/Alpino/) available for SWI-Prolog.
Thanks to Gertjan van Noord, this is now almost reality (there
are some remaining tweaks, notably with the Tcl/Tk interface).
* Also various enhancements and fixes to the tabbed-editing support for
the built-in editor.
or USE_X11BASE set, but don't include mk/x11.buildlink3.mk directly or
via buildlink3.mks
- introduce BUILDLINK_PREFIX.libXpm as alias for BUILDLINK_PREFIX.xpm
in the !modular case
- fix some cases where the check for libX11 couldn't work at all by using
C++ for compilation without including the proper headers
Verified using a full X11_TYPE=xorg bulk build without additional
breakage. Discussed with salo@, wiz@ and send to packages@ for feedback.
packages with the modular Xorg equivalent. Those are falling back
to the old location by default, so this commmit doesn't change
dependencies.
graphics/xpm ==> x11/libXpm
fonts/Xft2 ==> x11/libXft
x11/Xfixes ==> x11/libXfixes
x11/xcursor ==> x11/libXcursor
x11/Xrender ==> x11/libXrender
x11/Xrandr ==> libXrandr
Use portable way to compute timezone offset instead of timezone/daylight,
the former is a function on some BSDs and the latter doesn't even exist
in DragonFly. Fix PLIST on swi-prolog-packages to not use NetBSD ELFism.
Bump revision of swi-prolog-lite and swi-prolog-packages.
The 5.6.x release consolidates the 5.5.x development stream started in 2004.
Highlights:
* UNICODE character set support
* Unbounded integer arithmetic and rational numbers
* New and faster CHR release
* Added clp(r) constraints over reals
* Many enhancements to the web and notably sematic web libraries
* Much more ...
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
Several changes are involved since they are all interrelated. These
changes affect about 1000 files.
The first major change is rewriting bsd.builtin.mk as well as all of
the builtin.mk files to follow the new example in bsd.builtin.mk.
The loop to include all of the builtin.mk files needed by the package
is moved from bsd.builtin.mk and into bsd.buildlink3.mk. bsd.builtin.mk
is now included by each of the individual builtin.mk files and provides
some common logic for all of the builtin.mk files. Currently, this
includes the computation for whether the native or pkgsrc version of
the package is preferred. This causes USE_BUILTIN.* to be correctly
set when one builtin.mk file includes another.
The second major change is teach the builtin.mk files to consider
files under ${LOCALBASE} to be from pkgsrc-controlled packages. Most
of the builtin.mk files test for the presence of built-in software by
checking for the existence of certain files, e.g. <pthread.h>, and we
now assume that if that file is under ${LOCALBASE}, then it must be
from pkgsrc. This modification is a nod toward LOCALBASE=/usr. The
exceptions to this new check are the X11 distribution packages, which
are handled specially as noted below.
The third major change is providing builtin.mk and version.mk files
for each of the X11 distribution packages in pkgsrc. The builtin.mk
file can detect whether the native X11 distribution is the same as
the one provided by pkgsrc, and the version.mk file computes the
version of the X11 distribution package, whether it's built-in or not.
The fourth major change is that the buildlink3.mk files for X11 packages
that install parts which are part of X11 distribution packages, e.g.
Xpm, Xcursor, etc., now use imake to query the X11 distribution for
whether the software is already provided by the X11 distribution.
This is more accurate than grepping for a symbol name in the imake
config files. Using imake required sprinkling various builtin-imake.mk
helper files into pkgsrc directories. These files are used as input
to imake since imake can't use stdin for that purpose.
The fifth major change is in how packages note that they use X11.
Instead of setting USE_X11, package Makefiles should now include
x11.buildlink3.mk instead. This causes the X11 package buildlink3
and builtin logic to be executed at the correct place for buildlink3.mk
and builtin.mk files that previously set USE_X11, and fixes packages
that relied on buildlink3.mk files to implicitly note that X11 is
needed. Package buildlink3.mk should also include x11.buildlink3.mk
when linking against the package libraries requires also linking
against the X11 libraries. Where it was obvious, redundant inclusions
of x11.buildlink3.mk have been removed.