Mainstream programming languages use one or more of the following approaches (if any) to achieve memory safety: Tracing Garbage Collection (GC for short) Reference Counting (RC for short) Linear/Affine Types ( RAII + std::unique_ptr is similar) “Borrow Checking” (i.e., Static Lifetime Analysis) Each solution has different tradeoffs: GC requires a hefty and complex runtime to
