Predicates not supported by the Runtime Kernel

The predicates listed below are not supported by the Runtime Kernel, since their purpose is to aid the development process rather than to be used in application programs. qld or qcon will print Undefined warning messages if you try to build a runtime system with calls to any of these predicates. At run time, these calls will raise existence errors in a runtime system.


debugger:
debug/0, nodebug/0, trace/0, notrace/0, spy/1, nospy/1, nospyall/0, debugging/0, leash/1, add_spypoint/1, current_spypoint/1, remove_spypoint/1,
help system:
help/[0,1], manual/[0,1]
advice:
add_advice/3, check_advice/[0,1], current_advice/3, nocheck_advice/[0,1], remove_advice/3,
program development:
break/0

If you call any of these predicates from compile-time code, such as from an embedded command or in a definition of term_expansion/2, the call will raise existence errors when using qpc.

Any use of these predicates should be eliminated from both your run-time and your compile-time code, unless you can be sure that they won't be called or you don't mind them raising existence errors.

In addition, the predicates load_foreign_files/2 and load_foreign_executable/1 are not available in the Runtime Kernel but may be used in embedded commands. That is, you can use them at compile time, in order to link foreign code into your program, but you cannot use them when the runtime system is running.

Since the compiler is not included in a runtime system, the effect of the load predicates is altered in a runtime system. Whenever one of these predicates would normally compile a file into memory, it instead loads that file into memory as dynamic. This is equivalent to

     load_files(file, all_dynamic(true)).
     

This should not normally make any significant difference, except that loading the file is faster and running it is slower.

The predicate multifile_assertz/1 cannot be used on compiled (static) predicates in a runtime system. This restriction does not apply to predicates that are loaded by compile(File) at run time, since such predicates are really loaded as dynamic.