Devolutions / Devolutions/IronRDP
Consider rusty_zstd instead of zstd-safe for QOI+zstd
- Dominant language
- Rust
- Stars
- 3.2k
- Forks
- 275
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 189
Description
### The value of integrating
IronRDP is a modular Rust implementation of Microsoft RDP — PDU codecs, session state machines, virtual channels, and image codecs for native, WebAssembly, and .NET clients, servers, and proxies.
You link libzstd through `zstd-safe`; `ironrdp-session`'s `Cargo.toml` pins `zstd-safe = "^7.2"` for optional QOI+zstd.
Swapping that layer for rusty_zstd removes the C toolchain from the bulk path — no `zstd-sys`, no build script, `wasm32` with no porting layer. `unsafe` is one audited SIMD island, and frames interoperate with facebook/zstd both ways, within ~2-4% on size. Connection sequence, NLA, RemoteFX, and virtual channels stay as they are.
Not asking for a rip-and-replace of the image stack.
### How to integrate
Add `rusty_zstd` to `ironrdp-session`'s `Cargo.toml` (version and API: see the [rusty_zstd README](https://github.com/Remade-With-Rust/rusty_zstd)).
Keep QOI+zstd behind its existing feature flag. Route the work that currently goes through `zstd-safe` to the library API documented there. IronRDP's public API, session tests, and PDU layout stay the same; compressed frames remain interoperable with facebook/zstd.
### Remade With Rust & MATA
Remade With Rust rebuilds codecs, parsers, compression, identity, and storage in safe Rust so projects can drop C dependencies without dropping the workload. Other crates live at [github.com/Remade-With-Rust](https://github.com/Remade-With-Rust). Close this issue if it is a poor fit.
- x.com/farmer_timmm
Contributor guide
No contributing guide indexed for this repository
Research direction
Start in ironrdp-session/Cargo.toml and trace the existing optional QOI+zstd path that uses zstd-safe. Read the rusty_zstd README for its version and API, then inspect the session tests; done means the existing feature still works, public APIs and PDU layout are unchanged, and frames remain interoperable with facebook/zstd.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100