Skip to content

Conversation

@S0raWasTaken
Copy link
Owner

Dependencies and their removed features by Workspace:

ascii-linker

  • ron - Now default-features = false
  • serde - Now default-features = false
  • tar - Now default-features = false
    • Removed: xattr (extended file attributes)
  • zstd - Now default-features = false

asciic

  • clap - Changed from features = ["derive", "cargo"] to features = ["cargo"], default-features = false
    • Removed: derive feature
    • Removed: anstream (ANSI streams), strsim (string similarity)
  • ctrlc - Changed to default-features = false
    • Kept: termination feature was already removed
  • image - Now default-features = false
  • reqwest - Changed from features = ["rustls-tls", "blocking"] to features = ["blocking"], default-features = false
    • Removed: rustls-tls, native-tls, hyper-rustls, hyper-tls, quinn (QUIC), h2 (HTTP/2), tokio-rustls, tokio-native-tls
  • ron - Now default-features = false
  • serde - Changed to default-features = false
    • Kept: derive feature
  • tar - Now default-features = false
    • Removed: xattr (extended file attributes)
  • tempfile - Now default-features = false
  • zstd - Now default-features = false
  • indicatif - Now default-features = false
    • Removed: unicode-width

libasciic

  • clap - Changed from features = ["derive"] to default-features = false
    • Removed: derive feature, anstream, strsim

bplay (submodule)

Dependencies

  • clap - Changed from features = ["cargo", "derive"] to features = ["derive", "std", "cargo"], default-features = false
    • Added: std feature (explicitly enabled)
    • Removed: anstream, strsim
  • rodio - Changed from features = ["mp3", "playback"] to features = ["playback", "symphonia-mp3"]
    • Removed: mp3 feature
    • Added: symphonia-mp3 feature (different MP3 decoder)
  • ron - Now default-features = false
  • serde - Now default-features = false
    • Kept: derive feature
  • tar - Now default-features = false
    • Removed: xattr (extended file attributes)
  • zstd - Now default-features = false

@S0raWasTaken S0raWasTaken self-assigned this Dec 8, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 8, 2025

Walkthrough

Disabled default features for many dependencies across three crates and adjusted feature lists (notably changing clap/reqwest settings in asciic). Removed the [profile.dev] override and updated [profile.release] to keep panic = "abort", add strip = true and lto = "thin". No version or public API changes.

Changes

Cohort / File(s) Summary
ascii-linker deps
ascii-linker/Cargo.toml
Set default-features = false for ron, serde, tar, and zstd (versions unchanged).
asciic deps
asciic/Cargo.toml
Disabled default features for several crates; removed derive feature from clap entry; changed reqwest features from ["rustls-tls","blocking"] to ["blocking","native-tls"] and set default-features = false on multiple deps (ctrlc, image, ron, serde, tar, tempfile, zstd, indicatif).
libasciic deps
libasciic/Cargo.toml
Added default-features = false to the optional clap dependency while keeping features = ["derive"].
workspace profile
Cargo.toml
Removed the [profile.dev] block (previously panic = "abort"); updated [profile.release] to retain panic = "abort" and add strip = true and lto = "thin".

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Build/CI verification across workspace with reduced feature sets.
  • Inspect asciic for usages relying on removed clap derive.
  • Confirm reqwest TLS backend change (rustlsnative-tls) doesn't break expectations.
  • Verify release profile lto = "thin" and strip = true are intended.

Possibly related PRs

Poem

🐰 I hopped through tomls, nibbling features away,

Stripped defaults neatly, then bounded to play.
Thin LTO tucked in, panic kept at bay,
A tiny tweak, a carrot — build's on its way 🥕

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely summarizes the main objective of the changeset: reducing binary size by removing unused features from dependencies across multiple workspace crates.
Description check ✅ Passed The description is directly related to the changeset, providing a detailed breakdown of feature removals and default-features disabling across all affected crates and workspaces.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch unused-features

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5cde50c and 1224e02.

📒 Files selected for processing (1)
  • Cargo.toml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • Cargo.toml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai bot added ascii-linker asciic Issues/features for asciic qol Quality of Life labels Dec 8, 2025
@S0raWasTaken
Copy link
Owner Author

S0raWasTaken commented Dec 8, 2025

Oopsie, I might have removed rustls-tls on accident from reqwest ~
no https without a TLS feature, and the dependencies are stored in a github mirror

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ee9f7f6 and 05fba35.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (3)
  • ascii-linker/Cargo.toml (1 hunks)
  • asciic/Cargo.toml (1 hunks)
  • libasciic/Cargo.toml (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-11-21T02:30:20.833Z
Learnt from: S0raWasTaken
Repo: S0raWasTaken/bad_apple PR: 25
File: asciic/Cargo.toml:5-5
Timestamp: 2025-11-21T02:30:20.833Z
Learning: The bad_apple repository requires MSRV 1.88.0 as determined by cargo-msrv. Lower versions are not supported due to specific features, APIs, or dependencies used in the codebase.

Applied to files:

  • ascii-linker/Cargo.toml
  • asciic/Cargo.toml
📚 Learning: 2025-11-20T03:04:36.270Z
Learnt from: S0raWasTaken
Repo: S0raWasTaken/bad_apple PR: 23
File: asciic/src/installer.rs:1-5
Timestamp: 2025-11-20T03:04:36.270Z
Learning: In asciic/src/installer.rs (bad_apple repository), the maintainer prefers using `#![allow(unreachable_code, unused_variables)]` with runtime `std::process::exit` calls to handle unsupported platforms, rather than compile-time `#[cfg(...)]` guards, trusting the Rust compiler to optimize away unreachable code paths.

Applied to files:

  • asciic/Cargo.toml
🔇 Additional comments (3)
ascii-linker/Cargo.toml (1)

20-23: No concerns; dependency feature disabling looks appropriate for a proc-macro library.

These changes disable unnecessary default features without removing needed functionality. The crate should continue to work correctly.

asciic/Cargo.toml (1)

12-12: No action needed. The asciic source code does not use clap derive macros (#[derive(Parser)], #[derive(Subcommand)], etc.), so removing the "derive" feature is a valid optimization for this binary crate.

libasciic/Cargo.toml (1)

21-21: No breaking change present—clap derive feature was never part of libasciic's public API.

The clap optional feature in libasciic (line 17) simply re-exports the clap crate as ["dep:clap"] without forwarding specific features. Libasciic's source code does not use clap at all, so removing the derive feature is not a breaking change to the library's API. Consumers needing clap's derive support can specify it directly in their own dependency declarations.

Likely an incorrect or invalid review comment.

@coderabbitai coderabbitai bot added the enhancement New feature or request label Dec 8, 2025
@S0raWasTaken S0raWasTaken added the bplay Issues/features for bplay label Dec 8, 2025
@S0raWasTaken
Copy link
Owner Author

S0raWasTaken commented Dec 16, 2025

Closing it for now, it's not really important right now. I'll redo this later.

@S0raWasTaken S0raWasTaken deleted the unused-features branch December 16, 2025 17:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ascii-linker asciic Issues/features for asciic bplay Issues/features for bplay enhancement New feature or request qol Quality of Life

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants