thread-id is another fundamental crate.
Won’t thread-id
be subsumed by std::thread::ThreadId
? #21507
I took the liberty of adding bytes, syslog, lzw, ring, openssl, petgraph, daggy, typenum, image, cfg-if, and itertools to the crate list. Others suggested may be good candidates, but I have less certainty.
nom I think is obviously an important and high-quality crate, but I’m not sure I consider parser generators in scope here. That’s not something I usually associate with batteries included standard libraries.
There are a number of additional library ecosystem tasks that don’t fit into the blitz structure that I would like to move forward sometime this summer. Just to telegraph that a bit, here is a braindump.
- Standard library survey - Last year the libs team started a survey of batteries included standard libraries, but never finished. The intent was to get a handle on the set of features typically expected out of a language’s runtime stack, and then identify areas where we are lacking and need to focus effort.
- rand design review - The rand crate has long been unsatisfactory to the libs team, and needs some focused design work. People that love random numbers are needed. I know @bstrie indicated he was keen about this.
- chrono design review - This crate provides comprehensive date/time solutions, but it my experience using it (and I gather others’), it can be difficult to discover how to do some fairly basic tasks. I recall my biggest pain point was understanding how to deal with all the timezone concerns that are represented in the type system. It may be that just writing cookbook examples for a number of tasks would help. It also still depends on the time crate, which is destined to be deprecated. cc @lifthrasiir I hope you will be amenable.
- A 1.0 crate scoreboard - Just a simple motivator. Create a thread on urlo that lists, in reverse chronological order, the crates that hit 1.0, their dates, and their authors. This clearly would be gameable, but that’s fine. At least it conveys consistently that 1.0 crates are important, and crate authors should endeavor to get there. It would be pretty easy to maintain with a script. Once a week post an update to the op, and a comment indicating all the updates and thanking the crate authors.
- A cookbook roadmap and urlo thread - I’d like to define what a 1.0 cookbook looks like so there’s a clear destination, make regular point releases and status updates.
I’ve just discovered that docs.rs displays a crate’s GitHub README. Can you tell the difference between these two pages:
I was quite confused, and I think all this redundant information makes a poor experience.
In any case, we have no guidelines for crate READMEs, and since this is a crucial part of the documentation UI, it seems like we must establish some, then go back and review the crates we’ve done. cc @dtolnay
Yep, I'll have to bring this up in the front page styleguide RFC https://github.com/rust-lang/rfcs/pull/1687.
I've just discovered that docs.rs displays a crate's GitHub README
I would just like to note that this has nothing directly to do with GitHub (it just happens to be the same in approximately 100% of the cases), if you were to have a package with the source hosted elsewhere it should work just the same. Judging by this code from docs.rs it is based on the package.readme
key in the packages Cargo.toml
+ a default if not specified, as described in The Manifest Format:
# This points to a file in the repository (relative to this `Cargo.toml`). The
# contents of this file are stored and indexed in the registry.
readme = "..."
I needed a parser, looked at many of them and wasn't satisfied with either, but I agree it is a relatively niche tool.
However I would like to nominate some more XML-related crates. I see xml
(should be xml-rs
?) is already in, but some DOM should also be included. I see a couple of candidates for that: sxd-document
(+sxd-xpath
), minidom
, elementtree
, rquery
, treexml
, xmltree
. They are mostly equivalent, so some should be chosen.
Rust libz blitz status update 2017-05-12
Ok, here’s what we accomplished this week.
- log
- We filled out most of the log evaluation
- There are a few remaining sections of the guidelines checklist
- Thanks to everyone who contributed to the discussion
- url
- memmap
- bitflags
- tempdir
- flate2
- cookbook
- @brson posted recipe ideas
- @budziq and @rap2hpoutre made lots of cookbook improvements!
- @rap2hpoutre added a “Log messages with a custom logger” cookbook recipe
- @budziq added a “Log to the Unix syslog” cookbook recipe
- @budziq added a “Remove fragment identifiers and query pairs from a URL” cookbook recipe
- @budziq added a “Make a HTTP GET request” cookbook recipe
- @mikeastock added a “Create new URLs from a base URL” cookbook recipe
- @Piripant added several url cookbook recipes
- @mikeastock added a “Create a base URL by removing path segments” cookbook recipe
- @bostelk add a “Parse a URL from a string to a
Url
type” cookbook recipe
- guidelines
- other
- We added a number of new crates to the crate list. Thanks for all the suggestions.
Also @dtolnay @danburkert @SimonSapin @sfackler and @alexcrichton reviewed tons of stuff.
Wow. So that’s pretty amazing. Thanks everyone!
OK, one more thing for today.
The walkdir
crate is scheduled for 6/13, has no assigned lead, and I do want to start getting these evaluations going more weeks in advance. I know we’ve only had one round to crib off of so far (log, but if anybody has an inclination to lead the walkdir evaluation, I can help walk them through the evolving process. I’ll be on vacation next week, but the one following we can get started. Alternately, if somebody is up to getting walkdir started next week @dtolnay can assist.
@dtolnay will be starting the reqwest evaluation soon.
I added a link to the reqwest
evaluation.
I added a link to the libs team meeting about log
.
Status update 2017-05-19
There has been a ton of great libz blitz progress this week. We are going to need even more help to keep up the momentum! Contribution opportunities are in bold.
log
- Tracking issue for all the improvements we need to make; there are so many issues! Please help
- We still need to write some good cookbook examples!
- @dpc, @LilianMoraru, @sfackler, @vl0 provided valuable feedback on their experience using log
- The libs team held our video meeting to discuss log (recording)
- @alexcrichton wrote down minutes of the meeting
reqwest
- The evaluation is underway!
- @KodrAus made amazing progress on the guidelines checklist
- There are many more guidelines to evaluate!
- @budziq came up with some nice cookbook examples
- The libs team discussion will happen a week from Tuesday
url
- We need help triaging and reviewing PRs!
- @hngnaig added some new examples
- @tmccombs improved documentation
flate2
memmap
Cookbook
- We filed tons of easy ways for new contributors to chip in! Check out CONTRIBUTING.md
- We successfully begged for help on reddit; thanks for the amazing response
- @budziq installed aspell to catch all of our typos
- @budziq added two rand examples
- @budziq added a log level example
- @budziq added an example of downloading a file to a temp directory
- @budziq added two GitHub API examples
- @budziq added a quick way to edit examples straight from the cookbook website
- @budziq set up a way to hide boilerplate error handling code
- @budziq made sure our example code never goes out of date
- @gsquire added an example of making an http HEAD request
- @Michael-F-Bryan added an example of parsing subprocess output
- @xpayn added an example of extracting a tarball to a temp directory
- @jaemk added an example of using lazy_static
- @bjnyfv added an example of hex encoding
- @cetra3 added an example of logging to a custom filepath
- @jaemk added an example of using global mutable state
- @raph2hpoutre added an example of base64 encoding
- @xpayn added an example of recursively traversing a directory
- @AndyGauge added an example of listening on a random port
- @budziq added an example of url-encoding
- @jeanm provided some visual improvements
- @jmcomets is working on two env_logger examples
- @AndyGauge is working on a POST example
- @budziq is working on a header and url param example
- @budziq is working on timestamped log messages
- @karan1276 is working on a threadpool example
- @DeltaManiac is working on a memmap example
- @luisbg and @henninglive started thinking about an html5ever example
- @luisbg is working on a walkdir predicate example
- @budziq is working on making hyperlinks look nicer
- @derekdreery suggested a new example
- @budziq suggested some walkdir examples
API guidelines
- What lessons can we learn from the reqwest crate?
- Guidelines need to be updated based on the log evaluation!
- @daboross caught and fixed a small mistake
- tempdir raised the question of a convention for checked teardown
Thanks everyone!
It’s been suggested to me that base64, data_encoding, tar, and backtrace are all appropriate here. Sounds right to me. Any other opinions?
hex is along similar lines, and apparently it’s the best place to get hex conversion.
This graph shows the great effect the libz blitz has been having for the log
crate. We still need lots more help! Please check the tracking issue for opportunities to contribute.
I updated the crate list per the last few suggestions, and attempted to generalize the categorizations there a bit.
The walkdir review is scheduled for 6/13, and the intent is to start evaluations one month ahead of time, so it’s behind schedule. It still doesn’t have a lead assigned. Is anybody interested in leading the walkdir evaluation, starting this week? It doesn’t require a great deal of experience, since the entire process is outlined in the checklist, and there are previous examples to crib off of.
If not, I will begin the walkdir evaluation on Friday.
The error-chain review is scheduled for 6/27, which means @aturon needs to get that evaluation rolling soon as well.