Threading and memory safety =========================== Simplest way to prevent incorrect lifetimes, double-free's, etc. due to synchronization or memory ordering issues between threads: * Require that reads from/writes to threaded variables NEVER change the lifetime of any data item. * Have a builtin queue data structure, for safe passing of owned objects between threads. The following types may need atomic reads/writes, to prevent corrupt data (i.e. wild pointers, out-of-range integers, etc): * Data references/pointers * Function references/pointers * Integers that have bit representations that represent invalid values (could be ALL integers on some hypothetic platforms, e.g. "DS9000") How about data items with constraints? How about "type states"?