chore(release): prepare for publishing (#1020)
Some checks failed
CI / Check formatting (push) Has been cancelled
CI / Check typos (push) Has been cancelled
Coverage / Coverage Report (push) Has been cancelled
Release crates / Open release PR (push) Has been cancelled
Release crates / Release crates (push) Has been cancelled
CI / Fuzzing (push) Has been cancelled
CI / Web Client (push) Has been cancelled
CI / Checks [linux] (push) Has been cancelled
CI / Checks [macos] (push) Has been cancelled
CI / Checks [windows] (push) Has been cancelled
CI / FFI (push) Has been cancelled
CI / Success (push) Has been cancelled

This commit is contained in:
devolutionsbot 2025-12-20 06:42:23 -05:00 committed by GitHub
parent bd2aed7686
commit 87f8d073c8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 357 additions and 223 deletions

228
Cargo.lock generated
View file

@ -355,9 +355,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]] [[package]]
name = "aws-lc-rs" name = "aws-lc-rs"
version = "1.15.0" version = "1.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5932a7d9d28b0d2ea34c6b3779d35e3dd6f6345317c34e73438c4f1f29144151" checksum = "6a88aab2464f1f25453baa7a07c84c5b7684e274054ba06817f382357f77a288"
dependencies = [ dependencies = [
"aws-lc-sys", "aws-lc-sys",
"zeroize", "zeroize",
@ -365,11 +365,10 @@ dependencies = [
[[package]] [[package]]
name = "aws-lc-sys" name = "aws-lc-sys"
version = "0.33.0" version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1826f2e4cfc2cd19ee53c42fbf68e2f81ec21108e0b7ecf6a71cf062137360fc" checksum = "b45afffdee1e7c9126814751f88dddc747f41d91da16c9551a0f1e8a11e788a1"
dependencies = [ dependencies = [
"bindgen",
"cc", "cc",
"cmake", "cmake",
"dunce", "dunce",
@ -390,9 +389,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]] [[package]]
name = "base64ct" name = "base64ct"
version = "1.8.0" version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a"
[[package]] [[package]]
name = "benches" name = "benches"
@ -408,26 +407,6 @@ dependencies = [
"tracing-subscriber", "tracing-subscriber",
] ]
[[package]]
name = "bindgen"
version = "0.72.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
dependencies = [
"bitflags 2.10.0",
"cexpr",
"clang-sys",
"itertools",
"log",
"prettyplease",
"proc-macro2",
"quote",
"regex",
"rustc-hash",
"shlex",
"syn",
]
[[package]] [[package]]
name = "bit-set" name = "bit-set"
version = "0.8.0" version = "0.8.0"
@ -520,9 +499,9 @@ dependencies = [
[[package]] [[package]]
name = "bumpalo" name = "bumpalo"
version = "3.19.0" version = "3.19.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
[[package]] [[package]]
name = "bytemuck" name = "bytemuck"
@ -611,9 +590,9 @@ dependencies = [
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.2.46" version = "1.2.49"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b97463e1064cb1b1c1384ad0a0b9c8abd0988e2a91f52606c80ef14aadb63e36" checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215"
dependencies = [ dependencies = [
"find-msvc-tools", "find-msvc-tools",
"jobserver", "jobserver",
@ -627,15 +606,6 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
[[package]]
name = "cexpr"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
dependencies = [
"nom",
]
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
version = "1.0.4" version = "1.0.4"
@ -699,17 +669,6 @@ dependencies = [
"inout", "inout",
] ]
[[package]]
name = "clang-sys"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
dependencies = [
"glob",
"libc",
"libloading",
]
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.5.53" version = "4.5.53"
@ -752,9 +711,9 @@ checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
[[package]] [[package]]
name = "cmake" name = "cmake"
version = "0.1.54" version = "0.1.57"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d"
dependencies = [ dependencies = [
"cc", "cc",
] ]
@ -808,9 +767,9 @@ checksum = "0dabb6555f92fb9ee4140454eb5dcd14c7960e1225c6d1a6cc361f032947713e"
[[package]] [[package]]
name = "convert_case" name = "convert_case"
version = "0.7.1" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9"
dependencies = [ dependencies = [
"unicode-segmentation", "unicode-segmentation",
] ]
@ -1239,22 +1198,23 @@ dependencies = [
[[package]] [[package]]
name = "derive_more" name = "derive_more"
version = "2.0.1" version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618"
dependencies = [ dependencies = [
"derive_more-impl", "derive_more-impl",
] ]
[[package]] [[package]]
name = "derive_more-impl" name = "derive_more-impl"
version = "2.0.1" version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b"
dependencies = [ dependencies = [
"convert_case", "convert_case",
"proc-macro2", "proc-macro2",
"quote", "quote",
"rustc_version",
"syn", "syn",
] ]
@ -1963,9 +1923,9 @@ dependencies = [
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.16.0" version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
[[package]] [[package]]
name = "heapless" name = "heapless"
@ -2064,12 +2024,11 @@ dependencies = [
[[package]] [[package]]
name = "http" name = "http"
version = "1.3.1" version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
dependencies = [ dependencies = [
"bytes", "bytes",
"fnv",
"itoa", "itoa",
] ]
@ -2266,9 +2225,9 @@ checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
[[package]] [[package]]
name = "icu_properties" name = "icu_properties"
version = "2.1.1" version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
dependencies = [ dependencies = [
"icu_collections", "icu_collections",
"icu_locale_core", "icu_locale_core",
@ -2280,9 +2239,9 @@ dependencies = [
[[package]] [[package]]
name = "icu_properties_data" name = "icu_properties_data"
version = "2.1.1" version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
[[package]] [[package]]
name = "icu_provider" name = "icu_provider"
@ -2335,9 +2294,9 @@ dependencies = [
[[package]] [[package]]
name = "indexmap" name = "indexmap"
version = "2.12.0" version = "2.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"
dependencies = [ dependencies = [
"equivalent", "equivalent",
"hashbrown", "hashbrown",
@ -2409,7 +2368,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp" name = "ironrdp"
version = "0.13.0" version = "0.14.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
@ -2442,7 +2401,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-acceptor" name = "ironrdp-acceptor"
version = "0.7.0" version = "0.8.0"
dependencies = [ dependencies = [
"ironrdp-async", "ironrdp-async",
"ironrdp-connector", "ironrdp-connector",
@ -2465,7 +2424,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-async" name = "ironrdp-async"
version = "0.7.0" version = "0.8.0"
dependencies = [ dependencies = [
"bytes", "bytes",
"ironrdp-connector", "ironrdp-connector",
@ -2486,7 +2445,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-blocking" name = "ironrdp-blocking"
version = "0.7.0" version = "0.8.0"
dependencies = [ dependencies = [
"bytes", "bytes",
"ironrdp-connector", "ironrdp-connector",
@ -2544,7 +2503,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-cliprdr" name = "ironrdp-cliprdr"
version = "0.4.0" version = "0.5.0"
dependencies = [ dependencies = [
"bitflags 2.10.0", "bitflags 2.10.0",
"ironrdp-core", "ironrdp-core",
@ -2563,7 +2522,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-cliprdr-native" name = "ironrdp-cliprdr-native"
version = "0.4.0" version = "0.5.0"
dependencies = [ dependencies = [
"ironrdp-cliprdr", "ironrdp-cliprdr",
"ironrdp-core", "ironrdp-core",
@ -2573,7 +2532,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-connector" name = "ironrdp-connector"
version = "0.7.1" version = "0.8.0"
dependencies = [ dependencies = [
"arbitrary", "arbitrary",
"ironrdp-core", "ironrdp-core",
@ -2637,7 +2596,7 @@ version = "0.1.3"
[[package]] [[package]]
name = "ironrdp-futures" name = "ironrdp-futures"
version = "0.5.0" version = "0.6.0"
dependencies = [ dependencies = [
"bytes", "bytes",
"futures-util", "futures-util",
@ -2662,7 +2621,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-graphics" name = "ironrdp-graphics"
version = "0.6.0" version = "0.7.0"
dependencies = [ dependencies = [
"bit_field", "bit_field",
"bitflags 2.10.0", "bitflags 2.10.0",
@ -2750,7 +2709,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-rdpdr" name = "ironrdp-rdpdr"
version = "0.4.1" version = "0.5.0"
dependencies = [ dependencies = [
"bitflags 2.10.0", "bitflags 2.10.0",
"ironrdp-core", "ironrdp-core",
@ -2762,7 +2721,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-rdpdr-native" name = "ironrdp-rdpdr-native"
version = "0.4.0" version = "0.5.0"
dependencies = [ dependencies = [
"ironrdp-core", "ironrdp-core",
"ironrdp-pdu", "ironrdp-pdu",
@ -2792,7 +2751,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-rdpsnd-native" name = "ironrdp-rdpsnd-native"
version = "0.4.1" version = "0.4.2"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bytemuck", "bytemuck",
@ -2805,7 +2764,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-server" name = "ironrdp-server"
version = "0.9.0" version = "0.10.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
@ -2835,7 +2794,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-session" name = "ironrdp-session"
version = "0.7.0" version = "0.8.0"
dependencies = [ dependencies = [
"ironrdp-connector", "ironrdp-connector",
"ironrdp-core", "ironrdp-core",
@ -2912,7 +2871,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-tls" name = "ironrdp-tls"
version = "0.1.4" version = "0.2.0"
dependencies = [ dependencies = [
"tokio", "tokio",
"tokio-native-tls", "tokio-native-tls",
@ -2922,7 +2881,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-tokio" name = "ironrdp-tokio"
version = "0.7.0" version = "0.8.0"
dependencies = [ dependencies = [
"bytes", "bytes",
"ironrdp-async", "ironrdp-async",
@ -3069,9 +3028,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.177" version = "0.2.178"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
[[package]] [[package]]
name = "libloading" name = "libloading"
@ -3102,13 +3061,13 @@ dependencies = [
[[package]] [[package]]
name = "libredox" name = "libredox"
version = "0.1.10" version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50"
dependencies = [ dependencies = [
"bitflags 2.10.0", "bitflags 2.10.0",
"libc", "libc",
"redox_syscall 0.5.18", "redox_syscall 0.6.0",
] ]
[[package]] [[package]]
@ -3253,9 +3212,9 @@ dependencies = [
[[package]] [[package]]
name = "mio" name = "mio"
version = "1.1.0" version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
dependencies = [ dependencies = [
"libc", "libc",
"log", "log",
@ -3283,9 +3242,9 @@ dependencies = [
[[package]] [[package]]
name = "moxcms" name = "moxcms"
version = "0.7.9" version = "0.7.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fbdd3d7436f8b5e892b8b7ea114271ff0fa00bc5acae845d53b07d498616ef6" checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97"
dependencies = [ dependencies = [
"num-traits", "num-traits",
"pxfm", "pxfm",
@ -4289,16 +4248,6 @@ dependencies = [
"yansi", "yansi",
] ]
[[package]]
name = "prettyplease"
version = "0.2.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
dependencies = [
"proc-macro2",
"syn",
]
[[package]] [[package]]
name = "primefield" name = "primefield"
version = "0.14.0-pre.6" version = "0.14.0-pre.6"
@ -4366,9 +4315,9 @@ dependencies = [
[[package]] [[package]]
name = "pxfm" name = "pxfm"
version = "0.1.25" version = "0.1.27"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84" checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8"
dependencies = [ dependencies = [
"num-traits", "num-traits",
] ]
@ -4594,6 +4543,15 @@ dependencies = [
"bitflags 2.10.0", "bitflags 2.10.0",
] ]
[[package]]
name = "redox_syscall"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5"
dependencies = [
"bitflags 2.10.0",
]
[[package]] [[package]]
name = "regex" name = "regex"
version = "1.12.2" version = "1.12.2"
@ -4859,9 +4817,9 @@ dependencies = [
[[package]] [[package]]
name = "rustls-pki-types" name = "rustls-pki-types"
version = "1.13.0" version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282"
dependencies = [ dependencies = [
"web-time", "web-time",
"zeroize", "zeroize",
@ -5065,9 +5023,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_spanned" name = "serde_spanned"
version = "1.0.3" version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776"
dependencies = [ dependencies = [
"serde_core", "serde_core",
] ]
@ -5175,9 +5133,9 @@ dependencies = [
[[package]] [[package]]
name = "signal-hook-registry" name = "signal-hook-registry"
version = "1.4.6" version = "1.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad"
dependencies = [ dependencies = [
"libc", "libc",
] ]
@ -5194,9 +5152,9 @@ dependencies = [
[[package]] [[package]]
name = "simd-adler32" name = "simd-adler32"
version = "0.3.7" version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
[[package]] [[package]]
name = "slab" name = "slab"
@ -5435,9 +5393,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.110" version = "2.0.111"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -5772,9 +5730,9 @@ dependencies = [
[[package]] [[package]]
name = "toml" name = "toml"
version = "0.9.8" version = "0.9.9+spec-1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" checksum = "eb5238e643fc34a1d5d7e753e1532a91912d74b63b92b3ea51fde8d1b7bc79dd"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"serde_core", "serde_core",
@ -5787,18 +5745,18 @@ dependencies = [
[[package]] [[package]]
name = "toml_datetime" name = "toml_datetime"
version = "0.7.3" version = "0.7.4+spec-1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" checksum = "fe3cea6b2aa3b910092f6abd4053ea464fab5f9c170ba5e9a6aead16ec4af2b6"
dependencies = [ dependencies = [
"serde_core", "serde_core",
] ]
[[package]] [[package]]
name = "toml_edit" name = "toml_edit"
version = "0.23.7" version = "0.23.10+spec-1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"toml_datetime", "toml_datetime",
@ -5808,18 +5766,18 @@ dependencies = [
[[package]] [[package]]
name = "toml_parser" name = "toml_parser"
version = "1.0.4" version = "1.0.5+spec-1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" checksum = "4c03bee5ce3696f31250db0bbaff18bc43301ce0e8db2ed1f07cbb2acf89984c"
dependencies = [ dependencies = [
"winnow", "winnow",
] ]
[[package]] [[package]]
name = "toml_writer" name = "toml_writer"
version = "1.0.4" version = "1.0.5+spec-1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" checksum = "a9cd6190959dce0994aa8970cd32ab116d1851ead27e866039acaf2524ce44fa"
[[package]] [[package]]
name = "tower" name = "tower"
@ -6920,9 +6878,9 @@ dependencies = [
[[package]] [[package]]
name = "winnow" name = "winnow"
version = "0.7.13" version = "0.7.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
dependencies = [ dependencies = [
"memchr", "memchr",
] ]
@ -6949,9 +6907,9 @@ dependencies = [
[[package]] [[package]]
name = "winscard" name = "winscard"
version = "0.2.4" version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6a17695372a560c4f47f2e24e7754cdcc138fd6e62b8b54801d69f19a121a1c" checksum = "73b6ec4e6176df62589d1ac9950f6295be87ca06ee61a7c9a579a2bcc80efe34"
dependencies = [ dependencies = [
"bitflags 2.10.0", "bitflags 2.10.0",
"crypto-bigint", "crypto-bigint",
@ -7137,18 +7095,18 @@ dependencies = [
[[package]] [[package]]
name = "zerocopy" name = "zerocopy"
version = "0.8.27" version = "0.8.31"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3"
dependencies = [ dependencies = [
"zerocopy-derive", "zerocopy-derive",
] ]
[[package]] [[package]]
name = "zerocopy-derive" name = "zerocopy-derive"
version = "0.8.27" version = "0.8.31"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",

View file

@ -6,6 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-acceptor-v0.7.0...ironrdp-acceptor-v0.8.0)] - 2025-12-18
### <!-- 4 -->Bug Fixes
- [**breaking**] Use static dispatch for NetworkClient trait ([#1043](https://github.com/Devolutions/IronRDP/issues/1043)) ([bca6d190a8](https://github.com/Devolutions/IronRDP/commit/bca6d190a870708468534d224ff225a658767a9a))
- Rename `AsyncNetworkClient` to `NetworkClient`
- Replace dynamic dispatch (`Option<&mut dyn ...>`) with static dispatch
using generics (`&mut N where N: NetworkClient`)
- Reorder `connect_finalize` parameters for consistency across crates
## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-acceptor-v0.5.0...ironrdp-acceptor-v0.6.0)] - 2025-07-08 ## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-acceptor-v0.5.0...ironrdp-acceptor-v0.6.0)] - 2025-07-08
### <!-- 1 -->Features ### <!-- 1 -->Features

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-acceptor" name = "ironrdp-acceptor"
version = "0.7.0" version = "0.8.0"
readme = "README.md" readme = "README.md"
description = "State machines to drive an RDP connection acceptance sequence" description = "State machines to drive an RDP connection acceptance sequence"
edition.workspace = true edition.workspace = true
@ -19,8 +19,8 @@ test = false
ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] } # public ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] } # public
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6" } # public ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6" } # public
ironrdp-svc = { path = "../ironrdp-svc", version = "0.5" } # public ironrdp-svc = { path = "../ironrdp-svc", version = "0.5" } # public
ironrdp-connector = { path = "../ironrdp-connector", version = "0.7" } # public ironrdp-connector = { path = "../ironrdp-connector", version = "0.8" } # public
ironrdp-async = { path = "../ironrdp-async", version = "0.7" } # public ironrdp-async = { path = "../ironrdp-async", version = "0.8" } # public
tracing = { version = "0.1", features = ["log"] } tracing = { version = "0.1", features = ["log"] }
[lints] [lints]

View file

@ -6,14 +6,23 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-async-v0.7.0...ironrdp-async-v0.8.0)] - 2025-12-18
### <!-- 4 -->Bug Fixes
- [**breaking**] Use static dispatch for NetworkClient trait ([#1043](https://github.com/Devolutions/IronRDP/issues/1043)) ([bca6d190a8](https://github.com/Devolutions/IronRDP/commit/bca6d190a870708468534d224ff225a658767a9a))
- Rename `AsyncNetworkClient` to `NetworkClient`
- Replace dynamic dispatch (`Option<&mut dyn ...>`) with static dispatch
using generics (`&mut N where N: NetworkClient`)
- Reorder `connect_finalize` parameters for consistency across crates
## [[0.3.2](https://github.com/Devolutions/IronRDP/compare/ironrdp-async-v0.3.1...ironrdp-async-v0.3.2)] - 2025-03-12 ## [[0.3.2](https://github.com/Devolutions/IronRDP/compare/ironrdp-async-v0.3.1...ironrdp-async-v0.3.2)] - 2025-03-12
### <!-- 7 -->Build ### <!-- 7 -->Build
- Bump ironrdp-pdu - Bump ironrdp-pdu
## [[0.3.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-async-v0.3.0...ironrdp-async-v0.3.1)] - 2025-03-12 ## [[0.3.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-async-v0.3.0...ironrdp-async-v0.3.1)] - 2025-03-12
### <!-- 7 -->Build ### <!-- 7 -->Build

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-async" name = "ironrdp-async"
version = "0.7.0" version = "0.8.0"
readme = "README.md" readme = "README.md"
description = "Provides `Future`s wrapping the IronRDP state machines conveniently" description = "Provides `Future`s wrapping the IronRDP state machines conveniently"
edition.workspace = true edition.workspace = true
@ -16,7 +16,7 @@ doctest = false
test = false test = false
[dependencies] [dependencies]
ironrdp-connector = { path = "../ironrdp-connector", version = "0.7" } # public ironrdp-connector = { path = "../ironrdp-connector", version = "0.8" } # public
ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] } # public ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] } # public
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6" } # public ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6" } # public
tracing = { version = "0.1", features = ["log"] } tracing = { version = "0.1", features = ["log"] }

View file

@ -6,6 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-blocking-v0.7.0...ironrdp-blocking-v0.8.0)] - 2025-12-18
### <!-- 4 -->Bug Fixes
- [**breaking**] Use static dispatch for NetworkClient trait ([#1043](https://github.com/Devolutions/IronRDP/issues/1043)) ([bca6d190a8](https://github.com/Devolutions/IronRDP/commit/bca6d190a870708468534d224ff225a658767a9a))
- Rename `AsyncNetworkClient` to `NetworkClient`
- Replace dynamic dispatch (`Option<&mut dyn ...>`) with static dispatch
using generics (`&mut N where N: NetworkClient`)
- Reorder `connect_finalize` parameters for consistency across crates
## [[0.4.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-blocking-v0.3.1...ironrdp-blocking-v0.4.0)] - 2025-03-12 ## [[0.4.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-blocking-v0.3.1...ironrdp-blocking-v0.4.0)] - 2025-03-12
### <!-- 7 -->Build ### <!-- 7 -->Build
@ -13,7 +24,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Bump ironrdp-pdu - Bump ironrdp-pdu
## [[0.3.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-blocking-v0.3.0...ironrdp-blocking-v0.3.1)] - 2025-03-12 ## [[0.3.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-blocking-v0.3.0...ironrdp-blocking-v0.3.1)] - 2025-03-12
### <!-- 7 -->Build ### <!-- 7 -->Build
@ -31,7 +41,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Use CDN URLs instead of the blob storage URLs for Devolutions logo (#631) ([dd249909a8](https://github.com/Devolutions/IronRDP/commit/dd249909a894004d4f728d30b3a4aa77a0f8193b)) - Use CDN URLs instead of the blob storage URLs for Devolutions logo (#631) ([dd249909a8](https://github.com/Devolutions/IronRDP/commit/dd249909a894004d4f728d30b3a4aa77a0f8193b))
## [[0.2.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-blocking-v0.2.0...ironrdp-blocking-v0.2.1)] - 2024-12-14 ## [[0.2.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-blocking-v0.2.0...ironrdp-blocking-v0.2.1)] - 2024-12-14
### Other ### Other

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-blocking" name = "ironrdp-blocking"
version = "0.7.0" version = "0.8.0"
readme = "README.md" readme = "README.md"
description = "Blocking I/O abstraction wrapping the IronRDP state machines conveniently" description = "Blocking I/O abstraction wrapping the IronRDP state machines conveniently"
edition.workspace = true edition.workspace = true
@ -16,7 +16,7 @@ doctest = false
test = false test = false
[dependencies] [dependencies]
ironrdp-connector = { path = "../ironrdp-connector", version = "0.7" } # public ironrdp-connector = { path = "../ironrdp-connector", version = "0.8" } # public
ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] } # public ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] } # public
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6" } # public ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6" } # public
tracing = { version = "0.1", features = ["log"] } tracing = { version = "0.1", features = ["log"] }

View file

@ -32,7 +32,7 @@ qoiz = ["ironrdp/qoiz"]
[dependencies] [dependencies]
# Protocols # Protocols
ironrdp = { path = "../ironrdp", version = "0.13", features = [ ironrdp = { path = "../ironrdp", version = "0.14", features = [
"session", "session",
"input", "input",
"graphics", "graphics",
@ -45,11 +45,11 @@ ironrdp = { path = "../ironrdp", version = "0.13", features = [
"connector", "connector",
] } ] }
ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] } ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] }
ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.4" } ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.5" }
ironrdp-rdpsnd-native = { path = "../ironrdp-rdpsnd-native", version = "0.4" } ironrdp-rdpsnd-native = { path = "../ironrdp-rdpsnd-native", version = "0.4" }
ironrdp-tls = { path = "../ironrdp-tls", version = "0.1" } ironrdp-tls = { path = "../ironrdp-tls", version = "0.2" }
ironrdp-mstsgu = { path = "../ironrdp-mstsgu" } ironrdp-mstsgu = { path = "../ironrdp-mstsgu" }
ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.7", features = ["reqwest"] } ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.8", features = ["reqwest"] }
ironrdp-rdcleanpath.path = "../ironrdp-rdcleanpath" ironrdp-rdcleanpath.path = "../ironrdp-rdcleanpath"
ironrdp-dvc-pipe-proxy.path = "../ironrdp-dvc-pipe-proxy" ironrdp-dvc-pipe-proxy.path = "../ironrdp-dvc-pipe-proxy"
ironrdp-propertyset.path = "../ironrdp-propertyset" ironrdp-propertyset.path = "../ironrdp-propertyset"

View file

@ -6,6 +6,22 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.5.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cliprdr-native-v0.4.0...ironrdp-cliprdr-native-v0.5.0)] - 2025-12-18
### <!-- 4 -->Bug Fixes
- Prevent window class registration error on multiple sessions ([#1047](https://github.com/Devolutions/IronRDP/issues/1047)) ([a2af587e60](https://github.com/Devolutions/IronRDP/commit/a2af587e60e869f0235703e21772d1fc6a7dadcd))
When starting a second clipboard session, `RegisterClassA` would fail
with `ERROR_CLASS_ALREADY_EXISTS` because window classes are global to
the process. Now checks if the class is already registered before
attempting registration, allowing multiple WinClipboard instances to
coexist.
### <!-- 7 -->Build
- Bump windows from 0.61.3 to 0.62.1 ([#1010](https://github.com/Devolutions/IronRDP/issues/1010)) ([79e71c4f90](https://github.com/Devolutions/IronRDP/commit/79e71c4f90ea68b14fe45241c1cf3953027b22a2))
## [[0.4.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cliprdr-native-v0.3.0...ironrdp-cliprdr-native-v0.4.0)] - 2025-08-29 ## [[0.4.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cliprdr-native-v0.3.0...ironrdp-cliprdr-native-v0.4.0)] - 2025-08-29
### <!-- 4 -->Bug Fixes ### <!-- 4 -->Bug Fixes

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-cliprdr-native" name = "ironrdp-cliprdr-native"
version = "0.4.0" version = "0.5.0"
readme = "README.md" readme = "README.md"
description = "Native CLIPRDR static channel backend implementations for IronRDP" description = "Native CLIPRDR static channel backend implementations for IronRDP"
edition.workspace = true edition.workspace = true
@ -16,7 +16,7 @@ doctest = false
test = false test = false
[dependencies] [dependencies]
ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.4" } # public ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.5" } # public
ironrdp-core = { path = "../ironrdp-core", version = "0.1" } ironrdp-core = { path = "../ironrdp-core", version = "0.1" }
tracing = { version = "0.1", features = ["log"] } tracing = { version = "0.1", features = ["log"] }

View file

@ -6,6 +6,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.5.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cliprdr-v0.4.0...ironrdp-cliprdr-v0.5.0)] - 2025-12-18
### <!-- 4 -->Bug Fixes
- Fixes the Cliprdr `SvcProcessor` impl to support handling a `TemporaryDirectory` Clipboard PDU ([#1031](https://github.com/Devolutions/IronRDP/issues/1031)) ([f2326ef046](https://github.com/Devolutions/IronRDP/commit/f2326ef046cc81fb0e8985f03382859085882e86))
- Allow servers to announce clipboard ownership ([#1053](https://github.com/Devolutions/IronRDP/issues/1053)) ([d587b0c4c1](https://github.com/Devolutions/IronRDP/commit/d587b0c4c114c49d30f52859f43b22f829456a01))
Servers can now send Format List PDU via initiate_copy() regardless of
internal state. The existing state machine was designed for clients
where clipboard initialization must complete before announcing
ownership.
MS-RDPECLIP Section 2.2.3.1 specifies that Format List PDU is sent by
either client or server when the local clipboard is updated. Servers
should be able to announce clipboard changes immediately after channel
negotiation.
This change enables RDP servers to properly announce clipboard ownership
by bypassing the Initialization/Ready state check when R::is_server() is
true. Client behavior remains unchanged.
- [**breaking**] Removed the `PackedMetafile::data()` method in favor of making the `PackedMetafile::data` field public.
## [[0.4.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cliprdr-v0.3.0...ironrdp-cliprdr-v0.4.0)] - 2025-08-29 ## [[0.4.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cliprdr-v0.3.0...ironrdp-cliprdr-v0.4.0)] - 2025-08-29
### <!-- 4 -->Bug Fixes ### <!-- 4 -->Bug Fixes

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-cliprdr" name = "ironrdp-cliprdr"
version = "0.4.0" version = "0.5.0"
readme = "README.md" readme = "README.md"
description = "CLIPRDR static channel for clipboard implemented as described in MS-RDPECLIP" description = "CLIPRDR static channel for clipboard implemented as described in MS-RDPECLIP"
edition.workspace = true edition.workspace = true

View file

@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-connector-v0.7.1...ironrdp-connector-v0.8.0)] - 2025-12-18
### <!-- 7 -->Build
- Bump picky and sspi ([#1028](https://github.com/Devolutions/IronRDP/issues/1028)) ([5bd319126d](https://github.com/Devolutions/IronRDP/commit/5bd319126d32fbd8e505508e27ab2b1a18a83d04))
This fixes build issues with some dependencies.
## [[0.7.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-connector-v0.7.0...ironrdp-connector-v0.7.1)] - 2025-09-04 ## [[0.7.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-connector-v0.7.0...ironrdp-connector-v0.7.1)] - 2025-09-04
### <!-- 1 -->Features ### <!-- 1 -->Features

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-connector" name = "ironrdp-connector"
version = "0.7.1" version = "0.8.0"
readme = "README.md" readme = "README.md"
description = "State machines to drive an RDP connection sequence" description = "State machines to drive an RDP connection sequence"
edition.workspace = true edition.workspace = true

View file

@ -6,13 +6,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-futures-v0.5.0...ironrdp-futures-v0.6.0)] - 2025-12-18
## [[0.1.3](https://github.com/Devolutions/IronRDP/compare/ironrdp-futures-v0.1.2...ironrdp-futures-v0.1.3)] - 2025-03-12 ## [[0.1.3](https://github.com/Devolutions/IronRDP/compare/ironrdp-futures-v0.1.2...ironrdp-futures-v0.1.3)] - 2025-03-12
### <!-- 7 -->Build ### <!-- 7 -->Build
- Update dependencies (#695) ([c21fa44fd6](https://github.com/Devolutions/IronRDP/commit/c21fa44fd6f3c6a6b74788ff68e83133c1314caa)) - Update dependencies (#695) ([c21fa44fd6](https://github.com/Devolutions/IronRDP/commit/c21fa44fd6f3c6a6b74788ff68e83133c1314caa))
## [[0.1.2](https://github.com/Devolutions/IronRDP/compare/ironrdp-futures-v0.1.1...ironrdp-futures-v0.1.2)] - 2025-01-28 ## [[0.1.2](https://github.com/Devolutions/IronRDP/compare/ironrdp-futures-v0.1.1...ironrdp-futures-v0.1.2)] - 2025-01-28
### <!-- 6 -->Documentation ### <!-- 6 -->Documentation

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-futures" name = "ironrdp-futures"
version = "0.5.0" version = "0.6.0"
readme = "README.md" readme = "README.md"
description = "`Framed*` traits implementation above futuress traits" description = "`Framed*` traits implementation above futuress traits"
edition.workspace = true edition.workspace = true
@ -17,7 +17,7 @@ test = false
[dependencies] [dependencies]
futures-util = { version = "0.3", features = ["io"] } # public futures-util = { version = "0.3", features = ["io"] } # public
ironrdp-async = { path = "../ironrdp-async", version = "0.7" } # public ironrdp-async = { path = "../ironrdp-async", version = "0.8" } # public
bytes = "1" # public bytes = "1" # public
[lints] [lints]

View file

@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.7.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-graphics-v0.6.0...ironrdp-graphics-v0.7.0)] - 2025-12-18
### Added
- [**breaking**] `InvalidIntegralConversion` variant in `RlgrError` and `ZgfxError`
### <!-- 7 -->Build
- Bump bytemuck from 1.23.2 to 1.24.0 ([#1008](https://github.com/Devolutions/IronRDP/issues/1008)) ([a24a1fa9e8](https://github.com/Devolutions/IronRDP/commit/a24a1fa9e8f1898b2fcdd41d87660ab9e38f89ed))
## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-graphics-v0.5.0...ironrdp-graphics-v0.6.0)] - 2025-06-27 ## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-graphics-v0.5.0...ironrdp-graphics-v0.6.0)] - 2025-06-27
### <!-- 4 -->Bug Fixes ### <!-- 4 -->Bug Fixes

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-graphics" name = "ironrdp-graphics"
version = "0.6.0" version = "0.7.0"
readme = "README.md" readme = "README.md"
description = "RDP image processing primitives" description = "RDP image processing primitives"
edition.workspace = true edition.workspace = true

View file

@ -30,7 +30,7 @@ hyper-util = { version = "0.1", features = ["tokio"] }
hyper = { version = "1.7", features = ["client", "http1"] } hyper = { version = "1.7", features = ["client", "http1"] }
ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["std"] } ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["std"] }
ironrdp-error = { path = "../ironrdp-error", version = "0.1" } ironrdp-error = { path = "../ironrdp-error", version = "0.1" }
ironrdp-tls = { path = "../ironrdp-tls", version = "0.1" } ironrdp-tls = { path = "../ironrdp-tls", version = "0.2" }
log = "0.4" log = "0.4"
tokio-tungstenite = { version = "0.28" } tokio-tungstenite = { version = "0.28" }
tokio-util = { version = "0.7" } tokio-util = { version = "0.7" }

View file

@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.5.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-native-v0.4.0...ironrdp-rdpdr-native-v0.5.0)] - 2025-12-18
## [[0.4.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-native-v0.3.0...ironrdp-rdpdr-native-v0.4.0)] - 2025-08-29 ## [[0.4.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-native-v0.3.0...ironrdp-rdpdr-native-v0.4.0)] - 2025-08-29
### <!-- 7 -->Build ### <!-- 7 -->Build

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-rdpdr-native" name = "ironrdp-rdpdr-native"
version = "0.4.0" version = "0.5.0"
readme = "README.md" readme = "README.md"
description = "Native RDPDR static channel backend implementations for IronRDP" description = "Native RDPDR static channel backend implementations for IronRDP"
edition.workspace = true edition.workspace = true
@ -19,6 +19,6 @@ test = false
ironrdp-core = { path = "../ironrdp-core", version = "0.1" } ironrdp-core = { path = "../ironrdp-core", version = "0.1" }
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6" } # public ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6" } # public
ironrdp-svc = { path = "../ironrdp-svc", version = "0.5" } # public ironrdp-svc = { path = "../ironrdp-svc", version = "0.5" } # public
ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.4" } # public ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.5" } # public
nix = { version = "0.30", features = ["fs", "dir"] } nix = { version = "0.30", features = ["fs", "dir"] }
tracing = { version = "0.1", features = ["log"] } tracing = { version = "0.1", features = ["log"] }

View file

@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.5.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.4.1...ironrdp-rdpdr-v0.5.0)] - 2025-12-18
### <!-- 4 -->Bug Fixes
- Fix incorrect padding when parsing NDR strings ([#1015](https://github.com/Devolutions/IronRDP/issues/1015)) ([a0a3e750c9](https://github.com/Devolutions/IronRDP/commit/a0a3e750c9e4ee9c73b957fbcb26dbc59e57d07d))
When parsing Network Data Representation (NDR) messages, we're supposed
to account for padding at the end of strings to remain aligned on a
4-byte boundary. The existing code doesn't seem to cover all cases, and
the resulting misalignment causes misleading errors when processing the
rest of the message.
## [[0.4.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.4.0...ironrdp-rdpdr-v0.4.1)] - 2025-09-04 ## [[0.4.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.4.0...ironrdp-rdpdr-v0.4.1)] - 2025-09-04
### <!-- 1 -->Features ### <!-- 1 -->Features
@ -18,29 +30,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add USER_LOGGEDON flag support ([5e78f91713](https://github.com/Devolutions/IronRDP/commit/5e78f917132a174bdd5d8711beb1744de1bd265a)) - Add USER_LOGGEDON flag support ([5e78f91713](https://github.com/Devolutions/IronRDP/commit/5e78f917132a174bdd5d8711beb1744de1bd265a))
## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.1.3...ironrdp-rdpdr-v0.2.0)] - 2025-03-12 ## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.1.3...ironrdp-rdpdr-v0.2.0)] - 2025-03-12
### <!-- 7 -->Build ### <!-- 7 -->Build
- Bump ironrdp-pdu - Bump ironrdp-pdu
## [[0.1.3](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.1.2...ironrdp-rdpdr-v0.1.3)] - 2025-03-12 ## [[0.1.3](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.1.2...ironrdp-rdpdr-v0.1.3)] - 2025-03-12
### <!-- 7 -->Build ### <!-- 7 -->Build
- Update dependencies (#695) ([c21fa44fd6](https://github.com/Devolutions/IronRDP/commit/c21fa44fd6f3c6a6b74788ff68e83133c1314caa)) - Update dependencies (#695) ([c21fa44fd6](https://github.com/Devolutions/IronRDP/commit/c21fa44fd6f3c6a6b74788ff68e83133c1314caa))
## [[0.1.2](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.1.1...ironrdp-rdpdr-v0.1.2)] - 2025-01-28 ## [[0.1.2](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.1.1...ironrdp-rdpdr-v0.1.2)] - 2025-01-28
### <!-- 6 -->Documentation ### <!-- 6 -->Documentation
- Use CDN URLs instead of the blob storage URLs for Devolutions logo (#631) ([dd249909a8](https://github.com/Devolutions/IronRDP/commit/dd249909a894004d4f728d30b3a4aa77a0f8193b)) - Use CDN URLs instead of the blob storage URLs for Devolutions logo (#631) ([dd249909a8](https://github.com/Devolutions/IronRDP/commit/dd249909a894004d4f728d30b3a4aa77a0f8193b))
## [[0.1.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.1.0...ironrdp-rdpdr-v0.1.1)] - 2024-12-14 ## [[0.1.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.1.0...ironrdp-rdpdr-v0.1.1)] - 2024-12-14
### Other ### Other

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-rdpdr" name = "ironrdp-rdpdr"
version = "0.4.1" version = "0.5.0"
readme = "README.md" readme = "README.md"
description = "RDPDR channel implementation." description = "RDPDR channel implementation."
edition.workspace = true edition.workspace = true

View file

@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.4.2](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpsnd-native-v0.4.1...ironrdp-rdpsnd-native-v0.4.2)] - 2025-12-18
### <!-- 7 -->Build
- Bump bytemuck from 1.23.2 to 1.24.0 ([#1008](https://github.com/Devolutions/IronRDP/issues/1008)) ([a24a1fa9e8](https://github.com/Devolutions/IronRDP/commit/a24a1fa9e8f1898b2fcdd41d87660ab9e38f89ed))
## [[0.4.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpsnd-native-v0.4.0...ironrdp-rdpsnd-native-v0.4.1)] - 2025-09-24 ## [[0.4.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpsnd-native-v0.4.0...ironrdp-rdpsnd-native-v0.4.1)] - 2025-09-24
### <!-- 7 -->Build ### <!-- 7 -->Build
@ -49,7 +55,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Use CDN URLs instead of the blob storage URLs for Devolutions logo (#631) ([dd249909a8](https://github.com/Devolutions/IronRDP/commit/dd249909a894004d4f728d30b3a4aa77a0f8193b)) - Use CDN URLs instead of the blob storage URLs for Devolutions logo (#631) ([dd249909a8](https://github.com/Devolutions/IronRDP/commit/dd249909a894004d4f728d30b3a4aa77a0f8193b))
## [[0.1.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpsnd-native-v0.1.0...ironrdp-rdpsnd-native-v0.1.1)] - 2024-12-15 ## [[0.1.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpsnd-native-v0.1.0...ironrdp-rdpsnd-native-v0.1.1)] - 2024-12-15
### Other ### Other

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-rdpsnd-native" name = "ironrdp-rdpsnd-native"
version = "0.4.1" version = "0.4.2"
description = "Native RDPSND static channel backend implementations for IronRDP" description = "Native RDPSND static channel backend implementations for IronRDP"
edition.workspace = true edition.workspace = true
license.workspace = true license.workspace = true

View file

@ -6,6 +6,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.10.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-server-v0.9.0...ironrdp-server-v0.10.0)] - 2025-12-18
### <!-- 4 -->Bug Fixes
- Send TLS close_notify during graceful RDP disconnect ([#1032](https://github.com/Devolutions/IronRDP/issues/1032)) ([a70e01d9c5](https://github.com/Devolutions/IronRDP/commit/a70e01d9c5675a7dffd65eda7428537c8ad6a857))
Add support for sending a proper TLS close_notify message when the RDP
client initiates a graceful disconnect PDU.
## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-server-v0.8.0...ironrdp-server-v0.9.0)] - 2025-09-24 ## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-server-v0.8.0...ironrdp-server-v0.9.0)] - 2025-09-24
### <!-- 4 -->Bug Fixes ### <!-- 4 -->Bug Fixes

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-server" name = "ironrdp-server"
version = "0.9.0" version = "0.10.0"
readme = "README.md" readme = "README.md"
description = "Extendable skeleton for implementing custom RDP servers" description = "Extendable skeleton for implementing custom RDP servers"
edition.workspace = true edition.workspace = true
@ -31,17 +31,17 @@ anyhow = "1.0"
tokio = { version = "1", features = ["net", "macros", "sync", "rt"] } # public tokio = { version = "1", features = ["net", "macros", "sync", "rt"] } # public
tokio-rustls = "0.26" # public tokio-rustls = "0.26" # public
async-trait = "0.1" async-trait = "0.1"
ironrdp-async = { path = "../ironrdp-async", version = "0.7" } ironrdp-async = { path = "../ironrdp-async", version = "0.8" }
ironrdp-ainput = { path = "../ironrdp-ainput", version = "0.4" } ironrdp-ainput = { path = "../ironrdp-ainput", version = "0.4" }
ironrdp-core = { path = "../ironrdp-core", version = "0.1" } ironrdp-core = { path = "../ironrdp-core", version = "0.1" }
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6" } # public ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6" } # public
ironrdp-svc = { path = "../ironrdp-svc", version = "0.5" } # public ironrdp-svc = { path = "../ironrdp-svc", version = "0.5" } # public
ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.4" } # public ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.5" } # public
ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.4" } # public ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.4" } # public
ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.4" } # public ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.4" } # public
ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.7" } ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.8" }
ironrdp-acceptor = { path = "../ironrdp-acceptor", version = "0.7" } # public ironrdp-acceptor = { path = "../ironrdp-acceptor", version = "0.8" } # public
ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.6" } # public ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.7" } # public
ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.6" } # public ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.6" } # public
tracing = { version = "0.1", features = ["log"] } tracing = { version = "0.1", features = ["log"] }
x509-cert = { version = "0.2.5", optional = true } x509-cert = { version = "0.2.5", optional = true }

View file

@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-session-v0.7.0...ironrdp-session-v0.8.0)] - 2025-12-18
## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-session-v0.5.0...ironrdp-session-v0.6.0)] - 2025-08-29 ## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-session-v0.5.0...ironrdp-session-v0.6.0)] - 2025-08-29
### <!-- 1 -->Features ### <!-- 1 -->Features

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-session" name = "ironrdp-session"
version = "0.7.0" version = "0.8.0"
readme = "README.md" readme = "README.md"
description = "State machines to drive an RDP session" description = "State machines to drive an RDP session"
edition.workspace = true edition.workspace = true
@ -22,11 +22,11 @@ qoiz = ["dep:zstd-safe", "qoi"]
[dependencies] [dependencies]
ironrdp-core = { path = "../ironrdp-core", version = "0.1" } # public ironrdp-core = { path = "../ironrdp-core", version = "0.1" } # public
ironrdp-connector = { path = "../ironrdp-connector", version = "0.7" } # public # TODO: at some point, this dependency could be removed (good for compilation speed) ironrdp-connector = { path = "../ironrdp-connector", version = "0.8" } # public # TODO: at some point, this dependency could be removed (good for compilation speed)
ironrdp-svc = { path = "../ironrdp-svc", version = "0.5" } # public ironrdp-svc = { path = "../ironrdp-svc", version = "0.5" } # public
ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.4" } # public ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.4" } # public
ironrdp-error = { path = "../ironrdp-error", version = "0.1" } # public ironrdp-error = { path = "../ironrdp-error", version = "0.1" } # public
ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.6" } # public ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.7" } # public
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6", features = ["std"] } # public ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6", features = ["std"] } # public
ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.4" } ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.4" }
tracing = { version = "0.1", features = ["log"] } tracing = { version = "0.1", features = ["log"] }

View file

@ -6,6 +6,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-tls-v0.1.4...ironrdp-tls-v0.2.0)] - 2025-12-18
### <!-- 1 -->Features
- [**breaking**] Return x509_cert::Certificate from upgrade() ([#1054](https://github.com/Devolutions/IronRDP/issues/1054)) ([bd2aed7686](https://github.com/Devolutions/IronRDP/commit/bd2aed76867f4038c32df9a0d24532ee40d2f14c))
This allows client applications to verify details of the certificate,
possibly with the user, when connecting to a server using TLS.
## [[0.1.4](https://github.com/Devolutions/IronRDP/compare/ironrdp-tls-v0.1.3...ironrdp-tls-v0.1.4)] - 2025-08-29 ## [[0.1.4](https://github.com/Devolutions/IronRDP/compare/ironrdp-tls-v0.1.3...ironrdp-tls-v0.1.4)] - 2025-08-29
### <!-- 7 -->Build ### <!-- 7 -->Build

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-tls" name = "ironrdp-tls"
version = "0.1.4" version = "0.2.0"
readme = "README.md" readme = "README.md"
description = "TLS boilerplate common with most IronRDP clients" description = "TLS boilerplate common with most IronRDP clients"
edition.workspace = true edition.workspace = true

View file

@ -6,6 +6,49 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-tokio-v0.7.0...ironrdp-tokio-v0.8.0)] - 2025-12-18
### <!-- 1 -->Features
- Add MovableTokioFramed for Send+!Sync context ([#1033](https://github.com/Devolutions/IronRDP/issues/1033)) ([966ba8a53e](https://github.com/Devolutions/IronRDP/commit/966ba8a53e43a193271f40b9db80e45e495e2f24))
The `ironrdp-tokio` crate currently provides the following two
`Framed<S>` implementations using the standard `tokio::io` traits:
- `type TokioFramed<S> = Framed<TokioStream<S>>` where `S: Send + Sync +
Unpin`
- `type LocalTokioFramed<S> = Framed<LocalTokioStream<S>>` where `S:
Unpin`
The former is meant for multi-threaded runtimes and the latter is meant
for single-threaded runtimes.
This PR adds a third `Framed<S>` implementation:
`pub type MovableTokioFramed<S> = Framed<MovableTokioStream<S>>` where
`S: Send + Unpin`
This is a valid usecase as some implementations of the `tokio::io`
traits are `Send` but `!Sync`. Without this new third type, consumers of
`Framed<S>` who have a `S: Send + !Sync` trait for their streams are
forced to downgrade to `LocalTokioFramed` and do some hacky workaround
with `tokio::task::spawn_blocking` since the defined associated futures,
`ReadFut` and `WriteAllFut`, are neither `Send` nor `Sync`.
### <!-- 4 -->Bug Fixes
- [**breaking**] Use static dispatch for NetworkClient trait ([#1043](https://github.com/Devolutions/IronRDP/issues/1043)) ([bca6d190a8](https://github.com/Devolutions/IronRDP/commit/bca6d190a870708468534d224ff225a658767a9a))
- Rename `AsyncNetworkClient` to `NetworkClient`
- Replace dynamic dispatch (`Option<&mut dyn ...>`) with static dispatch
using generics (`&mut N where N: NetworkClient`)
- Reorder `connect_finalize` parameters for consistency across crates
### <!-- 7 -->Build
- Bump picky and sspi ([#1028](https://github.com/Devolutions/IronRDP/issues/1028)) ([5bd319126d](https://github.com/Devolutions/IronRDP/commit/5bd319126d32fbd8e505508e27ab2b1a18a83d04))
This fixes build issues with some dependencies.
## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-tokio-v0.5.1...ironrdp-tokio-v0.6.0)] - 2025-07-08 ## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-tokio-v0.5.1...ironrdp-tokio-v0.6.0)] - 2025-07-08
### Build ### Build

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp-tokio" name = "ironrdp-tokio"
version = "0.7.0" version = "0.8.0"
readme = "README.md" readme = "README.md"
description = "`Framed*` traits implementation above Tokios traits" description = "`Framed*` traits implementation above Tokios traits"
edition.workspace = true edition.workspace = true
@ -23,8 +23,8 @@ reqwest-native-tls = ["reqwest", "reqwest?/native-tls"]
[dependencies] [dependencies]
bytes = "1" bytes = "1"
ironrdp-async = { path = "../ironrdp-async", version = "0.7" } # public ironrdp-async = { path = "../ironrdp-async", version = "0.8" } # public
ironrdp-connector = { path = "../ironrdp-connector", version = "0.7", optional = true } ironrdp-connector = { path = "../ironrdp-connector", version = "0.8", optional = true }
tokio = { version = "1", features = ["io-util"] } tokio = { version = "1", features = ["io-util"] }
reqwest = { version = "0.12", default-features = false, features = ["http2", "system-proxy"], optional = true } reqwest = { version = "0.12", default-features = false, features = ["http2", "system-proxy"], optional = true }
sspi = { version = "0.18", features = ["network_client", "dns_resolver"], optional = true } sspi = { version = "0.18", features = ["network_client", "dns_resolver"], optional = true }

View file

@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[0.14.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-v0.13.0...ironrdp-v0.14.0)] - 2025-12-18
### <!-- 7 -->Build
- Bump picky and sspi ([#1028](https://github.com/Devolutions/IronRDP/issues/1028)) ([5bd319126d](https://github.com/Devolutions/IronRDP/commit/5bd319126d32fbd8e505508e27ab2b1a18a83d04))
This fixes build issues with some dependencies.
## [[0.13.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-v0.12.0...ironrdp-v0.13.0)] - 2025-09-24 ## [[0.13.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-v0.12.0...ironrdp-v0.13.0)] - 2025-09-24
### Build ### Build

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ironrdp" name = "ironrdp"
version = "0.13.0" version = "0.14.0"
readme = "README.md" readme = "README.md"
description = "A meta crate re-exporting IronRDP crates for convenience" description = "A meta crate re-exporting IronRDP crates for convenience"
edition.workspace = true edition.workspace = true
@ -40,22 +40,22 @@ __bench = ["ironrdp-server/__bench"]
[dependencies] [dependencies]
ironrdp-core = { path = "../ironrdp-core", version = "0.1", optional = true } # public ironrdp-core = { path = "../ironrdp-core", version = "0.1", optional = true } # public
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6", optional = true } # public ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.6", optional = true } # public
ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.4", optional = true } # public ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.5", optional = true } # public
ironrdp-connector = { path = "../ironrdp-connector", version = "0.7", optional = true } # public ironrdp-connector = { path = "../ironrdp-connector", version = "0.8", optional = true } # public
ironrdp-acceptor = { path = "../ironrdp-acceptor", version = "0.7", optional = true } # public ironrdp-acceptor = { path = "../ironrdp-acceptor", version = "0.8", optional = true } # public
ironrdp-session = { path = "../ironrdp-session", version = "0.7", optional = true } # public ironrdp-session = { path = "../ironrdp-session", version = "0.8", optional = true } # public
ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.6", optional = true } # public ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.7", optional = true } # public
ironrdp-input = { path = "../ironrdp-input", version = "0.4", optional = true } # public ironrdp-input = { path = "../ironrdp-input", version = "0.4", optional = true } # public
ironrdp-server = { path = "../ironrdp-server", version = "0.9", optional = true, features = ["helper"] } # public ironrdp-server = { path = "../ironrdp-server", version = "0.10", optional = true, features = ["helper"] } # public
ironrdp-svc = { path = "../ironrdp-svc", version = "0.5", optional = true } # public ironrdp-svc = { path = "../ironrdp-svc", version = "0.5", optional = true } # public
ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.4", optional = true } # public ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.4", optional = true } # public
ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.4", optional = true } # public ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.5", optional = true } # public
ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.6", optional = true } # public ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.6", optional = true } # public
ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.4", optional = true } # public ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.4", optional = true } # public
[dev-dependencies] [dev-dependencies]
ironrdp-blocking = { path = "../ironrdp-blocking", version = "0.7.0" } ironrdp-blocking = { path = "../ironrdp-blocking", version = "0.8.0" }
ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.4.0" } ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.5.0" }
anyhow = "1" anyhow = "1"
async-trait = "0.1" async-trait = "0.1"
image = { version = "0.25.6", default-features = false, features = ["png"] } image = { version = "0.25.6", default-features = false, features = ["png"] }

62
fuzz/Cargo.lock generated
View file

@ -63,9 +63,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]] [[package]]
name = "base64ct" name = "base64ct"
version = "1.8.0" version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a"
[[package]] [[package]]
name = "bit_field" name = "bit_field"
@ -75,9 +75,9 @@ checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
version = "2.9.4" version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
[[package]] [[package]]
name = "bitvec" name = "bitvec"
@ -108,9 +108,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.2.39" version = "1.2.49"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1354349954c6fc9cb0deab020f27f783cf0b604e8bb754dc4658ecf0d29c35f" checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215"
dependencies = [ dependencies = [
"find-msvc-tools", "find-msvc-tools",
"jobserver", "jobserver",
@ -120,9 +120,9 @@ dependencies = [
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
version = "1.0.3" version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]] [[package]]
name = "const-oid" name = "const-oid"
@ -150,9 +150,9 @@ dependencies = [
[[package]] [[package]]
name = "crypto-common" name = "crypto-common"
version = "0.1.6" version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
dependencies = [ dependencies = [
"generic-array", "generic-array",
"typenum", "typenum",
@ -237,9 +237,9 @@ dependencies = [
[[package]] [[package]]
name = "find-msvc-tools" name = "find-msvc-tools"
version = "0.1.2" version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844"
[[package]] [[package]]
name = "flagset" name = "flagset"
@ -249,9 +249,9 @@ checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe"
[[package]] [[package]]
name = "flate2" name = "flate2"
version = "1.1.2" version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
dependencies = [ dependencies = [
"crc32fast", "crc32fast",
"miniz_oxide", "miniz_oxide",
@ -287,7 +287,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-cliprdr" name = "ironrdp-cliprdr"
version = "0.4.0" version = "0.5.0"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"ironrdp-core", "ironrdp-core",
@ -363,7 +363,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-graphics" name = "ironrdp-graphics"
version = "0.6.0" version = "0.7.0"
dependencies = [ dependencies = [
"bit_field", "bit_field",
"bitflags", "bitflags",
@ -400,7 +400,7 @@ dependencies = [
[[package]] [[package]]
name = "ironrdp-rdpdr" name = "ironrdp-rdpdr"
version = "0.4.1" version = "0.5.0"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"ironrdp-core", "ironrdp-core",
@ -442,9 +442,9 @@ dependencies = [
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.176" version = "0.2.178"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
[[package]] [[package]]
name = "libfuzzer-sys" name = "libfuzzer-sys"
@ -580,18 +580,18 @@ dependencies = [
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.101" version = "1.0.103"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
dependencies = [ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]] [[package]]
name = "quote" name = "quote"
version = "1.0.41" version = "1.0.42"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
] ]
@ -636,9 +636,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]] [[package]]
name = "simd-adler32" name = "simd-adler32"
version = "0.3.7" version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
[[package]] [[package]]
name = "slab" name = "slab"
@ -658,9 +658,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.106" version = "2.0.111"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -759,15 +759,15 @@ dependencies = [
[[package]] [[package]]
name = "typenum" name = "typenum"
version = "1.18.0" version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.19" version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
[[package]] [[package]]
name = "version_check" name = "version_check"