Quintus Prolog release 3 provides a much more powerful alternative to the traditional save/restore facilities of Prolog. It is now possible to save, and subsequently load, individual predicates, or sets of predicates, or entire modules of predicates, or indeed the complete Prolog database. Such sets of predicates are saved into Quintus' standard Quintus Object Format ("QOF" files). This significantly extends the utility of QOF files, which were previously only used to produce runtime systems and stand-alone programs. QOF files are now a fully general way of storing arbitrary Prolog facts and rules in a form that can be quickly and easily used. QOF files contain a machine independent representation of both compiled and dynamic Prolog predicates. This means they are completely portable between different platforms running Quintus Prolog.
QOF files can be generated by:
qpcProlog compiler to compile individual Prolog source files (see sap-srs-qpc).
QOF files can be used by:
qldlinker, into an object file for linking into an executable with static Prolog code made shareable (see sap-srs-qld). This executable can either:
QOF saving and loading is available in both Quintus Prolog development systems and runtime systems built for distribution. In a development system, code can be incrementally compiled using the built-in compiler and then saved into a QOF file. In a runtime system, which does not include the built-in compiler, dynamic code can be asserted and then saved. Runtime systems can load QOF files containing previously compiled code.
This combination of the capabilities of the Quintus Prolog Runtime Generator, with the saving and loading facilities of Quintus Prolog release 3, and the cross-platform portability of QOF files, provides tremendous flexibility that can be used for many purposes. For example:
The facilities for saving and loading QOF files are more than just a convenience when developing programs; they are also a powerful tool that can be used as part of the application itself.