zstd-safe breaking changes
Every breaking API change we have recorded in zstd-safe on crates.io: 8 breaking changes in 2 versions. Below are its newest 2 versions, removals and renames first, each with its source.
Newest change November 3, 2026

On this page
7.4.0
- Signature changed
zstd_safe::CCtx
Was struct CCtx<'a>(NonNull<zstd_sys::ZSTD_CCtx>, PhantomData<&'a ()>); now struct CCtx<'a>(NonNull<zstd_sys::ZSTD_CCtx>, PhantomData<&'a ()>, Poison, Workers). crates.io - Signature changed
zstd_safe::CCtx::init_using_cdict
Was fn init_using_cdict<'b>(&mut self, cdict: &CDict<'b>) -> SafeResult where 'b: 'a, // Dictionary outlives the stream.; now fn init_using_cdict<'b>(&mut self, cdict: &'a CDict<'b>) -> SafeResult where 'b: 'a, // Dictionary outlives the... crates.io - Signature changed
zstd_safe::DCtx
Was struct DCtx<'a>(NonNull<zstd_sys::ZSTD_DCtx>, PhantomData<&'a ()>); now struct DCtx<'a>(NonNull<zstd_sys::ZSTD_DCtx>, PhantomData<&'a ()>, Poison, DState). crates.io - Signature changed
zstd_safe::DCtx::init_using_ddict
Was fn init_using_ddict<'b>(&mut self, ddict: &DDict<'b>) -> SafeResult where 'b: 'a,; now fn init_using_ddict<'b>(&mut self, ddict: &'a DDict<'b>) -> SafeResult where 'b: 'a,. crates.io - Signature changed
zstd_safe::seekable::Seekable
Was struct Seekable<'a>(NonNull<zstd_sys::ZSTD_seekable>, PhantomData<&'a ()>); now struct Seekable<'a>(NonNull<zstd_sys::ZSTD_seekable>, PhantomData<&'a ()>, Poison). crates.io
7.3.0
- Signature changed
zstd_safe::CCtx::compress_block
Was fn compress_block<C: WriteBuf + ?Sized>(&mut self, dst: &mut C, src: &[u8]) -> SafeResult; now unsafe fn compress_block<C: WriteBuf + ?Sized>(&mut self, dst: &mut C, src: &[u8]) -> SafeResult. crates.io - Signature changed
zstd_safe::DCtx::decompress_block
Was fn decompress_block<C: WriteBuf + ?Sized>(&mut self, dst: &mut C, src: &[u8]) -> SafeResult; now unsafe fn decompress_block<C: WriteBuf + ?Sized>(&mut self, dst: &mut C, src: &[u8]) -> SafeResult. crates.io - Signature changed
zstd_safe::DCtx::insert_block
Was fn insert_block(&mut self, block: &[u8]) -> usize; now unsafe fn insert_block(&mut self, block: &[u8]) -> usize. crates.io
Check your code
These are the changes. To see which of them reach your code, scan a public repository, or have your coding agent call check_code with your manifest or lockfile over MCP. The API reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

Put your code on continuous management.
Scan a public repository now, or give your agent one line.
See how out of date your code is.
Tell your agent what changed since it was trained.
claude mcp add --transport http since https://api.since.dev/mcp