chore: remove unused dependencies across the workspace - #623

Merged
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps
Jun 16, 2026
Merged

chore: remove unused dependencies across the workspace#623
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps

Conversation

@moonming

@moonmingmoonming commented Jun 16, 2026

Copy link
Copy Markdown
Member

What

Removes dependencies that are declared but never referenced, found with cargo-machete and confirmed by per-crate source verification.

  • Unused per-crate deps across 15 crates (51 entries).
  • 20 [workspace.dependencies] declarations left without any consumer: 4 that were never used (including a vestigial tiktoken-rs scaffold dep carried since PR PR #1: Scaffold Cargo workspace, UI skeleton, and CI pipeline #1), plus 16 orphaned once the per-crate consumers were removed.

Net: +4 / −395 lines, including a large Cargo.lock reduction (the now-unreachable transitive crates are pruned too).

Why these were genuinely unused (not macro/derive false positives)

Every cargo-machete hit was checked against the crate's source before removal:

  • aisix-obs hand-rolls its OTLP/HTTP export (reqwest + serde_json), so the opentelemetry, opentelemetry_sdk, opentelemetry-otlp, opentelemetry-semantic-conventions and tracing-opentelemetry crates were never linked — only mentioned in a doc comment.
  • The provider crates (openai, azure-openai, vertex, bedrock) share an error type and don't log directly, so their per-crate thiserror / tracing entries were unused.
  • aisix-proxy reaches http types through axum::http, so its direct http and hyper deps were redundant.
  • aisix-ratelimit / aisix-cache declared serde but never derive/use it (they use serde_json on types owned elsewhere); aisix-cache's direct aisix-core path-dep is reached via aisix-gateway.
  • Dev-deps insta / rstest / serde_yaml (core) and rstest (ratelimit) are not referenced by any test.

aws-smithy-types in aisix-guardrails was optional behind the bedrock feature; the bedrock path only uses aws_smithy_runtime_api / aws_smithy_async, so the dep and its dep: feature entry were both dropped.

Verification

  • cargo check --workspace --all-targetsgreen (covers all test targets, so the dev-dep removals are exercised; default features include the bedrock guardrail, so the aws-smithy-types removal is compiled).
  • No behavior change — every removed crate was unreferenced.
  • CI runs the full test matrix on top of this.

Summary by CodeRabbit

  • Chores

    • Streamlined workspace dependencies by consolidating and removing unused libraries across all components.
    • Reorganized runtime and testing dependencies to improve build efficiency and maintainability.
    • Removed obsolete observability and telemetry integrations.
  • Refactor

    • Updated internal dependency structure for improved code organization and reduced compilation footprint.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@moonming, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 6 minutes and 12 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Free

Run ID: d54480c0-9c2d-4fdd-926f-9a3526410f50

📥 Commits

Reviewing files that changed from the base of the PR and between b0ba662 and 19469d7.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • Cargo.toml
  • crates/aisix-admin/Cargo.toml
  • crates/aisix-cache/Cargo.toml
  • crates/aisix-core/Cargo.toml
  • crates/aisix-etcd/Cargo.toml
  • crates/aisix-gateway/Cargo.toml
  • crates/aisix-guardrails/Cargo.toml
  • crates/aisix-obs/Cargo.toml
  • crates/aisix-provider-anthropic/Cargo.toml
  • crates/aisix-provider-azure-openai/Cargo.toml
  • crates/aisix-provider-bedrock/Cargo.toml
  • crates/aisix-provider-openai/Cargo.toml
  • crates/aisix-provider-vertex/Cargo.toml
  • crates/aisix-proxy/Cargo.toml
  • crates/aisix-ratelimit/Cargo.toml
  • crates/aisix-server/Cargo.toml
📝 Walkthrough

Walkthrough

Removes unused and replaced Cargo dependencies across the root workspace manifest and all 15 crate manifests. Dropped crates include the full HTTP/TLS stack (hyper, tokio-rustls, etc.), OpenTelemetry exporters, chrono, anyhow, thiserror (from providers), and test utilities (rstest, insta, serde_yaml). Replacement additions include futures, metrics, testcontainers, and tempfile.

Changes

Workspace Dependency Cleanup

Layer / File(s)Summary
Root workspace dependency declarations
Cargo.toml
Removes tokio-stream, tokio-util, futures-util, hyper, hyper-util, mime, tokio-rustls, rustls-pemfile, serde_yaml, full OpenTelemetry stack, tiktoken-rs, humantime, rstest, insta; adds futures, testcontainers, tempfile.
Core and infrastructure crate manifests
crates/aisix-core/Cargo.toml, crates/aisix-etcd/Cargo.toml, crates/aisix-server/Cargo.toml
aisix-core removes uuid, chrono, tracing, humantime-serde, regex, and test deps (insta, rstest, serde_yaml), adds tempfile dev-dep. aisix-etcd replaces tokio-stream/tokio-util/futures-util/anyhow with futures, async-trait, serde, serde_json, thiserror. aisix-server drops hyper, tower, tower-http, http, tokio-rustls, rustls-pemfile, thiserror, chrono.
Provider crate manifests
crates/aisix-provider-anthropic/Cargo.toml, crates/aisix-provider-azure-openai/Cargo.toml, crates/aisix-provider-bedrock/Cargo.toml, crates/aisix-provider-openai/Cargo.toml, crates/aisix-provider-vertex/Cargo.toml
Anthropic drops base64. Azure-OpenAI and OpenAI drop thiserror. Bedrock drops thiserror and tracing. Vertex drops thiserror and tracing, adds reqwest, serde, serde_json, tokio, http.
Gateway, proxy, cache, ratelimit, obs, guardrails, admin manifests
crates/aisix-gateway/Cargo.toml, crates/aisix-proxy/Cargo.toml, crates/aisix-cache/Cargo.toml, crates/aisix-ratelimit/Cargo.toml, crates/aisix-obs/Cargo.toml, crates/aisix-guardrails/Cargo.toml, crates/aisix-admin/Cargo.toml
Gateway replaces tokio-stream/futures-util/eventsource-stream/anyhow/tracing with futures, async-trait, reqwest, bytes, serde, serde_json, thiserror. Proxy drops hyper, http, futures-util. Cache swaps dependency on aisix-core for aisix-gateway. Ratelimit swaps serde/serde_json/chrono for thiserror/tracing/async-trait/redis/uuid. Obs drops full OpenTelemetry stack, adds metrics, metrics-exporter-prometheus, and related crates. Guardrails removes aws-smithy-types and its feature gate. Admin removes tower-http and chrono.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes


Note

🎁 Summarized by CodeRabbit Free

Your organization has reached its limit of developer seats under the Pro Plan. For new users, CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please add seats to your subscription by visiting https://app.coderabbit.ai/login.If you believe this is a mistake and have available seats, please assign one to the pull request author through the subscription management page using the link above.

Comment @coderabbitai help to get the list of available commands and usage tips.

cargo-machete plus per-crate source verification surfaced dependencies
declared but never referenced. Removed and verified green with
`cargo check --workspace --all-targets`:
- Unused per-crate deps in 15 crates. aisix-obs hand-rolls its OTLP/HTTP
export so the opentelemetry-* SDK crates were dead; the provider crates
share an error type so their per-crate thiserror/tracing entries were
unused; aisix-proxy reaches http types via axum::http so its direct
http/hyper deps were redundant.
- 20 [workspace.dependencies] entries left without any consumer (4 never
used, including a vestigial tiktoken-rs scaffold dep; 16 orphaned by the
per-crate removals).
No behavior change; every removed crate was unreferenced. Prunes ~395
lines including a large Cargo.lock reduction.
@moonming
moonmingforce-pushed the chore/prune-unused-deps branch from b0ba662 to 19469d7CompareJune 16, 2026 07:19
@moonming
moonming merged commit b756939 into mainJun 16, 2026
11 checks passed
@moonming
moonming deleted the chore/prune-unused-deps branch June 16, 2026 07:33
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

chore: remove unused dependencies across the workspace - #623

Merged
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps
Jun 16, 2026
Merged

chore: remove unused dependencies across the workspace#623
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps

Conversation

@moonming

@moonmingmoonming commented Jun 16, 2026

Copy link
Copy Markdown
Member

What

Removes dependencies that are declared but never referenced, found with cargo-machete and confirmed by per-crate source verification.

  • Unused per-crate deps across 15 crates (51 entries).
  • 20 [workspace.dependencies] declarations left without any consumer: 4 that were never used (including a vestigial tiktoken-rs scaffold dep carried since PR PR #1: Scaffold Cargo workspace, UI skeleton, and CI pipeline #1), plus 16 orphaned once the per-crate consumers were removed.

Net: +4 / −395 lines, including a large Cargo.lock reduction (the now-unreachable transitive crates are pruned too).

Why these were genuinely unused (not macro/derive false positives)

Every cargo-machete hit was checked against the crate's source before removal:

  • aisix-obs hand-rolls its OTLP/HTTP export (reqwest + serde_json), so the opentelemetry, opentelemetry_sdk, opentelemetry-otlp, opentelemetry-semantic-conventions and tracing-opentelemetry crates were never linked — only mentioned in a doc comment.
  • The provider crates (openai, azure-openai, vertex, bedrock) share an error type and don't log directly, so their per-crate thiserror / tracing entries were unused.
  • aisix-proxy reaches http types through axum::http, so its direct http and hyper deps were redundant.
  • aisix-ratelimit / aisix-cache declared serde but never derive/use it (they use serde_json on types owned elsewhere); aisix-cache's direct aisix-core path-dep is reached via aisix-gateway.
  • Dev-deps insta / rstest / serde_yaml (core) and rstest (ratelimit) are not referenced by any test.

aws-smithy-types in aisix-guardrails was optional behind the bedrock feature; the bedrock path only uses aws_smithy_runtime_api / aws_smithy_async, so the dep and its dep: feature entry were both dropped.

Verification

  • cargo check --workspace --all-targetsgreen (covers all test targets, so the dev-dep removals are exercised; default features include the bedrock guardrail, so the aws-smithy-types removal is compiled).
  • No behavior change — every removed crate was unreferenced.
  • CI runs the full test matrix on top of this.

Summary by CodeRabbit

  • Chores

    • Streamlined workspace dependencies by consolidating and removing unused libraries across all components.
    • Reorganized runtime and testing dependencies to improve build efficiency and maintainability.
    • Removed obsolete observability and telemetry integrations.
  • Refactor

    • Updated internal dependency structure for improved code organization and reduced compilation footprint.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@moonming, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 6 minutes and 12 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Free

Run ID: d54480c0-9c2d-4fdd-926f-9a3526410f50

📥 Commits

Reviewing files that changed from the base of the PR and between b0ba662 and 19469d7.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • Cargo.toml
  • crates/aisix-admin/Cargo.toml
  • crates/aisix-cache/Cargo.toml
  • crates/aisix-core/Cargo.toml
  • crates/aisix-etcd/Cargo.toml
  • crates/aisix-gateway/Cargo.toml
  • crates/aisix-guardrails/Cargo.toml
  • crates/aisix-obs/Cargo.toml
  • crates/aisix-provider-anthropic/Cargo.toml
  • crates/aisix-provider-azure-openai/Cargo.toml
  • crates/aisix-provider-bedrock/Cargo.toml
  • crates/aisix-provider-openai/Cargo.toml
  • crates/aisix-provider-vertex/Cargo.toml
  • crates/aisix-proxy/Cargo.toml
  • crates/aisix-ratelimit/Cargo.toml
  • crates/aisix-server/Cargo.toml
📝 Walkthrough

Walkthrough

Removes unused and replaced Cargo dependencies across the root workspace manifest and all 15 crate manifests. Dropped crates include the full HTTP/TLS stack (hyper, tokio-rustls, etc.), OpenTelemetry exporters, chrono, anyhow, thiserror (from providers), and test utilities (rstest, insta, serde_yaml). Replacement additions include futures, metrics, testcontainers, and tempfile.

Changes

Workspace Dependency Cleanup

Layer / File(s)Summary
Root workspace dependency declarations
Cargo.toml
Removes tokio-stream, tokio-util, futures-util, hyper, hyper-util, mime, tokio-rustls, rustls-pemfile, serde_yaml, full OpenTelemetry stack, tiktoken-rs, humantime, rstest, insta; adds futures, testcontainers, tempfile.
Core and infrastructure crate manifests
crates/aisix-core/Cargo.toml, crates/aisix-etcd/Cargo.toml, crates/aisix-server/Cargo.toml
aisix-core removes uuid, chrono, tracing, humantime-serde, regex, and test deps (insta, rstest, serde_yaml), adds tempfile dev-dep. aisix-etcd replaces tokio-stream/tokio-util/futures-util/anyhow with futures, async-trait, serde, serde_json, thiserror. aisix-server drops hyper, tower, tower-http, http, tokio-rustls, rustls-pemfile, thiserror, chrono.
Provider crate manifests
crates/aisix-provider-anthropic/Cargo.toml, crates/aisix-provider-azure-openai/Cargo.toml, crates/aisix-provider-bedrock/Cargo.toml, crates/aisix-provider-openai/Cargo.toml, crates/aisix-provider-vertex/Cargo.toml
Anthropic drops base64. Azure-OpenAI and OpenAI drop thiserror. Bedrock drops thiserror and tracing. Vertex drops thiserror and tracing, adds reqwest, serde, serde_json, tokio, http.
Gateway, proxy, cache, ratelimit, obs, guardrails, admin manifests
crates/aisix-gateway/Cargo.toml, crates/aisix-proxy/Cargo.toml, crates/aisix-cache/Cargo.toml, crates/aisix-ratelimit/Cargo.toml, crates/aisix-obs/Cargo.toml, crates/aisix-guardrails/Cargo.toml, crates/aisix-admin/Cargo.toml
Gateway replaces tokio-stream/futures-util/eventsource-stream/anyhow/tracing with futures, async-trait, reqwest, bytes, serde, serde_json, thiserror. Proxy drops hyper, http, futures-util. Cache swaps dependency on aisix-core for aisix-gateway. Ratelimit swaps serde/serde_json/chrono for thiserror/tracing/async-trait/redis/uuid. Obs drops full OpenTelemetry stack, adds metrics, metrics-exporter-prometheus, and related crates. Guardrails removes aws-smithy-types and its feature gate. Admin removes tower-http and chrono.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes


Note

🎁 Summarized by CodeRabbit Free

Your organization has reached its limit of developer seats under the Pro Plan. For new users, CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please add seats to your subscription by visiting https://app.coderabbit.ai/login.If you believe this is a mistake and have available seats, please assign one to the pull request author through the subscription management page using the link above.

Comment @coderabbitai help to get the list of available commands and usage tips.

cargo-machete plus per-crate source verification surfaced dependencies
declared but never referenced. Removed and verified green with
`cargo check --workspace --all-targets`:
- Unused per-crate deps in 15 crates. aisix-obs hand-rolls its OTLP/HTTP
export so the opentelemetry-* SDK crates were dead; the provider crates
share an error type so their per-crate thiserror/tracing entries were
unused; aisix-proxy reaches http types via axum::http so its direct
http/hyper deps were redundant.
- 20 [workspace.dependencies] entries left without any consumer (4 never
used, including a vestigial tiktoken-rs scaffold dep; 16 orphaned by the
per-crate removals).
No behavior change; every removed crate was unreferenced. Prunes ~395
lines including a large Cargo.lock reduction.
@moonming
moonmingforce-pushed the chore/prune-unused-deps branch from b0ba662 to 19469d7CompareJune 16, 2026 07:19
@moonming
moonming merged commit b756939 into mainJun 16, 2026
11 checks passed
@moonming
moonming deleted the chore/prune-unused-deps branch June 16, 2026 07:33
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: remove unused dependencies across the workspace - #623

Merged
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps
Jun 16, 2026
Merged

chore: remove unused dependencies across the workspace#623
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps

Conversation

@moonming

@moonmingmoonming commented Jun 16, 2026

Copy link
Copy Markdown
Member

What

Removes dependencies that are declared but never referenced, found with cargo-machete and confirmed by per-crate source verification.

  • Unused per-crate deps across 15 crates (51 entries).
  • 20 [workspace.dependencies] declarations left without any consumer: 4 that were never used (including a vestigial tiktoken-rs scaffold dep carried since PR PR #1: Scaffold Cargo workspace, UI skeleton, and CI pipeline #1), plus 16 orphaned once the per-crate consumers were removed.

Net: +4 / −395 lines, including a large Cargo.lock reduction (the now-unreachable transitive crates are pruned too).

Why these were genuinely unused (not macro/derive false positives)

Every cargo-machete hit was checked against the crate's source before removal:

  • aisix-obs hand-rolls its OTLP/HTTP export (reqwest + serde_json), so the opentelemetry, opentelemetry_sdk, opentelemetry-otlp, opentelemetry-semantic-conventions and tracing-opentelemetry crates were never linked — only mentioned in a doc comment.
  • The provider crates (openai, azure-openai, vertex, bedrock) share an error type and don't log directly, so their per-crate thiserror / tracing entries were unused.
  • aisix-proxy reaches http types through axum::http, so its direct http and hyper deps were redundant.
  • aisix-ratelimit / aisix-cache declared serde but never derive/use it (they use serde_json on types owned elsewhere); aisix-cache's direct aisix-core path-dep is reached via aisix-gateway.
  • Dev-deps insta / rstest / serde_yaml (core) and rstest (ratelimit) are not referenced by any test.

aws-smithy-types in aisix-guardrails was optional behind the bedrock feature; the bedrock path only uses aws_smithy_runtime_api / aws_smithy_async, so the dep and its dep: feature entry were both dropped.

Verification

  • cargo check --workspace --all-targetsgreen (covers all test targets, so the dev-dep removals are exercised; default features include the bedrock guardrail, so the aws-smithy-types removal is compiled).
  • No behavior change — every removed crate was unreferenced.
  • CI runs the full test matrix on top of this.

Summary by CodeRabbit

  • Chores

    • Streamlined workspace dependencies by consolidating and removing unused libraries across all components.
    • Reorganized runtime and testing dependencies to improve build efficiency and maintainability.
    • Removed obsolete observability and telemetry integrations.
  • Refactor

    • Updated internal dependency structure for improved code organization and reduced compilation footprint.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@moonming, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 6 minutes and 12 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Free

Run ID: d54480c0-9c2d-4fdd-926f-9a3526410f50

📥 Commits

Reviewing files that changed from the base of the PR and between b0ba662 and 19469d7.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • Cargo.toml
  • crates/aisix-admin/Cargo.toml
  • crates/aisix-cache/Cargo.toml
  • crates/aisix-core/Cargo.toml
  • crates/aisix-etcd/Cargo.toml
  • crates/aisix-gateway/Cargo.toml
  • crates/aisix-guardrails/Cargo.toml
  • crates/aisix-obs/Cargo.toml
  • crates/aisix-provider-anthropic/Cargo.toml
  • crates/aisix-provider-azure-openai/Cargo.toml
  • crates/aisix-provider-bedrock/Cargo.toml
  • crates/aisix-provider-openai/Cargo.toml
  • crates/aisix-provider-vertex/Cargo.toml
  • crates/aisix-proxy/Cargo.toml
  • crates/aisix-ratelimit/Cargo.toml
  • crates/aisix-server/Cargo.toml
📝 Walkthrough

Walkthrough

Removes unused and replaced Cargo dependencies across the root workspace manifest and all 15 crate manifests. Dropped crates include the full HTTP/TLS stack (hyper, tokio-rustls, etc.), OpenTelemetry exporters, chrono, anyhow, thiserror (from providers), and test utilities (rstest, insta, serde_yaml). Replacement additions include futures, metrics, testcontainers, and tempfile.

Changes

Workspace Dependency Cleanup

Layer / File(s)Summary
Root workspace dependency declarations
Cargo.toml
Removes tokio-stream, tokio-util, futures-util, hyper, hyper-util, mime, tokio-rustls, rustls-pemfile, serde_yaml, full OpenTelemetry stack, tiktoken-rs, humantime, rstest, insta; adds futures, testcontainers, tempfile.
Core and infrastructure crate manifests
crates/aisix-core/Cargo.toml, crates/aisix-etcd/Cargo.toml, crates/aisix-server/Cargo.toml
aisix-core removes uuid, chrono, tracing, humantime-serde, regex, and test deps (insta, rstest, serde_yaml), adds tempfile dev-dep. aisix-etcd replaces tokio-stream/tokio-util/futures-util/anyhow with futures, async-trait, serde, serde_json, thiserror. aisix-server drops hyper, tower, tower-http, http, tokio-rustls, rustls-pemfile, thiserror, chrono.
Provider crate manifests
crates/aisix-provider-anthropic/Cargo.toml, crates/aisix-provider-azure-openai/Cargo.toml, crates/aisix-provider-bedrock/Cargo.toml, crates/aisix-provider-openai/Cargo.toml, crates/aisix-provider-vertex/Cargo.toml
Anthropic drops base64. Azure-OpenAI and OpenAI drop thiserror. Bedrock drops thiserror and tracing. Vertex drops thiserror and tracing, adds reqwest, serde, serde_json, tokio, http.
Gateway, proxy, cache, ratelimit, obs, guardrails, admin manifests
crates/aisix-gateway/Cargo.toml, crates/aisix-proxy/Cargo.toml, crates/aisix-cache/Cargo.toml, crates/aisix-ratelimit/Cargo.toml, crates/aisix-obs/Cargo.toml, crates/aisix-guardrails/Cargo.toml, crates/aisix-admin/Cargo.toml
Gateway replaces tokio-stream/futures-util/eventsource-stream/anyhow/tracing with futures, async-trait, reqwest, bytes, serde, serde_json, thiserror. Proxy drops hyper, http, futures-util. Cache swaps dependency on aisix-core for aisix-gateway. Ratelimit swaps serde/serde_json/chrono for thiserror/tracing/async-trait/redis/uuid. Obs drops full OpenTelemetry stack, adds metrics, metrics-exporter-prometheus, and related crates. Guardrails removes aws-smithy-types and its feature gate. Admin removes tower-http and chrono.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes


Note

🎁 Summarized by CodeRabbit Free

Your organization has reached its limit of developer seats under the Pro Plan. For new users, CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please add seats to your subscription by visiting https://app.coderabbit.ai/login.If you believe this is a mistake and have available seats, please assign one to the pull request author through the subscription management page using the link above.

Comment @coderabbitai help to get the list of available commands and usage tips.

cargo-machete plus per-crate source verification surfaced dependencies
declared but never referenced. Removed and verified green with
`cargo check --workspace --all-targets`:
- Unused per-crate deps in 15 crates. aisix-obs hand-rolls its OTLP/HTTP
export so the opentelemetry-* SDK crates were dead; the provider crates
share an error type so their per-crate thiserror/tracing entries were
unused; aisix-proxy reaches http types via axum::http so its direct
http/hyper deps were redundant.
- 20 [workspace.dependencies] entries left without any consumer (4 never
used, including a vestigial tiktoken-rs scaffold dep; 16 orphaned by the
per-crate removals).
No behavior change; every removed crate was unreferenced. Prunes ~395
lines including a large Cargo.lock reduction.
@moonming
moonmingforce-pushed the chore/prune-unused-deps branch from b0ba662 to 19469d7CompareJune 16, 2026 07:19
@moonming
moonming merged commit b756939 into mainJun 16, 2026
11 checks passed
@moonming
moonming deleted the chore/prune-unused-deps branch June 16, 2026 07:33
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: remove unused dependencies across the workspace - #623

Merged
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps
Jun 16, 2026
Merged

chore: remove unused dependencies across the workspace#623
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps

Conversation

@moonming

@moonmingmoonming commented Jun 16, 2026

Copy link
Copy Markdown
Member

What

Removes dependencies that are declared but never referenced, found with cargo-machete and confirmed by per-crate source verification.

  • Unused per-crate deps across 15 crates (51 entries).
  • 20 [workspace.dependencies] declarations left without any consumer: 4 that were never used (including a vestigial tiktoken-rs scaffold dep carried since PR PR #1: Scaffold Cargo workspace, UI skeleton, and CI pipeline #1), plus 16 orphaned once the per-crate consumers were removed.

Net: +4 / −395 lines, including a large Cargo.lock reduction (the now-unreachable transitive crates are pruned too).

Why these were genuinely unused (not macro/derive false positives)

Every cargo-machete hit was checked against the crate's source before removal:

  • aisix-obs hand-rolls its OTLP/HTTP export (reqwest + serde_json), so the opentelemetry, opentelemetry_sdk, opentelemetry-otlp, opentelemetry-semantic-conventions and tracing-opentelemetry crates were never linked — only mentioned in a doc comment.
  • The provider crates (openai, azure-openai, vertex, bedrock) share an error type and don't log directly, so their per-crate thiserror / tracing entries were unused.
  • aisix-proxy reaches http types through axum::http, so its direct http and hyper deps were redundant.
  • aisix-ratelimit / aisix-cache declared serde but never derive/use it (they use serde_json on types owned elsewhere); aisix-cache's direct aisix-core path-dep is reached via aisix-gateway.
  • Dev-deps insta / rstest / serde_yaml (core) and rstest (ratelimit) are not referenced by any test.

aws-smithy-types in aisix-guardrails was optional behind the bedrock feature; the bedrock path only uses aws_smithy_runtime_api / aws_smithy_async, so the dep and its dep: feature entry were both dropped.

Verification

  • cargo check --workspace --all-targetsgreen (covers all test targets, so the dev-dep removals are exercised; default features include the bedrock guardrail, so the aws-smithy-types removal is compiled).
  • No behavior change — every removed crate was unreferenced.
  • CI runs the full test matrix on top of this.

Summary by CodeRabbit

  • Chores

    • Streamlined workspace dependencies by consolidating and removing unused libraries across all components.
    • Reorganized runtime and testing dependencies to improve build efficiency and maintainability.
    • Removed obsolete observability and telemetry integrations.
  • Refactor

    • Updated internal dependency structure for improved code organization and reduced compilation footprint.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@moonming, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 6 minutes and 12 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Free

Run ID: d54480c0-9c2d-4fdd-926f-9a3526410f50

📥 Commits

Reviewing files that changed from the base of the PR and between b0ba662 and 19469d7.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • Cargo.toml
  • crates/aisix-admin/Cargo.toml
  • crates/aisix-cache/Cargo.toml
  • crates/aisix-core/Cargo.toml
  • crates/aisix-etcd/Cargo.toml
  • crates/aisix-gateway/Cargo.toml
  • crates/aisix-guardrails/Cargo.toml
  • crates/aisix-obs/Cargo.toml
  • crates/aisix-provider-anthropic/Cargo.toml
  • crates/aisix-provider-azure-openai/Cargo.toml
  • crates/aisix-provider-bedrock/Cargo.toml
  • crates/aisix-provider-openai/Cargo.toml
  • crates/aisix-provider-vertex/Cargo.toml
  • crates/aisix-proxy/Cargo.toml
  • crates/aisix-ratelimit/Cargo.toml
  • crates/aisix-server/Cargo.toml
📝 Walkthrough

Walkthrough

Removes unused and replaced Cargo dependencies across the root workspace manifest and all 15 crate manifests. Dropped crates include the full HTTP/TLS stack (hyper, tokio-rustls, etc.), OpenTelemetry exporters, chrono, anyhow, thiserror (from providers), and test utilities (rstest, insta, serde_yaml). Replacement additions include futures, metrics, testcontainers, and tempfile.

Changes

Workspace Dependency Cleanup

Layer / File(s)Summary
Root workspace dependency declarations
Cargo.toml
Removes tokio-stream, tokio-util, futures-util, hyper, hyper-util, mime, tokio-rustls, rustls-pemfile, serde_yaml, full OpenTelemetry stack, tiktoken-rs, humantime, rstest, insta; adds futures, testcontainers, tempfile.
Core and infrastructure crate manifests
crates/aisix-core/Cargo.toml, crates/aisix-etcd/Cargo.toml, crates/aisix-server/Cargo.toml
aisix-core removes uuid, chrono, tracing, humantime-serde, regex, and test deps (insta, rstest, serde_yaml), adds tempfile dev-dep. aisix-etcd replaces tokio-stream/tokio-util/futures-util/anyhow with futures, async-trait, serde, serde_json, thiserror. aisix-server drops hyper, tower, tower-http, http, tokio-rustls, rustls-pemfile, thiserror, chrono.
Provider crate manifests
crates/aisix-provider-anthropic/Cargo.toml, crates/aisix-provider-azure-openai/Cargo.toml, crates/aisix-provider-bedrock/Cargo.toml, crates/aisix-provider-openai/Cargo.toml, crates/aisix-provider-vertex/Cargo.toml
Anthropic drops base64. Azure-OpenAI and OpenAI drop thiserror. Bedrock drops thiserror and tracing. Vertex drops thiserror and tracing, adds reqwest, serde, serde_json, tokio, http.
Gateway, proxy, cache, ratelimit, obs, guardrails, admin manifests
crates/aisix-gateway/Cargo.toml, crates/aisix-proxy/Cargo.toml, crates/aisix-cache/Cargo.toml, crates/aisix-ratelimit/Cargo.toml, crates/aisix-obs/Cargo.toml, crates/aisix-guardrails/Cargo.toml, crates/aisix-admin/Cargo.toml
Gateway replaces tokio-stream/futures-util/eventsource-stream/anyhow/tracing with futures, async-trait, reqwest, bytes, serde, serde_json, thiserror. Proxy drops hyper, http, futures-util. Cache swaps dependency on aisix-core for aisix-gateway. Ratelimit swaps serde/serde_json/chrono for thiserror/tracing/async-trait/redis/uuid. Obs drops full OpenTelemetry stack, adds metrics, metrics-exporter-prometheus, and related crates. Guardrails removes aws-smithy-types and its feature gate. Admin removes tower-http and chrono.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes


Note

🎁 Summarized by CodeRabbit Free

Your organization has reached its limit of developer seats under the Pro Plan. For new users, CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please add seats to your subscription by visiting https://app.coderabbit.ai/login.If you believe this is a mistake and have available seats, please assign one to the pull request author through the subscription management page using the link above.

Comment @coderabbitai help to get the list of available commands and usage tips.

cargo-machete plus per-crate source verification surfaced dependencies
declared but never referenced. Removed and verified green with
`cargo check --workspace --all-targets`:
- Unused per-crate deps in 15 crates. aisix-obs hand-rolls its OTLP/HTTP
export so the opentelemetry-* SDK crates were dead; the provider crates
share an error type so their per-crate thiserror/tracing entries were
unused; aisix-proxy reaches http types via axum::http so its direct
http/hyper deps were redundant.
- 20 [workspace.dependencies] entries left without any consumer (4 never
used, including a vestigial tiktoken-rs scaffold dep; 16 orphaned by the
per-crate removals).
No behavior change; every removed crate was unreferenced. Prunes ~395
lines including a large Cargo.lock reduction.
@moonming
moonmingforce-pushed the chore/prune-unused-deps branch from b0ba662 to 19469d7CompareJune 16, 2026 07:19
@moonming
moonming merged commit b756939 into mainJun 16, 2026
11 checks passed
@moonming
moonming deleted the chore/prune-unused-deps branch June 16, 2026 07:33
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

chore: remove unused dependencies across the workspace - #623

Merged
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps
Jun 16, 2026
Merged

chore: remove unused dependencies across the workspace#623
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps

Conversation

@moonming

@moonmingmoonming commented Jun 16, 2026

Copy link
Copy Markdown
Member

What

Removes dependencies that are declared but never referenced, found with cargo-machete and confirmed by per-crate source verification.

  • Unused per-crate deps across 15 crates (51 entries).
  • 20 [workspace.dependencies] declarations left without any consumer: 4 that were never used (including a vestigial tiktoken-rs scaffold dep carried since PR PR #1: Scaffold Cargo workspace, UI skeleton, and CI pipeline #1), plus 16 orphaned once the per-crate consumers were removed.

Net: +4 / −395 lines, including a large Cargo.lock reduction (the now-unreachable transitive crates are pruned too).

Why these were genuinely unused (not macro/derive false positives)

Every cargo-machete hit was checked against the crate's source before removal:

  • aisix-obs hand-rolls its OTLP/HTTP export (reqwest + serde_json), so the opentelemetry, opentelemetry_sdk, opentelemetry-otlp, opentelemetry-semantic-conventions and tracing-opentelemetry crates were never linked — only mentioned in a doc comment.
  • The provider crates (openai, azure-openai, vertex, bedrock) share an error type and don't log directly, so their per-crate thiserror / tracing entries were unused.
  • aisix-proxy reaches http types through axum::http, so its direct http and hyper deps were redundant.
  • aisix-ratelimit / aisix-cache declared serde but never derive/use it (they use serde_json on types owned elsewhere); aisix-cache's direct aisix-core path-dep is reached via aisix-gateway.
  • Dev-deps insta / rstest / serde_yaml (core) and rstest (ratelimit) are not referenced by any test.

aws-smithy-types in aisix-guardrails was optional behind the bedrock feature; the bedrock path only uses aws_smithy_runtime_api / aws_smithy_async, so the dep and its dep: feature entry were both dropped.

Verification

  • cargo check --workspace --all-targetsgreen (covers all test targets, so the dev-dep removals are exercised; default features include the bedrock guardrail, so the aws-smithy-types removal is compiled).
  • No behavior change — every removed crate was unreferenced.
  • CI runs the full test matrix on top of this.

Summary by CodeRabbit

  • Chores

    • Streamlined workspace dependencies by consolidating and removing unused libraries across all components.
    • Reorganized runtime and testing dependencies to improve build efficiency and maintainability.
    • Removed obsolete observability and telemetry integrations.
  • Refactor

    • Updated internal dependency structure for improved code organization and reduced compilation footprint.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@moonming, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 6 minutes and 12 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Free

Run ID: d54480c0-9c2d-4fdd-926f-9a3526410f50

📥 Commits

Reviewing files that changed from the base of the PR and between b0ba662 and 19469d7.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • Cargo.toml
  • crates/aisix-admin/Cargo.toml
  • crates/aisix-cache/Cargo.toml
  • crates/aisix-core/Cargo.toml
  • crates/aisix-etcd/Cargo.toml
  • crates/aisix-gateway/Cargo.toml
  • crates/aisix-guardrails/Cargo.toml
  • crates/aisix-obs/Cargo.toml
  • crates/aisix-provider-anthropic/Cargo.toml
  • crates/aisix-provider-azure-openai/Cargo.toml
  • crates/aisix-provider-bedrock/Cargo.toml
  • crates/aisix-provider-openai/Cargo.toml
  • crates/aisix-provider-vertex/Cargo.toml
  • crates/aisix-proxy/Cargo.toml
  • crates/aisix-ratelimit/Cargo.toml
  • crates/aisix-server/Cargo.toml
📝 Walkthrough

Walkthrough

Removes unused and replaced Cargo dependencies across the root workspace manifest and all 15 crate manifests. Dropped crates include the full HTTP/TLS stack (hyper, tokio-rustls, etc.), OpenTelemetry exporters, chrono, anyhow, thiserror (from providers), and test utilities (rstest, insta, serde_yaml). Replacement additions include futures, metrics, testcontainers, and tempfile.

Changes

Workspace Dependency Cleanup

Layer / File(s)Summary
Root workspace dependency declarations
Cargo.toml
Removes tokio-stream, tokio-util, futures-util, hyper, hyper-util, mime, tokio-rustls, rustls-pemfile, serde_yaml, full OpenTelemetry stack, tiktoken-rs, humantime, rstest, insta; adds futures, testcontainers, tempfile.
Core and infrastructure crate manifests
crates/aisix-core/Cargo.toml, crates/aisix-etcd/Cargo.toml, crates/aisix-server/Cargo.toml
aisix-core removes uuid, chrono, tracing, humantime-serde, regex, and test deps (insta, rstest, serde_yaml), adds tempfile dev-dep. aisix-etcd replaces tokio-stream/tokio-util/futures-util/anyhow with futures, async-trait, serde, serde_json, thiserror. aisix-server drops hyper, tower, tower-http, http, tokio-rustls, rustls-pemfile, thiserror, chrono.
Provider crate manifests
crates/aisix-provider-anthropic/Cargo.toml, crates/aisix-provider-azure-openai/Cargo.toml, crates/aisix-provider-bedrock/Cargo.toml, crates/aisix-provider-openai/Cargo.toml, crates/aisix-provider-vertex/Cargo.toml
Anthropic drops base64. Azure-OpenAI and OpenAI drop thiserror. Bedrock drops thiserror and tracing. Vertex drops thiserror and tracing, adds reqwest, serde, serde_json, tokio, http.
Gateway, proxy, cache, ratelimit, obs, guardrails, admin manifests
crates/aisix-gateway/Cargo.toml, crates/aisix-proxy/Cargo.toml, crates/aisix-cache/Cargo.toml, crates/aisix-ratelimit/Cargo.toml, crates/aisix-obs/Cargo.toml, crates/aisix-guardrails/Cargo.toml, crates/aisix-admin/Cargo.toml
Gateway replaces tokio-stream/futures-util/eventsource-stream/anyhow/tracing with futures, async-trait, reqwest, bytes, serde, serde_json, thiserror. Proxy drops hyper, http, futures-util. Cache swaps dependency on aisix-core for aisix-gateway. Ratelimit swaps serde/serde_json/chrono for thiserror/tracing/async-trait/redis/uuid. Obs drops full OpenTelemetry stack, adds metrics, metrics-exporter-prometheus, and related crates. Guardrails removes aws-smithy-types and its feature gate. Admin removes tower-http and chrono.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes


Note

🎁 Summarized by CodeRabbit Free

Your organization has reached its limit of developer seats under the Pro Plan. For new users, CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please add seats to your subscription by visiting https://app.coderabbit.ai/login.If you believe this is a mistake and have available seats, please assign one to the pull request author through the subscription management page using the link above.

Comment @coderabbitai help to get the list of available commands and usage tips.

cargo-machete plus per-crate source verification surfaced dependencies
declared but never referenced. Removed and verified green with
`cargo check --workspace --all-targets`:
- Unused per-crate deps in 15 crates. aisix-obs hand-rolls its OTLP/HTTP
export so the opentelemetry-* SDK crates were dead; the provider crates
share an error type so their per-crate thiserror/tracing entries were
unused; aisix-proxy reaches http types via axum::http so its direct
http/hyper deps were redundant.
- 20 [workspace.dependencies] entries left without any consumer (4 never
used, including a vestigial tiktoken-rs scaffold dep; 16 orphaned by the
per-crate removals).
No behavior change; every removed crate was unreferenced. Prunes ~395
lines including a large Cargo.lock reduction.
@moonming
moonmingforce-pushed the chore/prune-unused-deps branch from b0ba662 to 19469d7CompareJune 16, 2026 07:19
@moonming
moonming merged commit b756939 into mainJun 16, 2026
11 checks passed
@moonming
moonming deleted the chore/prune-unused-deps branch June 16, 2026 07:33
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: remove unused dependencies across the workspace - #623

Merged
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps
Jun 16, 2026
Merged

chore: remove unused dependencies across the workspace#623
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps

Conversation

@moonming

@moonmingmoonming commented Jun 16, 2026

Copy link
Copy Markdown
Member

What

Removes dependencies that are declared but never referenced, found with cargo-machete and confirmed by per-crate source verification.

  • Unused per-crate deps across 15 crates (51 entries).
  • 20 [workspace.dependencies] declarations left without any consumer: 4 that were never used (including a vestigial tiktoken-rs scaffold dep carried since PR PR #1: Scaffold Cargo workspace, UI skeleton, and CI pipeline #1), plus 16 orphaned once the per-crate consumers were removed.

Net: +4 / −395 lines, including a large Cargo.lock reduction (the now-unreachable transitive crates are pruned too).

Why these were genuinely unused (not macro/derive false positives)

Every cargo-machete hit was checked against the crate's source before removal:

  • aisix-obs hand-rolls its OTLP/HTTP export (reqwest + serde_json), so the opentelemetry, opentelemetry_sdk, opentelemetry-otlp, opentelemetry-semantic-conventions and tracing-opentelemetry crates were never linked — only mentioned in a doc comment.
  • The provider crates (openai, azure-openai, vertex, bedrock) share an error type and don't log directly, so their per-crate thiserror / tracing entries were unused.
  • aisix-proxy reaches http types through axum::http, so its direct http and hyper deps were redundant.
  • aisix-ratelimit / aisix-cache declared serde but never derive/use it (they use serde_json on types owned elsewhere); aisix-cache's direct aisix-core path-dep is reached via aisix-gateway.
  • Dev-deps insta / rstest / serde_yaml (core) and rstest (ratelimit) are not referenced by any test.

aws-smithy-types in aisix-guardrails was optional behind the bedrock feature; the bedrock path only uses aws_smithy_runtime_api / aws_smithy_async, so the dep and its dep: feature entry were both dropped.

Verification

  • cargo check --workspace --all-targetsgreen (covers all test targets, so the dev-dep removals are exercised; default features include the bedrock guardrail, so the aws-smithy-types removal is compiled).
  • No behavior change — every removed crate was unreferenced.
  • CI runs the full test matrix on top of this.

Summary by CodeRabbit

  • Chores

    • Streamlined workspace dependencies by consolidating and removing unused libraries across all components.
    • Reorganized runtime and testing dependencies to improve build efficiency and maintainability.
    • Removed obsolete observability and telemetry integrations.
  • Refactor

    • Updated internal dependency structure for improved code organization and reduced compilation footprint.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@moonming, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 6 minutes and 12 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Free

Run ID: d54480c0-9c2d-4fdd-926f-9a3526410f50

📥 Commits

Reviewing files that changed from the base of the PR and between b0ba662 and 19469d7.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • Cargo.toml
  • crates/aisix-admin/Cargo.toml
  • crates/aisix-cache/Cargo.toml
  • crates/aisix-core/Cargo.toml
  • crates/aisix-etcd/Cargo.toml
  • crates/aisix-gateway/Cargo.toml
  • crates/aisix-guardrails/Cargo.toml
  • crates/aisix-obs/Cargo.toml
  • crates/aisix-provider-anthropic/Cargo.toml
  • crates/aisix-provider-azure-openai/Cargo.toml
  • crates/aisix-provider-bedrock/Cargo.toml
  • crates/aisix-provider-openai/Cargo.toml
  • crates/aisix-provider-vertex/Cargo.toml
  • crates/aisix-proxy/Cargo.toml
  • crates/aisix-ratelimit/Cargo.toml
  • crates/aisix-server/Cargo.toml
📝 Walkthrough

Walkthrough

Removes unused and replaced Cargo dependencies across the root workspace manifest and all 15 crate manifests. Dropped crates include the full HTTP/TLS stack (hyper, tokio-rustls, etc.), OpenTelemetry exporters, chrono, anyhow, thiserror (from providers), and test utilities (rstest, insta, serde_yaml). Replacement additions include futures, metrics, testcontainers, and tempfile.

Changes

Workspace Dependency Cleanup

Layer / File(s)Summary
Root workspace dependency declarations
Cargo.toml
Removes tokio-stream, tokio-util, futures-util, hyper, hyper-util, mime, tokio-rustls, rustls-pemfile, serde_yaml, full OpenTelemetry stack, tiktoken-rs, humantime, rstest, insta; adds futures, testcontainers, tempfile.
Core and infrastructure crate manifests
crates/aisix-core/Cargo.toml, crates/aisix-etcd/Cargo.toml, crates/aisix-server/Cargo.toml
aisix-core removes uuid, chrono, tracing, humantime-serde, regex, and test deps (insta, rstest, serde_yaml), adds tempfile dev-dep. aisix-etcd replaces tokio-stream/tokio-util/futures-util/anyhow with futures, async-trait, serde, serde_json, thiserror. aisix-server drops hyper, tower, tower-http, http, tokio-rustls, rustls-pemfile, thiserror, chrono.
Provider crate manifests
crates/aisix-provider-anthropic/Cargo.toml, crates/aisix-provider-azure-openai/Cargo.toml, crates/aisix-provider-bedrock/Cargo.toml, crates/aisix-provider-openai/Cargo.toml, crates/aisix-provider-vertex/Cargo.toml
Anthropic drops base64. Azure-OpenAI and OpenAI drop thiserror. Bedrock drops thiserror and tracing. Vertex drops thiserror and tracing, adds reqwest, serde, serde_json, tokio, http.
Gateway, proxy, cache, ratelimit, obs, guardrails, admin manifests
crates/aisix-gateway/Cargo.toml, crates/aisix-proxy/Cargo.toml, crates/aisix-cache/Cargo.toml, crates/aisix-ratelimit/Cargo.toml, crates/aisix-obs/Cargo.toml, crates/aisix-guardrails/Cargo.toml, crates/aisix-admin/Cargo.toml
Gateway replaces tokio-stream/futures-util/eventsource-stream/anyhow/tracing with futures, async-trait, reqwest, bytes, serde, serde_json, thiserror. Proxy drops hyper, http, futures-util. Cache swaps dependency on aisix-core for aisix-gateway. Ratelimit swaps serde/serde_json/chrono for thiserror/tracing/async-trait/redis/uuid. Obs drops full OpenTelemetry stack, adds metrics, metrics-exporter-prometheus, and related crates. Guardrails removes aws-smithy-types and its feature gate. Admin removes tower-http and chrono.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes


Note

🎁 Summarized by CodeRabbit Free

Your organization has reached its limit of developer seats under the Pro Plan. For new users, CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please add seats to your subscription by visiting https://app.coderabbit.ai/login.If you believe this is a mistake and have available seats, please assign one to the pull request author through the subscription management page using the link above.

Comment @coderabbitai help to get the list of available commands and usage tips.

cargo-machete plus per-crate source verification surfaced dependencies
declared but never referenced. Removed and verified green with
`cargo check --workspace --all-targets`:
- Unused per-crate deps in 15 crates. aisix-obs hand-rolls its OTLP/HTTP
export so the opentelemetry-* SDK crates were dead; the provider crates
share an error type so their per-crate thiserror/tracing entries were
unused; aisix-proxy reaches http types via axum::http so its direct
http/hyper deps were redundant.
- 20 [workspace.dependencies] entries left without any consumer (4 never
used, including a vestigial tiktoken-rs scaffold dep; 16 orphaned by the
per-crate removals).
No behavior change; every removed crate was unreferenced. Prunes ~395
lines including a large Cargo.lock reduction.
@moonming
moonmingforce-pushed the chore/prune-unused-deps branch from b0ba662 to 19469d7CompareJune 16, 2026 07:19
@moonming
moonming merged commit b756939 into mainJun 16, 2026
11 checks passed
@moonming
moonming deleted the chore/prune-unused-deps branch June 16, 2026 07:33
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: remove unused dependencies across the workspace - #623

Merged
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps
Jun 16, 2026
Merged

chore: remove unused dependencies across the workspace#623
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps

Conversation

@moonming

@moonmingmoonming commented Jun 16, 2026

Copy link
Copy Markdown
Member

What

Removes dependencies that are declared but never referenced, found with cargo-machete and confirmed by per-crate source verification.

  • Unused per-crate deps across 15 crates (51 entries).
  • 20 [workspace.dependencies] declarations left without any consumer: 4 that were never used (including a vestigial tiktoken-rs scaffold dep carried since PR PR #1: Scaffold Cargo workspace, UI skeleton, and CI pipeline #1), plus 16 orphaned once the per-crate consumers were removed.

Net: +4 / −395 lines, including a large Cargo.lock reduction (the now-unreachable transitive crates are pruned too).

Why these were genuinely unused (not macro/derive false positives)

Every cargo-machete hit was checked against the crate's source before removal:

  • aisix-obs hand-rolls its OTLP/HTTP export (reqwest + serde_json), so the opentelemetry, opentelemetry_sdk, opentelemetry-otlp, opentelemetry-semantic-conventions and tracing-opentelemetry crates were never linked — only mentioned in a doc comment.
  • The provider crates (openai, azure-openai, vertex, bedrock) share an error type and don't log directly, so their per-crate thiserror / tracing entries were unused.
  • aisix-proxy reaches http types through axum::http, so its direct http and hyper deps were redundant.
  • aisix-ratelimit / aisix-cache declared serde but never derive/use it (they use serde_json on types owned elsewhere); aisix-cache's direct aisix-core path-dep is reached via aisix-gateway.
  • Dev-deps insta / rstest / serde_yaml (core) and rstest (ratelimit) are not referenced by any test.

aws-smithy-types in aisix-guardrails was optional behind the bedrock feature; the bedrock path only uses aws_smithy_runtime_api / aws_smithy_async, so the dep and its dep: feature entry were both dropped.

Verification

  • cargo check --workspace --all-targetsgreen (covers all test targets, so the dev-dep removals are exercised; default features include the bedrock guardrail, so the aws-smithy-types removal is compiled).
  • No behavior change — every removed crate was unreferenced.
  • CI runs the full test matrix on top of this.

Summary by CodeRabbit

  • Chores

    • Streamlined workspace dependencies by consolidating and removing unused libraries across all components.
    • Reorganized runtime and testing dependencies to improve build efficiency and maintainability.
    • Removed obsolete observability and telemetry integrations.
  • Refactor

    • Updated internal dependency structure for improved code organization and reduced compilation footprint.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@moonming, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 6 minutes and 12 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Free

Run ID: d54480c0-9c2d-4fdd-926f-9a3526410f50

📥 Commits

Reviewing files that changed from the base of the PR and between b0ba662 and 19469d7.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • Cargo.toml
  • crates/aisix-admin/Cargo.toml
  • crates/aisix-cache/Cargo.toml
  • crates/aisix-core/Cargo.toml
  • crates/aisix-etcd/Cargo.toml
  • crates/aisix-gateway/Cargo.toml
  • crates/aisix-guardrails/Cargo.toml
  • crates/aisix-obs/Cargo.toml
  • crates/aisix-provider-anthropic/Cargo.toml
  • crates/aisix-provider-azure-openai/Cargo.toml
  • crates/aisix-provider-bedrock/Cargo.toml
  • crates/aisix-provider-openai/Cargo.toml
  • crates/aisix-provider-vertex/Cargo.toml
  • crates/aisix-proxy/Cargo.toml
  • crates/aisix-ratelimit/Cargo.toml
  • crates/aisix-server/Cargo.toml
📝 Walkthrough

Walkthrough

Removes unused and replaced Cargo dependencies across the root workspace manifest and all 15 crate manifests. Dropped crates include the full HTTP/TLS stack (hyper, tokio-rustls, etc.), OpenTelemetry exporters, chrono, anyhow, thiserror (from providers), and test utilities (rstest, insta, serde_yaml). Replacement additions include futures, metrics, testcontainers, and tempfile.

Changes

Workspace Dependency Cleanup

Layer / File(s)Summary
Root workspace dependency declarations
Cargo.toml
Removes tokio-stream, tokio-util, futures-util, hyper, hyper-util, mime, tokio-rustls, rustls-pemfile, serde_yaml, full OpenTelemetry stack, tiktoken-rs, humantime, rstest, insta; adds futures, testcontainers, tempfile.
Core and infrastructure crate manifests
crates/aisix-core/Cargo.toml, crates/aisix-etcd/Cargo.toml, crates/aisix-server/Cargo.toml
aisix-core removes uuid, chrono, tracing, humantime-serde, regex, and test deps (insta, rstest, serde_yaml), adds tempfile dev-dep. aisix-etcd replaces tokio-stream/tokio-util/futures-util/anyhow with futures, async-trait, serde, serde_json, thiserror. aisix-server drops hyper, tower, tower-http, http, tokio-rustls, rustls-pemfile, thiserror, chrono.
Provider crate manifests
crates/aisix-provider-anthropic/Cargo.toml, crates/aisix-provider-azure-openai/Cargo.toml, crates/aisix-provider-bedrock/Cargo.toml, crates/aisix-provider-openai/Cargo.toml, crates/aisix-provider-vertex/Cargo.toml
Anthropic drops base64. Azure-OpenAI and OpenAI drop thiserror. Bedrock drops thiserror and tracing. Vertex drops thiserror and tracing, adds reqwest, serde, serde_json, tokio, http.
Gateway, proxy, cache, ratelimit, obs, guardrails, admin manifests
crates/aisix-gateway/Cargo.toml, crates/aisix-proxy/Cargo.toml, crates/aisix-cache/Cargo.toml, crates/aisix-ratelimit/Cargo.toml, crates/aisix-obs/Cargo.toml, crates/aisix-guardrails/Cargo.toml, crates/aisix-admin/Cargo.toml
Gateway replaces tokio-stream/futures-util/eventsource-stream/anyhow/tracing with futures, async-trait, reqwest, bytes, serde, serde_json, thiserror. Proxy drops hyper, http, futures-util. Cache swaps dependency on aisix-core for aisix-gateway. Ratelimit swaps serde/serde_json/chrono for thiserror/tracing/async-trait/redis/uuid. Obs drops full OpenTelemetry stack, adds metrics, metrics-exporter-prometheus, and related crates. Guardrails removes aws-smithy-types and its feature gate. Admin removes tower-http and chrono.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes


Note

🎁 Summarized by CodeRabbit Free

Your organization has reached its limit of developer seats under the Pro Plan. For new users, CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please add seats to your subscription by visiting https://app.coderabbit.ai/login.If you believe this is a mistake and have available seats, please assign one to the pull request author through the subscription management page using the link above.

Comment @coderabbitai help to get the list of available commands and usage tips.

cargo-machete plus per-crate source verification surfaced dependencies
declared but never referenced. Removed and verified green with
`cargo check --workspace --all-targets`:
- Unused per-crate deps in 15 crates. aisix-obs hand-rolls its OTLP/HTTP
export so the opentelemetry-* SDK crates were dead; the provider crates
share an error type so their per-crate thiserror/tracing entries were
unused; aisix-proxy reaches http types via axum::http so its direct
http/hyper deps were redundant.
- 20 [workspace.dependencies] entries left without any consumer (4 never
used, including a vestigial tiktoken-rs scaffold dep; 16 orphaned by the
per-crate removals).
No behavior change; every removed crate was unreferenced. Prunes ~395
lines including a large Cargo.lock reduction.
@moonming
moonmingforce-pushed the chore/prune-unused-deps branch from b0ba662 to 19469d7CompareJune 16, 2026 07:19
@moonming
moonming merged commit b756939 into mainJun 16, 2026
11 checks passed
@moonming
moonming deleted the chore/prune-unused-deps branch June 16, 2026 07:33
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

chore: remove unused dependencies across the workspace - #623

Merged
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps
Jun 16, 2026
Merged

chore: remove unused dependencies across the workspace#623
moonming merged 1 commit into
mainfrom
chore/prune-unused-deps

Conversation

@moonming

@moonmingmoonming commented Jun 16, 2026

Copy link
Copy Markdown
Member

What

Removes dependencies that are declared but never referenced, found with cargo-machete and confirmed by per-crate source verification.

  • Unused per-crate deps across 15 crates (51 entries).
  • 20 [workspace.dependencies] declarations left without any consumer: 4 that were never used (including a vestigial tiktoken-rs scaffold dep carried since PR PR #1: Scaffold Cargo workspace, UI skeleton, and CI pipeline #1), plus 16 orphaned once the per-crate consumers were removed.

Net: +4 / −395 lines, including a large Cargo.lock reduction (the now-unreachable transitive crates are pruned too).

Why these were genuinely unused (not macro/derive false positives)

Every cargo-machete hit was checked against the crate's source before removal:

  • aisix-obs hand-rolls its OTLP/HTTP export (reqwest + serde_json), so the opentelemetry, opentelemetry_sdk, opentelemetry-otlp, opentelemetry-semantic-conventions and tracing-opentelemetry crates were never linked — only mentioned in a doc comment.
  • The provider crates (openai, azure-openai, vertex, bedrock) share an error type and don't log directly, so their per-crate thiserror / tracing entries were unused.
  • aisix-proxy reaches http types through axum::http, so its direct http and hyper deps were redundant.
  • aisix-ratelimit / aisix-cache declared serde but never derive/use it (they use serde_json on types owned elsewhere); aisix-cache's direct aisix-core path-dep is reached via aisix-gateway.
  • Dev-deps insta / rstest / serde_yaml (core) and rstest (ratelimit) are not referenced by any test.

aws-smithy-types in aisix-guardrails was optional behind the bedrock feature; the bedrock path only uses aws_smithy_runtime_api / aws_smithy_async, so the dep and its dep: feature entry were both dropped.

Verification

  • cargo check --workspace --all-targetsgreen (covers all test targets, so the dev-dep removals are exercised; default features include the bedrock guardrail, so the aws-smithy-types removal is compiled).
  • No behavior change — every removed crate was unreferenced.
  • CI runs the full test matrix on top of this.

Summary by CodeRabbit

  • Chores

    • Streamlined workspace dependencies by consolidating and removing unused libraries across all components.
    • Reorganized runtime and testing dependencies to improve build efficiency and maintainability.
    • Removed obsolete observability and telemetry integrations.
  • Refactor

    • Updated internal dependency structure for improved code organization and reduced compilation footprint.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@moonming, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 6 minutes and 12 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Free

Run ID: d54480c0-9c2d-4fdd-926f-9a3526410f50

📥 Commits

Reviewing files that changed from the base of the PR and between b0ba662 and 19469d7.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • Cargo.toml
  • crates/aisix-admin/Cargo.toml
  • crates/aisix-cache/Cargo.toml
  • crates/aisix-core/Cargo.toml
  • crates/aisix-etcd/Cargo.toml
  • crates/aisix-gateway/Cargo.toml
  • crates/aisix-guardrails/Cargo.toml
  • crates/aisix-obs/Cargo.toml
  • crates/aisix-provider-anthropic/Cargo.toml
  • crates/aisix-provider-azure-openai/Cargo.toml
  • crates/aisix-provider-bedrock/Cargo.toml
  • crates/aisix-provider-openai/Cargo.toml
  • crates/aisix-provider-vertex/Cargo.toml
  • crates/aisix-proxy/Cargo.toml
  • crates/aisix-ratelimit/Cargo.toml
  • crates/aisix-server/Cargo.toml
📝 Walkthrough

Walkthrough

Removes unused and replaced Cargo dependencies across the root workspace manifest and all 15 crate manifests. Dropped crates include the full HTTP/TLS stack (hyper, tokio-rustls, etc.), OpenTelemetry exporters, chrono, anyhow, thiserror (from providers), and test utilities (rstest, insta, serde_yaml). Replacement additions include futures, metrics, testcontainers, and tempfile.

Changes

Workspace Dependency Cleanup

Layer / File(s)Summary
Root workspace dependency declarations
Cargo.toml
Removes tokio-stream, tokio-util, futures-util, hyper, hyper-util, mime, tokio-rustls, rustls-pemfile, serde_yaml, full OpenTelemetry stack, tiktoken-rs, humantime, rstest, insta; adds futures, testcontainers, tempfile.
Core and infrastructure crate manifests
crates/aisix-core/Cargo.toml, crates/aisix-etcd/Cargo.toml, crates/aisix-server/Cargo.toml
aisix-core removes uuid, chrono, tracing, humantime-serde, regex, and test deps (insta, rstest, serde_yaml), adds tempfile dev-dep. aisix-etcd replaces tokio-stream/tokio-util/futures-util/anyhow with futures, async-trait, serde, serde_json, thiserror. aisix-server drops hyper, tower, tower-http, http, tokio-rustls, rustls-pemfile, thiserror, chrono.
Provider crate manifests
crates/aisix-provider-anthropic/Cargo.toml, crates/aisix-provider-azure-openai/Cargo.toml, crates/aisix-provider-bedrock/Cargo.toml, crates/aisix-provider-openai/Cargo.toml, crates/aisix-provider-vertex/Cargo.toml
Anthropic drops base64. Azure-OpenAI and OpenAI drop thiserror. Bedrock drops thiserror and tracing. Vertex drops thiserror and tracing, adds reqwest, serde, serde_json, tokio, http.
Gateway, proxy, cache, ratelimit, obs, guardrails, admin manifests
crates/aisix-gateway/Cargo.toml, crates/aisix-proxy/Cargo.toml, crates/aisix-cache/Cargo.toml, crates/aisix-ratelimit/Cargo.toml, crates/aisix-obs/Cargo.toml, crates/aisix-guardrails/Cargo.toml, crates/aisix-admin/Cargo.toml
Gateway replaces tokio-stream/futures-util/eventsource-stream/anyhow/tracing with futures, async-trait, reqwest, bytes, serde, serde_json, thiserror. Proxy drops hyper, http, futures-util. Cache swaps dependency on aisix-core for aisix-gateway. Ratelimit swaps serde/serde_json/chrono for thiserror/tracing/async-trait/redis/uuid. Obs drops full OpenTelemetry stack, adds metrics, metrics-exporter-prometheus, and related crates. Guardrails removes aws-smithy-types and its feature gate. Admin removes tower-http and chrono.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes


Note

🎁 Summarized by CodeRabbit Free

Your organization has reached its limit of developer seats under the Pro Plan. For new users, CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please add seats to your subscription by visiting https://app.coderabbit.ai/login.If you believe this is a mistake and have available seats, please assign one to the pull request author through the subscription management page using the link above.

Comment @coderabbitai help to get the list of available commands and usage tips.

cargo-machete plus per-crate source verification surfaced dependencies
declared but never referenced. Removed and verified green with
`cargo check --workspace --all-targets`:
- Unused per-crate deps in 15 crates. aisix-obs hand-rolls its OTLP/HTTP
export so the opentelemetry-* SDK crates were dead; the provider crates
share an error type so their per-crate thiserror/tracing entries were
unused; aisix-proxy reaches http types via axum::http so its direct
http/hyper deps were redundant.
- 20 [workspace.dependencies] entries left without any consumer (4 never
used, including a vestigial tiktoken-rs scaffold dep; 16 orphaned by the
per-crate removals).
No behavior change; every removed crate was unreferenced. Prunes ~395
lines including a large Cargo.lock reduction.
@moonming
moonmingforce-pushed the chore/prune-unused-deps branch from b0ba662 to 19469d7CompareJune 16, 2026 07:19
@moonming
moonming merged commit b756939 into mainJun 16, 2026
11 checks passed
@moonming
moonming deleted the chore/prune-unused-deps branch June 16, 2026 07:33
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@moonming