You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: 0.2.0 — rename Gitway* types to Anvil* with #[deprecated] aliases
Implements PRD §7.4 versioning ramp step 0.2.0 and resolves Q6: the
three flat re-exports at the crate root drop their inherited Gitway*
prefix.
Renamed:
* GitwaySession -> AnvilSession
* GitwayConfig -> AnvilConfig
* GitwayError -> AnvilError
(GitwayConfigBuilder also renamed to AnvilConfigBuilder; reachable via
anvil_ssh::config::AnvilConfigBuilder, no flat re-export at the crate
root in 0.1 or 0.2.)
The rename touches every source file that referenced the old names —
struct definitions, doc-comments, tests, the throughput benchmark, the
README + CLAUDE + AGENTS scaffolding, and the CHANGELOG entry for 0.2.0.
All internal references now use the new Anvil* names; rustfmt
re-flowed two functions in src/hostkey.rs and src/keygen.rs because
the shorter type names changed line widths.
Backwards compat:
* lib.rs adds three #[deprecated] re-exports so consumers that wrote
`use anvil_ssh::GitwaySession;` against 0.1.x continue to compile
with a deprecation warning. Aliases stay for one major version per
PRD §7.4; removed in 1.0.0.
* The downstream Gitway workspace bumps its `anvil-ssh` pin and
renames its in-source `GitwaySession` references to drop the
warnings (separate PR; not in this commit).
Verification (Windows + Rust 1.88, after `cargo clean`):
* cargo build --release --locked: PASS
* cargo test --lib --tests --locked: 58 passed, 0 failed, 1 ignored
(52 lib unit + 2 test_clone + 4 test_connection)
* cargo clippy --locked --all-targets -- -D warnings: PASS
* cargo fmt --all --check: PASS
* cargo publish --dry-run --locked: PASS (anvil-ssh v0.2.0 packages
cleanly, 322.6 KiB / 90.5 KiB compressed, 34 files)
Doctest harness note: 4 of 10 doctests fail locally on Windows with
E0462 (`staticlib delegate instead of rlib`) and "aws_lc_rs not
available in rlib format". Pre-existing Windows + complex-deps
doctest harness quirk; the same source compiled fine in 0.1.0 with
warm cache. CI runs the full `cargo test` (including doctests) on
Linux + macOS where this issue does not manifest.
Lockfile note: bumping the package version requires regenerating the
lockfile entry (`anvil-ssh v0.1.0` -> `v0.2.0`). Done as part of the
Cargo.toml bump; no other lockfile changes.
-`v0.2.0`— rename to `AnvilSession` / `AnvilConfig` / `AnvilError` with `#[deprecated]`aliases. Aliases stay for one major version.
55
-
-`v1.0.0` — stabilization; cut concurrently with Gitway 1.0.0.
53
+
-`v0.1.x` — types carried over from the source crate as `GitwaySession` / `GitwayConfig` / `GitwayError`to keep the lift-and-shift extraction zero-rename. Downstream churn limited to crate-name change.
54
+
-`v0.2.0`(current) — types renamed to `AnvilSession` / `AnvilConfig` / `AnvilError`. Legacy `Gitway*` names retained as `#[deprecated]`re-exports for one major version.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+28-1Lines changed: 28 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,33 @@
2
2
3
3
All notable changes to Anvil are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow [SemVer](https://semver.org/).
4
4
5
+
## [0.2.0] — 2026-05-03
6
+
7
+
### Changed
8
+
9
+
-**Breaking (with deprecated aliases):** the three flat re-exports at the crate root were renamed to drop the inherited `Gitway*` prefix:
10
+
-`GitwaySession` → `AnvilSession`
11
+
-`GitwayConfig` → `AnvilConfig`
12
+
-`GitwayError` → `AnvilError`
13
+
14
+
The legacy names remain available as `#[deprecated]` re-exports for one major version (per [Gitway PRD §7.4](https://github.com/steelbore/gitway/blob/main/Gitway-PRD-v1.0.md)), so consumers that depended on `anvil-ssh = "0.1"` continue to compile with a deprecation warning until they migrate. Migration is mechanical:
The deprecated aliases will be removed in `1.0.0`.
24
+
25
+
- The `GitwayConfigBuilder` type returned by `AnvilConfig::builder()` is also renamed to `AnvilConfigBuilder`. It is reachable via `anvil_ssh::config::AnvilConfigBuilder`; no flat re-export at the crate root in either 0.1 or 0.2 (consumers typically obtain it through `AnvilConfig::builder()`).
26
+
27
+
### Notes
28
+
29
+
- All internal references in `src/` (struct definitions, doc-comments, tests) have been updated to the new names. `cargo build`, `cargo test`, `cargo clippy --all-targets -- -D warnings`, and `cargo fmt --check` all pass on the renamed source.
30
+
- Downstream tracking issue: the [Steelbore/Gitway](https://github.com/Steelbore/Gitway) workspace bumps its `anvil-ssh` pin to `0.2.0` in a follow-up PR and renames its in-source `GitwaySession`/`Config`/`Error` references to drop the deprecation warnings.
31
+
5
32
## [0.1.0] — 2026-05-03
6
33
7
34
### Added
@@ -18,5 +45,5 @@ All notable changes to Anvil are documented here. Format follows [Keep a Change
18
45
19
46
### Notes
20
47
21
-
- Type names (`GitwaySession`, `GitwayConfig`, `GitwayError`) carry forward from the source crate unchanged. They will be renamed to `AnvilSession` / `AnvilConfig` / `AnvilError`in `0.2.0` with `#[deprecated]`aliases. See [Gitway PRD §7.4](https://github.com/steelbore/gitway/blob/main/Gitway-PRD-v1.0.md) for the extraction plan.
48
+
- Type names carried forward from the source crate as `GitwaySession` / `GitwayConfig` / `GitwayError` to keep the lift-and-shift extraction zero-rename. These were superseded in 0.2.0 (see above); the legacy names remain available as `#[deprecated]`re-exports for one major version per [Gitway PRD §7.4](https://github.com/steelbore/gitway/blob/main/Gitway-PRD-v1.0.md).
22
49
- This is a *cold-start* extraction: the new repo's git history starts here. Per-commit history of the original library remains in [steelbore/gitway](https://github.com/steelbore/gitway) — `git blame` and historical context for any line of code can be found there.
-`v0.1.x` — types stay `GitwaySession` / `GitwayConfig` / `GitwayError`. Doc-comments and`use` paths reference `anvil_ssh::` (Rust module path), but the type names retain their `Gitway*` prefix.
87
-
-`v0.2.0`— rename types to `Anvil*`with `#[deprecated]`aliases for one major version.
88
-
-`v1.0.0` — stabilization (concurrent with Gitway 1.0.0).
86
+
-`v0.1.x` — types carried over from the source crate as `GitwaySession` / `GitwayConfig` / `GitwayError` (lift-and-shift extraction; only the crate name changed).
87
+
-`v0.2.0`(current) — types renamed to `AnvilSession` / `AnvilConfig` / `AnvilError`. Legacy `Gitway*`names retained as `#[deprecated]`re-exports at the crate root.
let mut session = AnvilSession::connect(&config).await?;
25
25
session.authenticate_best(&config).await?;
26
26
let exit_code = session.exec("git-upload-pack 'steelbore/gitway.git'").await?;
27
27
session.close().await?;
28
28
Ok(())
29
29
}
30
30
```
31
31
32
-
The type names (`GitwaySession`, `GitwayConfig`, `GitwayError`) are inherited from the source crate. They will be renamed to `AnvilSession` / `AnvilConfig` / `AnvilError` in `0.2.0` with `#[deprecated]`aliases for one major version.
32
+
The flat re-exports `AnvilSession` / `AnvilConfig` / `AnvilError` were renamed in `0.2.0` from the legacy `GitwaySession` / `GitwayConfig` / `GitwayError` (which were carried over from the source crate to keep the 0.1.0 extraction zero-rename). The legacy names remain available as `#[deprecated]`re-exports for one major version per [Gitway PRD §7.4](https://github.com/steelbore/gitway/blob/main/Gitway-PRD-v1.0.md); they will be removed in `1.0.0`. Migration is mechanical — `s/Gitway/Anvil/g` in your `use anvil_ssh::*;` imports.
0 commit comments