-
Notifications
You must be signed in to change notification settings - Fork 470
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
Publish version 1.0 #503
Comments
Exciting! SGTM. :) |
Oooh, very excited for this! The one point I think warrants some discussion is the MSRV policy, which I know is a topic many people have opinions on. As we've seen several times with CI breaking, other crates do not consider MSRV a part of their stability guarantee, so saying just "1.36" is inevitably going to cause us headache down the line. If that line is in the README, we need to commit to it for all of 1.0. Of course, if we don't commit to this, then we're a part of the problem. There isn't a good solution to this at the moment I think, but the least painful path probably lies in not committing to a particular version for the entire time of 1.0. This has also been discussed in the past in #428 (comment), #458 (comment), and #495 (comment). My suggestion here is to say something like
This is definitely a weakly held opinion, and is mostly motivated by the several issues we have seen over the past months (and years) where CI breaks, or where PRs need to make somewhat awkward workarounds to avoid bumping MSRV ( |
@jonhoo Good point, I agree with that. We should stop considering bumping MSRV a breaking change. |
Agreed. That's roughly similar to the policy I use in core crates (msrv bumps only in minor versions and be somewhat conservative about it in general). I think six months is a decent spot. |
I also agreed. (and "six months" sounds reasonable to me.) Also, I'd propose:
EDIT: I forgot to say, but I'm very excited about this. |
In the same spirit with #452, I think custom allocators should also be integrated into the API. It will greatly improve crossbeam's applicability to, e.g., embedded systems programming. But will surely break backward compatibility. I wish we will make it happen before reaching 1.0. |
@jeehoonkang It might take a bit until allocator support is fully fleshed out, but it's not a problem if we publish 2.0 for I currently don't have time to help work on that or review PRs. Would you perhaps like to take charge of crossbeam-epoch and keep improving it without being blocked on me? |
It may be worthwhile to consider any changes to Out of curiosity, I assume the plan is to release |
I'll be honest - I don't have the time to push it over the finish line :( But if anyone is interested in doing that, please go ahead! Really, anyone could do it - it just needs docs and that's all. The implementation is solid and finished. |
#277 didn't provide benchmark numbers that would warrant radically changing the #338 is yet another thing that is simply overflowing my plate :( But I've been meaning to get back to it. It doesn't need to block stabilization because it can be added to the crate after publishing 1.0 simply as a new feature. |
508: Make std feature to depend on alloc feature r=jeehoonkang a=taiki-e `alloc` crate is available on 1.36, see #368 (comment) for why it was previously separated. This is a breaking change proposed in #503. Co-authored-by: Taiki Endo <[email protected]>
Related issue about possible breaking changes for 1.0: #256. |
Should a concurrent hash map be done for 1.0? Using similar algorithms from folly, c++, or java etc. |
I think it's pretty unlikely that a concurrent hash map will be completed and agreed upon for a 1.0. Not to mention that adding something like that can be done without a breaking change :) |
It's been nearly two years since #256 opened, so some may be outdated, but the five breaking changes mentioned in that issue there are:
|
Update - Here is a list of the remaining (breaking) changes I'm aware of: Open issues
I tend to accept them, but I'm not very clear about what APIs to add. Changes pending as breakingThey are accepted but blocked because they are breaking changes.
crossbeam-skiplistThere are no plans to publish skiplist as part of crossbeam 1.0. |
|
Agreed.
Ok! So considering that the stability is different per sub crate, it seems to be better to publish as 1.0 in order from stable sub crates. For now, I would like to select crossbeam-utils and crossbeam-queue as crates that the first stabilize. |
Actually, I'm planning to propose a large restructuring of crossbeam-queue (and other crates)... :) May I ask if we could decide when to stabilize it after that? |
Is crossbeam-utils included in "other crates"? (you said it has a quite stable API) |
@taiki-e sorry for being confusing. I think crossbeam-utils is good to go for 1.0, but the others are not. |
535: Add initial docs to crossbeam-skiplist r=taiki-e a=caelunshun As per #503 (comment), I'm writing the docs for `crossbeam-skiplist`. Checklist: * [x] Crate-level docs * [x] Docs for `SkipMap` * [ ] Docs for `SkipSet` I also have some thoughts about the API: * `Entry`'s name is misleading; it's not the same as the standard library's map entry API. A name like `Ref` might be more suitable, to align with `RefCell`. * `set::Entry` could implement `Deref<Target=T>` for convenience. * I see the base `SkipList` struct is exposed, though I'm not sure if it belongs in the public API. Co-authored-by: caelunshun <[email protected]>
Crossbeam hasn't changed much in a long time. It may be time to publish 1.0 :)
My opinion is that all crates except for crossbeam-epoch have "peaked" and reached maturity. The thing about crossbeam-epoch is that its API is still not perfect and needs some improvement, mainly around custom collectors. But, even considering that, the API hasn't changed in a very long time, so why not just go for 1.0? If we decide to actually change it in the future, we can bump to 2.0.
I proposed we do the following now:
MaybeUninit
).Backoff::is_complete()
.What does everyone think?
The text was updated successfully, but these errors were encountered: