Devolutions / Devolutions/IronRDP

Consider rusty_zstd instead of zstd-safe for QOI+zstd

Open
#1,886 2 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.