-
Notifications
You must be signed in to change notification settings - Fork 728
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
Ganache Beta Releases Update Feedback (old: trie docs fix, do not merge) #2159
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM and thank you!
Codecov Report
Flags with carried forward coverage won't be shown. Click here to find out more. |
Yes, we have a glitch. A number of PRs are currently stuck with this issue. Hoping to get it resolved on the next day or two. |
Note, merging this would conflict with #2167 so we should decide what we're doing with that and then either merge or close this. |
FYI: we've spent about 30 hours updating Ganache to use the new Level infrastructure (and other ejs breaking changes). We're discussing feasibility of forking the VM and Common so we can backport the Merge hardfork into v5, if #2167 lands we might have to since it'll likely be much faster to backport than to do this all again. |
@davidmurdoch is there anything special that Ganache does that the Level upgrade took 30 hours? It's a fairly straightforward change that shouldn't require much changes since all that was changed was to abstract the database layer to make it swappable and upgrade the level dependencies, which in itself are backwards compatible. |
Yes, can second @faustbrian, it would be great if you can provide some insight here what were/are the problems and/or blockers around the Level DB upgrades (or is this general underlying major Level DB version jump problematic for you? 🤔). This was intended to be just an interface upgrade/generalization to ease the use of other backends and we didn't expect major problems here. |
First, I want to say that the new betas do look good, and you've all done great work on it. I'm loving the consistency of the packages, the namespacing, the new interfaces, and really the way the @ethereumjs project is being developed is inspiring and exciting. The issues we're have here is that there are like 30+ breaking changes (I don't really know how many there are... we've got 64 files changed, 809 insertions, and 945 deletions, so far). These breaking changes have to be dealt with simultaneously in order to get Ganache to start up. So while each change on its own might not be so bad, all changes need to be done at the same time for packages that make use of the ethereumjs ecosystem. The type changes are a huge headache here, as they are incompatible in weird ways. An example:
The Navigation through the published code is now much more difficult than it used to be due to the use of Interfaces instead of classes. If I want navigate to the source for Previously, the types were next to the JS files, now they are in a separate folder, which isn't a huge deal, but I prefer the old way. The RLP package changing to use While not your fault, the The The Ganache allows users to specify a We were still using The new
We use We use There are many other complexities to the upgrade, and we've still got 1000s of failing tests to go through. I'm generally 👍 on the major versions here and if I was starting a new project I think the new packages would be a joy to use. So don't take my frustration with having to handle all these changes at once as a sign that the new packages are not better than before, because I do think they are! We obviously have a deadline for getting Merge hardfork support in our tooling, but we now have to slog through all these breaking changes first just to get to the Merge hardfork, which is really all us and our users care about or need. We definitely don't want to wait to update to the new versions (we really want those native |
I can only comment on the trie part as that is all I'm familiar with but based on what you wrote what your issue is it should be a non-issue and take a few minutes to fix because the whole point of abstracting the database layer was to get rid of these kinds of issues or limitations. You can simply copy over the LevelDB class from before that change, extend the DB interface and continue to use the legacy level packages like memdown and friends. If you can't figure out how to do it or don't have the resources I can post a snippet here tomorrow with the old LevelDB implementation that can be used with this new approach. The type issues you described with AbstractLevel should also be a non-issue because you can use your own implementation now without having any behaviour or types forced onto you. After #2167 this would be even easier and less of a hassle because there won't be clashing installations of dependencies. |
@davidmurdoch thanks a lot for writing this all up, this is immensely helpful. Yeah, sorry, I can totally feel you. 😐 🙃 We'll go through this one-by-one hopefully we can take away some of the pain here. I have the impression that especially the type/interface stuff you described should be very much solvable, hopefully other things as well. There will for sure remain some update-complexity though. |
I will reply to the points which I can help you with. Thanks for the detailed overview of the problems! 😄 👍 I have tried addressing the EVM type problem in #2182. If this looks OK to you then we can most likely also do this with EEI. RLP now indeed returns
Not being able to call I have to investigate this EVMResult type thing a bit more, it seems to work internally, but apparently not externally? |
@davidmurdoch I've added an example for using The issue you described with needing |
I've added some additional CHANGELOG notes on this with 14ae98e, let us know if docs are not sufficient for some cases or the conversion functions might miss some functionality/conversion cases. |
Will take over the doc changes from here to #2191, then we do not have to solve the conflicts for the somewhat tiny changes here and keep the branch updated. Will nevertheless keep open here as some proxy for the discussion. 🙂 |
LevelDB
@davidmurdoch planning another round of monorepo Beta releases this week, let us/me know if this works for you and if you have additional wishes for included features or changes respectively a release timeframe! 🙏 Thanks for testing our releases and for the patience along the way! 🙂 |
@holgerd77 will do! Thanks! |
@davidmurdoch we have now released release candidate versions (RC 1) for all the libraries with the latest changes, see #2237. |
Sorry I was MIA for a bit. I was away from my computer for a bit there. We'll hop back on the upgrade this week. Feel free to close this issue. :-) Thanks! |
No description provided.