Concurrent Euclid?

In thinking about my first Rust program, I had flashbacks to writing Euclid in the early 80s. One of the rules (from the CE specifications) was that it 'does not allow "aliasing" of variables.' Since it didn't have immutable references, that was what you got from disallowing shared variables. However, the compiler didn't enforce this.

I was wondering if there was a chain of research from there to Rust?