Skip to content

rust: take headers & trailers as slice, not vector#43799

Merged
mathetake merged 1 commit intoenvoyproxy:mainfrom
akonradi:rust-slice-not-vec
Mar 5, 2026
Merged

rust: take headers & trailers as slice, not vector#43799
mathetake merged 1 commit intoenvoyproxy:mainfrom
akonradi:rust-slice-not-vec

Conversation

@akonradi
Copy link
Copy Markdown
Contributor

@akonradi akonradi commented Mar 5, 2026

Commit Message:
This allows callers to provide a slice, which could be on the stack, instead of a Vec, which requires allocating on the heap. This is safe since the called functions weren't using the fact that they were taking ownership of the input, and were just producing a slice from the Vec internally and acting on that.

Additional Description:
Since the changed methods are using unsafe code, the usual "if it compiles, it's safe" Rust guarantees around lifetimes don't apply. That being said, all the callers were already taking containers of references, so if there is any usage beyond the lifetimes of those values happening with this change, it was present in the previous version of the code.

Risk Level: low
Testing: build and ran unit tests
Docs Changes: n/a
Release Notes: n/a
Platform Specific Features: n/a

This allows callers to provide a slice, which could be on the stack,
instead of a Vec, which requires allocating on the heap. This is safe
since the called functions weren't using the fact that they were taking
ownership of the input, and were just producing a slice from the Vec
internally and acting on that.

Signed-off-by: Alex Bakon <abakon@netflix.com>
@akonradi
Copy link
Copy Markdown
Contributor Author

akonradi commented Mar 5, 2026

I don't know what the policy is around breaking changes to the dynamic modules SDKs. This is one since consuming Rust code will need to be adjusted to the new signatures. It's still ABI-compatible with the previous version, though.

@mathetake
Copy link
Copy Markdown
Member

nice! I think the SDK can be broken

@mathetake mathetake merged commit 1d1b7e9 into envoyproxy:main Mar 5, 2026
29 checks passed
bmjask pushed a commit to bmjask/envoy that referenced this pull request Mar 14, 2026
Commit Message:
This allows callers to provide a slice, which could be on the stack,
instead of a Vec, which requires allocating on the heap. This is safe
since the called functions weren't using the fact that they were taking
ownership of the input, and were just producing a slice from the Vec
internally and acting on that.

Additional Description:
Since the changed methods are using `unsafe` code, the usual "if it
compiles, it's safe" Rust guarantees around lifetimes don't apply. That
being said, all the callers were already taking containers of
references, so if there is any usage beyond the lifetimes of those
values happening with this change, it was present in the previous
version of the code.

Risk Level: low
Testing: build and ran unit tests
Docs Changes: n/a
Release Notes: n/a
Platform Specific Features: n/a

Signed-off-by: Alex Bakon <abakon@netflix.com>
Signed-off-by: bjmask <11672696+bjmask@users.noreply.github.com>
bvandewalle pushed a commit to bvandewalle/envoy that referenced this pull request Mar 17, 2026
Commit Message:
This allows callers to provide a slice, which could be on the stack,
instead of a Vec, which requires allocating on the heap. This is safe
since the called functions weren't using the fact that they were taking
ownership of the input, and were just producing a slice from the Vec
internally and acting on that.

Additional Description:
Since the changed methods are using `unsafe` code, the usual "if it
compiles, it's safe" Rust guarantees around lifetimes don't apply. That
being said, all the callers were already taking containers of
references, so if there is any usage beyond the lifetimes of those
values happening with this change, it was present in the previous
version of the code.

Risk Level: low
Testing: build and ran unit tests
Docs Changes: n/a
Release Notes: n/a
Platform Specific Features: n/a

Signed-off-by: Alex Bakon <abakon@netflix.com>
fishcakez pushed a commit to fishcakez/envoy that referenced this pull request Mar 25, 2026
Commit Message:
This allows callers to provide a slice, which could be on the stack,
instead of a Vec, which requires allocating on the heap. This is safe
since the called functions weren't using the fact that they were taking
ownership of the input, and were just producing a slice from the Vec
internally and acting on that.

Additional Description:
Since the changed methods are using `unsafe` code, the usual "if it
compiles, it's safe" Rust guarantees around lifetimes don't apply. That
being said, all the callers were already taking containers of
references, so if there is any usage beyond the lifetimes of those
values happening with this change, it was present in the previous
version of the code.

Risk Level: low
Testing: build and ran unit tests
Docs Changes: n/a
Release Notes: n/a
Platform Specific Features: n/a

Signed-off-by: Alex Bakon <abakon@netflix.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants