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>
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.
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.
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.
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.
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
- 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.