Skip to content

Commit 8b36bb1

Browse files
chore(release): prepare for publishing
1 parent d3705af commit 8b36bb1

21 files changed

Lines changed: 397 additions & 425 deletions

File tree

Cargo.lock

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

crates/ironrdp-acceptor/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88

9+
## [[0.9.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-acceptor-v0.9.0...ironrdp-acceptor-v0.9.1)] - 2026-06-25
10+
11+
### <!-- 1 -->Features
12+
13+
- Negotiate the MCS message channel ([#1347](https://github.com/Devolutions/IronRDP/issues/1347)) ([efa5732805](https://github.com/Devolutions/IronRDP/commit/efa573280572f3c0f0270a40ae51a154562706cc))
14+
15+
Updates the handshake to properly negotiate the MCS message channel by advertising Extended Client Data Blocks support and, when requested by the client, allocating/joining the message channel and surfacing its ID in AcceptorResult. This enables server-initiated PDUs that must use the message channel (e.g., network auto-detect) to have a valid transport.
16+
17+
18+
919
## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-acceptor-v0.8.0...ironrdp-acceptor-v0.9.0)] - 2026-05-27
1020

1121
### <!-- 4 -->Bug Fixes

crates/ironrdp-acceptor/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ironrdp-acceptor"
3-
version = "0.9.0"
3+
version = "0.9.1"
44
readme = "README.md"
55
description = "State machines to drive an RDP connection acceptance sequence"
66
edition.workspace = true

crates/ironrdp-client/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ ironrdp = { path = "../ironrdp", version = "0.16", features = [
4141
"echo",
4242
] }
4343
ironrdp-core = { path = "../ironrdp-core", version = "0.2", features = ["alloc"] }
44-
ironrdp-rdpsnd-native = { path = "../ironrdp-rdpsnd-native", version = "0.6" }
44+
ironrdp-rdpsnd-native = { path = "../ironrdp-rdpsnd-native", version = "0.7" }
4545
ironrdp-tls = { path = "../ironrdp-tls", version = "0.2" }
4646
ironrdp-mstsgu = { path = "../ironrdp-mstsgu" }
4747
ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.9", features = ["reqwest"] }

crates/ironrdp-cliprdr/CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,22 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88

9+
## [[0.6.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-cliprdr-v0.6.0...ironrdp-cliprdr-v0.6.1)] - 2026-06-25
10+
11+
### <!-- 4 -->Bug Fixes
12+
13+
- Release outgoing locks before initiating a file copy ([#1375](https://github.com/Devolutions/IronRDP/issues/1375)) ([5d534f10a6](https://github.com/Devolutions/IronRDP/commit/5d534f10a6f62ac7a860521b4e95c8c47b754612))
14+
15+
- Lower verbosity of routine logs in library crates ([c36032f91b](https://github.com/Devolutions/IronRDP/commit/c36032f91b27390a2cd34bfb300cfbe099d847a9))
16+
17+
Library crates should not emit info! for routine, repeating operations;
18+
that floods the default logs of the final consumer, which owns the
19+
verbosity decision. Reserve info! for rare connection/session lifecycle
20+
milestones, debug! for significant one-off events, and trace! for the
21+
fine-grained detail only needed when nothing else explains a problem.
22+
23+
24+
925
## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cliprdr-v0.5.0...ironrdp-cliprdr-v0.6.0)] - 2026-05-27
1026

1127
### <!-- 1 -->Features

crates/ironrdp-cliprdr/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ironrdp-cliprdr"
3-
version = "0.6.0"
3+
version = "0.6.1"
44
readme = "README.md"
55
description = "CLIPRDR static channel for clipboard implemented as described in MS-RDPECLIP"
66
edition.workspace = true

crates/ironrdp-connector/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88

9+
## [[0.9.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-connector-v0.9.0...ironrdp-connector-v0.9.1)] - 2026-06-25
10+
11+
### <!-- 4 -->Bug Fixes
12+
13+
- Stay in CapabilitiesExchange when activation handles DeactivateAll ([#1371](https://github.com/Devolutions/IronRDP/issues/1371)) ([a4fde9fc50](https://github.com/Devolutions/IronRDP/commit/a4fde9fc50f41d1534f32e619bbe0bbbddc64f25))
14+
15+
16+
917
## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-connector-v0.8.0...ironrdp-connector-v0.9.0)] - 2026-05-27
1018

1119
### <!-- 1 -->Features

crates/ironrdp-connector/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ironrdp-connector"
3-
version = "0.9.0"
3+
version = "0.9.1"
44
readme = "README.md"
55
description = "State machines to drive an RDP connection sequence"
66
edition.workspace = true

crates/ironrdp-core/CHANGELOG.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,70 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88

9+
## [[0.2.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-core-v0.2.0...ironrdp-core-v0.2.1)] - 2026-06-25
10+
11+
### <!-- 5 -->Performance
12+
13+
- Replace softbuffer with direct put_image_data canvas present ([#1374](https://github.com/Devolutions/IronRDP/issues/1374)) ([d3705af18c](https://github.com/Devolutions/IronRDP/commit/d3705af18cff1851f4d48017affcb85aaa678d57))
14+
15+
## Summary
16+
17+
The web client presented frames through `softbuffer`, whose web backend
18+
repacks
19+
the **whole surface** (RGBA → u32 → RGBA into a fresh buffer) on every
20+
present.
21+
This replaces it with a direct `put_image_data` that uploads only the
22+
dirty
23+
region, and drops the `softbuffer` dependency.
24+
25+
Same idea as the IronVNC change.
26+
27+
## What changed
28+
29+
- Remove the `softbuffer` dependency; present each dirty region with
30+
`put_image_data` at its origin.
31+
- No full-surface buffer and no per-region scratch.
32+
`extract_partial_image` fills
33+
a single `WriteBuf` reused across frames, so steady-state draws don't
34+
allocate.
35+
- Force opaque alpha before upload (kept — see Correctness).
36+
- Add `WriteBuf::filled_mut` to `ironrdp-core` (mutable counterpart of
37+
`filled`).
38+
- `web-sys`: add `CanvasRenderingContext2d` + `ImageData`, drop the
39+
softbuffer-only
40+
features.
41+
42+
## Performance
43+
44+
Draw-stage time on a 1080p replay (595 frames / 110 dirty regions),
45+
headless
46+
Chromium, 8 measured passes × 3 runs, median. Both rows are reproducible
47+
branches
48+
off the replay-bench harness; the only difference is the render path.
49+
50+
| Render path | draw (ms) | vs softbuffer | branch |
51+
|---|--:|--:|---|
52+
| softbuffer `present_with_damage` | ~1031 | — | `bench/draw-softbuffer`
53+
|
54+
| this PR (direct upload, reused `WriteBuf`) | ~97 | **~10.6×** |
55+
`bench/draw-zerocopy` |
56+
57+
- The win is structural: upload the dirty region instead of repacking
58+
the whole
59+
surface every present.
60+
- Reusing one `WriteBuf` (vs a per-frame allocation) keeps the
61+
steady-state draw
62+
allocation-free; the remaining cost is the unavoidable `ImageData` JS
63+
copy.
64+
- Output is **byte-identical**: framebuffer CRC32 `2d8e1b79` matches the
65+
recorded
66+
ground truth and the rendered-canvas FNV-1a is unchanged.
67+
- Absolute ms carry ~±15% noise from machine load (decode drifted
68+
1.5–1.9 s); the
69+
ratio held across runs.
70+
71+
72+
973
## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-core-v0.1.5...ironrdp-core-v0.2.0)] - 2026-05-27
1074

1175
### <!-- 7 -->Build

crates/ironrdp-core/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ironrdp-core"
3-
version = "0.2.0"
3+
version = "0.2.1"
44
readme = "README.md"
55
description = "IronRDP common traits and types"
66
edition.workspace = true

0 commit comments

Comments
 (0)