Skip to content

Latest commit

 

History

History
21 lines (18 loc) · 1015 Bytes

charter.md

File metadata and controls

21 lines (18 loc) · 1015 Bytes

Charter

To extend the language to support unwinding that crosses FFI boundaries.

Questions:

  • stabilization time frame
    • talk to package vendors to understand their constraints
  • stabilization "MVP"
    • add extern "C unwind" ABI
    • precise unwinding mechanism is not yet specified but is intended to match the "native unwinding" mechanism
    • informally, we will not emit code that intentionally interferes with unwinding
    • note that this means that there is no stable way to write code that interacts with "C unwind" ABIs that actually unwind
      • call to foreign function with that ABI and it unwinds
      • Rust function defined with that ABI unwinds
      • behavior of catch_unwind if a native exception should propagate
  • can we stabilize a notion of "idempotent" frames -- could be useful for signal handlers / longjmp. Would apply potentially to native frames too. Think of "C code compiled with -fexceptions".
  • is setjmp/longjmp in scope? Interacts because of SEH.