-
Notifications
You must be signed in to change notification settings - Fork 829
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
Is there an explicit release date for the 5.0 ? #743
Comments
This is an open source libary created and maintained mostly by a single person. Sometimes priorities shift or the job schedule prevents people from working on their side projects. Instead of demanding a release date, a better approach would be to get in contact with the project team and ask if you can help in any way. Look at the open bug reports, grab a ticket, create a PR. Having said that, I can give you an update on the current status: Kryo 5 is a major rewrite and cleans up a lot of technical debt that has accumulated in the previous versions. It has been relatively stable since RC3/4 published in early 2019, but there were some major issues with the rewritten generics optimization code. These issues didn't get addressed because Nate - who created the project - didn't have time to look into them. I started to collect all these known issues, write tests for them, and create PRs to fix them starting in early May. RC6 and the newly released RC7 contain all these generics fixes and an option to opt-out of generics optimization altogether. Last week, I deployed RC7 to my production system to verify that everything works as expected. After tens of millions of serialization roundtrips and more than 5000 different classes serialized, I'm pretty confident that all issues have been fixed and RC7 is stable enough for production. There is one last issue though: Serialization is 10-15% slower with Kryo 5 than it it was with Kryo 4.0.2 in my case. |
Thanks for your elaborate answer, @theigl! And let me say that I completely share your thoughts/feelings, @endink! 🙂 From my perspective we're sorting out the last minor issues, and I'd hope that we can publish a release in the next weeks. The goal is to release a stable version for sure 🙂 Maybe we could publish RC7 as 5.0.0 already, but I'd prefer to get the last things sorted out (you could check the issues reported latest). |
@theigl Good to know about your observations regarding performance. Would you expect changes that impact (serialization or binary) compatibility? (of course that's hard to predict 😉) |
@magro: I'm pretty sure it will not impact compatibility. My prime suspect is the new implementation of |
Great work @theigl! Let me know if you need any help! |
Thanks @magro! I'll deploy RC8 to production later today and verify my performance improvements. |
Was the RC8 performance testing successful? I'm eager to see a 5.0.0 release that includes #753 and the recent performance PRs. |
Yes and no. I have spent many hours writing and running JMH benchmarks against most of Kryo's components. The good news is: Kryo 5 is significantly faster in nearly all benchmarks. For the last couple of days I've been working on a JMH benchmark that reflects my production workload as closely as possible. Thousands of classes, potentially tens of thousands of references, object graphs of vastly different sizes. With that benchmark in place, I managed to zero in on some potential issues. The problem is that I have to deploy each incremental change into production to verify it. I can do that - at most - once a day. Earlier today, I deployed a version that is already very close to Kryo 4 performance. My goal is to finish these investigations some time next week. |
Good news everyone. I managed to track down and resolve my performance issues. Kryo 5 is now faster than Kryo 4 on my production system as well. The problems only affect object graphs with references and a large number of different classes. I created two PRs to address these issues:
Then there is one more housekeeping PR that updates licence headers and copyright dates: And one open issue that has to discussed but can probably be fixed by adding to the documentation: @magro: Please take a look. |
emmm....... I didn't expect this issue to be so noisy. The main thing that gives me this feeling is that I used the RC2 version in a early project, and I thought I would be get the release version before my project was finished, but when my project was done, I saw kryo was still in RC3, RC4, RC5, RC6... and release date go further and further. I have to change the code from 5.0 to 4.0. So this release strategy gave me a very bad experience. I'm sorry for the tone of my voice, but the fact is the 5.0 release plan is completely out of control. BTW: If time is uncertain, might be able to use the beta version instead of the RC version, RC feels like it's not far from release. but nobody thought the RC version would be 2 years. |
@endink it's good to receive this feedback! I also didn't expect that it will take that long and so many RCs. There were things to rule out again and again, and I at least wanted to prevent to release something where quickly afterwards an incompatible change would be introduced or which contains bigger known issues. The next time with such a big change of the code base I'd also start to release a beta - definitely something we can learn from this 🙂 At this point many big thanks @theigl, without you the final release would not be that close - awesome how you drive this forward! 👌 |
Here is a quick summary of my benchmark results: JMH Settings: Kryo 3
Kryo 4
Kryo 5 RC7
Kryo 5 Master
Kryo 5 Master (No Generics)
TLDR: Kryo 5 was significantly slower than Kryo 4 until RC7. Now that all my optimizations have been applied, Kryo 5 and Kryo 4 have very similar out-of-the-box performance. Kryo 5 with |
Just out of curiosity, how does Kryo 5 compare to Kryo 3 (i.e. 3.0.3)? 😄 |
@nicknezis: I just ran the benchmarks against Kryo 3.0.3 and added it to my comment. 😄 |
@theigl Thanks for your PRs, I just pushed RC9 to maven central - from my point of view this could be the last RC ;-) Do you want to test RC9 on your production system? Everybody else is also invited to test this version of course! |
@magro: Thanks! I'll deploy it on Monday. We should be good though, because I already have custom versions of |
@magro: RC9 works great in production. I have no more changes planned and vote for releasing Kryo 5.0.0.✌️ |
Just following up on an official 5.0.0 release. I'd like to use that in Apache Heron if it will be produced soon. |
Just commenting to make sure this doesn't fall through the cracks; how are we looking for a full 5.0.0 release build? |
We have to discuss if we want to add support for records in Kryo 5.0 (#766) or if we wait for the next minor release. Apart from this, the current master is ready for release. |
I would argue for a 5.1 for a new feature at this point given 5.0.0 has been in release candidacy for so long, but that is just my opinion. Thanks for the update! |
Considering Especially since it's probable many people will wait for Java 17 before including |
@magro Is there any update on this? |
I'm so sorry, was too busy at work without any resources left. I'll check the current status now and latest open MRs and then do a release (if my connection on the train allows this). |
Finally we have the 5.0.0 release (see also https://github.com/EsotericSoftware/kryo/releases/tag/kryo-parent-5.0.0). Many thanks at @theigl for all the great work! 👍 |
great job!! |
Shouldn't this issue get closed now? |
Should the 5.X release also have a published |
Jesus christ! 5.0 has been 2 years since RC1 to RC7, and when will the release version arrive?
The text was updated successfully, but these errors were encountered: