vrl
Vector Remap Language
0.35.0
7.8M downloads/mo
#3566 most downloaded on crates.io
vectordotdev/vrl
What this package is like to depend on
Last release 3 days ago
20 Aug 2026
Ships on a steady schedule
a new release about every 6 weeks
Nearly every release is documented
notes for 35 of 36 stable releases
2 versions withdrawn
withdrawn after publishing
3 years old
38 releases · first in 2023
11 releases in the last 12 months
see the full history below
Release timeline
38 releases · May 2023 to Aug 2026Releases
latest 38-
0.35.020 Aug 2026Release notes
Open source →Enhancements
-
The
parse_aws_vpc_flow_logfunction now recognizes all fields introduced in AWS VPC Flow Logs versions 7 through 11, including the v7 ECS metadata fields, v8reject_reason, v9resource_id, v10encryption_status, and the v11 tag/interface/next-hop fields.
Fixes
-
Fixed
round's type definition, which previously always claimed to return an integer even though it returns a float for float inputs. -
Prevent float arithmetic that produces NaN from panicking or silently returning zero. Such operations now return a runtime error.
-
-
0.34.013 Jul 2026Release notes
Open source →New Features
-
Added support for dynamic regex patterns in
parse_regex, allowing variables and runtime expressions to be passed as thepatternargument. -
Add
strictparameter toparse_cef(default:true). When set tofalse, the function performs best-effort parsing of non-compliant CEF input, treating unescaped=characters within field values as literals rather than field delimiters. This improves compatibility with vendors such as Infoblox and Palo Alto Networks whose CEF output does not fully conform to the spec.
Enhancements
-
Improved performance of
parse_regexandparse_regex_allby pre-computing capture group names and indices at compile time, replacing name-based hash lookups with direct index-based access at runtime. -
Improved performance of
truncatefunction if suffix parameter is provided. -
Improved performance of
parse_regex_allwhen using a literal regex pattern in concurrent workloads.
Fixes
-
Fixed a panic in
parse_key_value,parse_cef,decode_mime_q, andparse_ruby_hashon inputs with lines ≥ 65,535 bytes. This is a workaround until rust-bakery/nom#1867 is fixed. -
Fixed
find’s type definition and documentation. Previously, the function advertised its return type as an integer, but never as nullable. Now it correctly states that the function returnsnullwhenvaluedoesn’t matchpattern.
-
-
0.33.102 Jun 2026Release notes
Open source →Fixes
-
Reverted
parse_regexchanges from 0.33.0 which introduced a performance regression in multi-threaded scenarios.
-
-
0.33.028 May 2026 withdrawnRelease notes
Open source →New Features
-
VRL string literals now support
\u{HEX}Unicode escape sequences. Any valid Unicode scalar value can be expressed, e.g."hello\u{1F30E}world". Invalid sequences (empty braces, non-hex digits, surrogate codepoints, or values above U+10FFFF) are reported as a compile-time error. -
~
parse_regexnow accepts dynamic regex patterns (variables and runtime expressions), consistent withparse_regex_all. When the pattern is a literal, return type information remains precise based on named capture groups.~~PR #1774 by @thomasqueirozb~
Enhancements
-
Updated user agent data for
parse_user_agentfunction -
Protobuf encoding now coerces compatible scalar types into the target field type: integers and strings are accepted for
boolfields (using the same parsing asto_bool), and integers are accepted forfloat/doublefields. Previously these inputs failed encoding and required explicit conversion in VRL. -
Added an optional
allow_lossy_string_coercionargument toencode_proto. VRL's protobuf encoding stringifiesBoolean,Integer,Float, andTimestampvalues when assigned to a protobufstringfield as a convenience for callers handling loosely typed input. The protobuf JSON mapping only accepts a JSON string for astringfield, so callers who want strict spec-compliant encoding can now passallow_lossy_string_coercion: false. The default staystrue, so today's behavior is unchanged. -
~Improved performance of
parse_regex/parse_regex_allby pre-computing capture group names and indices at compile time. Users may see anywhere from 4% to 13% speedups in some cases.~~PR #1773 by @thomasqueirozb~
-
Improved performance of
parse_regex_allby reusing the compiled regex across invocations.
Fixes
-
The compiler now reports every unhandled-error in a single compilation pass instead of stopping at the first one. For example:
{ push(.x, 1) .b = push(.y, 2) }now reports both
push(.x, 1)(unhandled error) and.b = push(.y, 2)(unhandled fallible assignment) in one go. Previously you'd only see the second one, fix it, recompile, and only then discover the first. -
Fixed a confusing compile error where a fallible call earlier in a block could cause a later, unrelated assignment to be reported as the problem. For example:
{ .a = 1 push(.x, 1) # the unhandled error is actually here .b = 2 # but the compiler used to flag this line }The error is now reported on the actual fallible expression, so adding
!or the, err =form fixes it where you'd expect. This also fixes the same shape inside closure bodies, e.g. insidefor_each/map_values. -
Fixed a false positive in the unused-variable diagnostic (
E900) where a variable used before being reassigned (shadowed) was incorrectly flagged as unused at its original assignment. -
encode_protoandparse_protonow support proto maps whose keys are integers or booleans, not just strings. Because VRL object keys are always strings, integer and boolean keys are written in their string form:encode_proto({ "by_id": { "42": "alice" } }, "schema.desc", "MyMessage")Previously
parse_protoerrored on these maps andencode_protosilently dropped the field. Note thatencode_protowill now return an error if a key string can't be parsed into the schema's key type (for example,"abc"against amap<int32, ...>). -
Fixed a typo in enum variant that made it impossible to use
SCREAMING_SNAKEin casing functions such aspascalcase,camelcaseand others.pascalcase("hello", original_case: "SCREAMING_SNAKE")now compiles properly. -
Allowed the
elsekeyword (andelse if) to appear on a new line after the closing}of anif-block. Previously the trailing newline terminated the if-expression at the parser level, forcingelseto share a line with}.
-
-
0.32.017 Apr 2026Release notes
Open source →New Features
-
Added a new
encode_csvfunction that encodes an array of values into a CSV-formatted string. This is the inverse of the existingparse_csvfunction and supports an optional single-byte delimiter (defaults to,). -
Added
to_entriesandfrom_entrieswith jq-compatible behavior:to_entriessupports both objects and arrays, andfrom_entriesacceptskey/Key/name/Nameandvalue/Valuealiases.
Enhancements
-
Added
exceptparameter toflattenfunction to exclude specific keys from being flattened.
Fixes
-
-
0.31.005 Mar 2026Release notes
Open source →New Features
-
Added a new
parse_yamlfunction. This function parses yaml according to the YAML 1.1 spec. -
Added
--quiet/-qflag to the CLI to suppress the banner text when starting the REPL.
Fixes
-
Fixed a bug where lexer parse errors would emit a generic span with 202 error code instead of the proper error. Also fixed error positions from nested lexers (e.g., string literals inside function arguments) to correctly point to the actual location in the source.
Before (generic E202 syntax error):
$ string("\a") error[E202]: syntax error ┌─ :1:1 │ 1 │ string("\a") │ ^^^^^^^^^^^^ unexpected error: invalid escape character: \a │ = see language documentation at https://vrl.dev = try your code in the VRL REPL, learn more at https://vrl.dev/examplesAfter (correct E209 invalid escape character):
$ string("\a") error[E209]: invalid escape character: \a ┌─ :1:10 │ 1 │ string("\a") │ ^ invalid escape character: a │ = see language documentation at https://vrl.dev = try your code in the VRL REPL, learn more at https://vrl.dev/examples -
Fixed a bug where
parse_durationpanicked when large values overflowed during multiplication. The function now returns an error instead. -
Corrected the type definition of the
basenamefunction to indicate that it can also returnnull. Previously the type definition indicated that the function could only return bytes (or strings). -
Fixed incorrect parameter types in several stdlib functions:
md5:valueparameter was typed asany, now correctly typed asbytes.seahash:valueparameter was typed asany, now correctly typed asbytes.floor:valueparameter was typed asany, now correctly typed asfloat | integer;precisionparameter was typed asany, now correctly typed asinteger.parse_key_value:key_value_delimiterandfield_delimiterparameters were typed asany, now correctly typed asbytes.
Note: the function documentation already reflected the correct types.
-
-
0.30.022 Jan 2026Release notes
Open source →Breaking Changes & Upgrade Guide
-
The
usage()method on theFunctiontrait is now required. Custom VRL functions must implement this method to return a&'static strdescribing the function's purpose.
Fixes
-
Corrected the type definition for
format_intfunction to return bytes instead of integer.
-
-
0.29.011 Dec 2025Release notes
Open source →Breaking Changes & Upgrade Guide
-
Added required
lineandfilefields tovrl::compiler::function::Example. Also added theexample!macro to automatically populate those fields.
Fixes
-
Fixed handling of OR conjunctions in the datadog search query parser
-
Fixed a bug where VRL would crash if
mergewere called without atoargument. -
Fixed a bug where a stack overflow would happen in validate_json_schema if the schema had an empty $ref.
-
-
0.28.110 Nov 2025Release notes
Open source →Fixes
-
Fixed an issue where
split_path,basename,dirnamehad not been added to VRL's standard library and, therefore, appeared to be missing and were inaccessible in the0.28.0release.
-
-
0.28.003 Nov 2025Release notes
Open source →Breaking Changes & Upgrade Guide
-
The return value of the
findfunction has been changed tonullinstead of-1if there is no match.
New Features
-
Introduced the
basenamefunction to get the last component of a path. -
Introduced the
dirnamefunction to get the directory component of a path. -
Introduced the
split_pathfunction to split a path into its components.
Enhancements
-
Added optional
http_proxyandhttps_proxyparameters tohttp_requestfor setting the proxies used for a request. -
Added support for encoding a VRL
Integerinto a protobufdoublewhen usingencode_proto
Fixes
-
-
0.27.018 Sep 2025Release notes
Open source →Breaking Changes & Upgrade Guide
-
The
validate_json_schemafunctionality has been enhanced to collect and return validation error(s) in the error message return value, in addition to the existing primary Booleantrue / falsereturn value.Using JSON schema
test-schema.jsonbelow:{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "test": { "type": "boolean" }, "id": { "type": "integer" } }, "required": ["test"], "additionalProperties": false }Before:
$ invalid_object = { "id": "123" } { "id": "123" } $ valid, err = validate_json_schema(encode_json(invalid_object), "test-schema.json") false $ valid false $ err nullAfter:
$ invalid_object = { "id": "123" } { "id": "123" } $ valid, err = validate_json_schema(encode_json(invalid_object), "test-schema.json") "function call error for \"validate_json_schema\" at (13:82): JSON schema validation failed: \"123\" is not of type \"integer\" at /id, \"test\" is a required property at /" $ valid false $ err "function call error for \"validate_json_schema\" at (13:82): JSON schema validation failed: \"123\" is not of type \"integer\" at /id, \"test\" is a required property at /"
New Features
-
Added a new
xxhashfunction implementingxxh32/xxh64/xxh3_64/xxh3_128hashing algorithms. -
Added an optional
strict_modeparameter toparse_aws_alb_log. When set tofalse, the parser ignores any newly added/trailing fields in AWS ALB logs instead of failing. Defaults totrueto preserve current behavior. -
Added a new array function
popthat removes the last item from an array. -
Added two new cryptographic functions
encrypt_ipanddecrypt_ipfor IP address encryptionThese functions use the IPCrypt specification and support both IPv4 and IPv6 addresses with two encryption modes:
aes128(IPCrypt deterministic, 16-byte key) andpfx(IPCryptPfx, 32-byte key). Both algorithms are format-preserving (output is a valid IP address) and deterministic.
Enhancements
-
Added an optional
bodyparameter tohttp_request. Best used when sending a POST or PUT request.This does not perform automatic setting of
Content-TypeorContent-Lengthheader(s). The caller should add these headers using theheadersmap parameter.
Fixes
-
-
0.26.007 Aug 2025Release notes
Open source →Breaking Changes & Upgrade Guide
-
The
parse_cefnow trims unnecessary whitespace around escaped values in both headers and extension fields, improving accuracy and reliability when dealing with messy input strings.Scenario:
parse_cefwith whitespace post cef fieldsPrevious Behavior: Runtime Error
If an input with space added to parse_cef was provided, it would result in a runtime error due to the inability to parse the line successfully. Input:
CEF:1|Security|threatmanager|1.0|100|worm successfully stopped|10| dst=2.1.2.2 msg=Detected a threat. No action needed spt=1232Output:error[E000]: function call error for "parse_cef" at (0:20): Could not parse whole line successfully ┌─ :1:1 │.message = "CEF:1|Security|threatmanager|1.0|100|worm successfully stopped|10| dst=2.1.2.2 msg=Detected a threat. No action needed spt=1232" 1 │ parse_cef!(.message) │ ^^^^^^^^^^^^^^^^^^^^ Could not parse whole line successfully │ = see language documentation at https://vrl.dev = try your code in the VRL REPL, learn more at https://vrl.dev/examplesNew Behavior: parses data correctly
{ "cefVersion": "1", "deviceEventClassId": "100", "deviceProduct": "threatmanager", "deviceVendor": "Security", "deviceVersion": "1.0", "dst": "2.1.2.2", "msg": "Detected a threat. No action needed", "name": "worm successfully stopped", "severity": "10", "spt": "1232" }Scenario:
parse_cefwith whitespace in cef fields Input:CEF:1|Security|threatmanager|1.0|100|worm successfully stopped|10| dst=2.1.2.2 msg=Detected a threat. No action needed spt=1232Previous Behavior: "msg": "Detected a threat. No action needed " New Behavior: "msg": "Detected a threat. No action needed"
-
The
parse_syslogfunction now treats RFC 3164 structured data items with no parameters (e.g.,[exampleSDID@32473]) as part of the main message, rather than parsing them as structured data. Items with parameters (e.g.,[exampleSDID@32473 field="value"]) continue to be parsed as structured data. (https://github.com/vectordotdev/vrl/pull/1435) -
encode_lz4no longer prepends the uncompressed size by default, improving compatibility with standard LZ4 tools. A newprepend_sizeflag restores the old behavior if needed. Also,decode_lz4now also acceptsprepend_sizeand abuf_sizeoption (default: 1MB).Existing users of
encode_lz4anddecode_lz4will need to update their functions to include the argumentprepend_size: trueto maintain existing compatibility.
New Features
-
Added
haversinefunction for calculating haversine distance and bearing. -
Add
validate_json_schemafunction for validating JSON payloads against JSON schema files. A optional configuration parameterignore_unknown_formatsis provided to change how custom formats are handled by the validator. Unknown formats can be silently ignored by setting this totrueand validation continues without failing due to those fields.
-
-
0.25.026 Jun 2025 -
0.24.019 May 2025Release notes
Open source →Enhancements
-
The
encode_gzip,decode_gzip,encode_zlibanddecode_zlibmethods now uses the zlib-rs backend which is much faster than the previous backendminiz_oxide. -
The
decode_base64,encode_base64anddecode_mime_qfunctions now use the SIMD backend which is faster than the previous backend.
Fixes
-
Add BOM stripping logic to the parse_json function.
-
-
0.23.003 Apr 2025Release notes
Open source →Breaking Changes & Upgrade Guide
-
The
ip_cidr_containsfunction now validates the cidr argument during the compilation phase if it is a constant string or array. Previously, invalid constant CIDR values would only trigger an error during execution.Previous Behavior: Runtime Error
Previously, if an invalid CIDR was passed as a constant, an error was thrown at runtime:
error[E000]: function call error for "ip_cidr_contains" at (0:45): unable to parse CIDR: couldn't parse address in network: invalid IP address syntax ┌─ :1:1 │ 1 │ ip_cidr_contains!("INVALID", "192.168.10.32") │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to parse CIDR: couldn't parse address in network: invalid IP address syntax │ = see language documentation at https://vrl.dev = try your code in the VRL REPL, learn more at https://vrl.dev/examplesNew Behavior: Compilation Error
error[E610]: function compilation error: error[E403] invalid argument ┌─ :1:1 │ 1 │ ip_cidr_contains!("INVALID", "192.168.10.32") │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ │ │ invalid argument "ip_cidr_contains" │ error: "cidr" must be valid cidr │ received: "INVALID" │ = learn more about error code 403 at https://errors.vrl.dev/403 = see language documentation at https://vrl.dev = try your code in the VRL REPL, learn more at https://vrl.dev/examplesThis change improves error detection by identifying invalid CIDR values earlier, reducing unexpected failures at runtime and provides better performance.
New Features
-
Support for encoding and decoding lz4 block compression.
Enhancements
-
The
encode_protofunction was enhanced to automatically convert integer, float, and boolean values when passed to string proto fields. -
The
parse_user_agentmethod now uses the ua-parser library which is much faster than the previous library. The method's output remains unchanged. -
Added support for excluded_boundaries in the
snakecase()function. This allows users to leverage the same functionsnakecase()that they're already leveraging but tune it to handle specific scenarios where default boundaries are not desired.For example,
snakecase("s3BucketDetails", excluded_boundaries: ["digit_lower", "lower_digit", "upper_digit"]) /// Output: s3_bucket_details
Fixes
-
The
parse_nginx_logfunction can now parsedelaying requestserror messages.
-
-
0.22.020 Feb 2025Release notes
Open source →Breaking Changes & Upgrade Guide
-
Removed deprecated
ellipsisargument from thetruncatefunction. Usesuffixinstead. -
Fix
slicetype_def. This is a breaking change because it might change the fallibility of theslicefunction and this VRL scripts will need to be updated accordingly.
New Features
-
Added new
to_syslog_facility_codefunction to convert syslog facility keyword to syslog facility code. -
Downgrade "can't abort infallible function" error to a warning.
-
ip_cidr_containsmethod now also accepts an array of CIDRs. -
Faster converting bytes to Unicode string by using SIMD instructions provided by simdutf8 crate. simdutf8 is up to 23 times faster than the std library on valid non-ASCII, up to four times on pure ASCII is the same method provided by Rust's standard library. This will speed up almost all VRL methods like
parse_jsonorparse_regex. -
Added
shannon_entropyfunction to generate entropy from a string.
Fixes
-
Fix decimals parsing in parse_duration function
-
Fix
parse_nginx_logfunction when a format is set to error and an error message contains comma.
-
-
0.21.013 Jan 2025Release notes
Open source →Breaking Changes & Upgrade Guide
to_unix_timestamp,to_float, anduuid_v7can now return an error if the supplied timestamp is unrepresentable as a nanosecond timestamp. Previously the function calls would panic. (https://github.com/vectordotdev/vrl/pull/979)
New Features
- Added new
crcfunction to calculate CRC (Cyclic Redundancy Check) checksum - Add
parse_cborfunction (https://github.com/vectordotdev/vrl/pull/1152) - Added new
zipfunction to iterate over an array of arrays and produce a new arrays containing an item from each one. (https://github.com/vectordotdev/vrl/pull/1158) - Add new
decode_charset,encode_charsetfunctions to decode and encode strings between different charsets. (https://github.com/vectordotdev/vrl/pull/1162) - Added new
object_from_arrayfunction to create an object from an array of value pairs such as whatzipcan produce. (https://github.com/vectordotdev/vrl/pull/1164) - Added support for multi-unit duration strings (e.g.,
1h2s,2m3s) in theparse_durationfunction. (https://github.com/vectordotdev/vrl/pull/1197) - Added new
parse_bytesfunction to parse given bytes string such as1MiBor1TBeither in binary or decimal base. (https://github.com/vectordotdev/vrl/pull/1198) - Add
mainlog format forparse_nginx_log. (https://github.com/vectordotdev/vrl/pull/1202) - Added support for optional
timezoneargument in theparse_timestampfunction. (https://github.com/vectordotdev/vrl/pull/1207)
Fixes
- Fix a panic in float subtraction that produces NaN values. (https://github.com/vectordotdev/vrl/pull/1186)
-
0.20.109 Dec 2024Release notes
Open source →Fixes
- Reverted
to_floatchange because the new logic is too restrictive e.g. attempting to convert "0" returns an error. (https://github.com/vectordotdev/vrl/pull/1179)
- Reverted
-
0.20.027 Nov 2024Release notes
Open source →Breaking Changes & Upgrade Guide
- Fixes the
to_floatfunction to return an error instead off64::INFINITYwhen parsing non-normal numbers. (https://github.com/vectordotdev/vrl/pull/1107)
New Features
- The
decryptandencryptVRL functions now support aes-siv (RFC 5297) encryption and decryption. (https://github.com/vectordotdev/vrl/pull/1100)
Enhancements
decode_punycodeandencode_punycodewithvalidateflag set to false should be faster now, in cases when input data needs no encoding or decoding. (https://github.com/vectordotdev/vrl/pull/1104)vrl::value::Valuenow implementsPartialCmpthat first checks whether the enum discriminants (that both are floats for example), and if they are callspartial_cmpon the inner values. Otherwise, it will returnNone. (https://github.com/vectordotdev/vrl/pull/1117)- The
encode_protofunction was enhanced to automatically convert valid string fields to numeric proto fields. (https://github.com/vectordotdev/vrl/pull/1114)
Fixes
- The
parse_groksVRL function and Datadog grok parsing now catch the panic coming fromrust-onigon too many regex match retries, and handles it as a custom error. (https://github.com/vectordotdev/vrl/pull/1079) encode_punycodewithvalidateflag set to false should be more consistent withvalidateset to true, turning all uppercase character to lowercase besides doing punycode encoding (https://github.com/vectordotdev/vrl/pull/1115)- Removed false warning when using
set_semantic_meaning. (https://github.com/vectordotdev/vrl/pull/1148)
- Fixes the
-
0.19.001 Oct 2024Release notes
Open source →Breaking Changes & Upgrade Guide
- The multi-line mode of the
parse_groksVRL function is now enabled by default. Use the(?-m)modifier to disable this behaviour. (https://github.com/vectordotdev/vrl/pull/1022)
Enhancements
- The
keyvaluegrok filter is extended to match Datadog implementation. (https://github.com/vectordotdev/vrl/pull/1015)
Fixes
- The
parse_xmlfunction now doesn't add an unnecessarytextkey when processing single nodes. (https://github.com/vectordotdev/vrl/pull/849) parse_grokandparse_groksno longer require field names containing a hyphen (e.g.@a-b) to be quoted.- The function
match_datadog_querydoesn't panic if an invalid path is passed, instead it returns an error. (https://github.com/vectordotdev/vrl/pull/1031) - The
parse_ruby_hashparser is extended to match Datadog implementation. Previously it would parse the key in{:key => "value"}as:key, now it will parse it askey. (https://github.com/vectordotdev/vrl/pull/1050)
- The multi-line mode of the
-
0.18.005 Sep 2024Release notes
Open source →New Features
-
Added
unflattenfunction to inverse the result of theflattenfunction. This function is useful when you want to convert a flattened object back to its original form. -
The
parse_jsonfunction now accepts an optionallossyparameter (which defaults totrue).This new parameter allows to control whether the UTF-8 decoding should be lossy or not, replacing invalid UTF-8 sequences with the Unicode replacement character (U+FFFD) if set to
trueor raising an error if set tofalseand an invalid utf-8 sequence is found. (https://github.com/vectordotdev/vrl/pull/269) -
Added casing functions
camelcase,kebabcase,screamingsnakecase,snakecase,pascalcase(https://github.com/vectordotdev/vrl/pull/973) -
Added
parse_influxdbfunction to parse events encoded using the InfluxDB line protocol.
Enhancements
- The
match_datadog_queryfunction now accepts||in place ofORand&&in place ofANDin the query string, which is common Datadog syntax. (https://github.com/vectordotdev/vrl/pull/1001)
Fixes
decode_base64no longer requires canonical padding. (https://github.com/vectordotdev/vrl/pull/960)- The assumption of a Datadog Logs-based intake event structure has been removed
from the
match_datadog_queryfunction. (https://github.com/vectordotdev/vrl/pull/1003) - For the
parse_influxdbfunction thetimestampandtagsfields of returned objects are now correctly marked as nullable.
-
-
0.17.024 Jul 2024Release notes
Open source →Breaking Changes & Upgrade Guide
parse_logfmtnow processes 3 escape sequences when parsing:\n,\"and\\. This means that for example,\nin the input will be replaced with an actual newline character in parsed keys or values. (https://github.com/vectordotdev/vrl/pull/777)
-
0.16.108 Jul 2024Release notes
Open source →Enhancements
serveroption fordns_lookupnow properly replaces default server settings (https://github.com/vectordotdev/vrl/pull/910/files)
-
0.16.006 Jun 2024Release notes
Open source →Breaking Changes & Upgrade Guide
- The deprecated coalesce paths (i.e.
(field1|field2)) feature is now removed. (https://github.com/vectordotdev/vrl/pull/836)
New Features
-
Added experimental
dns_lookupfunction. It should be used with caution, since it involves network calls and is therefore very slow. -
Added
pslargument to theparse_etldfunction. It enables customizing used public suffix list. If none is provided the default (https://publicsuffix.org/list/public_suffix_list.dat) is used, which is that was used before this change.
Enhancements
- Add traceability_id field support to parse_aws_alb_log (https://github.com/vectordotdev/vrl/pull/862)
- The deprecated coalesce paths (i.e.
-
0.15.001 May 2024Release notes
Open source →Deprecations
- Coalesce paths (i.e.
(field1|field2)) are deprecated and will be removed in a future version. This feature is rarely used and not very useful. (https://github.com/vectordotdev/vrl/pull/815)
- Coalesce paths (i.e.
-
0.14.029 Apr 2024Release notes
Open source →New Features
- Add
uuid_from_friendly_idfor converting base62-encoded 128-bit identifiers to the hyphenated UUID format (https://github.com/vectordotdev/vrl/pull/803)
Fixes
parse_jsonnow supports round-tripable float parsing by activating thefloat_roundtripfeature in serde_json (https://github.com/vectordotdev/vrl/pull/755)
- Add
-
0.13.018 Mar 2024Release notes
Open source →Breaking Changes & Upgrade Guide
- fixed
parse_logfmthandling of escapes in values that could cause spurious keys to be created. As a result of this fix, the breaking change has been made to no longer allow empty keys in key-value pair formats (https://github.com/vectordotdev/vrl/pull/725)
New Features
-
Added the
returnexpression as per RFC 7496. This expression can be used to terminate the VRL program early while still emitting a value. (https://github.com/vectordotdev/vrl/pull/712) -
Added
sievestring function, which can remove unwanted characters from a string using a regex of allowed patterns. (https://github.com/vectordotdev/vrl/pull/724) -
Add VRL function
uuid_v7that generates UUIDv7 timestamp-based unique identifiers. (https://github.com/vectordotdev/vrl/pull/738) -
Added
encode_protoandparse_protofunctions, which can be used to encode and decode protobufs.parse_protoaccepts a bytes value, a proto descriptor file path and a message type and returns the VRL value as parsed from the proto.encode_protodoes the reverse and converts a VRL value into a protobuf bytes value. (https://github.com/vectordotdev/vrl/pull/739)
Fixes
parse_nginxnow accepts empty values for http referer (https://github.com/vectordotdev/vrl/pull/643)
- fixed
-
0.12.008 Mar 2024Release notes
Open source →New Features
- Added
validateoption toencode_punycodeanddecode_punycode, which defaults to true, but can be used to skip validation when set to false. (https://github.com/vectordotdev/vrl/pull/709)
- Added
-
0.11.007 Feb 2024Release notes
Open source →New Features
- Added
parse_etldfunction for extracting eTLD and eTLD+1 (https://github.com/vectordotdev/vrl/pull/669) - Added
encode_punycodeanddecode_punycodefunctions (https://github.com/vectordotdev/vrl/pull/672)
Enhancements
- Introduced a
redactoroption inredactfunction to enable the substitution of redacted content with either a custom string or a hash representation. (https://github.com/vectordotdev/vrl/pull/633) - Add VRL function
get_timezone_nameto return the configured/resolved IANA timezone name.
Fixes
- Fixed a bug in exporting paths containing more than one "coalesce" segment. (https://github.com/vectordotdev/vrl/pull/679)
- Added
-
0.10.024 Jan 2024Release notes
Open source →New Features
- Introduced an unused expression checker. It's designed to detect and report unused expressions, helping users to clean up and optimize their VRL scripts. Note that this checker will not catch everything, but it does aim to eliminate false positives. For example, shadowed variables are not reported as unused. PR #622
- Add a
replace_withfunction that is similar toreplacebut takes a closure instead of a replacement string. (https://github.com/vectordotdev/vrl/pull/628)
Enhancements
- Added the
alias_sourcesparameter forparse_groksto read sources from files. (https://github.com/vectordotdev/vrl/pull/194)
-
0.9.122 Dec 2023Release notes
Open source →Bug Fixes
- Support for WASM features using
chronowas readded. This was accidentally dropped in 0.9.0.
- Support for WASM features using
-
0.9.012 Dec 2023Release notes
Open source →parse_regex_allpatternparam can now be resolved from a variable- fixed
parse_jsondata corruption issue for numbers greater or equal toi64::MAX - support timestamp comparison using operators <, <=, >, >=
-
0.8.101 Nov 2023Nothing published for this version
-
0.8.031 Oct 2023 withdrawnRelease notes
Open source →Features
- added
contains_allfunction (https://github.com/vectordotdev/vrl/pull/468) from_unix_timestampnow accepts a new unit: Microseconds. (https://github.com/vectordotdev/vrl/pull/492)parse_nginx_logno longer fails ifupstream_response_length,upstream_response_time,upstream_statusare missing (https://github.com/vectordotdev/vrl/pull/498)- added
parse_floatfunction (https://github.com/vectordotdev/vrl/pull/484) - improved fallibility diagnostics (https://github.com/vectordotdev/vrl/pull/523)
- added
encode_snappyanddecode_snappyfunctions (https://github.com/vectordotdev/vrl/pull/543)
- added
-
0.7.025 Sep 2023Release notes
Open source →Bug Fixes
parse_nginx_logdoesn't fail if the values of key-value pairs in error logs is missing (https://github.com/vectordotdev/vrl/pull/442)encode_gzipandencode_zlibnow correctly check the compression level (preventing a panic) (https://github.com/vectordotdev/vrl/pull/393)- fix the type definition of array/object literal expressions where one of the values is undefined (https://github.com/vectordotdev/vrl/pull/401)
parse_aws_vpc_flow_lognow handles account-id value as a string, avoiding loss of leading zeros and case where value isunknown(https://github.com/vectordotdev/vrl/issues/263)
Features
parse_key_valuecan now parse values enclosed in single quote characters (https://github.com/vectordotdev/vrl/pull/382)- added
prettyparameter forencode_jsonvrl function to produce pretty-printed JSON string (https://github.com/vectordotdev/vrl/pull/370) - added
community_idfunction for generation of V1 Community IDs (https://github.com/vectordotdev/vrl/pull/360) - updated aws vpc flow log parsing to include version 5 fields (https://github.com/vectordotdev/vrl/issues/227)
- removed deprecated
to_timestampfunction (https://github.com/vectordotdev/vrl/pull/452) - changed
truncatearguments, it now accepts a suffix string instead of a boolean (https://github.com/vectordotdev/vrl/pull/454)
-
0.6.002 Aug 2023Release notes
Open source →Bug Fixes
- enquote values containing
=inencode_logfmtvrl function (https://github.com/vectordotdev/vector/issues/17855) - breaking change to
parse_nginx_log()to make it compatible to more unstandardized events (https://github.com/vectordotdev/vrl/pull/249)
Features
- deprecated
to_timestampvrl function (https://github.com/vectordotdev/vrl/pull/285) - add support for chacha20poly1305, xchacha20poly1305, xsalsa20poly1305 algorithms for encryption/decryption (https://github.com/vectordotdev/vrl/pull/293)
- add support for resolving variables to
Expr::resolve_constant(https://github.com/vectordotdev/vrl/pull/304) - introduce new encryption/decryption algorithm options (
"AES-*-CTR-BE","AES-*-CTR-LE") https://github.com/vectordotdev/vrl/pull/299
- enquote values containing
-
0.5.028 Jun 2023Release notes
Open source →- added \0 (null) character literal to lex parser (https://github.com/vectordotdev/vrl/pull/259)
- added the
timezoneargument to theformat_timestampvrl function. (https://github.com/vectordotdev/vrl/pull/247) - removed feature flags for each individual VRL function. (https://github.com/vectordotdev/vrl/pull/251)
- fixed a panic when arithmetic overflows. It now always wraps (only in debug builds). (https://github.com/vectordotdev/vrl/pull/252)
ingress_upstreaminfolog format has been added toparse_nginx_logfunction (https://github.com/vectordotdev/vrl/pull/193)- fixed type definitions for side-effects inside of queries (https://github.com/vectordotdev/vrl/pull/258)
- replaced
Program::final_type_statewithProgram::final_type_infoto give access to the type definitions of both the target and program result (https://github.com/vectordotdev/vrl/pull/262) - added
from_unix_timestampvrl function (https://github.com/vectordotdev/vrl/pull/277)
-
0.4.012 May 2023Release notes
Open source →- consolidated all crates into the root
vrlcrate. The external API stayed the same, with the exception of macros, which are now all exported at the root of thevrlcrate. - published VRL to crates.io. Standard crate versioning will now be used instead of git tags.
- consolidated all crates into the root