Commit graph

45 commits

Author SHA1 Message Date
Benoît Cortier
48e02441d2
chore: update Rust toolchain to 1.88.0 (#852)
MSRV is also bumped to 1.84.
2025-07-03 07:38:28 +03:00
Marc-André Lureau
dd787af5a0 feat(benches): add perfenc
Make some internal APIs publicly visible thanks to "visibility" when
compiling with the "__bench" feature.

("testsuite-core" also learned "__bench", because fast_path.rs is a
shared file)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-04-29 13:00:07 +02:00
Alex Yusiuk
fe676eeac5
refactor(web): follow-up to #722 (#747) 2025-04-14 14:05:19 +00:00
Alex Yusiuk
0ff1ed8de5
refactor(web-client): refactor iron-remote-gui into iron-remote-desktop (#722) 2025-04-11 08:28:27 -04:00
Benoît CORTIER
aa210204a7 chore(xtask): add ffi install task
This task is for installing all the requirements for ffi tasks.
(That is: `diplomat-tool`.)
2025-03-24 23:23:26 +01:00
Benoît Cortier
43f05a712d
perf(web-client): enable WASM SIMD instructions (#703) 2025-03-13 14:48:03 +02:00
Benoît Cortier
0b5f691c1e
chore(xtask): update binary dependencies (#663) 2025-02-05 18:12:10 -05:00
Marc-André Lureau
3dc8a56070 build(xtask): bump wabt to 1.0.36
https://github.com/WebAssembly/wabt/releases/download/1.0.33/wabt-1.0.33-macos-14.tar.gz
is now 404.
2025-01-24 12:37:29 -05:00
Marc-Andre Lureau
a0d32d7245
fix: fix commit 9198284263 (#626)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Changelog: ignore
2025-01-06 09:29:30 -05:00
Benoît CORTIER
807eb59b07 refactor: enable clippy::std_instead_of_core lint 2024-11-20 01:28:31 +09:00
Richard Markiewicz
5e5e1aa217
ci: update macos-12 runners to macos-14 (#566) 2024-10-29 04:51:16 -04:00
Marc-André Lureau
4350058945 chore(xtask): check all targets
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-07-24 04:35:32 -04:00
Marc-André Lureau
7307148cb8 chore: use workspace lints
Among other things, this allows tools and LSP to pick up our settings.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-07-24 04:35:32 -04:00
Marc-André Lureau
adf2797ef7 fix: unnecessary qualification
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-07-24 04:35:32 -04:00
irvingouj @ Devolutions
590221469a
chore(ffi):allow Devolutions.IronRdp to be build and packed with Nuget with the dll on Windows (#457)
* Allow Devolutions.IronRdp to be build and packed with Nuget alone with the dll

* review fix
2024-05-03 15:29:04 -04:00
Benoît CORTIER
b5a4ce19da build(xtask): Linux support for ffi build task 2024-04-09 11:35:48 -04:00
irvingouj @ Devolutions
3bcf51306d
feat(ffi): initial C# bindings (connector only) (#423) 2024-04-05 15:11:32 +00:00
Norbert Szetei
c4193371bd
fix(svc): rdpdr channel fuzzing harness and associated issues (#408) 2024-03-11 06:28:27 -04:00
Benoît Cortier
def44ec32c
ci: enable the cliprdr_format fuzz harness (#398) 2024-03-07 08:16:51 -05:00
Vladyslav Nikonov
056ec6a034
feat(session): graceful disconnection support (#336) 2023-12-14 15:36:20 +00:00
Benoît Cortier
d47f181783
chore(xtask): make clean action delete local cargo root (#323) 2023-12-05 20:15:44 -05:00
Benoît Cortier
4a54d78cf6
chore(xtask): use cargo-binstall if available (#324) 2023-12-05 19:56:53 -05:00
Benoît Cortier
4506e1b185
build: bump rust toolchain to 1.74.0 (#322) 2023-12-05 19:55:51 -05:00
Vladyslav Nikonov
d69ff6e6e7
ci: follow-up typos CI fixes (#316) 2023-12-01 14:24:34 -05:00
Vladyslav Nikonov
4258f06292
ci: check for typos using typos-cli (#315) 2023-12-01 17:27:36 +00:00
Benoît Cortier
e10bf4fc38
ci: check for dirty lock files (#277)
Note that we can’t really use the --locked option of cargo, because to
run xtask, we need to compile it using cargo, and thus the lock files
are already "refreshed" as far as cargo is concerned. Instead, this new
task will check for modifications to the lock files using git-status
porcelain. The side benefit is that we can check for npm lock files too.
2023-11-09 21:53:08 -05:00
Benoît CORTIER
1d0b5fa1ee chore: check web client for lints and formatting 2023-11-04 02:26:46 -04:00
Isaiah Becker-Mayer
9859cb7518
feat(rdpdr): DeviceCreateRequest and DeviceCreateResponse (#235) 2023-10-30 18:15:25 +00:00
Benoît CORTIER
622a0457bc build: relax some dependencies
In general we don’t need to specify as far as the patch version for
our dependencies.
2023-10-05 10:58:16 -04:00
Benoît Cortier
3d98cd1d94
refactor: enable elided_lifetimes_in_paths lint (#203)
Hiding the lifetimes is making the code less obvious.

That’s not a problem for types that I know about intimately such as
`ReadCursor` or `WriteCursor`, but I actually found myself surprised
more than once when reading code I didn’t authored, discovering  later
there was in fact a hidden lifetime parameter.
I expect this problem to be worse for someone not familiar with
our codebase.

I understand this lint is "allow" by default because in some cases
it leads to writing unergonomic ugly code when a type has many generic
lifetimes parameters:

```
TyCtxt<'_, '_, '_>
```

However we _never_ work with more than one generic lifetime parameter in
IronRDP codebase, so it seems to me that the tradeoff towards clarity is
worth it, in our case.
2023-10-04 09:14:36 -07:00
Benoît Cortier
6283e37937
refactor: check for additional lints (#200) 2023-10-02 13:46:05 +03:00
Benoît Cortier
1132126c2a
ci(cov): use GITHUB_TOKEN instead of DEVOLUTIONSBOT_TOKEN (#179) 2023-08-24 09:56:12 -04:00
Benoît Cortier
0b408200a8
ci: wrong comparison operator for coverage diff (#176) 2023-08-15 10:50:00 -05:00
Benoît Cortier
e10e2f4d91
ci: adjust slightly coverage task (#174) 2023-08-13 19:45:21 -05:00
Benoît CORTIER
f209c9a77b ci(fuzz): minimize corpus only for current target 2023-06-15 15:08:05 -04:00
Benoît Cortier
b98443b407
chore: fix xtask for windows (#150) 2023-06-14 22:16:24 +00:00
Benoît CORTIER
9aaf05ef73 ci: coverage reporting in PRs
Adds a new workflow reporting code coverage when opening a pull request.

The idea is to help find blind spots in our test suites and inform where testing
efforts should go, but there is no hard requirement related to the numbers.
We are allowed to merge pull requests regardless of the coverage percentage,
and even if the coverage workflow fails.

Past coverage data is stored in a separate branch (cov-data).
It gets updated when the workflow run against master.
2023-05-23 08:31:19 -04:00
Benoît CORTIER
5d88531259 ci: optimize speed and cache 2023-05-23 08:31:19 -04:00
Benoît CORTIER
493e8f13a4 ci: add web client check job 2023-05-23 08:31:19 -04:00
Benoît CORTIER
60bc72f873 test: organize integration tests into single crate
Put all integration tests in a single crate, and organized in modules.

This is similar to what was done in `cargo` repository:
https://github.com/rust-lang/cargo/pull/5022#issuecomment-364691154

```
$ rustup show
stable-x86_64-unknown-linux-gnu (default)
rustc 1.69.0 (84c898d65 2023-04-16)
```

Run on a recent high-end laptop:
12th Gen Intel(R) Core(TM) i9-12900HK

Original (multiple integration binaries):

- `cargo clean && cargo test --no-run`: 62.893s
- `cargo clean && cargo build --lib`: 54.959s
- `cargo clean && cargo build --bins`: 55.933s
- `cargo test --no-run` (after `cargo build`): 14.472s
- `cargo test` (after `cargo test --no-run`): 1.786s
- `du -hs target/`: 4.2G

After (ironrdp-testsuite):

- `cargo clean && cargo test --no-run`: 41.157s (crates with no tests are ignored)
- `cargo clean && cargo build --lib`: 53.983s
- `cargo clean && cargo build --bins`: 54.482s
- `cargo test --no-run` (after `cargo build`): 12.915s
- `cargo test` (after `cargo test --no-run`): 0.240s
- `du -hs target/`: 3.4G

Absolute diff:
- `cargo clean && cargo test --no-run`: -21.736s
- `cargo clean && cargo build --lib`: -0.976s
- `cargo clean && cargo build --bins`: -1.451s
- `cargo test --no-run` (after `cargo build`): -1.557s
- `cargo test` (after `cargo test --no-run`): -1.546s
- `du -hs target/`: -0.8G

Relative diff (%):
- `cargo clean && cargo test --no-run`: -34.5%
- `cargo clean && cargo build --lib`: -1.77%
- `cargo clean && cargo build --bins`: -2.59%
- `cargo test --no-run` (after `cargo build`): -10.7%
- `cargo test` (after `cargo test --no-run`): -86.5%
- `du -hs target/`: -19.0%
2023-05-11 19:41:11 -04:00
Benoît CORTIER
368582ec5a chore(xtask): extend CLI options
- It is now possible to pass a custom fuzzing duration and target
- Adds a `coverage install` action
2023-05-10 13:58:53 -04:00
Benoît Cortier
c81f0f0c0d
ci: separate workflow for fuzzing using corpus (#124)
Fetching the corpus in the main CI worflow is a problem because
it will fail when the azure storage is modified during the download:

> ERROR: The specified blob does not exist.
> RequestId:76c40723-901e-0098-38b9-8215c9000000
> Time:2023-05-09T21:03:10.8992962Z
> ErrorCode:BlobNotFound

This occurs when there are multiple runs at the same time. This
happens for example when two pull requests are opened.
This will cause CI to go red for no good reason.

With this patch, main CI will simply run the fuzz targets without
using the corpus, as a sanity check. Then, another workflow will
run at 03:12 AM UTC on Sunday, Monday, and Saturday using the corpus
from azure storage.

Future work: make the scheduled run fuzz longer and in parallel.
2023-05-10 09:25:41 -04:00
Vladyslav Nikonov
137556013f
Add support for RDP6 32bpp bitmaps (#118)
This adds support for RDP6 32bpp bitmaps.

- RDP6 RLE implementation
- `RDP6_BITMAP_STREAM` pdu parsing
- New CLI arguments to select color depth and color reduction
- Unit tests and fuzzing for implemented functionality

Test bpp32 mode without lossy compression (RGB  colorspace)
```
cargo run -p ironrdp-client -- -u vmbox -p password --color-depth=32 <IP_ADDRESS>
```

Test bpp32 mode with lossy compression (YCoCg colorspace, subsampling, color loss)
```
cargo run -p ironrdp-client -- -u vmbox -p password --color-depth=32 --lossy-bitmap-compression <IP_ADDRESS>
```

Issue: ARC-149
2023-05-08 09:43:53 -04:00
Benoît CORTIER
4516521412 chore: use cargo inheritance 2023-04-28 18:00:10 -04:00
Benoît Cortier
710a51f24a
refactor: re-organize workspace (#101)
- Remove Tauri client.

  It was useful when initially prototyping the Web Component, but now
  it’s more of a maintenance burden. It’s notably not convenient to
  check in CI. Since we now have another native alternative that does
  not require any GPU (`ironrdp-client`), it’s probably a good time to
  part ways.

- Move wasm package into the workspace.

- Move Rust crates into a `crates` subfolder.

- Introduce `xtask` crate for free-form automation.
2023-03-29 19:09:15 -04:00