Reduce LLVM IR bloat one last time (#63882)

I think this is the final attempt of mine to do anything about the
binary size, as those fixes become relatively intricate and I like them
less and less.

Each commit has its own improvement stats and mainly reduce generic-code
duplication through shared non-generic helpers and `#[inline(never)]`
boundaries.

Total reduction stats:

With sccache disabled, `cargo clean` and `cargo build --release -p zed`:
Before: zed binary 396716472 bytes
After: zed binary 359416504 bytes (-9.40%, -37.29MB)

Release Notes:

- N/A

---------

Co-authored-by: zed-zippy[bot] <234243425+zed-zippy[bot]@users.noreply.github.com>
This commit is contained in:
Kirill Bulatovandzed-zippy[bot] authored and GitHub committed 2026-09-07 15:18:49 +00:00
1 parent ed98e7ca80
commit 84148a0f73
25 files changed
+399 -218

No files matched your search

-1
View File
@@ -30,7 +30,6 @@ gpui.workspace = true
log.workspace = true
parking_lot.workspace = true
paths.workspace = true
prost.workspace = true
release_channel.workspace = true
rpc = { workspace = true, features = ["gpui"] }
schemars.workspace = true
+3 -4
View File
@@ -1,6 +1,5 @@
use anyhow::Result;
use futures::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt};
use prost::Message as _;
use rpc::proto::Envelope;
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -20,7 +19,7 @@ pub async fn read_message_with_len<S: AsyncRead + Unpin>(
) -> Result<Envelope> {
buffer.resize(message_len as usize, 0);
stream.read_exact(buffer).await?;
Ok(Envelope::decode(buffer.as_slice())?)
Ok(Envelope::decode_from_slice(buffer.as_slice())?)
}
pub async fn read_message<S: AsyncRead + Unpin>(
@@ -40,13 +39,13 @@ pub async fn write_message<S: AsyncWrite + Unpin>(
buffer: &mut Vec<u8>,
message: Envelope,
) -> Result<()> {
let message_len = message.encoded_len() as u32;
let message_len = message.encoded_size() as u32;
stream
.write_all(message_len.to_le_bytes().as_slice())
.await?;
buffer.clear();
buffer.reserve(message_len as usize);
message.encode(buffer)?;
message.encode_to_buffer(buffer)?;
stream.write_all(buffer).await?;
Ok(())
}