Logtalk is a mature Open Source object-oriented logic programming language that can use most Prolog implementations as a back-end compiler.

Here are some key features of “Logtalk”:

Separation between interface and implementation
· Predicate directives (declarations) may be contained inside protocols (interfaces), which may be implemented by any object.

· Parametric objects
Object names can be compound terms containing free variables that can be used to parametrize object predicates. This allows us to treat any predicate as an instantiation of a parametric object. I.e. through parametric object we can associate any number of methods with a compound term.

· Support for both class-based and prototype-based systems
You may have, in the same application, class-based hierarchies (with instantiation and specialization relations) and prototype-based hierarchies (with extension relations). Moreover, fundamental language features such as protocols (interfaces) and categories (components) can be used simultaneously by classes, instances, and prototypes.

· Support for multiple object hierarchies
No need to be constrained to a single, lengthy hierarchy rooted in some generic object.

· Private, protected, and public inheritance
Logtalk supports private, protected, and public inheritance in a way similar to C++. Moreover, any entity relation can be qualified using a scope keyword. E.g. an object can privately implement a protocol, thus making all protocol declared predicates private.

· Private, protected, and public object predicates
Set the scope of your object predicates to match your protocol design and let the runtime system enforce your choices.

· Static and dynamic objects
Objects can be either static or dynamic. Static objects are defined in source files which are compiled and loaded in the same way as Prolog files. Dynamic object can be either defined in source files or created at runtime.

· Static and dynamic object predicates
Any static object may contain both static and dynamic predicates.

· A pre-processor so we can use standard Prolog syntax
Logtalk uses standard Prolog syntax with the addition of a few operators and directives for a smooth learning curve. Prolog code can be easily encapsulated inside objects with little or no changes. Moreover, Logtalk can transparently interpret most Prolog modules as Logtalk objects for easy reusing of existing code (e.g. libraries).

· Event-driven programming
Predicates can be implicitly called when a spied event occurs, allowing programming solutions which minimize object coupling. In addition, events provide support for behavioral reflection.

· Component-based programming
Predicates can be encapsulated inside categories, which can be virtually imported by any object, without any code duplication and irrespective of object hierarchies. Thus, objects may be defined through composition of categories, which act as fine-grained units of code reuse.

· Multi-threading programming
High level multi-threading programming is available when running Logtalk with selected back-end Prolog compilers, allowing objects to support both synchronous and asynchronous messages. Easily take advantage of modern multi-processor and multi-core computers without bothering with the details of creating and destroying threads, implement thread communication, or synchronizing threads.

· Multi-inheritance support
Logtalk supports multi-inheritance of both protocol and implementation. An object may implement several protocols and extend, specialize, or instantiate several objects. Multi-inheritance conflicts are solved implicitly by the Logtalk lookup algorithms or explicitly by using predicate directives.

· Good performance
Logtalk code is compiled using the same technics that you use to write efficient Prolog code. In addition, Logtalk supports both static binding and dynamic binding (with method lookup caching), greatly improving performance. Benchmark results for some Prolog compilers are available here.

· Close integration with the ISO Prolog Standard
Logtalk is designed for smooth integration with any Prolog compiler that conforms or closely follows the ISO Prolog Standard.

· Compatible with most Prolog compilers
Logtalk interfaces with a specific back-end Prolog compiler via a minimal configuration file making it compatible with almost any modern compiler.

· Automatic generation of XML documentation files
Logtalk automatically generates a documentation file in XML format for every compiled object, protocol, or category. The system includes all the necessary XSL(T) files and scripts to convert documenting files to (X)HTML and PDF.

Requirements:

· Prolog

What’s New in This Release:

· Fixed a Logtalk runtime bug when using the :/1 control construct to call a predicate defined in a category extended by a category that is imported by the object making the call.
· Fixed a Logtalk compiler bug when compiling an alias/3 predicate directive within a category that extends other categories.
· Fixed a Logtalk compiler bug when compiling a class that imports a category that extends other categories. Thanks to Victor Noel for the bug report.
· Small performance improvement to the caching of category predicates when using static binding.
· Removed from the YAP config file the definition of the forall/2 predicate, which have been added as a built-in predicate in YAP version 5.1.3 (the current YAP CVS version must be used; the last stable version, 5.1.2, is broken on Windows). Added support for the proprietary if/1, else/0, elif/1, and endif/0 directives (when used outside Logtalk entities).
· Updated the SWI-Prolog config file with support for the proprietary if/1, else/0, elif/1, and endif/0 directives (when used outside Logtalk entities).
· Improved the “complements” example, moving the category initialization goal to the beginning of the example source file.
· Added support for the Pygments syntax highlighter (co-developed with Clara Dimene).
· Added a new sample Logtalk source file for testing syntax coloring support.
· Added missing auto-completion keywords for the ISO Prolog standard arithmetic functions to the SubEthaEdit, TextMate, Notepad++, jEdit, Vim, and Smultron text editors.
· Corrected a bug in the SubEthaEdit syntax coloring support for the imports_category/2-3 built-in predicate. Added some missing files (license and mode settings) to the SubEthaEdit mode bundle.
· Corrected a bug in the Vim syntax coloring support for the ISO Prolog built-in predicate current_char_conversion/2 and added missing support for for quoted atom escape sequences.
· Corrected a bug in the jEdit syntax coloring support for hexadecimal numbers and added missing support for the extends_category/2-3 and at_end_of_stream/0 built-in predicates.
· Added missing support for the syntax coloring of the external call Logtalk control construct, {}/1, to the Highlight package. Corrected a bug with 0′Char constants and with octal and hexadecimal escape sequences.
· Added missing support for the syntax coloring of the external call Logtalk control construct, {}/1, and for quoted atom escape sequences to the TextMate text editor.
· Added missing support for the syntax coloring of quoted atom escape sequences and of the built-in predicate at_end_of_stream/0 to the Source-highlight package.
· Added missing support for the syntax coloring of the built-in predicate at_end_of_stream/0 and of the scope operator ::/2 to the Kate text editor. Improved syntax coloring of parametric object opening directives.
· Added missing support for the syntax coloring of the built-in predicate unify_with_occurs_check/2 to the Emacs text editor. Corrected a bug in the syntax coloring of arithmetic comparison operators.
· Added missing support for the syntax coloring of quoted atom escape sequences and of the built-in control construct call/1 to the GtkSourceView 2.x text widget.
· Added missing support for the syntax coloring of variables, of quoted atom escape sequences, of the built-in method clause/2, of the external call Logtalk control construct {}/1, and of variables to the Nedit text editor. Corrected a bug with 0′Char constants and corrected some typos in the support for the current_event/2, implements_protocol/2-3, and abolish_category/1 built-in predicates.

External mirror 1




Author:
admin
Time:
Monday, May 26th, 2008 at 7:19 am
Category:
Compilers
Comments:
You can leave a response, or trackback from your own site.
RSS:
You can follow any responses to this entry through the RSS 2.0 feed.
Navigation:

Leave a Reply

Comment moderation is enabled. Your comment may take some time to appear.