-
Notifications
You must be signed in to change notification settings - Fork 182
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
Fix for indexInt8OffAddr#
potentially returning sized type in next GHC
#760
Fix for indexInt8OffAddr#
potentially returning sized type in next GHC
#760
Conversation
indexInt8OffAddr#
returning sized type in next GHCindexInt8OffAddr#
potentially returning sized type in next GHC
I think we'd better put this on hold until upstream merges your MR. |
@treeowl So the preference from the GHC side is actually that upstream merges first to guarantee that:
But I am quite sympathetic that both those arguments go both ways, and no one wants to take the leap of faith referring to hypothetical changes in the other project. I think renewing the social contract between GHC and it's dependencies is a larger conversation that should happen on a mailing list, but am I thinking of a "two-phase commit" approach where the library maintainer says "yes, I will merge this PR (not squash or rebase) if this GHC PR is merged", or even better where GitHub and GitLab better, grant the capability of executing that to to a GHC maintainer or automate it somehow. Then no one has to take the leap of faith, and now future release becomes potentially blocked. Symmetry is restored, and in fact both @bgamari and have yet to be convinced by my proposal, so we have meta-symmetry too :). |
@Ericson2314, if I make this change and your GHC MR isn't merged, then we'll be in exactly the same incompatibility boat, except everyone will think I'm braindead. Yes, we need a transition plan, and no, merging this PR as is strikes me as a rather bad one. |
@treeowl yes that is exactly the situation I am hoping to avoid for both GHC and libraries like containers. The capability to grant wouldn't be for |
09c61ec
to
fc22725
Compare
fc22725
to
7a4f89c
Compare
@treeowl I realized we can do this without CPP. At least the GHCs I've looked at, there are plenty of rewrite rules and the like to make this new version optimize to the same thing. |
I'll look at it later today. And we can put in the CPP after the GHC
release if you like.
…On Mon, Jan 25, 2021, 1:58 PM John Ericson ***@***.***> wrote:
@treeowl <https://github.com/treeowl> I realized we can do this without
CPP. At least the GHCs I've looked at, there are plenty of rewrite rules
and the like to make this new version optimize to the same thing.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#760 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAOOF7PNOPYTFYQ2ND2UYTLS3W5NTANCNFSM4VFYZRBQ>
.
|
@treeowl If it's fine with you, I soon as well just stay with this version. The intent: "we read a Thanks for making time to give it the proper evaluation. |
You have build failures. I also don't actually understand how this works, but I guess that's not important. |
9b5b4a9
to
7f9d92a
Compare
OK this should fix it. Looking at the source, I don't even understand how
Sorry. I updated the commit message and PR description to explain. |
Here's how we fix this without CPP: In old GHC: I8# :: Int# -> Int8 indexInt8OffAddr# :: Addr# -> Int# -> Int# In upcoming GHC 9.2: I8# :: Int8# -> Int8 indexInt8OffAddr# :: Addr# -> Int# -> Int8# So the "GLB" interface is: exists alpha. I8# :: alpha -> Int8 indexInt8OffAddr# :: Addr# -> Int# -> alpha We we write a program against that, eliminating the black-box `alpha` with `I8#` and then converting to `Int`.
7f9d92a
to
8d9de76
Compare
Added some CPP on the import to avoid unused import warnings. |
@treeowl does the new description make sense to you? Any other things need clarification? |
Looks good. Thanks! |
Thanks!! |
Here's how we fix this without CPP:
In old GHC:
In upcoming GHC 9.2:
So the "GLB" interface is:
We we write a program against that, eliminating the black-box
alpha
withI8#
and then converting toInt
.See https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4492