# Runtime Code Generation

> A mechanism that builds executable code while the program runs, from a specification such as a field mapping.

Record: `architecture:runtime-code-generation`
Kind: mechanism
Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)
Severity: discouraged
Scope: runtime, framework
Canonical: https://banes-lab.com/ontology#architecture-runtime-code-generation

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Compile-Time Evaluation](https://banes-lab.com/records/architecture/compile-time-evaluation.md) and before [Domain-Specific Language (DSL)](https://banes-lab.com/records/architecture/domain-specific-language.md).

## Repair

- Refactored by: Use Safe Generator, Sandbox, Precompile
- Detected by: dynamic eval with external input
- Violated by: unsafe eval, untrusted code generation
- Measured by: unsafe generation paths
- Enforced by: [security policy](https://banes-lab.com/records/algorithms/security-policy.md)

## Requires

- [Safe Generation Boundary](https://banes-lab.com/records/lexicon/safe-generation-boundary.md)

## Reinforces

- [Runtime Extensibility](https://banes-lab.com/records/architecture/runtime-extensibility.md)

## Enables

- [Dynamic Optimization/Adaptation](https://banes-lab.com/records/lexicon/dynamic-optimization-adaptation.md)

## In tension with

- [Security/Debugging](https://banes-lab.com/records/lexicon/security-debugging.md)
- [Static Safety](https://banes-lab.com/records/lexicon/static-safety.md)

## Tensions

- [Runtime Code Generation / Security/Debugging](https://banes-lab.com/records/tension/runtime-code-generation-security-debugging.md)
- [Runtime Code Generation / Static Safety](https://banes-lab.com/records/tension/runtime-code-generation-static-safety.md)

## Severity

- [discouraged](https://banes-lab.com/records/vocabulary/severity-discouraged.md)

## Category

- [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/records/architecture-category/metaprogramming-language-oriented-architecture.md)

## Linked from

- [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/principles/architecture-category-runtime-discovery-dynamic-binding.md)
- [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- [Quality Attributes](https://banes-lab.com/ontology/lexicon/lexicon-category-quality-attributes.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
