Skip to content

update: refresh dependencies and adapt to API changes - #349

Merged
inureyes merged 1 commit into
mainfrom
update/dependency-refresh
Oct 23, 2026
Merged

inureyes merged 1 commit into
mainfrom
update/dependency-refresh

Conversation

@inureyes

Copy link
Copy Markdown
Member

Refreshes Cargo.lock and moves direct dependencies to their latest major versions: dirs 7, rustyline 19, lru 0.19, base64 0.23, libloading 0.9, argon2 0.6, and opentelemetry, opentelemetry_sdk, opentelemetry-otlp 0.33. generic-array 0.14.7, the pkcs1/rsa release candidates, and psm stay where russh, ssh-key, and crypto-common pin them.

Compatibility fixes

  • argon2 0.6: password hashing and verification move to phc::PasswordHash, salt generation inside hash_password, and Error::PasswordInvalid. The std feature no longer exists.
  • tokio 1.54: deprecated AsyncFd::new is replaced with unsafe AsyncFd::register in the server PTY and process stdin; both wrap an OwnedFd, which satisfies the new safety contract.
  • libloading 0.9: Display is now only "dlopen failed" or "dlsym failed", with the dlerror text moved to source(). loader_reason restores the file and symbol detail in external SecurityKeyProvider errors (caught by a_library_without_sk_api_version_is_not_a_provider).
  • dirs 7 only changes preference_dir on Windows, which bssh does not call. The other bumps needed no code changes.

Integration tests

The localhost tests probed SSH with host key checking off but ran the executor in accept-new mode, so a stale localhost entry in known_hosts passed the probe and failed every transfer. They now share a helper that uses StrictHostKeyChecking::No, which also stops them from writing host keys into the user's known_hosts. The roundtrip test now asserts on upload failure instead of returning early.

Validation

fmt, clippy -D warnings, the full lib suite (1964 passed), and all four integration_test cases pass locally on macOS. Linux was not cross-checked locally (no cross C toolchain for aws-lc-sys); CI covers it.

Refresh Cargo.lock and move direct dependencies to their latest major versions: dirs 7, rustyline 19, lru 0.19, base64 0.23, libloading 0.9, argon2 0.6, and opentelemetry, opentelemetry_sdk, opentelemetry-otlp 0.33. The remaining held crates (generic-array 0.14.7, the pkcs1/rsa release candidates, psm) are pinned transitively by russh, ssh-key, and crypto-common.

argon2 0.6 replaces the password-hash 0.5 API: hashes parse as phc::PasswordHash, hash_password draws its own salt through getrandom, a mismatch is Error::PasswordInvalid, and the std feature is gone, so the generic-array hold note no longer applies.

tokio 1.54 deprecates AsyncFd::new as unsound. The PTY master and process stdin now use unsafe AsyncFd::register; both wrap an OwnedFd that keeps the descriptor open for the AsyncFd's lifetime.

libloading 0.9 prints only "dlopen failed" or "dlsym failed" and moves the dlerror text to Error::source. A new loader_reason helper restores that text in external SecurityKeyProvider load and symbol errors, which a provider test caught.

The localhost integration tests probed with host key checking disabled but ran the executor with accept-new, so a stale localhost entry in known_hosts passed the probe and failed every transfer. A shared helper now builds the executor with StrictHostKeyChecking::No, which also stops the tests from writing localhost and 127.0.0.1 keys to the user's known_hosts. The roundtrip test asserts on upload failure instead of returning early.

Validated with fmt, clippy -D warnings, the full lib suite (1964 passed), and all four localhost integration tests.
@inureyes inureyes added type:dependency Dependency updates status:review Under review priority:medium Medium priority issue labels Oct 23, 2026
@inureyes
inureyes merged commit 52512e1 into main Oct 23, 2026
5 checks passed
@inureyes
inureyes deleted the update/dependency-refresh branch October 23, 2026 07:28
@inureyes inureyes added status:done Completed and removed status:review Under review labels Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority:medium Medium priority issue status:done Completed type:dependency Dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant