Fang is a programming language I'm designing that is intended to make correct software easy for all developers to write. It features group borrow checking, which I highly recommend you read and understand before reading this article, to ergonomically check the use of multiple mutable aliases. This article explains how Fang safely represents data structures with cyclic references.
Let's start with a quick tour of Fang. Parameters are passed by reference.
fn greetPerson(person: Person) { ... }
let you = Person{}
# `you` doesn't get copied or moved