-
Notifications
You must be signed in to change notification settings - Fork 704
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
Cabal does not consider GHC ABI #8114
Comments
If I recall we decided that this was an issue that would be solved with the ghc build system -- in particular ghc distributions needed to calculate and store an abi-hash with their own bundled libraries? |
cc @bgamari who hopefully remembers this. |
@wz1000 was involved in some of the ABI hash generation stuff: haskell/haskell-language-server#2675 (comment) But I can't find the so called The HLS wrapper scripts just construct the ghc abi hash from the hashes of all boot libraries ( |
imho it is clear that ghc should be able to tell us its abi and no fix downstream all tools which depends on it |
I'm not sure I follow. Figuring out the ABI is easy (as explained above), there's just no official API to query it for GHC, so you won't get cross-tool consistency. That doesn't really block fixing it, though.
ABI breakages aren't easily visible to users, unless they hit obscure errors. So I don't think there's a reasonable workaround. |
To be clear the issue here is in particular object files, not the interface (.hi) files, which are safe to share across compilers with the same numeric version. |
So the action would be replace the uses of ghc numeric version with the ghc abi hash? |
@phadej do you know if package ABI ever makes it into the hash? |
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
- This allows the use of several **API incompatible builds of the same version of GHC** without corrupting the cabal store. - This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. [fixes haskell#8114]
Cabal assumes that ABI is stable across
ghc --numeric-version
, both for the cabal store artifacts, as well as for thedist-newstyle/
artifacts.However, this assumption is wrong. GHC has no ABI stability and two bindists of the same version, for the same architecture and platform can have diverging ABI.
One instance of this is https://gitlab.haskell.org/ghc/ghc/-/issues/21423
@andreasabel
The text was updated successfully, but these errors were encountered: