線形型と分離ロジックはどちらも優れていますが、プログラマーの多大な努力が必要になる場合があります。たとえば、Rustで安全なリンクリストを作成するのは非常に困難です。
しかし、それほど厳密な保証はありませんが、プログラマの労力がはるかに少ない代替手段があります。(かなり古い)作業の流れは、領域(通常はスタック)を使用してメモリの安全性を保証することです。コンパイラは、領域推論を使用して、割り当てられたデータがどの領域に入るかを静的に決定し、範囲外になると領域の割り当てを解除できます。
領域の推論は、確実に安全で(到達可能なメモリの割り当てを解除できない)、プログラマの干渉は最小限で済みますが、「合計」ではありません(つまり、「何もしない」よりも間違いなくはるかに優れていますが、メモリをリークする可能性があります)。実際のGC。のMLtonMLキットコンパイラは、領域を使用してほとんどのGC呼び出しを排除しますが、それ以外の場合はメモリリークが発生するため、GCを保持しています。地域に関する初期の先駆者の何人かによると、地域推論は実際にはこの目的のために考案されたものではありません(自動並列化のためだと思います)。しかし、メモリ管理にも使用できることが判明しました。
出発点として、Mads TofteとJean-Pierre Talpinによる論文「Region of Regionsを使用したTyped Call-by-Valueλ-calculusの実装」を参照してください。地域推論に関する他の論文については、M。TofteとJ.-P.による他の論文を探してください。Talpin、Pierre Jouvelotの作品、Greg Morrisett、Mike Hicks、Dan GrossmanのCycloneに関する一連の論文。