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 |