# Tenzir Node v5.1.0

## 🚀 Features

### Add a `split_at_regex` option to `read_lines`

Apr 25, 2025 · [@tobim](https://github.com/tobim) · [#5123](https://github.com/tenzir/tenzir/pull/5123)

We added a `split_at_regex` option allows for the use of regular expressions to split events with the `read_lines` operator.

### Try and switch the Docker Image to `debian::trixie`

Apr 24, 2025 · [@IyeOnline](https://github.com/IyeOnline) · [#5113](https://github.com/tenzir/tenzir/pull/5113)

The `to_snowflake` operator is now available in the arm64 Docker image.

### Implement the `move` keyword

Apr 24, 2025 · [@dominiklohmann](https://github.com/dominiklohmann) · [#5127](https://github.com/tenzir/tenzir/pull/5127)

The `move` keyword may be used in front of fields anywhere in assignments to automatically drop fields after the assignment. For example, `foo = {bar: move bar, baz: move baz}` moves the top-level fields `bar` and `baz` into a new record under the top-level field `foo`.

The `move`, `drop`, and `unroll` operators now support the `?` field access notation to suppress warnings when the accessed field does not exist or the parent record is `null`. For example, `drop foo?` only drops the field `foo` if it exists, and does not warn if it doesn’t. This also works with the newly introduced `move` keyword.

### Implement `to_google_cloud_logging`

Apr 24, 2025 · [@raxyte](https://github.com/raxyte) · [#5135](https://github.com/tenzir/tenzir/pull/5135)

We added a `to_google_cloud_logging` operator that can send events to [Google Cloud Logging](https://cloud.google.com/logging).

### Experiment with a trailing `?` for field access

Apr 23, 2025 · [@dominiklohmann](https://github.com/dominiklohmann) · [#5128](https://github.com/tenzir/tenzir/pull/5128)

The `.?field` operator for field access with suppressed warnings is now deprecated in favor of `.field?`. We added the `.?` operator just recently, and it quickly gained a lot of popularity. However, suppressing warnings in top-level fields required writing `this.?field`, which is a mouthful. Now, with the trailing questionmark, this is just `field?` instead. Additionally, the trailing `?` operator works for index-based access, e.g., `field[index]?`. The `.?` operator will be removed in the near future. We’re sorry for the inconvenience.

### Expose Arrow’s bit-wise compute functions

Apr 22, 2025 · [@dominiklohmann](https://github.com/dominiklohmann) · [#5129](https://github.com/tenzir/tenzir/pull/5129)

We added bit-wise functions to TQL, including `bit_and`, `bit_or`, `bit_xor`, `bit_not`, `shift_left`, and `shift_right`. These functions enable performing bit-level operations on numeric values.

## 🔧 Changes

### Try and switch the Docker Image to `debian::trixie`

Apr 24, 2025 · [@IyeOnline](https://github.com/IyeOnline) · [#5113](https://github.com/tenzir/tenzir/pull/5113)

The `tenzir/tenzir` and `tenzir/tenzir-node` Docker images now use `debian:trixie-slim` instead of `debian:bookworm-slim` as a base image.

### Assume UTF8 in `file_contents`

Apr 24, 2025 · [@raxyte](https://github.com/raxyte) · [#5135](https://github.com/tenzir/tenzir/pull/5135)

The `file_contents` function now returns contents as `string` by default. Non-UTF-8 files can be read by specifying the `binary=true` option.

## 🐞 Bug Fixes

### Fix TLS options in `from_http`

Apr 24, 2025 · [@raxyte](https://github.com/raxyte) · [#5135](https://github.com/tenzir/tenzir/pull/5135)

We fixed a bug in parsing the TLS options for the `from_http` operator, preventing disabling of TLS.

### Fix edge case when parsing nullable lists with type conflicts

Apr 23, 2025 · [@jachris](https://github.com/jachris) · [#5134](https://github.com/tenzir/tenzir/pull/5134)

Parsing of nullable lists with type conflicts could previously lead to an error under very rare circumstances. This now works as expected.

### Use a proper subpipeline for `fork`

Apr 22, 2025 · [@dominiklohmann](https://github.com/dominiklohmann) · [#5133](https://github.com/tenzir/tenzir/pull/5133)

Operators that interact with state in the node that is not local to the pipeline, e.g., `context::update`, now properly work when used inside the nested pipeline of the `fork` operator. Previously, pipelines of the form `fork { context::update … }` failed at runtime.

[ Download on GitHub ](https://github.com/tenzir/tenzir/releases/tag/v5.1.0)

[Get the release artifacts and source code.](https://github.com/tenzir/tenzir/releases/tag/v5.1.0)