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

Upcoming v0.9 release #496

Closed
1 task done
juntyr opened this issue Sep 3, 2023 · 15 comments · Fixed by #560
Closed
1 task done

Upcoming v0.9 release #496

juntyr opened this issue Sep 3, 2023 · 15 comments · Fixed by #560
Assignees

Comments

@juntyr
Copy link
Member

juntyr commented Sep 3, 2023

I want to publish v0.9 within the next 1-2 weeks.

While I originally planned to focus on round-tripping Values in v0.9, instead my focus shifted to improving the format by supporting more Rusty syntax (and serde attributes). As part of these changes, we now have much more tests, higher code coverage, and a pretty good fuzzer that keeps uncovering obscure edge cases (in the future I want to extend it to also support fuzzing serde attributes).

I now want to give the fuzzer and our users some time to find any bugs and for me to fix them. Once we've had e.g. one week without new fuzzer issues, I'll publish v0.9.

Afterwards, I will probably be a bit less active again and only fix bugs for a while, before I then shift focus to improving Value to become closer to an AST that can roundtrip.

  • Fix the byte literal grammar to include the b' prefix and ' suffix + define ASCII
@juntyr juntyr self-assigned this Sep 3, 2023
@torkleyy torkleyy pinned this issue Sep 3, 2023
@NiklasEi
Copy link

NiklasEi commented Sep 6, 2023

Just dropping in to say thank you for all your work ❤️
I am very happy that #217 was fixed and can verify that my usecase works with latest main 🙂

@juntyr
Copy link
Member Author

juntyr commented Sep 6, 2023

Just dropping in to say thank you for all your work ❤️

I am very happy that #217 was fixed and can verify that my usecase works with latest main 🙂

Thank you @NiklasEi for your kind message!

@juntyr
Copy link
Member Author

juntyr commented Sep 17, 2023

I wanted to give a brief update since v0.9 may be delayed by a few more days. #502 has consumed quite some time, since I want to update our fuzzer to cover all tricky serde attributes so that we can at least know what exotic combinations we do not support (see #503 for a start to expanding the restrictions section in the README). I'm almost done with updating the fuzzer, so hopefully it shouldn't take too much longer :)

@juntyr
Copy link
Member Author

juntyr commented Oct 7, 2023

The 60-commit fuzzer update PR is finally merged. If the fuzzer doesn't find any non-timeout or non-OOM bugs (which are related to huge arrays and which I'm not quite sure yet how to fix), I will now finally publish v0.9 in the coming days, now with limitations of the new serde attribute supper properly investigated.

@juntyr
Copy link
Member Author

juntyr commented Nov 27, 2023

I've unfortunately had to push back the release as I am an expecting parent and did not have the time to fix some fuzzer-identified (non-security) issues - I hope I will be able to get back to ron soon though :)

@shenjackyuanjie
Copy link

a tiny ping, how is your child going?
are they happy? :)

@juntyr
Copy link
Member Author

juntyr commented Feb 11, 2024

a tiny ping, how is your child going? are they happy? :)

Thanks for this wholesome ping :)

The child is doing well but the birth was traumatic and I'm still relearning how to be a functional human. I want to finally get 0.9 released but finding the energy for it hasn't happened yet.

Releasing 0.9 is really only stuck on me trying to find all weird interactions of ron with #[serde(flatten)] attributes that the fuzzer can find. This is unfortunately quite the arduous task since serde flatten is just a bit cursed in all its special cases. Perhaps 0.9 could be released without an exhaustive list which is slowly filled in over patch releases? Almost all bugs the fuzzer found so far were either serde bugs or ones that ron cannot fix until serde supports format-specific Value types for buffering.

@shenjackyuanjie
Copy link

how about releasing a 0.9-beta/alpha before you finish #[serde(flatten)] ?
I think it can helps this crate

@juntyr
Copy link
Member Author

juntyr commented Mar 9, 2024

how about releasing a 0.9-beta/alpha before you finish #[serde(flatten)] ?
I think it can helps this crate

That’s a fantastic idea!

@juntyr
Copy link
Member Author

juntyr commented Mar 9, 2024

https://docs.rs/ron/0.9.0-alpha.0/ron/index.html is now live

@extrawurst
Copy link

@juntyr is there any way to help you with releasing 0.9?

@juntyr
Copy link
Member Author

juntyr commented Mar 17, 2025

@juntyr is there any way to help you with releasing 0.9?

Thanks for asking! To explain the delay a bit: I originally decided to add the fuzzer to make ron more correct (which was a success), then extended it to also fuzz basic serde attributes (which worked ok), but then also extended it to support serde(flatten). serde(flatten) is cursed and it has caused so many fuzzer found issues to be found, most coming not from ron but from serde, that it drained my energy.

What we would need to release v0.9 is at minimum the following:

  • a PR that adds a disclaimer to the README that serde(flatten) is only supported on a best-effort basis, mostly because of limitations inside serde. I initially tried to find and document them but this rabbit hole proved to be too deep

What we would need to ensure the fuzzer doesn't continue draining energy is:

  • a PR that updates the fuzzer to check structured inputs against serde-json as well. If it involves serde(flatten) and serde-json doesn't support it, ron definitely cannot. This should allow cleaning up the fuzzer code and get us on the way towards it only finding problems with ron.

@extrawurst
Copy link

@juntyr I can help with point 1. is that enough to get 0.9 out the door, because point 2. sounds like not necessarily required to make a non-alpha release, right?

@juntyr
Copy link
Member Author

juntyr commented Mar 18, 2025

@juntyr I can help with point 1. is that enough to get 0.9 out the door, because point 2. sounds like not necessarily required to make a non-alpha release, right?

Yes, 1. would be enough. Thanks!

naseschwarz pushed a commit to naseschwarz/ron that referenced this issue Mar 18, 2025
`flatten` has proven challenging to implement. In order to enable
releasing 0.9 without having documented all defects, which are mostly
due to serde, add an appropriate disclaimer.

See ron-rs#496
naseschwarz pushed a commit to naseschwarz/ron that referenced this issue Mar 18, 2025
`flatten` has proven challenging to implement. In order to enable
releasing 0.9 without having documented all defects, which are mostly
due to serde, add an appropriate disclaimer.

See ron-rs#496
@naseschwarz
Copy link
Contributor

Hi @juntyr. Thank you for all your effort regarding flatten! :)

I'm also interested in a release and have created a PR for your first request in #559. I hope this is helpful and I'll gladly accept any feedback.

juntyr added a commit that referenced this issue Mar 18, 2025
* Add `flatten` support disclaimer

`flatten` has proven challenging to implement. In order to enable
releasing 0.9 without having documented all defects, which are mostly
due to serde, add an appropriate disclaimer.

See #496

---------

Co-authored-by: Naseschwarz <[email protected]>
Co-authored-by: Juniper Tyree <[email protected]>
@juntyr juntyr unpinned this issue Mar 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants