Skip to content

Use gcc's libffi to replace Adjustor.c and ByteCodeFFI.hs?

libffi is a library that comes with gcc and provides FFI functionality (dynamic calls, closures) for a wide range of platforms. It has a liberal license that is compatible with GHC's.

libffi could replace Adjustor.c in the RTS and the ByteCodeFFI module in GHCi. The benefits would be:

  • It works on more platforms than we currently support, and it

    handles more of the dark corners than we do (eg. struct returns?).

  • It would ease the task of porting GHC

  • Replaces a wad of very difficult non-portable code in GHC with code

    written and actively maintained by others.

On the other hand, it is possible that our Adjustor.c code is faster, because it is more specialised to the task.

Trac metadata
Trac field Value
Version 6.4.1
Type Task
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Runtime System
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system Unknown
Architecture Unknown
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information