"It is time to beat turnstiles into technology"

Henry G. Baker (1995) “Use-once” variables and linear objects: storage management, reflection and multi-threading https://dl.acm.org/doi/10.1145/199818.199860

Great article that has not lost its force 30 years later, talking about linear type discipline for managing memory and resources... all a few decades before it has become mainstream with #Rust.

“Use-once” variables and linear objects: storage management, reflection and multi-threading: ACM SIGPLAN Notices: Vol 30, No 1

Programming languages should have 'use-once' variables in addition to the usual 'multiple-use' variables. 'Use-once' variables are bound to linear (unshared, unaliased, or singly-referenced) objects. Linear objects are cheap to access and manage, ...

ACM SIGPLAN Notices

@burakemir Unfortunately rust doesn't actually have linear types. Rust ownership makes values "use at most once" and not "exactly once", mostly because memory can be leaked intentionally. See also the leakpocalypse: https://cglab.ca/~abeinges/blah/everyone-poops/

But Rust gets at least parts of the benefits that linear types have.

Pre-Pooping Your Pants With Rust

@FSMaxB sure, and also the type system is not formalized, what about struct fields / partial borrows etc but all these details blur the fact that a *mainstream* language uses a sub-structural typing (/borrow checking) discipline to address the decades old problem of memory safety in languages with manual memory management. As suggested by Baker and many others, decades before.
@burakemir Yes, I totally agree, that's awesome!