Known Limitations of Translation

Daniel Kolsoi edited this page Nov 7, 2018 · 9 revisions

This document is to track things that we know the translator can't handle, as well as things it probably won't ever handle.


  • bitfields
  • variadic function definitions (blocked by Rust language)
  • preserving comments (WIP)
  • long double and _Complex types (partially blocked by Rust language)

Unimplemented, might be implementable but very low priority

  • GNU packed structs (Rust has #[repr(packed)] compatible with #[repr(C)])
  • inline functions (Rust has #[inline])
  • restrict pointers (Rust has references)
  • inline assembly
  • macros
  • SIMD functions with no rust equivalent

Likely won't ever support

  • longjmp/setjmp Although there are LLVM intrinsics for these, it is unclear how these interact with Rust (esp. idiomatic Rust).
  • jumps into and out of statement expressions We support GNU C statement expressions, but we can not handle jumping into or out of these. Both entry and exit into the expression have to be through the usual fall-through evaluation of the expression.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.