-
Notifications
You must be signed in to change notification settings - Fork 13.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Strategy for stabilization non-std crates #18585
Comments
/cc me |
Here are my current thoughts on this. Nothing is official of course, just a bunch of proposed strategies to deal with all these crates: Facade crates we must ship
Suggested strategy: Disallow explicit Other suggestions:
Compiler implementation details we may want to ship somehowThis is a listing of crates which the compiler uses as implementation details. These apis are not in a state of which they should be stable, but they are quite useful to the community at large (many users!).
Suggested solution: Provide all of these crates officially through crates.io instead. Each crate will start with Crates tied to the compiler implementation itselfThese crates cannot be modified without changing the compiler itself. Conversely, the compiler can never change because these crates are not changed in lockstep. The apis are not quite what we'd like to stabilize at this time, however.
Suggested solutions:
Misc crates
This crate will likely just be removed with rtio work Crates we want to ship
No questions here! Compiler implementation details we do not want to ship
Solution: flag all crates as Crates to should be removed from the rust repo
I'm thinking of removing these entirely from the repository in favor of packages in crates.io. Each of these can be versioned speparately from the standard Rust distribution. Note that TODO list
|
This isn't true anymore, as macros will end up stable before 1.0.= |
@steveklabnik |
On that note:
Regexes are used in the test harnesses (both libtest and compiletest) and liblog, so we may want to do the same trick to provide them officially. (Or just remove the support, of course, but filtering tests is quite nice.) However, I don't know how/if we can get the versions linked into libtest and liblog to reconcile with the one provided officially. shrug |
We could in theory ship the regex crates as I was thinking that the functionality was small enough that it's ok to remove, but if it's important enough we can keep them in tree. |
How does not stabilizing the facades affect #[no_std]? Is that something we'll be supporting in 1.0, or will they have to stay on the nightlies? |
For now crates relying on |
@huonw oh yeah, duh! |
This commit adds support for linting `extern crate` statements for stability attributes attached to the crate itself. This is likely to be the mechanism used to deny access to experimental crates that are part of the standard distribution. cc rust-lang#18585
To make progress on rust-lang#18585 we're paring down the distribution to theoretically "only libstd", and this commit makes progress on this by removing the rlibc crate from the distribution. The crate has now been moved into an external cargo package located in the rust lang organization [1]. This is a breaking change due to this removal, and existing crates depending on `rlibc` should use the Cargo crate instead. [1]: https://github.com/rust-lang/rlibc [breaking-change] cc rust-lang#18585
Assigning P-backcompat-libs, 1.0. |
This commit implements processing these two attributes at the crate level as well as at the item level. When #[cfg] is applied at the crate level, then the entire crate will be omitted if the cfg doesn't match. The #[cfg_attr] attribute is processed as usual in that the attribute is included or not depending on whether the cfg matches. This was spurred on by motivations of rust-lang#18585 where #[cfg_attr] annotations will be applied at the crate-level. cc rust-lang#18585
…kler This commit implements processing these two attributes at the crate level as well as at the item level. When #[cfg] is applied at the crate level, then the entire crate will be omitted if the cfg doesn't match. The #[cfg_attr] attribute is processed as usual in that the attribute is included or not depending on whether the cfg matches. This was spurred on by motivations of #18585 where #[cfg_attr] annotations will be applied at the crate-level. cc #18585
This commit implements processing these two attributes at the crate level as well as at the item level. When #[cfg] is applied at the crate level, then the entire crate will be omitted if the cfg doesn't match. The #[cfg_attr] attribute is processed as usual in that the attribute is included or not depending on whether the cfg matches. This was spurred on by motivations of rust-lang#18585 where #[cfg_attr] annotations will be applied at the crate-level. cc rust-lang#18585
…kler This commit implements processing these two attributes at the crate level as well as at the item level. When #[cfg] is applied at the crate level, then the entire crate will be omitted if the cfg doesn't match. The #[cfg_attr] attribute is processed as usual in that the attribute is included or not depending on whether the cfg matches. This was spurred on by motivations of #18585 where #[cfg_attr] annotations will be applied at the crate-level. cc #18585
@alexcrichton are we ready to close this? |
While not fully taken care of, all stragglers are handled in #19260 so I'm fine with closing in favor of that. The only crates left to take care of are:
|
For 1.0 we're only going to stablize
std
. We need to figure out what to do with all the other crates. @alexcrichton has some ideas.The text was updated successfully, but these errors were encountered: