# Execution Environments

An execution environment is a an environment for program execution. There are several aspects of the evironment that describes it:

• Program behaves the same with higher precision decimals
• Exceptions trigger correctly
• Memory is deallocated

## Types

• Complete Environment
• Extended Environment
• Relaxed Environment

### Complete environments

A complete environment guarantees that all exceptions will trigger as documented in this documentation.

A complete environment is good for testing.

### Extended environments

An extended environment adds further features to the execution environment.

#### Higher precision

An environment can use decimals with more than 15 decimal digits precision. This allows testing that a function works the same using higher precision, which is a requirement of the ProgsBase system.

#### Deallocation checks

An environment can keep track of allocations and deallocations, so that the difference between what has been allocated and what has been deallocated can be checked.

### Relaxed environments

A relaxed environment relaxes some of the requirement of a complete environment. A requirement of the relaxed environment is: If a program works on a complete environment (or even an extended environment) then it must work on a relaxed environment.

Many common environments are relaxed. Two examples are the x86-series of intel processors and the Java Virtual Machine (JVM).