Skip to content
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

Break apart global unstable features #26192

Merged
merged 31 commits into from
Jun 18, 2015
Merged

Conversation

alexcrichton
Copy link
Member

This commit shards the all-encompassing core, std_misc, collections, and alloc features into finer-grained components that are much more easily opted into and tracked. This reflects the effort to push forward current unstable APIs to either stabilization or removal. Keeping track of unstable features on a much more fine-grained basis will enable the library subteam to quickly analyze a feature and help prioritize internally about what APIs should be stabilized.

A few assorted APIs were deprecated along the way, but otherwise this change is just changing the feature name associated with each API. Soon we will have a dashboard for keeping track of all the unstable APIs in the standard library, and I'll also start making issues for each unstable API after performing a first-pass for stabilization.

@alexcrichton
Copy link
Member Author

r? @aturon
cc @rust-lang/libs

@rust-highfive rust-highfive assigned pcwalton and aturon and unassigned pcwalton Jun 10, 2015
@rust-highfive
Copy link
Collaborator

r? @pcwalton

(rust_highfive has picked a reviewer for you, use r? to override)

@BurntSushi
Copy link
Member

Woah! This will help a lot! 👍

@bors
Copy link
Contributor

bors commented Jun 11, 2015

☔ The latest upstream changes (presumably #25777) made this pull request unmergeable. Please resolve the merge conflicts.

@aturon
Copy link
Member

aturon commented Jun 11, 2015

OK, initial pass done -- this is fantastic.

I marked a few places where I think we can probably just stabilize for 1.2 or deprecate. But it's fine to punt that to a separate pass if you prefer. Otherwise r=me.

@alexcrichton
Copy link
Member Author

So my initial strategy was going to be to land this and then follow up with a blanket deprecation pass, following that up with a blanket stabilization pass. The idea would be to only deprecate things that should have been deprecated some time ago, and also only stabilize minor apis that should have been stable awhile ago.

I'm rethinking this, though, as if I'm using these unstable features I may have to update code twice where otherwise I could just lump all the changes into this one PR. Thoughts on whether these blanket passes for "easy" things should happen now or later? I do suspect it will delay this PR to add more stabilizations to it, but we still have a few weeks to the release (and I wouldn't want to cherry-pick stabilizations into the 1.1 branch).

@aturon
Copy link
Member

aturon commented Jun 11, 2015

Yeah, to avoid unnecessary churn on Nightly, it seems prudent to at least pick off the easy stuff we can get quick consensus on.

@sfackler
Copy link
Member

Folding them into this seems fine - preferably the deprecation and stabilization passes would each happen in their own commit for ease of review.

@alexcrichton alexcrichton force-pushed the features-clean branch 3 times, most recently from 60906ee to 64bfa63 Compare June 11, 2015 02:17
@alexcrichton
Copy link
Member Author

OK, I have pushed a proposed set of stabilizations and deprecations, each of which is separate as one feature per commit. I can squash everything later, but wanted to make sure it was clear what's going on where.

I'm also now going through the process of updating all the tests and warnings that come out of these changes (a commit to be added).

@sfackler
Copy link
Member

Is the plan to delete the deprecated stuff in 1.3?

@bors
Copy link
Contributor

bors commented Jun 11, 2015

☔ The latest upstream changes (presumably #26154) made this pull request unmergeable. Please resolve the merge conflicts.

@Gankra
Copy link
Contributor

Gankra commented Jun 11, 2015

I'm positive-to-neutral on all these changes.

@alexcrichton
Copy link
Member Author

@sfackler yeah I'd want to clean out deprecated unstable items after the next release (e.g. when master is 1.3).

@alexcrichton
Copy link
Member Author

I'll also mention that I'm avoiding rebasing for now to ensure commit comments are not lost, but I'll rebase once it's all good to go.

@alexcrichton
Copy link
Member Author

Ok I've pushed a follow-up to address some comments and also stabilize vec_map::Entry::or_insert.

This PR now passes all test as well!

@alexcrichton
Copy link
Member Author

One point of note to highlight is sfackler's comment about whether BorrowState for a RefCell should communicate how many readers are currently reading the cell. It may also be best to just leave out that commit for now.

@sfackler
Copy link
Member

Is anyone asking for a stable BorrowState? If not, we may as well punt on it.

@aturon
Copy link
Member

aturon commented Jun 11, 2015

Yeah, I wouldn't mind holding off on the BorrowState stuff for now. Otherwise I'm happy with this.

@alexcrichton
Copy link
Member Author

Sounds good to me! I've rebased and removed the stabilization of borrow_state

@bors
Copy link
Contributor

bors commented Jun 12, 2015

☔ The latest upstream changes (presumably #25844) made this pull request unmergeable. Please resolve the merge conflicts.

@alexcrichton
Copy link
Member Author

@bors: r=aturon

On Wed, Jun 17, 2015 at 1:04 PM, bors notifications@github.com wrote:

[image: 💔] Test failed - auto-win-gnu-64-opt
http://buildbot.rust-lang.org/builders/auto-win-gnu-64-opt/builds/374


Reply to this email directly or view it on GitHub
#26192 (comment).

@bors
Copy link
Contributor

bors commented Jun 17, 2015

📌 Commit 4fcde6e has been approved by aturon

@bors
Copy link
Contributor

bors commented Jun 17, 2015

⌛ Testing commit 4fcde6e with merge 538eb1d...

@bors
Copy link
Contributor

bors commented Jun 17, 2015

💔 Test failed - auto-win-gnu-64-opt

@alexcrichton
Copy link
Member Author

@bors: retry

On Wed, Jun 17, 2015 at 3:50 PM, bors notifications@github.com wrote:

[image: 💔] Test failed - auto-win-gnu-64-opt
http://buildbot.rust-lang.org/builders/auto-win-gnu-64-opt/builds/376


Reply to this email directly or view it on GitHub
#26192 (comment).

@bors
Copy link
Contributor

bors commented Jun 18, 2015

⌛ Testing commit 4fcde6e with merge 154b577...

bors added a commit that referenced this pull request Jun 18, 2015
This commit shards the all-encompassing `core`, `std_misc`, `collections`, and `alloc` features into finer-grained components that are much more easily opted into and tracked. This reflects the effort to push forward current unstable APIs to either stabilization or removal. Keeping track of unstable features on a much more fine-grained basis will enable the library subteam to quickly analyze a feature and help prioritize internally about what APIs should be stabilized.

A few assorted APIs were deprecated along the way, but otherwise this change is just changing the feature name associated with each API. Soon we will have a dashboard for keeping track of all the unstable APIs in the standard library, and I'll also start making issues for each unstable API after performing a first-pass for stabilization.
@bors
Copy link
Contributor

bors commented Jun 18, 2015

💔 Test failed - auto-win-gnu-64-opt

@alexcrichton
Copy link
Member Author

@bors: r=aturon

On Wed, Jun 17, 2015 at 8:16 PM, bors notifications@github.com wrote:

[image: 💔] Test failed - auto-win-gnu-64-opt
http://buildbot.rust-lang.org/builders/auto-win-gnu-64-opt/builds/379


Reply to this email directly or view it on GitHub
#26192 (comment).

@bors
Copy link
Contributor

bors commented Jun 18, 2015

📌 Commit ec33338 has been approved by aturon

@bors
Copy link
Contributor

bors commented Jun 18, 2015

⌛ Testing commit ec33338 with merge 9cc0b22...

bors added a commit that referenced this pull request Jun 18, 2015
This commit shards the all-encompassing `core`, `std_misc`, `collections`, and `alloc` features into finer-grained components that are much more easily opted into and tracked. This reflects the effort to push forward current unstable APIs to either stabilization or removal. Keeping track of unstable features on a much more fine-grained basis will enable the library subteam to quickly analyze a feature and help prioritize internally about what APIs should be stabilized.

A few assorted APIs were deprecated along the way, but otherwise this change is just changing the feature name associated with each API. Soon we will have a dashboard for keeping track of all the unstable APIs in the standard library, and I'll also start making issues for each unstable API after performing a first-pass for stabilization.
Sign up for free to 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.

8 participants