Did you know ... Search Documentation:
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.