Potential Incompatibilities




ERL_INTERFACE has been moved out of the Erlang runtime system (Erts) and is now a separate application. This has implications for all users of Erl-interface, who will need to make changes to the Makefiles used to build applications based on Erl-interface. In particular, header and library files are no longer in <inst-root>/usr/. The include and lib directories are now located in the directory <inst-root>/lib/erl_interface-3.X (i.e. the directory name is now version specific).





If the SNMP adaptation shall be used, measurement types and measurement objects shall be identified using atoms, and thresholds using an integer.


Some incorrect queries are detected in Erlang compile time rather then during setup / execution in runtime.

The negation operator, not, that was present in earlier versions has been removed. The main reason is that the semantics is unclear in many cases, and almost all questions have no need for a negation. The typical use of negation was something like the following code fragment:

   query [ X ||
                X <- table (employee),
            not X <- rule (chiefs) ] end
Here, the query variable, X, is first bound and then a negation is applied. Usages such as these can often be rewritten by first evaluating the negation in a separate query and then the rest of the query. Asuming the query is evaluated using eval the above could be written:
   NegQ = query [ X || X <- rule (chiefs) ] end,
        NegAns = mnemosyne:eval (NegQ),
        Q = query [ X || X <- table(tab),
                         not lists:member (X, NegAns) ],
        Ans = mnemosyne:eval (Q)
Note that the not used above is Erlangs own not, not the (old) mnemosyne not.

Also note that the above code is not less efficient then the previous versions (that used not) since the whole negation has to be evaluated.


Mnesia must be restarted on all nodes in order to cope with the following changes: