-
Notifications
You must be signed in to change notification settings - Fork 48
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
Release analyzeme, decodeme, and measureme to crates.io #229
Comments
I think that first we should consolidate the usage of these crates in rustc-perf. It doesn't really make sense to use three different versions. I'll take a look at that. |
Ah, I forgot that this is implicit in this crate, as analyzeme 11 depends on both versions 10 and 9. That's.. unfortunate, and quite complicated for crates.io release. @michaelwoerister do you think that we still need this? |
Yeah, the setup is not quite standard. Depending on multiple older versions makes it easy to maintain backwards compatibility but if it causes trouble, we can look into flattening that (i.e. copying the decoder implementations of the older versions in-tree). |
@weihanglo, if we make analyzeme not depend on older versions of itself and decodeme, then we don't need to backport any of the licensing changes, right? |
Yeah, I believe so. It would also make updating dependencies way easier. Happy to work on that route if desired! |
Yes, let's do that then. We can merge all of decodeme into analyzeme. That already has the measureme/analyzeme/src/file_formats/v8.rs Lines 13 to 20 in 9783098
|
OK, given that inlining the older versions does not seem like an attractive solution, I'd say we go with the original plan outlined above. Sorry for sending you down that rabbit hole, @weihanglo! I've created https://github.com/rust-lang/measureme/tree/9.x-service-branch and https://github.com/rust-lang/measureme/tree/10.x-service-branch that we can backport against. I've also backported #221 to these, so that publishing doesn't have to be done manually. Let's make sure to update that workflow to include the other crates too. |
I haven't seen the approach of using older versions of formats by depending on older versions of the same crate used anywhere.. Is this really needed? The README says "...It is currently only meant to be used within rustc itself, so APIs may change at any moment.". Do we really need to keep compatibility with older formats, even though they are not used anywhere anymore (?). |
Well, the main reason we want to support at least one previous version is that it makes updating perf.rlo much easier. That's why we originally started adding backwards compatibility. I think depending on older versions of the same crate is a reasonable approach, if these older versions are being serviced. It makes maintenance easier, I think. We could drop support for the v7 format (which is really old now) and change our policy to only support one previous version. |
👍 for only keeping compatibility for the last two versions. That already makes the whole situation simpler! FWIW, I would suggest either always keeping the last two versions inline in source of That being said, using the trick of depending on an older
Edit: I see, |
|
Thanks, I noticed it only after sending the comment. This prevents |
I'm wondering, do we actually need to vendor the old measureme versions as #230 does? These versions are on crates.io and we can pull them in for their definitions. Maybe we could do the following:
That's a kind of hybrid approach where still depend on older versions of |
That sounds like a great compromise! |
Let's give it a try 🙂 @weihanglo, would you mind updating #230 according to the above comment? |
Actually, it occurs to me that if we drop support for the v7 file format, the dependency graph becomes a lot simpler (the 9.x is the last major version that did not have the analyzeme/decodeme split). We would only need to do a release of decodeme 10.x. We don't need analyzeme 10.x or any other previous version of analyzeme -- that was the point of splitting out decodeme. That would make things even easier. |
The new dep-graph would look like this:
We don't need crate version 11.x to show up anywhere because we only have the current version (12.x) and the latest old version that had a file format change. |
Sounds great. Guess we still need to |
Yup |
The patch is for 10.1.3 is prepared: 10.1.2...weihanglo:measureme:prepare-10.1.3 @michaelwoerister do you want to create a temporary v10 branch so I can file a PR against, or do you want cherry pick the change and do it locally? |
PR is ready: #231 Let me know if you've published them, or anything needs to update :) |
PR dropping v7 support is up: #232. |
Based on the discussion in #229[^1] the next release (v12) will stop supporting the v7 profdata format. [^1]: #229 (comment)
This is resolved by #233. Thanks everyone 🎉. |
Thanks for putting in all this work, @weihanglo! |
During the course of vendoring rustc-perf in rust-lang/rust. There were a couple of issues found:
analyzeme
anddecodeme
haven't yet published to crates.io.analyzeme
depends on old versions ofmeasureme
via git branches. Those versions are not available on crates.io.While it is possible to tweak rustc bootstrapping process to allow Git dependencies, it might be under the risk that a commit is missing or a branch points to a different commit.
Proposed solution
The current rust-lang/rustc-perf@892c681 depends on these packages:
I would suggest following these step and publishing theses packages if possible:
Version 9.2.1
[email protected]
and[email protected]
to crates.io (in this order).Version 10.1.3
[email protected]
,[email protected]
, and[email protected]
to crates.io (in this order).Version 11.0.2
[email protected]
,[email protected]
, and[email protected]
to crates.io (in this order).Additional questions
I am aware of the existence of the
stable
branch, though I am not sure about the semantic of it. Perhaps not really useful? I see that in rust-lang/rust we don't really use that branch except inrustc-perf
.The text was updated successfully, but these errors were encountered: