Releases: crazyscot/qcp
Releases ยท crazyscot/qcp
v0.6.0
โฐ๏ธ Features
- New output time format utc-micro / "UtcMicro" - (1747596)
- TLS RawPublicKey authentication - (2b5b9c6)
๐ Bug Fixes
- Improve error reporting from the server main loop - (ea1bd4a)
- Bandwidth configuration tx=0 special case - (5806c35)
- Do not send ANSI reset codes when configured not to - (7dc8efb)
- Make error output from invalid configuration files less confusing - (6bb8f2d)
- Do not use ANSI colours in server mode - (6dc1d0c)
- Report failures in --server mode less confusingly - (cd90b46)
โก Performance
- Automatic TLS cipher suite selection - (c3461d0)
๐งช Testing
- Add regression test for repeatable CLI arguments (#170) - (43529c5)
- Add wire marshalling checks for ServerMessageV2 and ClientMessageV2 - (99fc072)
โ๏ธ Miscellaneous Tasks
- If we receive bogus protocol data that is valid UTF-8, send it to debug output - (694e396)
- Remove unused trait impls - (f087abe)
- Tidy up boolean argument declarations - (17ca32d)
- Update MSRV to 1.88 - (9cbf893)
- Remove SerializeAsString, no longer needed - (f217248)
- Give Optionalify the ability to replace serde attributes - (1e5735e)
- Add TaggedData::with_bytes(), with_str() - (8fc003b)
- Improve main loop error reporting - (31b15a4)
๐ Refactor
- Remove EngineeringQuantity wrappers from config structure in favour of serialization helper - (a0aea97)
- Remove VecOrString wrapper type in favour of serialization helpers - (5068263)
- Serialize PortRange directly, without a conversion type - (4dae6e4)
- Parsing for CongestionController - (582986e)
- Parsing for CredentialsType - (86ba732)
- Rationalise enum parsing - (ff59ae0)
Download notes
- Debian and Ubuntu users will likely find the .deb packages convenient.
- Other Linux distributions, use
qcp-linux-<ARCH>-musl.tar.gz. These are static musl binaries which should work on all distributions.
v0.5.2
v0.5.1
๐๏ธ Build, packaging & CI
- Fix debian postinst script edge case - (e37386c)
Download notes
- Debian and Ubuntu users will likely find the .deb packages convenient.
- Other Linux distributions, use
qcp-linux-<ARCH>-musl.tar.gz. These are static musl binaries which should work on all distributions.
v0.5.0
โฐ๏ธ Features
- [breaking] Make kernel UDP buffer size configurable - (963541b)
- Linux users: This change may cause warnings about buffer sizes requiring you to reconfigure your sysctls. Run
qcp --help-buffersand follow its advice.
- Linux users: This change may cause warnings about buffer sizes requiring you to reconfigure your sysctls. Run
- [breaking] Remove some infrequently-used CLI short options - (ecad214)
- Add remote PMTU and RTT to --stats output (via ClosedownReport) - (92d8675)
- --preserve option - (24b8ef2)
- Add hidden --remote-trace option - (9b022a3)
- Add NewReno congestion controller (protocol compat level 2) - (e865a52)
- Initial, min and max MTU can be configured - (4919ca4)
- Add packet loss detection thresholds as configurable settings - (37e0f32)
- (meta) --list-features option - (c768fc9)
- (debug) Add the server's idea of MTU and RTT to --remote-debug - (7161f6d)
- (protocol) Introduce Variant type - (908346a)
- (protocol) Add Compatibility level 2 - (2d0c1ef)
๐ Bug Fixes
- Disallow reading from or writing to non-regular files (device nodes & sockets) - (b2b036e)
- CLI --ssh-config & -S options - (145bb5d)
- Use correct system ssh config directory on Windows - (6ec7001)
- Do not allow RTT to be set to 0 - (e27baa3)
- (cli) Remove Markdown mark-up from --help output - (6362bea)
- (protocol) Don't crash on receipt of an unrecognised Status enum - (baecbaa)
- (protocol) Review and correct enum encoding - (4a05d4a)
- (test) DNS lookup sometimes failed on Windows CI - (79ec010)
- (ui) Don't report a peak rate of 0B/s on really fast transfers - (d90364b)
๐ Documentation
โก Performance
- Add direction-of-travel indicator to ClientMessage - (9c4b2ed)
- Set initial_rtt as 2x expected RTT - (4866a98)
- Use a larger send window, in line with Quinn's default tuning - (03f6161)
๐จ Styling
- Improve consistency of control channel debug output - (cfcd6a6)
- Implement Display for TaggedData - (1e10293)
- Reduce excess verbiage when reporting FileNotFound or IncorrectPermissions errors - (35d53ce)
- Make server-mode output more easily distinguishable - (90d9659)
๐งช Testing
- Add an integration test that simulates MITM attacks - (f5e28f6)
- Move some CLI tests into integration test area - (8fe67f9)
- Add wire marshalling regression tests for current protocol messages - (51413ec)
- Fill-in coverage in transport.rs - (cef4f47)
- Fix compiler warnings on apple & windows - (f3e90a2)
- Exercise the main CLI modes and parser - (eda8d12)
- Add unit tests for the informational main modes - (07fd94f)
- Refactor server_main, add a unit test - (ef7f8c3)
- Refactoring server connection.handle_incoming, add a unit test - (39be470)
- Add unit tests for server::connection_info, server::stream - (72a0812)
- Use pretty_assertions - (12e41b6)
- (windows) Improve Windows config file path checks - (bd42133)
๐๏ธ Build, packaging & CI
- Rename output artifact names to be more user friendly - (ec40671)
- Scaffolding & feature to expose internal test helpers for use by qcp-unsafe-tests - (e947393)
- Disable tests where they don't work on mingw cross-compiles - (064a4c9)
โ๏ธ Miscellaneous Tasks
- (ci,docs) Fix cargo doc --document-private items, add it to CI checks - (8113e84)
- Use strum_macros:: consistently - (8f1a39b)
- Use if cfg!() instead of cfg_if! where possible - (a787101)
- Update template qcp.conf - (594d8d7)
- Tidy
osmodule exports, OS notes - (36dbbac)
๐ Refactor
- (test) Make the test suite cross-platform - (47ba293)
- Add ergonomic constructors DataTag::with_unsigned,with_signed - (af67621)
- Improve ThroughputMode consistency - (88e4f3e)
- Add FindTag helper trait for Vec<TaggedData<>> - (fb23c39)
- Use derive_more::{Debug,Display} in control protocol - (a179046)
- Move DataTag up a level so it can be common to both protocols - (8d51685)
- Split up client main_loop a bit more for readability & testability - (a0e4b6c)
- Check_response() makes more sense as a function of Response - (e24146f)
- Client_main for testability and simplicity (37620bb) (f175d24)
- Separate out process::Ssh into a generic ProcessWrapper and the ssh-specific parts - (ecd1196)
- Tracing::setup() arguments - (79faa48)
- Split apart server.rs for testability - (31927fb)
- Setup_tracing becomes a struct with a trait - (e2a782f)
- Use clap to create MainMode enum - (49781fa)
Download notes
- Debian and Ubuntu users will likely find the .deb packages convenient.
- Other Linux distributions, use
qcp-linux-<ARCH>-musl.tar.gz. T...
v0.4.2
โฐ๏ธ Features
- Report peak transfer speed - (2d4c25f)
๐ Bug Fixes
- Pre-flight configuration validation when not all fields are set - (e3eb0bd)
โ๏ธ Miscellaneous Tasks
- Update readme - (f797e7d)
Download notes
- Debian and Ubuntu users will likely find the .deb packages convenient.
- Other Linux distributions, use
qcp-<ARCH>-unknown-linux-musl.tar.gz. These are static musl binaries which should work on all distributions.
v0.4.1
โฐ๏ธ Features
- Make ANSI colour support optional via config / CLI / environment variables - (e42f4aa)
- Send long CLI output to pager (--help, --show-config) - (b88c49d)
- --show-config also reports validation errors - (c9fd657)
๐ Bug Fixes
- Correctly apply system default ssh_config and ssh_options (#113) - (0ff032a)
- SshConfig / SshOptions configuration allow a single string (#113) - (d0b5462)
- Make SshSubsystem in config files work properly (#112) - (e9f1090)
- Use anstream::eprintln instead of plain eprintln - (4530327)
๐จ Styling
- (windows) Change table style so it doesn't output mojibake when sent to more - (65b6a9f)
๐งช Testing
- Move unsafe tests out to a separate helper crate - (e1ae4b2)
- Various unit tests added (df7e3a8) (06002d2) (d3b79f8) (1e1823f) (6fb7a64) & refactored (27c5c97)
๐๏ธ Build, packaging & CI
โ๏ธ Miscellaneous Tasks
- (safety) Remove unsafe code, add safety policy - (094193d)
- (test) Fix test leaving stray files in source tree - (8745dbb)
- Many internal rearrangements for readability and testability
LitterTrayis now a separate crate - (b67d4bb)- Mark some structs and functions as public to support an external testing crate - (30a24ba)
- Remove suboptimal error coercion in PortRange - (a579805)
- Fix/silence linter warnings for rust 1.87 - (8aeb3f8)
- Update manpages, fix garbage - (0bc9574)
- Unify Rust edition 2024 across the workspace - (73c7249)
- Fix dead code warnings on windows builds - (ceeded1)
- Reduce the number of config extractions we perform - (41b2aad) (d94c3b2)
๐ Refactor
Download notes
- Debian and Ubuntu users will likely find the .deb packages convenient.
- Other Linux distributions, use
qcp-<ARCH>-unknown-linux-musl.tar.gz. These are static musl binaries which should work on all distributions.
v0.4.0
โฐ๏ธ Features
- (config) Support ~/.config/qcp/qcp.conf on unix - (799d2ba)
- Add Windows build - (b4af92a)
- [breaking] Add -l login-name (same short-option as ssh) - (d7fd7d0)
- Platform support for OSX and BSD family (#71) - (3302685)
- Introduce --ssh-subsystem mode - (3faabc5)
- Initial-congestion-window can now be specified as an SI quantity (10k, etc) - (73e085e)
- Use mimalloc as memory allocator on all builds, in secure mode by default - (6ec2f99)
๐ Bug Fixes
- (cosmetic) Remove struct verbiage from debug output - (dcfe102)
- (cosmetic) When compatibility levels are equal, don't say that one is newer - (5312a3a)
- (protocol) Improve reliability of Put pre-transfer check - (acc3d1a)
- (test) Occasional random test failure - (28663a3)
- (test) Make tracing::setup idempotent - (92afb90)
- User@host syntax on command line - (fa0eecd)
- Report i/o errors from Put more reliably - (783e0d5)
- Remove TOCTTOU bug in Put destination checks - (90977f3)
๐ Documentation
- Autogenerate part of qcp_config.5; add to xtask man; tweak wording - (8077399)
- Add note to build in release mode for best performance - (41ba6d9)
- Fix broken links in readme on crates.io - (064a67d)
โก Performance
- Slight performance improvements to PUT - (19cfcf9)
๐งช Testing
- (fix) Make test_progress_bar_for() CI-proof - (e5b3dde)
- Improve unit test coverage in utils - (3f40c8f)
- Refactor control/process.rs for testability - (f74870b)
- Use nightly toolchain for coverage; exclude test modules from analysis (#43) - (ee40c66)
- Introduce LitterTray utility - (42eec69)
๐๏ธ Build, packaging & CI
- Stop shipping licenses.html - (c4a62d4)
- Pivot windows builds to mingw - (237ad81)
- Add codecov reporting - (935f125)
- Include a subsystem config for /etc/ssh/sshd_config.d - (e2780a8)
- Improve comments in the default system qcp.conf; add SshSubsystem - (923af7d)
- Include additional files in the tarballs - (9ae6bb3)
- Tweak build-time tag version check - (0bb779f)
โ๏ธ Miscellaneous Tasks
- Util::open_file returns a less complex error type - (22f7d07)
- Autoformat cargo.toml x3 - (f308eb0)
- Return type of set_udp_buffer_sizes - (1358232)
- Output full error context when we might have one - (fe875af)
- Add platform initialiser, seal SocketOptions to ensure it is always called - (ccf3b49)
- Remove user_config_dir from AbstractPlatform - (f75e199)
- Promote transport::ConfigBucket to crate visibility as config::ConfigProvider - (232fb75)
- Linter fixes for rust 1.86 - (2dd28cc)
- Tweak badge config in readme - (3542a67)
- Tidy up crate exports - (248242e)
- Update to rust 2024 / MSRV 1.85 - (cc6f3e7)
๐ Refactor
- Use homedir (cross-platform) instead of pwd (works on unix only) - (b44929f)
- Ssh config file parsing, to allow retrieval of arbitrary keys - (429a64d)
- Ssh::files::Parser: deduplicate value sources - (aaf4dc1)
- Ssh::files::Parser construction - (7eb1c74)
- Merge ssh::ConfigFile constructors - (30dbcef)
- Align Platform return types - (de7e611)
- Pivot socket back-end to use rustix - (58d813b)
- Explicitly pass setup_tracing function to run_server - (1c12702)
- Minimise binary crate main function - (8a72cf8)
- Consolidate control channel functionality module; add unit tests - (2a9a356)
- Consolidate session protocol implementations; add unit tests - (71169cc)
- Move CopyJobSpec sharable construction logic into a constructor - (9535e49)
- Move CongestionController(Type) into protocol - (73b46ec)
Download notes
- Debian and Ubuntu users will likely find the .deb packages convenient.
- Other Linux distributions, use
qcp-<ARCH>-unknown-linux-musl.tar.gz. These are static musl binaries which should work on all distributions.
v0.3.3
๐ก๏ธ Security
- bump ring from 0.17.11 to 0.17.13 to address potential overflow panic - (06cd47b)
Download notes
- Debian and Ubuntu users may find the .deb packages convenient.
- The Linux binary builds
qcp-<ARCH>-unknown-linux-musl.tar.gzare static musl binaries which should work on all distributions.
v0.3.2
v0.3.1
โฐ๏ธ Features
๐ Documentation
๐๏ธ Build, packaging & CI
- Generate CycloneDX SBOM files and include in release bundles - (f2d4626)
- Generate licenses.html, include in bundles - (e3ce44f)
- Set up xtasks for man page, licenses.html, dummy debian changelog
- Rearrange source into a workspace - (e4b05bf)
โ๏ธ Miscellaneous Tasks
๐ Refactor
- Rework --help-buffers mode - (d461eaf)
Download notes
- Debian and Ubuntu users may find the .deb packages convenient.
- The Linux binary builds
qcp-<ARCH>-unknown-linux-musl.tar.gzare static musl binaries which should work on all distributions.