The current implementation is such that every heap allocated object does have a refc field, but it is simply unused for lifetimes managed at compile time. It would be possible to do further analysis to able to separate out objects which guaranteed never participate in runtime refc updates, and the omit that field. That would be similar to be able to emit to a language like Rust and select an Rc type or not. There are other places where the current algorithm may rely on Lobster specifics (such as closed world compilation and flow-sensitive typing).
Mutation is not protected from having multiple owners/borrowers like in Rust. Lobster does not have shared-memory concurrency (only distributed), nor interior pointers, nor pointers to stack objects (always copied), so its situation is a whole lot simpler. It does "lock" local variables for mutation after borrowing.
I don't think there's any need for anything MMU in what I am doing. Most is compile time. At runtime only the remaining refc ops happen. What did you have in mind?
Hah, I guess there was a paid version of Amiga E that was on those BBS-es :) The free version was limited to emitting 32K executables (which was a lot of code back then).