Comments (9)
My thought process on this being that bpaf seems to be close to feature parity with clap, while having faster compile times and lower binary size (see https://github.com/rosetta-rs/argparse-rosetta-rs). Which (particularly the compile times) seemed like they might be a better tradeoff for most people.
I would potentially be open to swapping the order on these two. Is there anything concrete that clap does better than bpaf?
from blessed-rs.
It was added in 027aead without details.
On reddit, I found this comment
I am considering adding bpaf to the recommendations in the "full" category, as they recently added this support.
"this" referring to UTF8 support
from blessed-rs.
From quickly perusing the derive documentation, it didn't look like it has feature parity. Feature parity also seems like a tricky aspect to judge on, as a smaller feature set with superior performance or more ergonomic API might still be preferable.
Also my impression that the site tries to provide an indication of community consensus, which IMO given the download numbers above clearly point in the direction of clap.
But IMO if you're going to mention a newer/less popular runner-up like bpaf it's hard to defend not mentioning some of the other competitors in the space like argh or gumdrop.
from blessed-rs.
While some might feel I'm biased, I find bpaf is not a good general recommendation. Initially, I had hoped it had some potential and wondered about the future of clap with it but quickly found that it will take a lot before I can seriously consider it a replacement for clap. In trivial cases, the derive works well, builds fast, and provides a small binary. For anything past that though, you need to be steeped in a Haskell mindset to figure out how things work. I at least view blessed as something that provides "safe" defaults ("no one was ever fired for buying from IBM" type defaults). serde is a good example of this compared to the other options. I see clap being like serde.
In all seriousness, the maintainer replied to a comment of mine with
Hmm... Maybe, but this naming seems more natural in Haskell. Parser is a proper Applicative you can compose, while OptionParser is just an object you can run or transform a bit, Parser is a very common name and most of them are monads or applicatives. Need to check how other libs are handling this in Rust.
Every time I say "this can't be done with bpaf", the author replies back with some non-obvious application of the available functionality.
from blessed-rs.
If you equate serde's level of blessedness with clap's, I'd certainly consider that biased. 😛 But in this particular category, I definitely think clap is the "blessed" choice at this point, and if any alternatives were to be listed I don't think bpaf would make the natural shortlist.
from blessed-rs.
Also my impression that the site tries to provide an indication of community consensus, which IMO given the download numbers above clearly point in the direction of clap.
imo its best to not run purely off of metrics but to do some editorializing as metrics won't help with "up and coming" crates compared to "this is used everywhere even if it shouldn't". I feel like it requires enough familiarity within the domain, taste, and judgement to avoid high churn.
If you equate serde with clap, I'd certainly consider that biased.
No, I do not mean to equate them generally but more specifically as being generally applicable and a safe option compared to the other choices.
from blessed-rs.
But IMO if you're going to mention a newer/less popular runner-up like bpaf it's hard to defend not mentioning some of the other competitors in the space like argh or gumdrop.
@nicoburns said on reddit
I don't think I can really recommend anything that doesn't handle non-utf8 arguments
which takes out argh and gumdrop. I can't remember which of those but at least one of them is also very opinionated on what argument formats it accepts which disqualifies it in my mind.
from blessed-rs.
imo its best to not run purely off of metrics but to do some editorializing as metrics won't help with "up and coming" crates compared to "this is used everywhere even if it shouldn't". I feel like it requires enough familiarity within the domain, taste, and judgement to avoid high churn.
I'm not saying metrics are everything. I think these are two separate points:
- If you want to mention an up-and-coming crate, it should maybe not appear first in the list
- The particular case of 12k vs 14M recent downloads strengthens my conviction in this case
from blessed-rs.
Right, I'm convinced. In particular:
- "For anything past that though, you need to be steeped in a Haskell mindset to figure out how things work."
- "Every time I say "this can't be done with bpaf", the author replies back with some non-obvious application of the available functionality."
both seem quite damning.
And 12k vs 14M is indeed a very significant difference in adoption. The number for what I thought might be a relevant comparison: once_cell vs lazy_static actually show 5M vs 4M in favour of once_cell.
I'll the swap the recommendation back to clap.
from blessed-rs.
Related Issues (20)
- Revisit recommended text colouring crate HOT 10
- Add rouille as a "see also" web framework HOT 2
- Add cargo-zigbuild crate
- Add `faer` to `math-scientific` HOT 1
- Add `heapless` to `Common > General > Stack-allocated arrays` (and other data structures) HOT 1
- Add `arboard` to "Clipboard" HOT 1
- a new orm HOT 2
- Add zerocopy to Safe type casts HOT 1
- Page information is outdated and sometimes misleading HOT 6
- Add "unstable" indicator to pre-1.0 packages? HOT 4
- Mocking in Rust
- Typo in Math / Scientific
- Add some arena crates HOT 1
- once_cell has been merged into std and stabilized HOT 1
- add parser library HOT 2
- Add Fyrox game engine
- bpaf description seems a bit odd HOT 15
- Is there any dns crate(both server/client) to be added? HOT 3
- Add various encoding crates HOT 6
- Consider adding inquire HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blessed-rs.