Skip to content

RTS headers don't compile as C++

GHC's RTS headers can't be included from C++, as they contain constructs like this

dbl_link_replace(bdescr *new, bdescr *old, bdescr **list)

(notice the 'new'). This is the case for the headers shipped with 7.6.3 and still seems to be in the HEAD version.

Since the code has the usual

#ifdef __cplusplus
extern "C" {
#endif

all over the place, I assume the C++ incompatibility is simply an oversight? In any case, it would seem highly unusual to have a C interface that can't be consumed from C++. It seems all the incompatibilities could be removed with at worst a small amount of inconvenience, and automatic checking for C++ compatibility on each build could be added.

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