Các loại tuyến tính và logic phân tách đều tuyệt vời, nhưng có thể đòi hỏi khá nhiều nỗ lực của lập trình viên. Chẳng hạn, viết một danh sách liên kết an toàn trong Rust có thể khá khó khăn.
Nhưng có một sự thay thế đòi hỏi nỗ lực lập trình ít hơn nhiều, mặc dù với sự đảm bảo ít nghiêm ngặt hơn. Luồng công việc (khá cũ) là đảm bảo an toàn cho bộ nhớ bằng cách sử dụng (thường là một chồng) các vùng. Sử dụng suy luận khu vực, một trình biên dịch có thể quyết định tĩnh khu vực mà một phần dữ liệu được phân bổ sẽ đi vào và phân bổ khu vực khi nó đi ra khỏi phạm vi.
Suy luận khu vực có thể an toàn (không thể giải phóng bộ nhớ có thể tiếp cận) và yêu cầu sự can thiệp của lập trình viên tối thiểu, nhưng nó không phải là "tổng" (nghĩa là nó vẫn có thể rò rỉ bộ nhớ, mặc dù chắc chắn tốt hơn nhiều so với "không làm gì"), vì vậy nó thường được kết hợp với GC trong thực tế. CácMLtonTrình biên dịch ML Kit sử dụng các vùng để loại bỏ hầu hết các cuộc gọi GC, nhưng nó vẫn có một GC vì nó vẫn sẽ rò rỉ bộ nhớ. Theo một số người tiên phong đầu tiên về các khu vực, suy luận khu vực không thực sự được phát minh cho mục đích này (tôi nghĩ đó là để song song hóa tự động); nhưng hóa ra nó cũng có thể được sử dụng để quản lý bộ nhớ.
Để bắt đầu, tôi sẽ nói rằng hãy viết bài "Thực hiện phép tính Call theo giá trị được gõ bằng cách sử dụng một vùng các vùng" của Mads Tofte và Jean-Pierre Talpin. Để biết thêm các bài viết về suy luận khu vực, hãy tìm các bài viết khác của M. Tofte và J.-P. Talpin, một số tác phẩm của Pierre Jouvelot, cũng như loạt bài viết về Cyclone của Greg Morrisett, Mike Hicks và Dan Grossman.