Logtalk 2.39.1
Logtalk is an object-oriented logic programming language that can use most Prolog implementations as a back-end compiler.
As a multi-paradigm language, Logtalk includes support for both prototypes and classes, protocols (interfaces), component-based programming through category-based composition, event-driven programming, and high-level multi-threading programming.
WHAT’S NEW
Version 2.39.1:
- Updated the Logtalk compiler and runtime to support calls to the built-in predicates threaded_peek/2 and threaded_exit/2 where the second argument (thread tag) is only instantiated at runtime. Updated the exception term thrown by threaded_exit/2 when the thread goal don\’t exist to use error/3 instead of error/2.
- Updated the implementation of the uses/2 directive in order to allow safe use of the declared shortcuts at runtime.
- Corrected a bug when using the use_module/2 directive that resulted in a performance penalty when calling module predicates.
- Updated the Logtalk compiler to warn the user when finding deprecated directives.
- Updated the Logtalk compiler to recognize \”prolog_compatible_version\” and \”tabling\” as valid flags.
- Updated the Logtalk compiler to compile settings files with the compiler flag \”altdirs\” turned off in order to avoid problems with directory permissions for back-end Prolog compilers, such as Ciao and XSB, which require the first run of Logtalk to be made by an administrative user.
- Corrected a bug in the Logtalk compiler that forced recompilation of source files when the \”smart_compilation\” flag was set to \”on\”.
- Corrected an erroneous compiler warning when reporting referenced but unknown objects when using the {Object}::Message notation. Thanks to Parker Jones for the bug report.
- Corrected a bug in the <</2 control construct where errors would be reported without an error/3 wrapper. Thanks to Parker Jones for the bug report.
- Corrected a predicate lookup caching bug for the ^^/1 control construct (aka \”super\”) that resulted in cached entries never being used when the argument was a different predicate from the one being defined by the clause containing the call (uncommon but possible).
- Updated the SWI-Prolog and YAP config files in order to recognize and compile the proprietary directive create_prolog_flag/3.
- Updated the ECLiPSe config files to treat numbervars/3 as a built-in predicate.
- Updated the file system utility predicates in the XSB config file in order to ensure full expansion of paths into full paths.
- Updated the CxProlog config file to workaround a wrong priority for the standard **/2 operator (\”xfx\” instead of \”xfy\”). Updated the CxProlog integration scripts for both POSIX and Windows systems in order to use the \”–script\” command-line option, thus freeing the \”–goal\” option.
- Added a logtalk_library_path/2 entry for the library \”home\” (the user home directory) when running on Windows operating-systems. However, this definition only works for some back-end Prolog compilers due to bugs in expanding paths containing more than one environment variable.
- Updated the \”types_loader.lgt\” library loader file in order to load the \”rbtree\” library object.
- Updated the library object \”term\” in order to implement the variant/2 predicate as a call to the =@=/2 proprietary built-in predicate when using either SWI-Prolog or YAP as the back-end Prolog compilers.
- Corrected a predicate property name bug (alias/1 instead of alias_of/1) in the library object \”listing\”.
- Replaced the library object \”lgtunit\” with a new version supporting three different dialects for specifying unit tests. See the example \”testing\” and the library file \”lgtuint.txt\” for details.
- Added unit tests for most examples, based on the sample queries found on each example \”SCRIPT.txt\” files. The original tests, contributed by Parker Jones, were rewritten to use the updated version of the \”lgtunit\” library. Added a POSIX shell script, \”examples/tester.sh\” for automating running the examples unit tests.
- Added a missing file, \”lists.lgt\”, to the \”metainterpreters\” example.
- Added shell/1-2 predicates to the operating-system interface defined in the \”cc\” example.
- Added an op/3 directive for the :/2 operator to the \”logging\” example in order to avoid syntax errors when running on a back-end Prolog compilers that don\’t define this operator.
- Updated the \”modules\” example in order to avoid an object name conflict with the library object \”list\”.
- Corrected assorted typos on the sample queries of several examples. Thanks to Parker Jones for the bug reports.
- Updated several examples sample queries to workaround a XSB parsing bug triggered by using message broadcasting syntax.
- Updated the Windows installer in order to warn the user when no compatible Prolog compiler can be found. In addition, update the installer in order to also create shortcuts to the main documentation files on the Logtalk user folder.
- Added an experimental \”logtalk_backend_select.sh\” POSIX shell script for defining an alias, \”logtalk\”, to a chosen back-end Prolog integration script. Suggested by Parker Jones.
- Documentation cleanup, specially regarding installing, customizing, and running Logtalk. Simplified Prolog compatibility notes as the current set of compatible Prolog compilers provide a more uniform experience.
- Corrected a bug in the POSIX lgt2*.sh scripts that would prevent finding the Logtalk documenting XML files when using a XML Schema specification. Thanks to rbt for the bug report.
REQUIREMENTS
- Mac OS X 10.3.9 or later.
- Compatible Prolog compiler.
PRICE
Free