# Vector Remap Language (VRL)
[](https://crates.io/crates/vrl)
[](https://docs.rs/vrl/0.4.0/vrl/)

VRL is a scripting language for processing observability data (logs, metrics, traces). Although VRL was originally
created for use in [Vector], it was designed to be generic and re-usable in many contexts.
VRL is maintained by
Datadog's [Community Open Source Engineering team](https://opensource.datadoghq.com/about/#the-community-open-source-engineering-team).
## Features
VRL is broken up into multiple components, which can be enabled as needed.
| compiler | yes | The contains the core functionality of VRL. Compiling and running VRL programs. |
| parser | yes | Creates an abstract syntax tree (AST) from VRL source code. |
| value | yes | Contains the primary data type used in VRL. |
| diagnostic | yes | Logic related to errors and displaying info about them. |
| path | yes | Contains the parser, datatypes, and functions related to VRL paths. |
| stdlib | yes | All of the VRL functions from the standard library. |
| core | yes | Various data structures and utility methods (these may be renamed / moved in the future). |
| datadog_filter | yes | Implements the Datadog log search query filter syntax. |
| datadog_grok | yes | Implements the Datadog grok parser. (used with `parse_grok` and `parse_groks` in the stdlib). |
| datadog_search | yes | Implements the Datadog log search syntax. |
| cli | no | Contains functionality to create a CLI for VRL. |
| test_framework | no | Contains the test framework for testing VRL functions. Useful for testing custom functions. |
| lua | no | Makes the `Value` type compatible with the `mlua` crate. |
| arbitrary | no | Implements `Arbitrary` (from the `quickcheck` crate) for the `Value` type |
| test | no | Enables testing utils and additional tests, including those with external dependencies such as network calls. |
## Webassembly
All of the core features, and most of the standard library functions can be compiled with the `wasm32-unknown-unknown` target.
There are a few stdlib functions that are unsupported. These will still compile, but abort at runtime.
Unsupported functions:
- `parse_grok`
- `parse_groks`
- `log`
- `get_hostname`
- `reverse_dns`
- `http_request`
[vector]: https://vector.dev
[vrl]: https://vrl.dev