Skip to content

Commit 30b5fb2

Browse files
committed
Use lz-fear to get streaming decompression for bytecode
1 parent 1f1b713 commit 30b5fb2

File tree

3 files changed

+50
-10
lines changed

3 files changed

+50
-10
lines changed

Cargo.lock

Lines changed: 41 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bytecode/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ license = "MIT"
1111
[dependencies]
1212
bincode = "1.1"
1313
bitflags = "1.1"
14-
lz4-compression = "0.7"
14+
lz-fear = "0.1"
1515
num-bigint = { version = "0.3", features = ["serde"] }
1616
num-complex = { version = "0.3", features = ["serde"] }
1717
serde = { version = "1.0", features = ["derive"] }

bytecode/src/bytecode.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -691,15 +691,18 @@ impl<C: Constant> CodeObject<C> {
691691
impl CodeObject<ConstantData> {
692692
/// Load a code object from bytes
693693
pub fn from_bytes(data: &[u8]) -> Result<Self, Box<dyn std::error::Error>> {
694-
let data = lz4_compression::decompress::decompress(data)
695-
.map_err(|e| format!("lz4 error: {:?}", e))?;
696-
bincode::deserialize(&data).map_err(|e| e.into())
694+
let reader = lz_fear::framed::LZ4FrameReader::new(data)?;
695+
Ok(bincode::deserialize_from(reader.into_read())?)
697696
}
698697

699698
/// Serialize this bytecode to bytes.
700699
pub fn to_bytes(&self) -> Vec<u8> {
701-
let data = bincode::serialize(&self).expect("Code object must be serializable");
702-
lz4_compression::compress::compress(&data)
700+
let data = bincode::serialize(&self).expect("CodeObject is not serializable");
701+
let mut out = Vec::new();
702+
lz_fear::framed::CompressionSettings::default()
703+
.compress_with_size_unchecked(data.as_slice(), &mut out, data.len() as u64)
704+
.unwrap();
705+
out
703706
}
704707
}
705708

0 commit comments

Comments
 (0)