Skip to content

Commit 478c656

Browse files
chore(release): prepare for publishing
1 parent f7e6106 commit 478c656

26 files changed

Lines changed: 433 additions & 413 deletions

File tree

Cargo.lock

Lines changed: 210 additions & 400 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-29
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
@@ -74,7 +74,7 @@ ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.6", optional = true }
7474
ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.8", optional = true }
7575

7676
# Optional backend crates (activated by features above)
77-
ironrdp-rdpsnd-native = { path = "../ironrdp-rdpsnd-native", version = "0.6", optional = true }
77+
ironrdp-rdpsnd-native = { path = "../ironrdp-rdpsnd-native", version = "0.7", optional = true }
7878
ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.6", optional = true }
7979
ironrdp-mstsgu = { path = "../ironrdp-mstsgu", optional = true }
8080
ironrdp-dvc-pipe-proxy = { path = "../ironrdp-dvc-pipe-proxy", optional = true }

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-29
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: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,18 @@ 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-29
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+
### <!-- 7 -->Build
16+
17+
- Align sspi and picky dependencies ([#1385](https://github.com/Devolutions/IronRDP/issues/1385)) ([0a461b5d36](https://github.com/Devolutions/IronRDP/commit/0a461b5d366677fd2f0f664a4f0074e4ab697c42))
18+
19+
20+
921
## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-connector-v0.8.0...ironrdp-connector-v0.9.0)] - 2026-05-27
1022

1123
### <!-- 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-29
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)