Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 1.62 KB

known-limitations.md

File metadata and controls

32 lines (23 loc) · 1.62 KB

Known Limitations of Translation

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

Partially implemented, experimental

  • variadic function definitions and macros that operate on va_lists
  • preserving comments
  • GNU inline assembly
  • long double type (Linux only)

Unimplemented

Unimplemented, might be implementable

  • GNU packed structs (Rust has #[repr(packed)] compatible with #[repr(C)])
  • restrict pointers (Rust has references)
  • macros
  • GNU labels-as-values (#221)

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.