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

Go-ethereum has no respect for semantic versioning #21837

Closed
ryanc414 opened this issue Nov 12, 2020 · 4 comments
Closed

Go-ethereum has no respect for semantic versioning #21837

ryanc414 opened this issue Nov 12, 2020 · 4 comments

Comments

@ryanc414
Copy link
Contributor

ryanc414 commented Nov 12, 2020

System information

Geth version: v1.9.23
OS & Version: OSX

Expected behaviour

Patch versions should not introduce breaking changes.

Actual behaviour

Patch versions introduce lots of breaking changes.

Steps to reproduce the behaviour

  1. Use go-ethereum v1.9.12
  2. Write code that depends on abi.U256()
  3. Attempt to upgrade to go-ethereum v1.9.23
  4. Find that abi.U256() was removed for no obvious reason: ab72803#diff-baa94fd18f34eadd3684559252ba85328c6da713e079ccc39de383ecbd6950d6L40-L45
  5. Find out that a number of your dependencies also depend on abi.U256()

As another example, #21043 changes the behaviour of estimateGas() in a breaking way when a non-zero gasPrice is specified. This should not go in a patch release!

See https://semver.org/ for reference.

@fjl
Copy link
Contributor

fjl commented Nov 14, 2020

First off, sorry for the inconvenience. We will be more careful regarding such API changes in the future.

Please note that certain packages in go-ethereum cannot always remain backwards-compatible because their APIs need to be adapted to changes in the ethereum protocol. This mostly applies to the 'core' package. That said, we do try to maintain compatibility as much as possible. This change in accounts/abi was very unfortunate, and could have been avoided.

@ryanc414
Copy link
Contributor Author

Thanks. I completely understand that breaking changes are sometimes needed, the important thing is that breaking changes should always lead to a major version bump, that way it is less surprising to developers. Unfortunately, for now I am stuck on v1.9.12 since upgrading will require a long and tedious process of ensuring all my dependencies work with v1.9.23 and re-compiling the contract bindings for v1.9.23, which I do not have time for right now.

Closing since I don't think there is any immediate action go-ethereum devs can take to remedy this situation, just wanted to make you aware.

@silasdavis
Copy link

Given it contains protocol hard fork changes, why is this also a patch release: https://github.com/ethereum/go-ethereum/releases/tag/v1.10.5 ?

@holiman
Copy link
Contributor

holiman commented Jul 14, 2021 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants