-
Notifications
You must be signed in to change notification settings - Fork 443
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
Restore ink! 3.x.x backward compatibility #1278
Comments
Please don't. Tilde is very uncommon.
Depends on how you define the scope of semver. When just looking at the crate this is a minor release because it just adds new functionality and the old code still compiles. If you say it is also about being compatible to old |
The origin was in this recommendation to specify
I agree, but what are the other options for solving this then?
What do you think about making it in this logic?: if the release being issued is still compatible with the same pallet_contracts version as the current MAJOR ink! version works with, than it's a MINOR (or PATCH) release. Otherwise, it's a new MAJOR one. |
This would make us go through major versions very quickly. We want to be able to add functionality in a backwards compatible way without issuing a new major version. What happened here was just a mistake. We made existing code require a new pallet-contracts: We didn't just add but replaced the existing |
So the changes that made 3.1.0 backward incompatible with the elder node version (0.13.0) are reverted in this branch and the MINOR ink! 3.3.0 release is planned. |
Is there any plan to yank 3.0.0 and publish a patch with ink_lang_codegen as a fixed dependency? I only just found this after spending some time on it. |
The 3.3.0 release is on its way to fix these issues. |
I think this solves the problem for users on Would it not also be useful for users facing the same issue to:
Personally, I think users may not want to blindly update to another minor version, as it stands the only place to find this issue is in this issue, which another release does not necessarily resolve the matter for users on |
As cargo sticks to SemVer on dependency crates version resolution, after ink! The backwards compatibility breaking changes described (and fixed) in the #1284 were introduced not in |
Solved by #1284 |
This issue describes the reasons of this StackExchange reported problem with ink!
v3.0.1
Cargo crate dependencies version specifications rules work as follows:
3.0.1 := >= 3.0.1 < 4.0.0
This leads to that
3.2.0
is being the resolved version even when=3.0.1
is specified in the contract manifest, for the following crates:ink_allocator
ink_engine
ink_lang_codegen
ink_lang_ir
ink_prelude
ink_storage_derive
As a hotfix for this, I've changed the dependencies to be specified as tilde requirements. I suggest making release
v3.0.2
out of it.Meanwhile, it is all really seems to me to be just about stitching to SemVer rules. E.g.
3.2.0
should have been backward compatible to3.0.1
, if it's not then it should have been versioned4.0.1
, instead. If these rules were followed, there would not be the need to apply tilde requirements as cargo is SemVer compatible by default. So maybe it worth re-considering ink! versioning policy more rigorously.Other questions to regard on this topic:
examples/
contracts manifest versions without actually changing the contract sources itself at all?v3.0.2
containing hotfix forv3.0.1
.But it turns out we still should make such releases to support older versions being used by contract developers, as e.g. to fix such issues as being reported in the aforementioned SE question.
The text was updated successfully, but these errors were encountered: