-
Notifications
You must be signed in to change notification settings - Fork 803
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
Add NoEquality to range #6610
Add NoEquality to range #6610
Conversation
Given the amount of code and complexity being added I'd rather take a look at addressing the core problems here - it should be totally fine to use I'm sure we can address this tactically for the actual allocations you're seeing once we have the relevant stacks. But it shouldn't be as much code as this is. @manofstick's PRs are also relevant here and fix the problem of boxing much more universally for structs. |
I agree, I'd definitely prefer that then have all of this machinery and two versions of standard combinators just to get around what should be considered a bug in the compiler. @TIHan had some interesting thoughts about compatibility that are worth considering here, it sounds like something we'd have to be very judicious with changing. Separately, digging through illib.fs and lib.fs was kind of painful. illib.fs clearly has many more utilities than just what is needed for manipulating IL, and lib.fs just seems like a smaller version of library functions that might have just been abandoned at some point. There's clearly a need for a "compiler utility library" where things like additional |
Factoring into a separate assembly would not be right. Merging I don't mind if |
What's the rationale? I understand having utilities specific to IL generation here, but there's so much generic utility code here - string utilities and active patterns, |
People are welcome to copy it out to a separate project in |
This is to address #6052
It's quite a bit of machinery that I think might actually be better served by having the compiler properly handle equality and comparison for structs with custom equality. But that could also be a breaking change IIRC - @TIHan @dsyme is that accurate?
Some notes:
List
, which is currently blocked because the actual implementation ultimately relies on inline IL which is only available in FSharp.Core.