## 10.5 The Runtime Environment

### 10.5.1 The Runtime Emulator

The sources may be used to built two versions of the emulator. By default, the development emulator is built. This emulator contains all features for interactive development of Prolog applications. If the system is configured using --enable-runtime, make(1) will create a runtime version of the emulator. This emulator is equivalent to the development version, except for the following features:

- No input editing
  The GNU library `-lreadline` that provides EMACS compatible editing of input lines will not be linked to the system.
- No tracer
  The tracer and all its options are removed, making the system a little faster too.
- No profiler
  profile/3 and friends are not supported. This saves some space and provides better performance.
- No interrupt
  Keyboard interrupt (Control-C normally) is not rebound and will normally terminate the application.
- current_prolog_flag(runtime, true) succeeds
  This may be used to verify your application is running in the runtime environment rather than the development environment.
- clause/[2,3] do not work on static predicates
  This Prolog flag inhibits listing your program. It is only a very limited protection however.

The following fragment is an example for building the runtime environment in `\env{HOME}/lib/rt-pl-3.2.0`. If possible, the shared-library interface should be configured to ensure it can serve a large number of applications.

    % cd pl-3.2.0
    % mkdir runtime
    % cd runtime
    % ../src/configure --enable-runtime --prefix=$HOME
    % make
    % make rt-install

The runtime directory contains the components listed below. This directory may be tar'ed and shipped with your application.

`README.RT` | Info on the runtime environment
`bin/<arch>/pl` | The emulator itself
`man/pl.1` | Manual page for pl
`swipl` | pointer to the home directory (.)
`lib/` | directory for shared libraries
`lib/<arch>/` | machine-specific shared libraries