Logtalk 2.40.0 released

Announcements of new Logtalk releases and events

Moderator: Paulo Moura

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

Logtalk 2.40.0 released

Post by Paulo Moura » Tue Jun 15, 2010 11:01 pm


Logtalk 2.40.0 is now available for downloading. This release implements a call//1 built-in non-terminal, changes the scope of the built-in methods phrase/2-3 for more consistent meta-predicate semantics, clarifies the scope of the term-expansion and goal-expansion mechanisms, fixes all known bugs, adds experimental on-line help support, adds man pages for all POSIX shell scripts, bundles Victor Lagerkvist's Verdi Neruda (a meta-interpreter collection that includes both top-down and bottom-up search strategies), and includes portability updates for Ciao Prolog, ECLiPSe, Qu-Prolog, SWI-Prolog, XSB, and YAP.

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. In addition, a bug in the YAP 6.0.4 Windows version results in syntax errors when loading some library objects.
* XSB: Some bugs in multi-threading support prevent some thread examples from running. Use of the latest XSB CVS version is recommended.

Detailed release notes:

* Bundled version 1.0 of Verdi Neruda, a meta-interpreter collection that includes both top-down and bottom-up search strategies. Thanks to Victor Lagerkvist for his contribution.

* Added experimental on-line help support using the new "help" example. See the example "NOTES.txt" file for a list of current operating-system and back-end Prolog compiler limitations.

* Changed the representation of meta-argument which are goals in the meta_predicate/1 directives from "::" to "0". When compiling calls to Prolog module meta-predicates, the meta-argument indicator ":" is interpreted as "0", which will work for most cases. Due to the lack of standardization of the Prolog meta_predicate/1 directive, special care must taken when calling both Prolog proprietary built-in meta-predicates and Prolog module meta-predicates.

* Changed the implementation of the term and goal expansion mechanisms in order to only be performed automatically by the Logtalk compiler when compiling a source file. When dynamically creating entities at runtime or when asserting clauses, the term_expansion/2 and goal_expansion/2 built-in methods must be called explicitly.

* Corrected a bug when using the ::/2, ::/1, ^^/2, and :/1 Logtalk control constructs from bagof/3 and setof/3 calls with existentially quantified variables. This bug could result in missing alternative solutions when backtracking over the bagof/3 and setof/3 calls. Thanks to Victor Lagerkvist for his help in diagnosing the problem.

* Updated the Logtalk compiler implementation in order to simplify passing of compilation context data.

* Updated the Logtalk compiler in order to throw a permission error if the user attempts to define clauses for the (>>)/2 control construct used in lambda expressions.

* Updated the Logtalk compiler in order to preprocess proprietary Prolog directives within entities (using any defined config file hooks) after term-expansion but before trying to compile the directives as Logtalk directives. This change allows for simpler and more robust handling of Prolog proprietary directives, specially module directives.

* Recognize callable/1 and compare/3 as Prolog standard built-in predicates. Calls to these predicates will no longer be reported when the portability flag is set to "warning". In addtion, added syntax coloring support for these two predicates.

* Added support for the built-in non-terminal call//1 specified in the ISO Prolog standardization proposal for Definite Clause Grammars.

* Improved the implementation of Definite Clause Grammars in order to rewrite exceptions generated when processing NonTerminal, ::NonTerminal, and Obj::NonTerminal goals in grammar rules to refer to non-terminals instead of compiled predicate forms when running in debug mode.

* Changed the scope of the built-in methods phrase/2-3 from public to private for consistent meta-predicate semantics. Updated the "dcgs" example and the corresponding unit tests in order to comply with the new phrase/2-3 predicate scope.

* Corrected a bug in the implementation of the phrase/2-3 built-in methods that could allow access to non-visible grammar rules.

* Improved performance of Module:NonTerminal goals in grammar rules.

* Corrected a bug in the implementation of the dynamic/0 directive where the Logtalk compiler would fail to generate all the necessary dynamic/1 predicate directives. Bug introduced in the previous stable release.

* Corrected a bug in the implementation of the clause/2 built-in method where an error would be generated when trying to access clauses for local dynamic predicates without a corresponding dynamic/1 directive within objects and categories with a dynamic/0 directive.

* Corrected a bug in the compilation of meta-calls and the <</2 control construct in debug mode where the meta-arguments would not be compiled in debug mode.

* Corrected a silly bug in the compilation of proprietary Prolog directives where meta-arguments would be compiled in debug mode if the "debug" flag as "off" and in normal mode of the "debug" flag was "on".

* Corrected a bug in the processing of compiler options when recursively calling the logtalk_load/2 and logtalk_compile/2 built-in predicates with a list of source files which could result in failure to apply the compiler options to the compilation of all files.

* Updated the ECLiPSe config file to always use atoms instead of strings in the file-system access internal predicates. Corrected some bugs in the processing of proprietary directives.

* Added goal_expansion/2 clauses to the SWI-Prolog and YAP config files in order to allow calling the Prolog built-in predicates phrase/2-3 with a Object::GrammarRuleBody in the first argument.

* Corrected the definitions of the predicates '$lgt_current_date'/3 and '$lgt_current_time'/3 in the Qu-Prolog config file and rename it to "qp.pl". Updated the minimum required version to 8.11 and changed the value of the Logtalk flag "prolog_dialect" from "qu" to "qp" in order to match the value of the new Prolog flag "dialect" implemented in Qu-Prolog 8.11. Added support for the "smart_compilation" compiler flag. Improved startup time when using the "qplgt.sh" integration script.

* Corrected a typo in the template of the predicate subsumes/2 in the library protocol "termp".

* The SWI-Prolog POSIX integration shell script, "swilgt", now tries first to use a "swipl" executable and, if not found, tries to use instead a "pl" executable (thus preferring a recent SWI-Prolog version over an older one).

* Added man pages for the POSIX "*lgt" Prolog integration shell scripts, for the Logtalk management shell scripts, and for the XML documenting files processing scripts.

* Renamed the "logtalk_select" shell script to "logtalk_version_select". Renamed the "cplgtdirs.*" scripts to "logtalk_user_setup.*".

* Include a XHTML version of the library documentation on the directory "library/docs".

* Improved the "examples/tester.sh" script in order to support running the example unit tests compiled in debug mode.

* Added a a simple maze search problem using a depth-first strategy with loop detection to the "benchmarks" example.

* Corrected a wrong declaration for the predicate environment_variable/2 in the "cc" example. Solved portability issues with Ciao Prolog, ECLiPSe, and XSB.

* Added missing support for syntax coloring of the "complements" entity relation to Pygments.

Happy logtalking,

Paulo Moura
Logtalk developer

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest