Logtalk 2.36.0 released

Announcements of new Logtalk releases and events

Moderator: Paulo Moura

Logtalk 2.36.0 released

Postby Paulo Moura » Thu Apr 09, 2009 9:12 pm

Hi!

Logtalk 2.36.0 is now available for downloading. This release improves Logtalk customization by adding support for settings files, forgoing the need to directly edit the back-end Prolog compiler configuration flags; improves compiler error and warning reporting; improves SWI-Prolog integration scripts; fixes compatibility issues with Amzi! Prolog, Ciao Prolog, K-Prolog, Qu-Prolog, and SICStus Prolog; adds new object and category properties; adds new compiler flags; fixes a bug in the compilation of Prolog modules as objects introduced in the previous release; improves installation and integration scripts; and improves XML documentation for objects, categories, and predicates.

Upgrading from previous release:

* Customization is now performed using settings files instead of editing the back-end Prolog config files.
* Several changes to the compiler flags, including flag names and valid flag values.
* Config files from previous versions are incompatible with this release.
* See the "UPGRADING.txt" file and the detailed release notes below for more details.

Known compatibility issues:

* YAP: multi-threading support is currently broken. No timeframe for fixing the current bugs. Use YAP single-threaded version until the bugs are fixed.
* XSB : some bugs in multi-threading support prevent some thread examples from running.
* SICStus Prolog: no support for the new settings files feature.

Detailed release notes:

* Added support for overriding Logtalk default compiler flags (specified in the back-end Prolog compiler config files) using new settings files. Logtalk will load a "settings.lgt" file in the startup directory. If this file is not found, Logtalk will load a "settings.lgt" file in the Logtalk user directory. Requires running Logtalk with a back-end Prolog compiler supporting access to environment variables. Loading of settings files from the Logtalk startup directory is only available when running on Windows for B-Prolog, Ciao, GNU Prolog, SWI-Prolog, XSB, and YAP. SICStus Prolog is incompatible with this new feature, requiring manual loading of settings files after startup. Consult the "configs/NOTES.txt" file for compatibility details for other Prolog compilers.

* Updated the "cplgtdirs.*" scripts to copy an existing "settings.lgt" file from the backup of the Logtalk user folder to the new Logtalk user folder.

* Updated the Logtalk compiler and runtime and all the config files to use the more standard call/N predicates instead of the call_with_args/N predicates.

* Improved the XML documentation automatically generated for objects and categories by appending to the compilation mode all the active optional features and the "threaded" and "synchronized" properties. Improved the XML documentation automatically generated for synchronized predicates by appending the "synchronized" property to the predicate compilation mode.

* Improved error handling for the built-in predicates logtalk_load/2, logtalk_compile/2, current_logtalk_flag/2, and set_logtalk_flag/2 when checking flag names and values.

* Improved Logtalk compiler error and warning reporting by printing, whenever possible, the range of lines where the problem was found instead of printing only the starting line.

* Added new object properties "complements", "context_switching_calls", "events", and "dynamic_declarations". Added new category property "events". These properties are defined whenever the corresponding compiler flags are set to "allow" at the time of entity compilation.

* Corrected a bug where some file-related entity properties would not be stored when using back-end Prolog compilers that don't support multifile predicates.

* Corrected a bug (introduced in version 2.35.0) in the compilation and processing of "super" calls for objects that both instantiate and specialize other objects.

* Corrected a bug (introduced in version 2.35.1) in the Logtalk compiler that prevented compilation of Prolog modules as objects.

* Corrected a bug in the implementation of the Logtalk built-in predicate threaded/1 that would result in wasting space in the main thread message queue with duplicated messages. Thanks to Rui Marques for the bug report.

* Corrected a bug where the Logtalk compiler would report the number of compilation warnings with the "report" compiler flag set to "off".

* Updated the Logtalk compiler in order to avoid unwanted backtracking during source file compilation and when calling the entity creation built-in predicates.

* The compiler flags "context_switching_calls", "startup_message", and "altdirs" are no longer read-only flags in order to support changing their default values from within "settings.lgt" files. The possible values for the compiler flags "dynamic_declarations", "complements", "context_switching_calls", and "events" are now "allow" and "deny". Added a new read-only compiler flag "prolog_version". Renamed the compiler flag "prolog" to "prolog_dialect".

* Changed object compilation in order to restrict the use of the <</2 control construct to objects compiled with the "context_switching_calls" compiler flag set to "allow".

* Changed the "cplgtdirs.*" and installation scripts to no longer make a copy of the "configs" directory in the Logtalk user directory. Updated the customization instructions to advise users to edit the "settings.lgt" file instead of editing the Prolog configuration files.

* Changed the Windows installer script in order to create Logtalk startup scripts that start from the current directory as returned by the "%CD%" dynamic environment variable. This allows a shortcut to be simply copied to a Logtalk project directory without requiring editing its properties in order to set the startup directory to the project directory.

* Updated the XSB-MT integration scripts to make all lookup cache dynamic predicates thread private. Updated the XSB config file for version 3.2, which is now required for running Logtalk.

* Added a new '$lgt_prolog_feature'/2 predicate to all config files, used for representing back-end Prolog supported features that are previously represented by read-only compiler flags.

* Added new '$lgt_environment_variable'/2, '$lgt_startup_directory'/1, and '$lgt_user_directory'/1 predicates to all config files.

* Changed the default value for the "startup_message" compiler flag to the less verbose "flags(compact)".

* Updated the config files of the Ciao, CxProlog, GNU Prolog, ECLiPSE, and XSB compilers to set the default directory for temporary files depending on the host operating-system.

* Updated the config files of the Ciao, ECLiPSe, GNU Prolog, Qu-Prolog, and SICStus Prolog compilers to return term position line numbers for reporting warnings and errors.

* Switched off use of multifile/1 directives for Amzi! Prolog due to its buggy implementation on this Prolog compiler.

* Updated the Ciao config file to workaround a weird bug in the read_term/3 predicate that prevented compilation of some Logtalk source files.

* Updated the K-Prolog config files in order to make the definition of the '$lgt_delete_file'/1 predicate compatible with Windows systems.

* Updated the predicate comments in the library protocol "loopp" in order to workaround the limitation on the maximum size of atoms in Qu-Prolog.

* Removed the obsolete SWI-Prolog hook file "swi_set_logtalk_context.pl" (the Logtalk control construct <</2 provides similar functionality).

* Added a check/1 predicate to all objects in the "types" library. This predicate differs from the existing valid/1 predicate by throwing an exception when the argument is not valid instead of failing.

* Added multifile and dynamic declarations for the logtalk_library_path/2 Logtalk predicate to the "libpaths/libpaths.pl" file. This change allows use of Ciao as the back-end Prolog compiler without patching the Logtalk compiler and runtime (but also results in a harmless warning when using GNU Prolog).

* Updated the POSIX integration scripts to export the environment variable LOGTALK_STARTUP_DIRECTORY before starting Logtalk.

* Changed the SWI-Prolog POSIX integration script to use the option "-s" instead of the option "-f" in order to allow loading of any existing user initialization file (".plrc" on POSIX systems; see the SWI-Prolog reference manual) before loading the Logtalk files. On Windows the use of the "-s" results in a weird double initialization bug.

* Workaround a compilation error in the object "salt/3" in the "searching" example when using SICStus Prolog as a back-end compiler.

Happy logtalking!

Paulo
Paulo Moura
Logtalk developer
Paulo Moura
Logtalk developer
 
Posts: 254
Joined: Sat May 05, 2007 8:35 am
Location: Portugal

Return to Announcements

Who is online

Users browsing this forum: No registered users and 1 guest

cron