Logtalk 2.39.0 released

Announcements of new Logtalk releases and events

Moderator: Paulo Moura

Post Reply
Paulo Moura
Logtalk developer
Posts: 479
Joined: Sat May 05, 2007 8:35 am
Location: Portugal
Contact:

Logtalk 2.39.0 released

Post by Paulo Moura » Sun Feb 28, 2010 4:07 pm

Hi!

Logtalk 2.39.0 is now available for downloading. This release removes support for outdated Prolog compilers and for Prolog compilers that don't support the standard directive multifile/1 or, in general, that do not provide support for de facto and official standards. In addition, this release reintroduces parametric categories and changes semantics of the parameter/2 built-in execution-context method when used in category predicates, removes an overly restrictive meta-predicate compilation rule, adds meta-predicates sort/3 and msort/3 to the library object list, adds library implementations of red-black trees and heaps, improves the benchmarking test suits, improves several examples, and updates the Windows installer in order to detect Prolog compilers installations on 64 bits version of Windows.

Upgrading from previous release:

* See the "UPGRADING.txt" file and the detailed release notes below for more details.

Known compatibility issues:

* B-Prolog: A bug in the delete_file/1 built-in predicate on Windows results in spurious messages when compiling and loading source files.
* YAP: Some bugs in multi-threading support prevent some thread examples from running.
* XSB: Some bugs in multi-threading support prevent some thread examples from running.

Detailed release notes:

* Removed support for the following Prolog compilers: ALS Prolog, Amzi! Prolog, BinProlog, GNU Prolog, IF/Prolog, JIProlog, K-Prolog, LPA MacProlog, LPA WinProlog, MasterProlog, Open Prolog, Prolog II+, and Quintus Prolog. Only Amzi! Prolog, GNU Prolog, and Quintus Prolog seem to be actively maintained. Amzi! Prolog ignores the official and de facto Prolog standards. GNU Prolog is currently missing crucial support for the standard directive multifile/1. Quintus Prolog is superseded by SICStus Prolog (and required hacks to the Logtalk compiler that rendered it incompatible with all the other Prolog compilers).

* Removed support for all Prolog compilers that don't support the ISO Prolog standard directive multifile/1. Removed the "multifile_directive" config flag from the config files of supported Prolog compilers.

* Reintroduced parametric categories. Changed semantics of the parameter/2 built-in execution-context method when used in category predicates to access the category parameters instead of the parameters of the object importing the category. This change provides safer and more robust use of parameter/2 calls in categories.

* Improved compile-time error-checking of calls to the parameter/2 built-in execution-context method

* Removed the meta-predicate compilation safety rule that required the number of normal arguments to be equal or greater than the number of extra arguments required by a closure. This overly restrictive rule prevented the definition of some useful and safe meta-predicates.

* Moved all config files for no longer supported Prolog compilers to the "configs/unsupported" folder. Moved all integration scripts for no longer supported Prolog compilers to the "integration/unsupported" folder.

* Changed the default value of the compiler flags "altdirs" and "clean" to "on" for all supported Prolog compilers. Added a read-only compiler flag "modules".

* Added index/1 directives for the predicate lookup caching predicates to the SWI-Prolog integration files (see "integration/logtalk_comp_swi.pl"). These directives may or may not improve performance, depending on your application.

* Added meta-predicates sort/3 and msort/3 to the library object "list". These sorting predicates accept as first-argument a closure to be used for comparing list terms when sorting.

* Added new predicate declarations to the "dictionaryp" library protocol: clone/3, clone/4, previous/4, next/4, min/3, max/3, apply/4, delete_min/3, delete_max/3, map/2, and update/4. Removed the insert_all/3 predicate declaration. Added a missing meta-predicate directive for the predicate map/3. Improved predicate documentation.

* Added new predicates preorder/2, inorder/2, and postorder/2 to the library object "bintree". Corrected broken definition of the meta-predicate map/3. Added definitions for the new predicates in the updated "dictionaryp" library protocol.

* Added a port of the Vitor Santos Costa implementation of Red-Black trees (found on the YAP library "rbtrees"). The port, "rbtree", implements the "dictionaryp" library protocol. Work in progress.

* Added a port of the Richard O'Keefe implementation of heaps. This port provides both max-heap and min-heap implementations. Work in progress.

* Updated the "parametric" example to also illustrate the use of parametric categories.

Updated the "metainterpreters" example, adding a new meta-interpreter for counting the number of resolution steps when proving a goal.

* Added the classical naive list reverse benchmark test to the "benchmarks" example. Added a version of the benchmark test module for ECLiPSe. Updated the "benchmarks" object in order to also run the module tests whenever the back-end Prolog compiler supports modules.

* Simplified usage of the "mtbatch" multi-threading benchmarks example by using conditional compilation directives for the Prolog-specific predicates instead of a parametric object.

* Updated the loader file for the "encodings" example in order to only load the UTF-32 source file ("mythology.lgt") on Prolog compilers supporting this encoding (currently, only CxProlog and SICStus Prolog). This avoids misleading loading error messages when using SWI-Prolog or YAP.

* Updated the "cc" example with predicate definitions for Ciao and added a new predicate, expand_path/2, for all supported back-end Prolog compilers.

* Updated the Logtalk Windows installer in order to detect the ECLiPSe 6.1 version (both 32 and 64 bits versions). If both 6.0 and 6.1 versions are installed, the installer creates a shortcut for using version 6.1 as the back-end Prolog compiler.

* Updated the Logtalk Windows installer in order to detect SICStus Prolog 4.x installations when running on Windows 64 bits versions.

* Update the Windows installer script in order create integration shortcuts for both console and window versions of SWI-Prolog, to check for the new names of the SWI-Prolog executables ("swipl.exe" and "swipl-win.exe") when creating the shortcuts, and to detect SWI-Prolog 64 bits versions.

* Updated the Windows installer to detect CxProlog 0.97.4 and later versions (which use a different registry entry from previous versions).

Happy logtalking,

Paulo
Paulo Moura
Logtalk developer

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest