Borrow-checking without type-checking: dynamic ownership, borrows, and stack allocation
Summary
This article presents a dynamic borrow-checking approach for a toy language with stack allocation, interior pointers, and limited borrowing. It explains how runtime checks maintain value semantics while enabling mutable sharing, moves, and borrows, and discusses error reporting, cross-stack safety, and comparisons to Rust, Julia, and Zig. It ends with reflections on expressiveness and future directions for language design.