Skip to content

Latest commit

 

History

History
36 lines (27 loc) · 1.29 KB

Upgrade-5.8.md

File metadata and controls

36 lines (27 loc) · 1.29 KB

---+ Upgrading applications from 5.6.64 to 5.8.0

Most of it should be pretty compatible. The main differences that are likely to affect people moving from 5.6.64 are:

* 5.8.0 properly implements :- meta_predicate/1.  Code relying on
the old incomplete emulation must be updated.  Code using
:- module_transparent/1 still works, but both for better
compatibility with the rest of the Prolog world and for better
support from the environment, it is adviced to update code.

* The initialization/1 directive is now ISO compliant, which means
it is executed *after* loading the file in which it appears. This
may cause problems with code doing

==
:- initalization(load_foreign_library(mylib)).
==

 Such code should use

==
:- use_foreign_library(mylib).
==

* System libraries libraries no longer (auto-) import from 'user',
but from `system'.

* Operators follow the auto-import module relations, which means
that system libraries only depend on operators declared by themselves
or in the module `system'.

* Preparing for 5.9.x, many foreign functions that used to be `void'
now return an int (TRUE/FALSE).  5.8.x does nothing with this (they
return TRUE or longjmp if an error happens).  In 5.9.x they will
return FALSE if an error happens.