Logtalk

Software Screenshot:
Logtalk
Software Details:
Version: 3.03.0 updated
Upload Date: 11 Mar 16
Developer: Paulo Moura
Distribution Type: Freeware
Downloads: 24

Rating: nan/5 (Total Votes: 0)

Prolog is a general purpose logic programming language that was released back in 1972, with very few updates since.

Logtalk was created to add more modern features to Prolog, mainly performance improvements, lambda expressions, grammar rules, improved compiler errors and warning reporting.

On top of these, add an easier installation process and Prolog compiler compatibility updates.

This makes Logtalk a better, more suitable alternative to Prolog in modern day AI and computer linguistics scenarios, a much more powerful multi-paradigm language, suitable for event-driven and high-level multi-threading programming.

Currently Logtalk syntax extends standard Prolog syntax and you can run Logtalk on these Prolog compilers:

B-Prolog

CxProlog

ECLiPSe

GNU Prolog

Lean Prolog

Qu-Prolog

SICStus Prolog

SWI Prolog

XSB

YAP

What is new in this release:

  • IMPROVED:
  • Changes to the term tags used when writing compiled code to help minimize the size of the generated intermediate Prolog files that use those tags to decide when to decorate compiled terms with source location data (currently, only SWI-Prolog takes advantage of the location data).
  • FIXED:
  • A file can have more than one parent file.

What is new in version 3.02.2:

  • IMPROVED:
  • Changes to the term tags used when writing compiled code to help minimize the size of the generated intermediate Prolog files that use those tags to decide when to decorate compiled terms with source location data (currently, only SWI-Prolog takes advantage of the location data).
  • FIXED:
  • A file can have more than one parent file.

What is new in version 3.02.1:

  • IMPROVED:
  • Changes to the term tags used when writing compiled code to help minimize the size of the generated intermediate Prolog files that use those tags to decide when to decorate compiled terms with source location data (currently, only SWI-Prolog takes advantage of the location data).
  • FIXED:
  • A file can have more than one parent file.

What is new in version 3.00.4:

  • IMPROVED:
  • Changes to the term tags used when writing compiled code to help minimize the size of the generated intermediate Prolog files that use those tags to decide when to decorate compiled terms with source location data (currently, only SWI-Prolog takes advantage of the location data).
  • FIXED:
  • A file can have more than one parent file.

What is new in version 3.00.2:

  • IMPROVED:
  • Changes to the term tags used when writing compiled code to help minimize the size of the generated intermediate Prolog files that use those tags to decide when to decorate compiled terms with source location data (currently, only SWI-Prolog takes advantage of the location data).
  • FIXED:
  • A file can have more than one parent file.

What is new in version 3.00.1:

  • IMPROVED:
  • Changes to the term tags used when writing compiled code to help minimize the size of the generated intermediate Prolog files that use those tags to decide when to decorate compiled terms with source location data (currently, only SWI-Prolog takes advantage of the location data).
  • FIXED:
  • A file can have more than one parent file.

What is new in version 2.44.1:

  • Corrected a bug in the compilation of the meta_non_terminal/1 directive where only the first meta-argument would be correctly processed.
  • Updated the ECLiPSe config file to detect when running on Windows 64 bits systems and to ignore non-predicate and non-operator exports when pre-processing lib/1 directives.
  • Updated the unit test framework to print more informative messages for failed unit tests.
  • Added predicate split/4 (for splitting a list into sublists with a given length) to the "listp", "list", and "difflist" library entities.
  • Updated the "cc" example with a definition for the shell/2 predicate for CxProlog.
  • Changed the names of the objects in the "mi" example to avoid a name conflict when running the example unit tests.
  • Corrected a bug in the Windows installer that prevented detection of YAP 64 bits versions. Thanks to Stepan Ipatov for the bug report.

What is new in version 2.44.0:

  • This release changes the semantics of complementing categories, allowing its use to patch existing object code, fixes two bugs in the processing of meta-calls, allows open lists of terminals in the body of DCG rules, adds two new examples, and improves support for the Vim text editor and for Exuberant ctags.

What is new in version 2.43.3:

  • Corrected a bug in the Logtalk compiler runtime handler where it failed to decompile internal entity identifiers when throwing entity existence exceptions.
  • Updated the Lean Prolog config file, adding index/1 directives for some of the dynamic predicates used by the internal Logtalk runtime tables.
  • Updated the SWI-Prolog integration files to test for the availability of the index/1 directive, which is deprecated by the new experimental SWI-Prolog support for just-in-time multi-argument indexing.
  • Added predicates subsequence/4 (for generating subsequences of a list with a given length), substitute/4 (for replacing elements in a list), and hamming_distance/3 to the library "listp" and "list" entities.
  • Added euclidean_norm/2, chebyshev_norm/2, manhattan_norm/2, euclidean_distance/3, chebyshev_distance/3, manhattan_distance/3, and scalar_product/3 predicates to the library "numberlistp" and "numberlist" entities.
  • Corrected some silly bugs in the definition of the "character" library object predicates is_bin_digit/1, is_octal_digit/1, is_dec_digit/1, and is_hex_digit/1.
  • Updated the library "all_loader.lgt" loader file to also load the "meta_compiler_loader.lgt" loader file.

What is new in version 2.43.2:

  • Optimized the processing of operator declarations when compiling source files and dynamically creating new entities.
  • Updated the Logtalk compiler to use the "modules" compiler flag when testing for Prolog module support, thus avoid compilation issues with back-end Prolog compilers that don't support a module system but still define (:)/2 as a built-in control construct or predicate.
  • Removed support for the "startup_message" compiler flag "flags(compact)" and "flags(verbose)" values, replaced by a single value, "flags", which corresponds to the old "flags(compact)" value.
  • Corrected a bug when using op/3 directives with the create_protocol/3, create_object/4, and create_category/4 built-in predicates where the local operator declarations would be visible outside the new entities.
  • Corrected a bug where creating a new dynamic entity at runtime would define a no longer used bookkeeping dynamic predicate that would not be abolished when the entity is abolished.
  • Corrected a compiler bug where a "super" call from within an object that only instantiates itself and doesn't specialize any object would throw an exception instead of failing.
  • Updated the "benchmarks" example in order to protect against arithmetic exceptions when computing the total number of calls per second for each test. Reduced the number of benchmark test repetitions when running the unit tests to avoid lengthy computing times with slow back-end Prolog compilers.

What is new in version 2.43.1:

  • Changed the compiler to take into account the uses/2 directive when compiling calls to the database built-in methods. This change extends the semantics of the uses/2 directive and allows easier migration from plain Prolog applications to Logtalk.
  • Added experimental support for using a predicate template as argument to the coinductive/1 directive. This template allows the specification of which arguments are meaningful for coinductive success. Based on similar functionality found on on Feliks Kluzniak's DRA meta-interpreter.
  • Improved support for debugging coinductive predicates when using the Logtalk built-in debugger.
  • Removed coinduction support for CxProlog. The current version of this compiler lacks a soft-cut built-in predicate or control construct, which is now required by the experimental coinduction implementation.
  • Lifted a long-standing limitation that prevented the user definition of wrapper predicates for the bagof/3 and setof/3 built-in methods whenever the goal argument may use the ^/2 existential quantifier.
  • Added support for the "^" meta-predicate meta-argument mode specifier suggested by Jan Wielemaker and found on SWI-Prolog 5.11.25. This mode specifier is useful when defining wrappers for the bagof/3 and setof/3 built-in methods whenever the goal argument may use the ^/2 existential quantifier.
  • Added "prolog_compiler" and "prolog_loader" compiler flags, which allow passing options to the back-end Prolog compiler built-in predicates that compile to disk and load a (compiled) Prolog flag. The default value for both flags is the empty list.
  • Corrected a bug when compiling calls to Prolog proprietary built-in meta-predicates where the Logtalk compiler could attempt to process non meta-arguments as goals. This bug only manifested itself with some back-end Prolog compilers such as ECLiPSe.
  • Corrected a bug in the processing of conditional compilation directives.
  • Corrected a bug that prevented passing alias/3 directives on calls to the create_object/4, create_category/4, and create_protocol/3 built-in predicates.
  • Removed from the built-in object "logtalk" the decompile_predicate_head/4 and decompile_predicate_indicator/4 deprecated methods.
  • Removed support for the long deprecated Logtalk metapredicate/1 directive.
  • Corrected a performance bug when caching calls to category predicates where the cached entries could be more specific than necessary when working with parametric categories.
  • Improved caching of "super" calls from within prototypes. Previously, all cached entries would be specialized by the value of "self" in order to properly deal with the special cases where an object both instantiates and specializes other objects.
  • Updated the Logtalk compiler to activate any operator declarations found on predicate scope directives during the compilation of the entities that contain the directives.
  • Improved the performance of coinductive predicates when using back-end Prolog compilers such as SICStus Prolog that don't provide the soft-cut control construct but provide the soft-cut built-in meta-predicate (if/3).
  • Corrected a bug where a spurious report of compilation/loading warnings could be printed when a source file was compiled/loaded with the compiler flag "report" turned off.
  • Added a "streamvars" library object, derived from the existing "assignvars" library category, featuring support for adding and retrieving terms (which may be variables) from a "stream" variable.
  • Updated the "coinduction" example, taking advantage of the enhanced coinductive/1 directive and broadening the number of individual examples that can be run using SICStus Prolog. Added a model checking example, using coinduction, coroutining, and constraints.
  • Updated the "metapredicates" example with sample code illustrating how to define wrappers for the bagof/3 and setof/3 built-in methods when the meta-argument may contain existentially qualified variables.
  • Updated the "cc" example, correcting predicate definitions for several back-end Prolog compilers and adding some basic unit tests.
  • Updated the "encodings" example with limited support for Lean Prolog.
  • Added missing entries for the meta_non_terminal/1 directive and for the call//N non-terminal to the "help" example.
  • Added a parser for PDDL 3.0 files, contributed by Robert Sasak.
  • Added code folding support to the SubEthaEdit text editor. Added code folding support for conditional compilation blocks to the Kate, Vim, and TextMate text editors.
  • Updated the integration scripts in order to load the library paths file before loading the Logtalk compiler/runtime. This change aims to simplify loading of library and example files from the settings files. In addition, also look for the Logtalk installation directory in $HOME/share when the LOGTALKHOME environment variable is not defined.
  • Updated the Windows installer in order to support Lean Prolog and detect YAP 64 bits versions.

What is new in version 2.43.0:

  • Added experimental support for Lean Prolog.
  • Removed the Logtalk compiler restriction that forced discontiguous/1 and dynamic/1 directives to precede calls to the declared predicates.
  • Improved the Logtalk compiler report of misspelt calls to non-terminals in grammar rules.
  • Allow the use of the :/1 control construct on the body of grammar rules.
  • When debugging messages specified in uses/2 directives, the message is now printed implicitly qualified as in the source code written by the user.
  • Changed the internal predicates used in the implementation of the built-in multi-threading predicates in order to facilitate the integration with high-level debugging tools that require decompilation of the generated Prolog code.
  • Corrected a bug in the library support for unit tests, "lgtunit", where testing for exceptions would accept any exception term as conforming to the unit test specifications.
  • Updated the "cc" example with bug fixes and improvements for ECLiPSe contributed by Joachim Schimpf, with a bug fix for the SWI-Prolog implementation of the expand_path/2 predicate (resulting from recent changes to the SWI-Prolog absolute_file_name/3 built-in predicate), and with a definition for the command_line_arguments/1 predicate for B-Prolog.
  • Updated the "coinduction" example, adding some more individual examples.
  • Updated the "xml_parser" contribution in order to workaround portability issues with GNU Prolog.
  • Correct a bug in some shell scripts where "#/bin/bash" was used instead of "#!/bin/bash". Thanks to Yiorgos Adamopoulos for the bug report.
  • Updated the Inno Setup GUI Windows installer script in order to allow full installation by non-admin users.
  • Added syntax coloring support for the ISO Prolog directive include/1 to all supported text editors and syntax highlighters.
  • Corrected some bugs on the tab triggers for the Gedit Logtalk snippets that prevented their use.
  • Changed back to using XEP instead of FOP when generating the PDF versions of the User and Reference manuals as FOP truncates the contents of some of the pages.

What is new in version 2.42.4:

  • Added an entity_prefix/2 predicate and two sets of utility predicates, decompile_predicate_heads/2-4 and decompile_predicate_indicators/2-4, to the "logtalk" built-in object. Marked the decompile_predicate_head/4 and decompile_predicate_indicator/4 as deprecated.
  • Added support for preserving the scope information for operators declared using scope directives during compile time. Added information on entity declared operators to the XML documenting files. Updated the text, PDF, and (X)HTML conversion scripts to print out operator information.
  • Applied several low-level optimizations to the Logtalk compiler/runtime.
  • Moved the internal predicates that construct and access the predicate execution context from the compiler to the Prolog config files in order to support fine performance tuning that is Prolog compiler dependent.
  • Updated the implementation of the threaded/1 multi-threading built-in predicate in order to use a small performance optimization based on the term_variables/2 built-in predicate suggested by Timon Van Overveldt. This optimization aims to reduce unnecessary copy and unification of terms. In addition, replace the use of the setup_call_cleanup/3 built-in predicate with the catch/3 built-in predicate by simplifying handling of both master and slave threads, which also improves performance.
  • Corrected a bug in the implementation of the threaded/1 multi-threading built-in predicate where failure by the user to specify independent goals when attempting to use independent and-parallelism would result in zombie threads.
  • More informative exception terms when attempting to declare a synchronized predicate as dynamic or a dynamic predicate as synchronized.
  • Updated the XSB config file in order to support the compilation of modules as objects. Added a definition for the missing setup_call_catcher_cleanup/4 built-in predicate. XSB 3.3 (or a later version) is now required for compatibility with Logtalk.
  • Updated the SWI-Prolog config file in order to provide limited support for the arithmetic_function/1 proprietary directive (arithmetic functions are compile as global instead of as local to the objects or categories defining them).
  • Updated the YAP config file in order to ignore the style_check/1 directive and to interpret the yap_flag/2 directive as a set_prolog_flag/2 directive.
  • Changed the default XSL-FO processor (used to generate the PDF versions of the User and Reference manuals) from XEP to FOP.
  • Updated the "xml_parser" contribution in order to workaround portability issues with Qu-Prolog, SICStus Prolog, and XSB.
  • Updated the "encodings" example in order to ensure that the there is no whitespace before the encoding/1 directive.
  • Updated the "attvars" example in order to support B-Prolog and XSB. Also added support for using attributed variables within Logtalk parametric objects and parametric categories. Thanks to Jan Wielemaker, VAtor Santos Costa, and Bart Demoen for feedback and implementation suggestions.
  • Updated the "profilers" example with preliminary support for the changes to execution profiling in the SICStus Prolog 4.2 version.
  • Updated the "expansion" example with more sample code on how to combine term- and goal-expansion definitions from different hooks objects.
  • Updated the "coinduction" example, adding an experimental keysort/2 coinductive predicate. Thanks to Jan Burse for the suggestion.
  • Updated the "tak" multi-threading example where a missing cut would result in quickly exhausting the local stack when using SWI-Prolog due to the creation of a very large number of unnecessary choice points.
  • Updated the "mtbatch" multi-threading example in order to provide expanded benchmarking of the "tak" example.
  • Updated the MacPorts portfile and the script that updates it in order to remove the calculation of the MD5 checksum, which is being phased out by MacPorts.
  • Updated the Inno Setup GUI Windows installer script in order to workaround a bug on the SWI-Prolog Windows installers where the uninstall procedure fail to delete the SWI-Prolog keys from the Windows registry.

What is new in version 2.42.3:

  • Allow dynamic predicates declared in a category to be called in "this" from within the category. In previous versions, such calls would result in a compile-time error, forcing these predicates to be called in "self" (using the ::/1 message sending control construct).
  • Added Logtalk compiler support for pre-compiled clause heads (using the {}/1 control construct). This feature is mostly useful when using the term-expansion mechanism.
  • Corrected a bug on the code that simplifies the predicate clauses generated by the compilation of grammar rules. The code would loop when a grammar rule contained a meta-variable, which the Logtalk compiler should (but currently don't) report as illegal (the call/1 control construct should be used instead on this case).
  • Simplified the compilation of calls in the context of the pseudo-object "user".
  • Added a debugger command "p" to the Logtalk built-in debugger. This command prints the current goal using the print/1 predicate when available. Renamed the debugger command "q" to "Q". Corrected a bug where the debugger command "w" would not be recognized. Changed the debugger command "d" to quote terms when necessary.
  • Added a partial implementation of the ISO Prolog predicate_property/2 predicate to the ECLiPSe config file.
  • Updated the SWI-Prolog config file in order to remove the erroneous declaration of the library meta-predicates dde_register_service/2, time/1, and when/2 as built-in meta-predicates.
  • Applied a bug fix to the "flags" contribution made available by its author, Theofrastos Mantadelis. Workaround a compatibility issue with GNU Prolog.
  • Added a memberchk/2 predicate to the library "setp" protocol and "set" object. Added predicates is_control/1, is_newline/1, and is_end_of_line/1 to the library "characterp" and "character" entities.
  • Added an experimental example of using attributed variables within Logtalk objects and categories. Currently requires the use of YAP or SWI-Prolog as the back-end Prolog compiler.
  • Added support for indexicals to the "constraints/sicstus" example.
  • Extended the "delegates" example with a sample implementation of a delegator using a parametric object.
  • Extended the "dynpred" example in order to illustrate how to define category predicates that handle dynamic predicates in the context of "this" and in the context of "self".
  • Added a wall_time/1 predicate to the "cc" example.
  • Updated the syntax highlighting test files, adding missing true/0 and fail/0 control constructs.

What is new in version 2.42.2:

  • Updated the Logtalk compiler in order to allow checking for module predicate properties without requiring importing the predicates into "user" (note, however, that the module must still be loaded prior to the compilation of source files calling the module predicates).
  • Updated the Logtalk compiler in order to check compile-time instantiated closure arguments on call/2-N goals for common programming errors.
  • Updated the Logtalk compiler in order to generate warnings for lambda expressions with variables that are not declared as either free variables or lambda parameters or with variables that are declared as both free variables and lambda parameters. Thanks to Jan Burse for suggesting these sanity checks.
  • Updated the Logtalk runtime in order to support using the <</2 control construct in closure meta-arguments of meta-predicates.
  • Added support for compiling Free/Goal lambda expression calls (by automatically generating an auxiliary predicate whenever possible).
  • Added a compile_aux_clauses/1 public method, based on a predicate with the same name in SWI-Prolog, to the built-in object "logtalk". This method is usually called from goal_expansion/2 hooks in order to compile auxiliary clauses generated for supporting an expanded goal.
  • Added the meta-predicate ignore/1, implemented by some Prolog compilers as a built-in predicate, as a Logtalk built-in method.
  • Updated the SWI-Prolog config file in order to prevent the auto-loading of module libraries when querying predicate properties from Logtalk.
  • Updated the Qu-Prolog, SICStus Prolog, and XSB config files in order to make available the predicate term_variables/2 as an ISO built-in predicate.
  • Updated the Qu-Prolog integration scripts in order to double the heap size value for compiling the Logtalk compiler/runtime, solving a startup crash.
  • Restored the MacOS X command-file for GNU Prolog (moved up from the "scripts/macosx/command_files/unsupported" folder).
  • Added predicates findall_member/4-5 to the library object "meta" (based on Richard O'Keefe's draft Prolog library proposal). Removed declaration and definition of the predicates callable/1 and ignore/1 from the library entities "metap" and "meta" (callable/1 is a built-in predicate in all supported Prolog compilers; ignore/1 is now a Logtalk built-in method).
  • Added a library object, "meta_compiler", that can be used as an hook object to expand calls to the meta-predicates defined in the library object "meta" in order to avoid the meta-call overheads. On those cases where the meta-predicate call cannot be optimized, the default definition on the "meta" object is used. Using control constructs as meta-arguments is not (yet) supported. Work in progress.
  • Added a protocol, "loggingp", and category and object implementations, "logging" and "logger", declaring and defining basic functionality for logging events to files to the library.
  • Added a protocol, "intervalp", and an object, "interval", declaring and defining basic temporal interval relations to the library (based on the James F. Allen Interval Algebra work).
  • Added a category implementing named integer counters, "counters", to the library.
  • Added predicates proper_prefix/2 and proper_suffix/2 to the library entities "listp", "list", and "difflist".
  • Added predicate transpose/2 to the library object "pairs".
  • Added two pseudo-examples for testing purposes, "lambdas_compiled" and "metapredicates_compiled", that make use of the new library object
  • "meta_compiler".
  • Updated the "expansion" example in order to illustrate how to define and combine hook objects.
  • Added support for using the SyntaxHighlighter package (version 3.0.83 or later) by Alex Gorbatchev with Logtalk source code.
  • Added missing syntax coloring of the else/0 conditional compilation directive to the GNU Source-highlight highlighter support.
  • Added a note on the Logtalk text editing support available on the free MacOS X Kod text editor.
  • Added syntax coloring support for the new ignore/1 built-in method to all supported text editors and syntax highlighters.

What is new in version 2.42.1:

  • Added support to the Logtalk compiler for detecting and reporting missing dynamic/1 and discontiguous/1 predicate directives.
  • Added a new lint flag, "missing_directives", with a default value of "warning", to all config files. This flag enables printing of compiler warnings for missing dynamic/1, discontiguous/1, and multifile/1 predicate directives.
  • Added support for new meta-predicate template mode indicators: (/) for a predicate indicator, [/] for a list of predicate indicators, and [0] for a list of goals.
  • Corrected a bug in the Logtalk compiler when checking meta-predicate clause heads for errors where the "::" meta-argument mode indicator was still being interpreted as "0".
  • Corrected a bug in the handling of closures (in meta-calls) that are used to construct calls to control constructs or built-in predicates which could result in calling some meta-arguments in the wrong context. Thanks to Ulrich Neumerkel for the illustrating example in the SWI-Prolog mailing list.
  • Updated the Logtalk compiler in order to avoid printing warnings about missing references to the "expanding" and "monitoring" built-in protocols when compiling modules as objects.
  • Reverted the changes in version 2.39.2 that allowed the pseudo-object "user" to virtually contain the definition of all Prolog built-in predicates. This could lead to different results depending on the back-end Prolog compiler, specially when calling meta-predicates in the context of "user".
  • Corrected a bug in the SWI-Prolog "swihooks.lgt" file that resulted in a bogus error message about an invalid Logtalk flag when consulting a Prolog file when there is a Logtalk source file with the same name in the same directory.
  • Added missing support for proprietary built-in meta-predicates to the B-Prolog, SICStus Prolog, SWI-Prolog, XSB, and YAP config files.
  • Updated the SICStus Prolog, SWI-Prolog, and YAP config files in order to override the meta-predicate templates for the consult/1 and load_files/2 built-in predicates.
  • Added an implementation of a map_reduce/5 meta-predicate to the library object "meta".
  • Added an implementation of a command_line_arguments/1 predicate to the "cc" example.
  • Updated the "lambdas" and "metapredicates" examples, illustrating how to calculate Fibonacci numbers using a fold left meta-predicate. Updated the "metapredicates" example with an usage example of the map_reduce/5 meta-predicate.
  • Updated the "problog" example, adding preliminary support for the new annotated disjunctions syntax.
  • Added a "magic" element to the Logtalk mime-type file for the freedesktop.org shared mime-info database.

What is new in version 2.42.0:

  • Added an implementation of persistent object flags.
  • 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 andimproved 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 exceptionwhen compiling calls to Prolog built-in meta-predicates or Prolog modulemeta-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 thepredicate 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-inpredicate 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.
  • 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.
  • 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.

What is new in version 2.41.0:

  • Added experimental support for coinductive predicates to the Logtalk compiler using a coinductive/1 directive. Requires a back-end Prolog compiler providing minimal support for cyclic terms (currently, YAP, CxProlog, ECLiPSe, SICStus Prolog, and SWI-Prolog). Thanks to Gopal Gupta, Neda Saeedloei, Feliks Kluzniak, Ajay Bansal, and Vitor Santos Costa for feedback and implementation suggestions.
  • Added a "coinductive" predicate property.
  • Added a "coinduction" read-only flag.
  • Added a new Logtalk built-in predicate, logtalk_load_context/2, similar to the prolog_load_context/2 built-in predicate found in several Prolog compilers, in order to provide access to the compilation/loading context. The initial set of supported context keys is {entity_name, entity_prefix, entity_type, file, directory, term_position}. The term_position key is only supported in back-end Prolog compilers that provide the start and end lines of a read term.
  • Simplified the Logtalk compiler by using stream aliases.
  • Updated the implementation of the create_object/4 and create_category/4 built-in predicates in order to also support the definition of an initial set of grammar rules.
  • Corrected a bug in the runtime error handler that would result in entity existence errors being reported as (internal) predicate existence errors.
  • Corrected a bug where the protocols implemented by the built-in object "logtalk" would not be returned by the implements_protocol/2-3 built-in predicates.
  • Corrected a bug where multifile/1 directives would only accept a single predicate indicator as argument.
  • Corrected a bug where compiling an explicit module-qualified module meta-argument would result in a compilation loop when the qualified goal is a variable.
  • Ciao Prolog 1.10 is no longer supported as this compiler fails to provide support for ISO Prolog standard stream aliases and the stream_property/2 built-in predicate. Support for this Prolog compiler will be reevaluated when a new stable version becomes available.
  • ECLiPSe 6.0#141 or a later version is now required when using this back-end Prolog compiler due to use of stream aliases in the Logtalk compiler.
  • Updated the CxProlog config file to require version 0.97.5 or later. This version adds the epsilon/0 arithmetic constant that is used in the library unit test support.
  • Updated the SWI-Prolog and YAP config files in order to support the expects_dialect/1 proprietary directive.
  • Removed the definitions of the no longer necessary '$lgt_keysort'/2 and '$lgt_sort'/2 internal predicates from the supported config files.
  • Updated the shell scripts used for generating the PDF versions of the Logtalk User and Reference Manuals for better performance and to fix an incompatibility with recent versions of the xsltproc XSLT processor.
  • Updated the "library/lgtunit_loader.lgt" helper file to avoid entity redefinition warnings when loading the "library/all_loader.lgt" helper file from the "library" directory itself.
  • Added an example, "adventure", with Logtalk adaptations of Prolog text adventures originally written by David Matuszek and Dan Cliburn.
  • Added an experimental example of coinduction when using CxProlog, ECLiPSe, SICStus Prolog, SWI-Prolog, or YAP as the back-end Prolog compiler.
  • Updated the "constraints/swipl/loader.lgt" helper file to avoid the errors generated when loading the CLP(FD) library with the SWI-Prolog "iso" flag set to "true".
  • Updated the "dcgs" example unit tests to avoid a compilation error when using SWI-Prolog 5.11.3 and later versions due to changes in this compiler parser for stricter ISO Prolog syntax.
  • Updated the "help" example in order to provide help for Logtalk built-in directives.
  • Updated the "examples/tester.sh" script in order to fix a compatibility issue with XSB.
  • Added support for the SHJS syntax highlighter.
  • Added syntax coloring support for the new coinductive/1 predicate directive to all supported text editors and syntax highlighters.
  • Updated the TextMate commands used for generating (X)HTML, PDF, and TXT documentation in order to be independent of the default settings for the "altdirs" and "xmldir" compiler flags.

What is new in version 2.40.1:

  • Restored support for GNU Prolog. Requires GNU Prolog version 1.4.0 (or later), which provides support for the ISO Prolog predicate directive multifile/1.
  • Improved the built-in debugger by making explicit the calls to the (\+)/1 built-in predicate.
  • Corrected a bug where a call to a local predicate would always fail when an object or category contains a declared but not defined non-terminal.
  • Corrected a bug in the compilation of (\+)//1 calls in grammar rules.
  • Recognize retractall/1, ground/1, keysort/2, sort/2, and numbervars/3 as de facto Prolog standard built-in predicates. Calls to these predicates will no longer be reported when the portability flag is set to "warning". In addition, added syntax coloring support for these predicates.
  • Recognize e/0 and pi/0 as de facto Prolog standard built-in arithmetic functions. Calls to these functions will no longer be reported when the portability flag is set to "warning". In addition, added syntax coloring support for these two functions.
  • Updated the internal hook predicate '$lgt_tr_predicate_indicators'/2, used in the config files for processing proprietary Prolog directives, in order to translate both grammar rule non-terminal indicators and predicate indicators. A possible usage scenario is tabling grammar rule non-terminals.
  • Updated the definition of the Logtalk flag "prolog_version" for Ciao in order to compute major, minor, and patch version numbers.
  • Corrected a bug in the goal_expansion/2 clauses found on the SWI-Prolog and YAP config files that are used for expanding calls to the Prolog built-in predicates phrase/2-3 with a Object::GrammarRuleBody in the first argument.
  • Updated the B-Prolog config file to require version 7.4 or later and to workaround a missing "built_in" property for the built-in predicate setup_call_cleanup/3.
  • Added unit tests for the "securemp" and "constraints/gprolog" examples. Improved the "debug_hooks" example, showing how to use a parametric object in alternative to two simple hook objects.
  • Improved the "help" example by adding a helper predicate for quick access to the Logtalk User and Reference manuals. Added support for CxProlog.
  • Added partial support for CxProlog to the "cc" example in order to support the "help" example.
  • Updated the "multifile" example in order to avoid compilation errors when using a back-end Prolog compiler (such as B-Prolog) that doesn't support discontiguous predicates.
  • Improved the "examples/tester.sh" script in order to print the current time and date, plus the Logtalk and back-end Prolog compiler versions,and to abstract the different syntax requirements for initialization goals used by Prolog compilers.

What is new in version 2.38.0:

  • Added a Logtalk version of the "Closed Knight's Tour" SWI-Prolog CLP(FD) example written by Markus Triska.
  • Corrected a possible data loss bug when using the Debian and MacOS X installers where some third-party mime-type associations might be lost when adding the Logtalk mime-type to the Shared MIME-info Database.
  • Updated the Logtalk Windows installer in order to detect both XSB single- threaded and multi-threaded versions and to no longer create integration shortcuts for XSB versions older than 3.2.
  • Updated the GNU Prolog config file to make use of the new "version_data" flag in the forthcoming 1.3.2 version.
  • Corrected a bug in the ECLiPSe config files in the definition of the predicate '$lgt_current_time'/3 where the number of seconds would be returned as a float instead of as an integer.
  • Improved Logtalk runtime error handler when using SWI-Prolog as the back-end compiler.

Similar Software

Skulpt
Skulpt

12 Apr 15

Stackless Python
Stackless Python

28 Feb 15

pyquery
pyquery

13 Apr 15

Six
Six

13 May 15

Other Software of Developer Paulo Moura

Logtalk
Logtalk

14 Apr 15

Comments to Logtalk

Comments not found
Add Comment
Turn on images!