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

Bug report: A couple of compiler bugs #37

Open
mohebifar opened this issue Mar 12, 2024 · 2 comments
Open

Bug report: A couple of compiler bugs #37

mohebifar opened this issue Mar 12, 2024 · 2 comments

Comments

@mohebifar
Copy link

mohebifar commented Mar 12, 2024

Hey, as I mentioned on X, my experience with Forgetti in a production environment revealed some challenges, particularly with data flow analysis and the result of transformation being buggy, which led to unexpected issues. I couldn't even view one page after applying Forgetti. After some investigation, it became apparent to me that a different approach is necessary to address these problems. This realization was the motivation behind the creation of React Unforget.

Please understand that my decision to develop a new tool was not meant as a personal critique of Forgetti or your efforts. It stemmed from a need and a technical perspective that I felt required a fundamentally different solution. I believe that in the open-source community, diversity in tools and approaches can coexist and collectively push the ecosystem forward.

For transparency and constructive feedback, I've documented some of the scenarios where I encountered difficulties with Forgetti, which you can view here:

https://react-unforget.vercel.app/comparisons/forgetti

My hope is that this can open up a dialogue for potential improvements in both our projects.

I'm open to discussing how we might be able to collaborate or learn from each other's approaches to achieve this goal.

@lxsmnsyc
Copy link
Owner

Hey, as I mentioned on X, my experience with Forgetti in a production environment revealed some challenges, particularly with data flow analysis and the result of transformation being buggy, which led to unexpected issues. I couldn't even view one page after applying Forgetti. After some investigation, it became apparent to me that a different approach is necessary to address these problems. This realization was the motivation behind the creation of React Unforget.

Of course. I didn't actually factor in some necessary analysis. TBF I didn't meant to make Forgetti a 1:1 interpretation of the React Compiler (or maybe because at the time I made Forgetti, React Forget only had auto-memoization feature, not some advanced compiler antics). I still see it as a more advanced model. Stuff like alias analysis and escape analysis are completely out of the window.

Please understand that my decision to develop a new tool was not meant as a personal critique of Forgetti or your efforts. It stemmed from a need and a technical perspective that I felt required a fundamentally different solution. I believe that in the open-source community, diversity in tools and approaches can coexist and collectively push the ecosystem forward.

I understand. I think the reason I responded in the tweet was because majority of the key points were easily compiler issues, that are also addressable (which I already released a fix minutes ago). There was more to the compiler features we can compare than these basic issues.

For instance, the duplication of loop variables was because of an effort to separate the cache between persistent and non-persistent memory, which in this case is ref (the persistent memory) and the memo (the non-persistent memory). There was some holes that were not covered when the change happened, and goes to show that the tests didn't cover it too well.

The other was mutation, which was also factored in by Forgetti (it was one of the things I considered early because of the behavior of let variables).

We can expand more for actual comparable features.

I'm open to discussing how we might be able to collaborate or learn from each other's approaches to achieve this goal.

I'm not sure. There are some differences in philosophy and design, and there's no stopping you from developing Unforget independently (like how there's nothing that stopped me from developing Forgetti despite React Forget's teaser)

@mohebifar
Copy link
Author

Sounds good! If you also find any cases where Forgetti is capable of handling, but Unforget is not, I'd be glad to learn more and fix it. This is the nice thing about competition. :)

Let me know when you update Forgetti so I can update Unforget's docs as well. Feel free to contribute as well and bump the forgetti version and review the comparison doc.

I'm not sure. There are some differences in philosophy and design, and there's no stopping you from developing Unforget independently

I imagined so too.

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

No branches or pull requests

2 participants