Logtalk 2.42.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.42.0 released

Post by Paulo Moura » Thu Dec 02, 2010 1:58 am


Logtalk 2.42.0 is now available for downloading. This release adds support for the SICStus Prolog, SWI-Prolog, and YAP profilers; adds preliminary support for generating entity diagrams for source files and libraries; improves the experimental support for ProbLog; adds experimental support for CHR; adds support for B-Prolog Action Rules; defines a set of low-level utility predicates available from the "logtalk" built-in object; improves the performance of source file compilation, dynamic binding, and database built-in methods; enhances the term-expansion mechanism; fixes all know bugs; adds new examples and features minor updates to existing examples and to the library; and includes portability updates for B-Prolog, GNU Prolog, Qu-Prolog, SWI-Prolog, XSB, and YAP.

A special thanks to Theofrastos Mantadelis, member of the K.U.Leuven ProbLog team, for all his feedback and contributions to this release.

Upgrading from previous release:

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

Known compatibility issues:

* GNU Prolog: Logtalk requires the latest beta of the 1.4.0 version.
* 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: Logtalk requires the current XSB CVS version. In addition, some bugs in multi-threading support may prevent some thread examples from running.
* Ciao Prolog 1.10 is no longer supported (due to the lack of support for stream aliases; the current 1.13 beta version is not supported due to a broken predicate_property/2 implementation).

Detailed release notes:

* Added an implementation of persistent object flags, contributed by Theofrastos Mantadelis.

* Added a new pair of built-in predicates, conforms_to_protocol/2-3, implementing the transitive closure of the protocol implementation relation.

* Added an experimental directive, annotation/1, for supporting Logtalk integration with other languages such as ProbLog and CHR.

* Reverted the changes in the previous release that allowed a stand-alone object to (also) be used as root of class hierarchies.

* Defined a set of low-level utility predicates, available as public methods from the "logtalk" built-in object. Modified the (virtual) compilation of this object in order to always interpret it as a prototype.

* Simplified and improved the performance of the predicate lookup caching code, resulting in improved dynamic binding performance. Simplified and improved the performance of the built-in methods asserta/1 and assertz/1 when asserting a clause for a new predicate. Simplified the updating of the internal table for dynamically defined predicates when using the built-in methods retract/1 and retractall/1. Simplified the compiler code used when creating new entities.

* Changed the semantics of the "dynamic_declarations" flag so that it is only checked when sending an asserta/1 or assertz/1 message to an object. Local asserting of clauses for new predicates is now always allowed.

* Updated the implementation of the built-in method abolish/1 in order to also support abolishing of local dynamic predicates.

* Improved the performance of source file compilation by avoiding redundant cleaning of auxiliary compilation predicates.

* Modified the Logtalk compiler in order to interpret occurrences of ":" in module meta-predicate directives as equivalent to "::" instead of "0" in Logtalk meta-predicate directives. This change follows the current trend for de facto standardization for meta-predicate directives but is still problematic for some Prolog compilers. Logtalk will throw an exception when compiling calls to Prolog built-in meta-predicates or Prolog module meta-predicates whose template includes a ":" meta-argument specifier.

* Improved compiler error checking for entity relations, detecting and reporting most incorrect attempts to extend, instantiate, specialize, import, implement, or complement the wrong kind of entities.

* Implemented a parameter_names/1 property for parametric categories and parametric objects. Implemented a public/1 property for objects, protocols, and categories.

* Corrected a bug where the compilation (or dynamic creation) of parametric objects or parametric categories with instantiated parameters would fail to discard the parameter values in the runtime tables of defined entities.

* Added support for using explicit object qualification and explicit module qualification in meta_predicate/1 directives.

* Updated the implementation of the directives dynamic/1, discontiguous/1, and multifile/1 in order to remove explicit module qualification from the predicate indicator arguments when the module is "user".

* Updated the compilation of clause heads for module multifile predicates in order to remove the explicit module qualification when the module is "user".

* Updated the implementation of the built-in predicate logtalk_compile/2 in order to ensure the same compiler options semantics for compiled code as the built-in predicate logtalk_load/2.

* Avoid a spurious choice-point created when reporting singleton variables during source file compilation with some back-end Prolog compilers such as ECLiPSe and SWI-Prolog.

* Corrected a error handling issue in the implementation of the built-in predicates logtalk_compile/2 and logtalk_load/2 where the error terms would be wrapped in an extra error/2 term.

* Updated the Logtalk compiler in order to also delete the intermediate files generated by the back-end Prolog compilers when compiling the Prolog files generated by Logtalk with the "clean" flag is set to "on".

* Updated the built-in objects, "logtalk" and "debugger", and the built-in protocols, "expanding" and "monitoring", to support static binding.

* Updated the term-expansion mechanism implementation in order to support the use of the {}/1 compiler bypass control construct to wrap elements in the list of expanded terms (returned by the term_expansion/2 built-in method when used in hook objects), to allow expansion of the end_of_file term, and to throw an instantiation error when term-expansion generates a list containing an element that is a variable.

* Interpret "prolog_compatible_version", "tabling", and "coinduction" as read-only flags. Removed documentation on the deleted "multifile_directive" flag. Added missing documentation on the "prolog_compatible_version" flag.

* Added support for accessing the compiler input stream using the built-in predicate logtalk_load_context/2 with the key "stream".

* Improved compile-time and runtime error handling for the blackboard built-in predicates.

* Updated the implementation of the built-in predicate set_logtalk_flag/2 in order to switch off the clean (smart_compilation) flag when switching on the smart_compilation (clean) flag.

* Recognize logtalk_library_path/2 as a Logtalk built-in predicate when compiling source files.

* Corrected a bug where abolishing a dynamic category or a dynamic protocol compiled in debug mode would fail to update the internal table of entities compiled in debug mode.

* Corrected a bug in the processing of meta-calls when the called goal is an explicit message to an object where the receiver instead of the sender would be tested for events support.

* Corrected a static binding bug where meta-predicates called within other meta-predicates would not be correctly compiled. This bug prevented the "mtbatch" example from running.

* Corrected a bug in the Logtalk compiler second pass where processing calls to non-standard Prolog built-in meta-predicates would fail to test for Logtalk built-in predicates and Logtalk built-in methods with the same predicate indicator.

* Removed references to the de facto standard predicates retractall/1, compare/3, and callable/1 from all the config files of Prolog compilers where these predicates are built-in.

* Added declaration of file name extensions for intermediate files generated by the Prolog compilers themselves to the config files of B-Prolog, Ciao, Qu-Prolog, and XSB.

* Updated the config files of SICStus Prolog, SWI-Prolog, and YAP in order to parse the Prolog proprietary directive public/1 (whose semantics depend on the Prolog compiler).

* Updated the Qu-Prolog config file with support for accessing environment variables and updated definitions of file-system access predicates that avoid issues with file paths containing spaces. Logtalk now requires Qu-Prolog 8.12 or a later version.

* Updated the GNU Prolog config file in order to support the built_in_fd/0, built_in_fd/1, built_in/0, built_in/1, and ensure_linked/1 proprietary directives.

* Workaround a B-Prolog 7.4 bug where the built-in predicate callable/1 is missing the property "built_in". Declared the predicates and/3, equiv/3, and or/3 as built-in predicates. Added support for table/1 directives whose argument is predicate template with the cardinality limit omitted.

* Updated the Qu-Prolog integration files in order to avoid a segmentation fault when using a 32 bits compilation of Qu-Prolog. Thanks to Peter Robinson for his help in solving this problem.

* Added a YAP integration file, "yaphooks.pl", defining the hook predicate user:prolog_predicate_name/2.

* Commented out the setting of the proprietary Prolog flag "iso" to "true" in the SWI-Prolog config file due to all the module libraries that fail to compile/work in "iso" mode. Updated the implementation of the internal predicate '$lgt_expand_path'/2 in order to also expand directory paths. Added a workaround for ignoring the new operator public/1 introduced in SWI-Prolog 5.11.9 while compiling Logtalk source files.

* Renamed the SWI-Prolog integration files, "swihook.pl" and "xpcehook.pl" to, respectively, "swihooks.pl" and "xpcehooks.pl".

* Added a definition for the hook predicate user:prolog_predicate_name/2 to the SWI-Prolog hook file, "swihooks.pl". This hook predicate allows a more user-friendly experience when using the SWI-Prolog profiler with Logtalk. Requires SWI-Prolog 5.10.2 (stable) or 5.11.8 (development) or later versions. Thanks to Jan Wielemaker for his support on improving the usage of the user:prolog_predicate_name/2 hook on the SWI-Prolog profiler.

* Updated the library "types_loader.lgt" file to also load the heaps library files.

* Added an example, "diagrams", illustrating how to generate entity diagrams for a source file and for a library of source files using Logtalk reflection features and the DOT language.

* Added an example, "profilers", featuring simple wrappers for the SICStus Prolog 4 profiler and the YAP count profiler.

* Added an example, "delegates", illustrating an implementation of the delegation design pattern.

* Added a highly experimental example, "chr", of CHR integration. Currently requires the use of Qu-Prolog, SICStus Prolog, SWI-Prolog, or YAP as the back-end Prolog compiler.

* Added an experimental example, "constraints/sicstus", illustrating how to use the SICStus Prolog CLP(FD) library within objects and categories.

* Added individual examples of using B-Prolog Action Rules within objects to the "constraints/bp" example.

* Updated the "cc" example, adding support for Qu-Prolog, adding an operating_system_type/1 predicate, and correcting the declaration of the predicate shell/1.

* Updated the "help" example, allowing it to be loaded when using any supported back-end Prolog compiler. In addition, when help is requested for a functor that is both a built-in directive and a built-in predicate, both web pages will be open.

* Updated the "benchmarks" example in order to use more realistic tests for the database built-in predicates and the methods assertz/1 and retract/1.

* Updated the "operators" example in order to avoid a unit test failure when reloading the "triple.lgt" source file.

* Updated the "modules" example in order to use the use_module/2 directive (which is supported by Logtalk) instead of the use_module/1 directive (which is only supported for some back-end Prolog compilers) in the "client" module.

* Updated the "problog" example. Logtalk integration with ProbLog is much improved but requires the latest development version of ProbLog. Thanks to Theofrastos Mantadelis for his support on ProbLog.

* Added a fully connected graph path search problem, contributed by Theofrastos Mantadelis, to the "benchmarks" example.

* Corrected a bug in the use of the built-in predicate object_property/2 in the "roots" example that would result in errors when deleting dynamic objects.

* Updated the "examples/tester.sh" script in order to also work when running Logtalk without using the installer packages or scripts.

* Updated the "build_release.sh" script in order to calculate all the necessary checksums when building the MacOS X installer package.

* Corrected a bug in the "logtalk_backend_select" shell script that prevented selecting GNU Prolog as the default back-end Prolog compiler.

Happt logtalking,


P.S. Commercial support for Logtalk is coming in 2011.
Paulo Moura
Logtalk developer

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest