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.
Announcements of new Logtalk releases and events
Moderator: Paulo Moura
1 post • Page 1 of 1
Who is online
Users browsing this forum: No registered users and 2 guests