Modern programming languages allow for a dynamic memory allocation during program execution. Proper memory management is, consequently, vital. We developed a functional programming language that is lazy and does not rely on a garbage collector, which is the traditional technique for memory management in this domain (Haskell, OCaml). Instead of a collector, we propose a static analysis at the heart of which are the principle of single ownership and borrowing. As a result, memory management in the developed language is entirely deterministic, the overhead during runtime execution is minimal, and the static analysis ensures that there can be no garbage and dangling pointers. Additionally, we developed a compiler to demonstrate that the static analysis is functioning and to show that memory management works well even in the prototypical implementation.
|